Skip to content

Commit 9cea5af

Browse files
authored
feat: Include __all__ in generated __init__.py files [#676, #631, #540, #675]. Thanks @EltonChou!
Closes #676, #631, #540, #675
1 parent 08c985f commit 9cea5af

File tree

7 files changed

+84
-1
lines changed

7 files changed

+84
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
""" A client library for accessing My Test API """
22
from .client import AuthenticatedClient, Client
3+
4+
__all__ = (
5+
"AuthenticatedClient",
6+
"Client",
7+
)

end_to_end_tests/golden-record/my_test_api_client/models/__init__.py

+49
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,52 @@
5050
from .test_inline_objects_json_body import TestInlineObjectsJsonBody
5151
from .test_inline_objects_response_200 import TestInlineObjectsResponse200
5252
from .validation_error import ValidationError
53+
54+
__all__ = (
55+
"AFormData",
56+
"AllOfSubModel",
57+
"AllOfSubModelTypeEnum",
58+
"AModel",
59+
"AModelWithPropertiesReferenceThatAreNotObject",
60+
"AnAllOfEnum",
61+
"AnEnum",
62+
"AnEnumWithNull",
63+
"AnIntEnum",
64+
"AnotherAllOfSubModel",
65+
"AnotherAllOfSubModelType",
66+
"AnotherAllOfSubModelTypeEnum",
67+
"BodyUploadFileTestsUploadPost",
68+
"BodyUploadFileTestsUploadPostAdditionalProperty",
69+
"BodyUploadFileTestsUploadPostSomeNullableObject",
70+
"BodyUploadFileTestsUploadPostSomeObject",
71+
"BodyUploadFileTestsUploadPostSomeOptionalObject",
72+
"DifferentEnum",
73+
"FreeFormModel",
74+
"GetLocationHeaderTypesIntEnumHeader",
75+
"GetLocationHeaderTypesStringEnumHeader",
76+
"HTTPValidationError",
77+
"Import",
78+
"ModelFromAllOf",
79+
"ModelName",
80+
"ModelReferenceWithPeriods",
81+
"ModelWithAdditionalPropertiesInlined",
82+
"ModelWithAdditionalPropertiesInlinedAdditionalProperty",
83+
"ModelWithAdditionalPropertiesRefed",
84+
"ModelWithAnyJsonProperties",
85+
"ModelWithAnyJsonPropertiesAdditionalPropertyType0",
86+
"ModelWithDateTimeProperty",
87+
"ModelWithPrimitiveAdditionalProperties",
88+
"ModelWithPrimitiveAdditionalPropertiesADateHolder",
89+
"ModelWithPropertyRef",
90+
"ModelWithUnionProperty",
91+
"ModelWithUnionPropertyInlined",
92+
"ModelWithUnionPropertyInlinedFruitType0",
93+
"ModelWithUnionPropertyInlinedFruitType1",
94+
"None_",
95+
"PostFormDataInlineData",
96+
"PostResponsesUnionsSimpleBeforeComplexResponse200",
97+
"PostResponsesUnionsSimpleBeforeComplexResponse200AType1",
98+
"TestInlineObjectsJsonBody",
99+
"TestInlineObjectsResponse200",
100+
"ValidationError",
101+
)
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
""" A client library for accessing OpenAPI Test Server """
22
from .client import AuthenticatedClient, Client
3+
4+
__all__ = (
5+
"AuthenticatedClient",
6+
"Client",
7+
)

integration-tests/integration_tests/models/__init__.py

+8
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,11 @@
55
from .post_parameters_header_response_200 import PostParametersHeaderResponse200
66
from .problem import Problem
77
from .public_error import PublicError
8+
9+
__all__ = (
10+
"PostBodyMultipartMultipartData",
11+
"PostBodyMultipartResponse200",
12+
"PostParametersHeaderResponse200",
13+
"Problem",
14+
"PublicError",
15+
)

openapi_python_client/__init__.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -233,12 +233,14 @@ def _build_models(self) -> None:
233233
models_dir.mkdir()
234234
models_init = models_dir / "__init__.py"
235235
imports = []
236+
alls = []
236237

237238
model_template = self.env.get_template("model.py.jinja")
238239
for model in self.openapi.models:
239240
module_path = models_dir / f"{model.class_info.module_name}.py"
240241
module_path.write_text(model_template.render(model=model), encoding=self.file_encoding)
241242
imports.append(import_string_from_class(model.class_info))
243+
alls.append(model.class_info.name)
242244

243245
# Generate enums
244246
str_enum_template = self.env.get_template("str_enum.py.jinja")
@@ -250,9 +252,10 @@ def _build_models(self) -> None:
250252
else:
251253
module_path.write_text(str_enum_template.render(enum=enum), encoding=self.file_encoding)
252254
imports.append(import_string_from_class(enum.class_info))
255+
alls.append(enum.class_info.name)
253256

254257
models_init_template = self.env.get_template("models_init.py.jinja")
255-
models_init.write_text(models_init_template.render(imports=imports), encoding=self.file_encoding)
258+
models_init.write_text(models_init_template.render(imports=imports, alls=alls), encoding=self.file_encoding)
256259

257260
def _build_api(self) -> None:
258261
# Generate Client

openapi_python_client/templates/models_init.py.jinja

+8
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,11 @@
33
{% for import in imports | sort %}
44
{{ import }}
55
{% endfor %}
6+
7+
{% if imports %}
8+
__all__ = (
9+
{% for all in alls | sort %}
10+
"{{ all }}",
11+
{% endfor %}
12+
)
13+
{% endif %}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
""" {{ package_description }} """
22
from .client import AuthenticatedClient, Client
3+
4+
__all__ = (
5+
"AuthenticatedClient",
6+
"Client",
7+
)

0 commit comments

Comments
 (0)