Skip to content

Commit 1c3c234

Browse files
committed
Use relative import for build from source case
1 parent 31e5105 commit 1c3c234

File tree

6 files changed

+51
-25
lines changed

6 files changed

+51
-25
lines changed

codegen/api/et_cpp.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22

33
from typing import TYPE_CHECKING
44

5-
from executorch.codegen.api.types import (
6-
ArrayRefCType,
7-
BaseTypeToCppMapping,
8-
OptionalCType,
9-
scalarT,
10-
tensorListT,
11-
tensorT,
12-
)
13-
145
from torchgen import local
156
from torchgen.api.types import (
167
ArgName,
@@ -40,6 +31,15 @@
4031
)
4132
from typing_extensions import assert_never
4233

34+
from .types import (
35+
ArrayRefCType,
36+
BaseTypeToCppMapping,
37+
OptionalCType,
38+
scalarT,
39+
tensorListT,
40+
tensorT,
41+
)
42+
4343

4444
if TYPE_CHECKING:
4545
from collections.abc import Sequence

codegen/api/types/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# flake8: noqa: F403, F401
2-
from executorch.codegen.api.types.types import *
2+
from .types import *
33

44
# flake8: noqa: F403, F401
5-
from executorch.codegen.api.types.signatures import * # usort: skip
5+
from .signatures import * # usort: skip

codegen/api/types/signatures.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
from typing import TYPE_CHECKING
55

66
import torchgen.api.cpp as aten_cpp
7-
from executorch.codegen.api.types.types import contextArg
7+
8+
from .types import contextArg
89

910

1011
if TYPE_CHECKING:
@@ -73,4 +74,4 @@ def from_native_function(
7374
)
7475

7576

76-
from executorch.codegen.api import et_cpp
77+
from .. import et_cpp

codegen/gen.py

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,32 @@
88
from typing import Any, Callable, TextIO, TYPE_CHECKING
99

1010
import yaml
11-
from executorch.codegen.api import et_cpp
12-
from executorch.codegen.api.custom_ops import (
13-
ComputeNativeFunctionStub,
14-
gen_custom_ops_registration,
15-
)
16-
from executorch.codegen.api.types import contextArg, ExecutorchCppSignature
17-
from executorch.codegen.api.unboxing import Unboxing
18-
from executorch.codegen.model import ETKernelIndex, ETKernelKey, ETParsedYaml
19-
from executorch.codegen.parse import ET_FIELDS, parse_et_yaml, parse_et_yaml_struct
11+
12+
try:
13+
from executorch.codegen.api import et_cpp
14+
from executorch.codegen.api.custom_ops import (
15+
ComputeNativeFunctionStub,
16+
gen_custom_ops_registration,
17+
)
18+
from executorch.codegen.api.types import contextArg, ExecutorchCppSignature
19+
from executorch.codegen.api.unboxing import Unboxing
20+
from executorch.codegen.model import ETKernelIndex, ETKernelKey, ETParsedYaml
21+
from executorch.codegen.parse import ET_FIELDS, parse_et_yaml, parse_et_yaml_struct
22+
except ImportError:
23+
# If we build from source, executorch.codegen is not available.
24+
from .api import et_cpp # type: ignore[no-redef]
25+
from .api.custom_ops import ( # type: ignore
26+
ComputeNativeFunctionStub,
27+
gen_custom_ops_registration,
28+
)
29+
from .api.types import contextArg, ExecutorchCppSignature # type: ignore
30+
from .api.unboxing import Unboxing # type: ignore
31+
from .model import ETKernelIndex, ETKernelKey, ETParsedYaml # type: ignore
32+
from .parse import ( # type: ignore[no-redef]
33+
ET_FIELDS,
34+
parse_et_yaml,
35+
parse_et_yaml_struct,
36+
)
2037

2138
# Parse native_functions.yaml into a sequence of NativeFunctions and Backend Indices.
2239
from torchgen import dest

codegen/tools/gen_oplist.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,16 @@
1717
from executorch.codegen.parse import strip_et_fields
1818
except ImportError:
1919
# If we build from source, executorch.codegen is not available.
20-
# We can use relative import instead.
21-
from ..parse import strip_et_fields
20+
ET_FIELDS = ["kernels", "type_alias", "dim_order_alias"]
21+
22+
def strip_et_fields(es: object) -> None:
23+
"""Given a loaded yaml representing a list of operators,
24+
remove ET specific fields from every entries for BC compatibility
25+
"""
26+
for entry in es: # type: ignore[attr-defined]
27+
for field in ET_FIELDS:
28+
entry.pop(field, None)
29+
2230

2331
from torchgen.gen import LineLoader, parse_native_yaml_struct
2432
from torchgen.selective_build.operator import SelectiveBuildOperator

tools/cmake/Codegen.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ function(generate_bindings_for_kernels)
9393
file(GLOB_RECURSE _torchgen_srcs "${torchgen-out}/*.py")
9494
# Not using module executorch.codegen.gen because it's not installed yet.
9595
set(_gen_command
96-
"${PYTHON_EXECUTABLE}" ${EXECUTORCH_ROOT}/codegen/gen.py
96+
"${PYTHON_EXECUTABLE}" -m codegen.gen
9797
--source-path=${EXECUTORCH_ROOT}/codegen --install-dir=${_out_dir}
9898
--tags-path=${torchgen-out}/packaged/ATen/native/tags.yaml
9999
--aten-yaml-path=${torchgen-out}/packaged/ATen/native/native_functions.yaml

0 commit comments

Comments
 (0)