Skip to content

python: Reinstate lazy imports #21486

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# flake8: noqa

# import apis into api package
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}}
{{/apis}}{{/apiInfo}}
if __import__("typing").TYPE_CHECKING:
{{>exports_api}}
else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
"""{{>exports_api}}""",
name=__name__,
doc=__doc__,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,16 @@
{{>partial_header}}


# import models into model package
{{#models}}
{{#model}}
from {{modelPackage}}.{{classFilename}} import {{classname}}
{{/model}}
{{/models}}
if __import__("typing").TYPE_CHECKING:
{{>exports_model}}
else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
"""{{>exports_model}}""",
name=__name__,
doc=__doc__,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,21 @@ __all__ = [
{{/-last}}{{#-last}},{{/-last}}{{/model}}{{/models}}
]

# import apis into sdk package
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/apis}}{{/apiInfo}}
# import ApiClient
from {{packageName}}.api_response import ApiResponse as ApiResponse
from {{packageName}}.api_client import ApiClient as ApiClient
from {{packageName}}.configuration import Configuration as Configuration
from {{packageName}}.exceptions import OpenApiException as OpenApiException
from {{packageName}}.exceptions import ApiTypeError as ApiTypeError
from {{packageName}}.exceptions import ApiValueError as ApiValueError
from {{packageName}}.exceptions import ApiKeyError as ApiKeyError
from {{packageName}}.exceptions import ApiAttributeError as ApiAttributeError
from {{packageName}}.exceptions import ApiException as ApiException
{{#hasHttpSignatureMethods}}
from {{packageName}}.signing import HttpSigningConfiguration as HttpSigningConfiguration
{{/hasHttpSignatureMethods}}

# import models into sdk package
{{#models}}
{{#model}}
from {{modelPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/model}}
{{/models}}
if __import__("typing").TYPE_CHECKING:
{{>exports_package}}
else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
("__version__", __version__),
("__all__", __all__),
"""{{>exports_package}}""",
name=__name__,
doc=__doc__,
)
)
{{#recursionLimit}}

__import__('sys').setrecursionlimit({{{.}}})
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# import apis into api package
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}}
{{/apis}}{{/apiInfo}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# import models into model package
{{#models}}{{#model}}from {{modelPackage}}.{{classFilename}} import {{classname}}
{{/model}}{{/models}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# import apis into sdk package
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/apis}}{{/apiInfo}}
# import ApiClient
from {{packageName}}.api_response import ApiResponse as ApiResponse
from {{packageName}}.api_client import ApiClient as ApiClient
from {{packageName}}.configuration import Configuration as Configuration
from {{packageName}}.exceptions import OpenApiException as OpenApiException
from {{packageName}}.exceptions import ApiTypeError as ApiTypeError
from {{packageName}}.exceptions import ApiValueError as ApiValueError
from {{packageName}}.exceptions import ApiKeyError as ApiKeyError
from {{packageName}}.exceptions import ApiAttributeError as ApiAttributeError
from {{packageName}}.exceptions import ApiException as ApiException
{{#hasHttpSignatureMethods}}
from {{packageName}}.signing import HttpSigningConfiguration as HttpSigningConfiguration
{{/hasHttpSignatureMethods}}

# import models into sdk package
{{#models}}{{#model}}from {{modelPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/model}}{{/models}}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ pycryptodome = ">= 3.9.0"
{{/hasHttpSignatureMethods}}
pydantic = ">= 2"
typing-extensions = ">= 4.7.1"
lazy-imports = ">= 1, < 2"
{{/poetry1}}
{{^poetry1}}
requires-python = ">=3.9"
Expand All @@ -62,7 +63,8 @@ dependencies = [
"pycryptodome (>=3.9.0)",
{{/hasHttpSignatureMethods}}
"pydantic (>=2)",
"typing-extensions (>=4.7.1)"
"typing-extensions (>=4.7.1)",
"lazy-imports (>=1,<2)"
]

[project.urls]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ pycryptodome >= 3.9.0
{{/hasHttpSignatureMethods}}
pydantic >= 2
typing-extensions >= 4.7.1
lazy-imports >= 1, < 2
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ REQUIRES = [
{{/hasHttpSignatureMethods}}
"pydantic >= 2",
"typing-extensions >= 4.7.1",
"lazy-imports >= 1, < 2",
]

setup(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,49 @@
"TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter",
]

# import apis into sdk package
if __import__("typing").TYPE_CHECKING:
# import apis into sdk package
from openapi_client.api.auth_api import AuthApi as AuthApi
from openapi_client.api.body_api import BodyApi as BodyApi
from openapi_client.api.form_api import FormApi as FormApi
from openapi_client.api.header_api import HeaderApi as HeaderApi
from openapi_client.api.path_api import PathApi as PathApi
from openapi_client.api.query_api import QueryApi as QueryApi

# import ApiClient
from openapi_client.api_response import ApiResponse as ApiResponse
from openapi_client.api_client import ApiClient as ApiClient
from openapi_client.configuration import Configuration as Configuration
from openapi_client.exceptions import OpenApiException as OpenApiException
from openapi_client.exceptions import ApiTypeError as ApiTypeError
from openapi_client.exceptions import ApiValueError as ApiValueError
from openapi_client.exceptions import ApiKeyError as ApiKeyError
from openapi_client.exceptions import ApiAttributeError as ApiAttributeError
from openapi_client.exceptions import ApiException as ApiException

# import models into sdk package
from openapi_client.models.bird import Bird as Bird
from openapi_client.models.category import Category as Category
from openapi_client.models.data_query import DataQuery as DataQuery
from openapi_client.models.default_value import DefaultValue as DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly as NumberPropertiesOnly
from openapi_client.models.pet import Pet as Pet
from openapi_client.models.query import Query as Query
from openapi_client.models.string_enum_ref import StringEnumRef as StringEnumRef
from openapi_client.models.tag import Tag as Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker as TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter as TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter as TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter

else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
("__version__", __version__),
("__all__", __all__),
"""# import apis into sdk package
from openapi_client.api.auth_api import AuthApi as AuthApi
from openapi_client.api.body_api import BodyApi as BodyApi
from openapi_client.api.form_api import FormApi as FormApi
Expand Down Expand Up @@ -80,3 +122,9 @@
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker as TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter as TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter as TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter

""",
name=__name__,
doc=__doc__,
)
)
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
# flake8: noqa

# import apis into api package
if __import__("typing").TYPE_CHECKING:
# import apis into api package
from openapi_client.api.auth_api import AuthApi
from openapi_client.api.body_api import BodyApi
from openapi_client.api.form_api import FormApi
from openapi_client.api.header_api import HeaderApi
from openapi_client.api.path_api import PathApi
from openapi_client.api.query_api import QueryApi

else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
"""# import apis into api package
from openapi_client.api.auth_api import AuthApi
from openapi_client.api.body_api import BodyApi
from openapi_client.api.form_api import FormApi
from openapi_client.api.header_api import HeaderApi
from openapi_client.api.path_api import PathApi
from openapi_client.api.query_api import QueryApi

""",
name=__name__,
doc=__doc__,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,28 @@
""" # noqa: E501


# import models into model package
if __import__("typing").TYPE_CHECKING:
# import models into model package
from openapi_client.models.bird import Bird
from openapi_client.models.category import Category
from openapi_client.models.data_query import DataQuery
from openapi_client.models.default_value import DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly
from openapi_client.models.pet import Pet
from openapi_client.models.query import Query
from openapi_client.models.string_enum_ref import StringEnumRef
from openapi_client.models.tag import Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter

else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
"""# import models into model package
from openapi_client.models.bird import Bird
from openapi_client.models.category import Category
from openapi_client.models.data_query import DataQuery
Expand All @@ -27,3 +48,9 @@
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter

""",
name=__name__,
doc=__doc__,
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ dependencies = [
"urllib3 (>=2.1.0,<3.0.0)",
"python-dateutil (>=2.8.2)",
"pydantic (>=2)",
"typing-extensions (>=4.7.1)"
"typing-extensions (>=4.7.1)",
"lazy-imports (>=1,<2)"
]

[project.urls]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ urllib3 >= 2.1.0, < 3.0.0
python_dateutil >= 2.8.2
pydantic >= 2
typing-extensions >= 4.7.1
lazy-imports >= 1, < 2
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"python-dateutil >= 2.8.2",
"pydantic >= 2",
"typing-extensions >= 4.7.1",
"lazy-imports >= 1, < 2",
]

setup(
Expand Down
50 changes: 49 additions & 1 deletion samples/client/echo_api/python/openapi_client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,49 @@
"TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter",
]

# import apis into sdk package
if __import__("typing").TYPE_CHECKING:
# import apis into sdk package
from openapi_client.api.auth_api import AuthApi as AuthApi
from openapi_client.api.body_api import BodyApi as BodyApi
from openapi_client.api.form_api import FormApi as FormApi
from openapi_client.api.header_api import HeaderApi as HeaderApi
from openapi_client.api.path_api import PathApi as PathApi
from openapi_client.api.query_api import QueryApi as QueryApi

# import ApiClient
from openapi_client.api_response import ApiResponse as ApiResponse
from openapi_client.api_client import ApiClient as ApiClient
from openapi_client.configuration import Configuration as Configuration
from openapi_client.exceptions import OpenApiException as OpenApiException
from openapi_client.exceptions import ApiTypeError as ApiTypeError
from openapi_client.exceptions import ApiValueError as ApiValueError
from openapi_client.exceptions import ApiKeyError as ApiKeyError
from openapi_client.exceptions import ApiAttributeError as ApiAttributeError
from openapi_client.exceptions import ApiException as ApiException

# import models into sdk package
from openapi_client.models.bird import Bird as Bird
from openapi_client.models.category import Category as Category
from openapi_client.models.data_query import DataQuery as DataQuery
from openapi_client.models.default_value import DefaultValue as DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly as NumberPropertiesOnly
from openapi_client.models.pet import Pet as Pet
from openapi_client.models.query import Query as Query
from openapi_client.models.string_enum_ref import StringEnumRef as StringEnumRef
from openapi_client.models.tag import Tag as Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker as TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter as TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter as TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter

else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
("__version__", __version__),
("__all__", __all__),
"""# import apis into sdk package
from openapi_client.api.auth_api import AuthApi as AuthApi
from openapi_client.api.body_api import BodyApi as BodyApi
from openapi_client.api.form_api import FormApi as FormApi
Expand Down Expand Up @@ -80,3 +122,9 @@
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker as TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter as TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter as TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter

""",
name=__name__,
doc=__doc__,
)
)
22 changes: 21 additions & 1 deletion samples/client/echo_api/python/openapi_client/api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,30 @@
# flake8: noqa

# import apis into api package
if __import__("typing").TYPE_CHECKING:
# import apis into api package
from openapi_client.api.auth_api import AuthApi
from openapi_client.api.body_api import BodyApi
from openapi_client.api.form_api import FormApi
from openapi_client.api.header_api import HeaderApi
from openapi_client.api.path_api import PathApi
from openapi_client.api.query_api import QueryApi

else:
from lazy_imports import LazyModule, as_package, load

load(
LazyModule(
*as_package(__file__),
"""# import apis into api package
from openapi_client.api.auth_api import AuthApi
from openapi_client.api.body_api import BodyApi
from openapi_client.api.form_api import FormApi
from openapi_client.api.header_api import HeaderApi
from openapi_client.api.path_api import PathApi
from openapi_client.api.query_api import QueryApi

""",
name=__name__,
doc=__doc__,
)
)
Loading
Loading