Skip to content

Commit 35f030d

Browse files
refactor: extract BaseObjectLike and similar into a separate 'core' module (#28870)
1 parent bd924a3 commit 35f030d

File tree

27 files changed

+83
-77
lines changed

27 files changed

+83
-77
lines changed

ivy/transpiler/ast/source_gen.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
import gast
22
import os
3+
from packaging.version import parse
34
import textwrap
45
from typing import Union, List, Dict, Set, Tuple, Optional, TYPE_CHECKING
5-
from packaging.version import parse
66

77
import ivy.transpiler.ast.globals as glob
88
from .globals import (
9-
TRANSLATED_OUTPUTS_SUBDIR,
10-
MONKEY_PATCH_GLOBALS,
11-
MODULE_TO_ALIAS,
12-
TranslatedContext,
13-
FRONTEND_STANDARD_GLOBALS_TARGET_TO_MODULE,
149
BACKEND_STANDARD_GLOBALS,
10+
FRONTEND_STANDARD_GLOBALS_TARGET_TO_MODULE,
1511
IVY_STANDARD_GLOBALS_TARGET_TO_MODULE,
12+
MODULE_TO_ALIAS,
13+
MONKEY_PATCH_GLOBALS,
14+
TranslatedContext,
15+
TRANSLATED_OUTPUTS_SUBDIR,
1616
)
1717
from .analysis import get_translated_nodes
18-
from .nodes import FromImportObj, ImportObj, InternalObj
18+
from .nodes import FromImportObj, ImportObj
1919

20-
from ..translations.data.object_like import BaseObjectLike
20+
from ivy.transpiler.core.object_like import BaseObjectLike
2121
from ivy.transpiler.utils.api_utils import (
2222
get_native_module_str_from_backend,
2323
SUPPORTED_BACKENDS_PREFIX,
24-
TRANSLATED_OBJ_PREFIX,
2524
)
2625
from ivy.transpiler.utils.ast_utils import ast_to_source_code, check_syntax
2726
from ivy.transpiler.utils.cache_utils import (
@@ -34,10 +33,10 @@
3433
from ivy.transpiler.utils.type_utils import Types
3534

3635
if TYPE_CHECKING:
37-
from ivy.transpiler.translations.data.global_like import (
36+
from ivy.transpiler.core.global_like import (
3837
GlobalObjectLike,
3938
)
40-
from ivy.transpiler.translations.data.object_like import (
39+
from ivy.transpiler.core.object_like import (
4140
TypeObjectLike,
4241
FuncObjectLike,
4342
)

ivy/transpiler/core/__init__.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from .global_like import GlobalObjectLike, Position, StackObjectLike
2+
from .object_like import BaseObjectLike, FuncObjectLike, TypeObjectLike
3+
4+
__all__ = [
5+
"BaseObjectLike",
6+
"FuncObjectLike",
7+
"GlobalObjectLike",
8+
"Position",
9+
"StackObjectLike",
10+
"TypeObjectLike",
11+
]

ivy/transpiler/translations/data/global_like.py renamed to ivy/transpiler/core/global_like.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
"""Main file to hold DTOs to represent globals captured during transformations."""
22

3-
# global
43
from __future__ import annotations
5-
from typing import Dict
6-
import gast
74
from enum import Enum
5+
import gast
6+
from typing import Dict
7+
8+
from ivy.transpiler.ast.globals import TranslatedContext
9+
from ivy.transpiler.utils.ast_utils import ast_to_source_code
810

9-
# local
10-
from ...translations.data.object_like import BaseObjectLike
11-
from ...ast.globals import TranslatedContext
12-
from ...utils.ast_utils import ast_to_source_code
11+
from .object_like import BaseObjectLike
1312

1413

1514
class Position(Enum):

ivy/transpiler/translations/data/object_like.py renamed to ivy/transpiler/core/object_like.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,42 @@
11
"""Main file to hold DTOs for object likes."""
22

3-
# global
43
from __future__ import annotations
5-
import ivy
64
import dill
75
import inspect
6+
import ivy
87
from types import FunctionType, MethodType, ModuleType
98
from typing import Dict, Optional, Union, TYPE_CHECKING
109

11-
# local
12-
from ...utils.api_utils import (
13-
TRANSLATED_OBJ_SUFFIX,
14-
is_mixed_function,
15-
maybe_get_methods,
16-
maybe_get_properties,
17-
maybe_get_frontend_base_methods,
18-
maybe_get_frontend_base_module_source,
10+
from ivy.transpiler import globals as glob
11+
from ivy.transpiler.exceptions.exceptions import (
12+
ProhibitedObjectAccessError,
13+
InvalidObjectException,
14+
)
15+
from ivy.transpiler.utils.api_utils import (
16+
from_conv_block,
1917
is_backend_api,
2018
is_frontend_api,
21-
is_ivy_api,
22-
is_translated_api,
23-
is_hf_pretrained_class,
2419
is_helper_func,
20+
is_hf_pretrained_class,
21+
is_ivy_api,
22+
is_mixed_function,
2523
is_submodule_of,
26-
from_conv_block,
24+
is_translated_api,
25+
maybe_get_frontend_base_methods,
26+
maybe_get_frontend_base_module_source,
27+
maybe_get_methods,
28+
maybe_get_properties,
29+
TRANSLATED_OBJ_SUFFIX,
2730
)
28-
from ...utils.inspect_utils import (
31+
from ivy.transpiler.utils.inspect_utils import (
2932
get_closure_vars,
3033
object_to_source_code,
3134
)
32-
from ...utils import pickling_utils
33-
from ...utils.type_utils import Types
34-
from ...exceptions.exceptions import (
35-
ProhibitedObjectAccessError,
36-
InvalidObjectException,
37-
)
38-
from ivy.transpiler import globals as glob
35+
from ivy.transpiler.utils import pickling_utils
36+
from ivy.transpiler.utils.type_utils import Types
3937

4038
if TYPE_CHECKING:
41-
from ...utils.ast_utils import TranslatedContext
39+
from ivy.transpiler.ast.globals import TranslatedContext
4240

4341

4442
class BaseObjectLike:
@@ -301,7 +299,7 @@ def _derive_qualname(self):
301299
return getattr(self._get_obj(), "__qualname__", "")
302300

303301
def _derive_module(self):
304-
from ...ast.source_gen import FileNameStrategy
302+
from ..ast.source_gen import FileNameStrategy
305303

306304
obj_mod = inspect.getmodule(self._get_obj())
307305
if obj_mod:
@@ -538,7 +536,7 @@ def from_object(
538536

539537
obj_type = Types.get_type(obj)
540538

541-
from ...ast.source_gen import FileNameStrategy
539+
from ..ast.source_gen import FileNameStrategy
542540

543541
ObjectLike = BaseObjectLike._infer_object_like(obj_type)
544542
object_like = ObjectLike(

ivy/transpiler/main_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@
1515

1616
# Frameworks whose code S2S supports currently
1717
SUPPORTED_S2S_SOURCES = ["torch", "ivy"]
18-
SUPPORTED_S2S_TARGETS = ["tensorflow", "jax", "numpy", "ivy"]
18+
SUPPORTED_S2S_TARGETS = ["tensorflow", "jax", "numpy", "ivy", "torch"]

ivy/transpiler/transformations/transformer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from ..transformations.transformers.base_transformer import (
1616
BaseTransformer,
1717
)
18-
from ..translations.data.object_like import (
18+
from ..core.object_like import (
1919
BaseObjectLike,
2020
)
2121
from ..transformations.transformers.rename_transformer import (
@@ -29,10 +29,10 @@
2929
from ..transformations.transformers.globals_transformer.base_transformer import (
3030
GlobalObj,
3131
)
32-
from ..translations.data.object_like import (
32+
from ..core.object_like import (
3333
TypeObjectLike,
3434
)
35-
from ..translations.data.object_like import (
35+
from ..core.object_like import (
3636
FuncObjectLike,
3737
)
3838
from ..utils.ast_utils import ImportObj, FromImportObj

ivy/transpiler/transformations/transformers/globals_transformer/base_transformer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
BaseTransformer,
1010
)
1111
from ...transformer import Transformer
12-
from ....translations.data.global_like import (
12+
from ....core.global_like import (
1313
GlobalObjectLike,
1414
Position,
1515
StackObjectLike,
1616
)
17-
from ....translations.data.object_like import BaseObjectLike
17+
from ....core.object_like import BaseObjectLike
1818
from ....ast.analysis import get_function_vars, get_module_globals
1919
from ....ast.visitors import get_global_assignment
2020
from ....ast.globals import (
@@ -45,7 +45,7 @@
4545
)
4646

4747
if TYPE_CHECKING:
48-
from ....translations.data.object_like import (
48+
from ....core.object_like import (
4949
TypeObjectLike,
5050
FuncObjectLike,
5151
)

ivy/transpiler/transformations/transformers/recursive_transformer/base_transformer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ def _recursively_translate(self, obj_name: str, obj_to_translate, node=None):
199199
from_global, parent = self.preprocess_origin_info(obj_to_translate, new_name)
200200

201201
# 3 Recursively transform the function
202-
from ivy.transpiler.translations.data.object_like import (
202+
from ivy.transpiler.core.object_like import (
203203
BaseObjectLike,
204204
)
205205

@@ -401,7 +401,7 @@ def visit_ClassDef(self, node):
401401
from_global, parent = self.preprocess_origin_info(base, base_new_name)
402402

403403
# 3 Recursively transform the function
404-
from ivy.transpiler.translations.data.object_like import (
404+
from ivy.transpiler.core.object_like import (
405405
BaseObjectLike,
406406
)
407407

ivy/transpiler/translations/data/__init__.py

Whitespace-only changes.

ivy/transpiler/translations/helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from types import FunctionType
1111

1212
from ivy.transpiler.ast.source_gen import FileNameStrategy
13-
from ivy.transpiler.translations.data.object_like import BaseObjectLike
13+
from ivy.transpiler.core.object_like import BaseObjectLike
1414
from ivy.transpiler.utils.naming_utils import NAME_GENERATOR
1515
from ivy.transpiler.utils.source_utils import (
1616
get_new_output_dir_name,
@@ -20,7 +20,7 @@
2020
)
2121

2222
if TYPE_CHECKING:
23-
from ivy.transpiler.translations.data.object_like import (
23+
from ivy.transpiler.core.object_like import (
2424
FuncObjectLike,
2525
TypeObjectLike,
2626
)

0 commit comments

Comments
 (0)