From f56e9f1318b11f4a35ecc83b6c332d57e63e132d Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 16:19:21 +0000 Subject: [PATCH 1/7] [python] Re-generate samples Done with: # remove existing artifacts rm -rf samples/client/echo_api/python/* rm -rf samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/* rm -rf samples/openapi3/client/petstore/python/* rm -rf samples/openapi3/client/petstore/python-aiohttp/* rm -rf samples/openapi3/client/petstore/python-httpx/* rm -rf samples/openapi3/client/petstore/python-lazyImports/* # restore manually added tests git checkout -f HEAD -- samples/client/echo_api/python/tests git checkout -f HEAD -- samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/tests git checkout -f HEAD -- samples/openapi3/client/petstore/python/tests git checkout -f HEAD -- samples/openapi3/client/petstore/python-aiohttp/tests git checkout -f HEAD -- samples/openapi3/client/petstore/python-httpx/tests git checkout -f HEAD -- samples/openapi3/client/petstore/python-lazyImports/tests # ...and test files git checkout -f HEAD -- samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/testfiles git checkout -f HEAD -- samples/openapi3/client/petstore/python/testfiles git checkout -f HEAD -- samples/openapi3/client/petstore/python-aiohttp/testfiles git checkout -f HEAD -- samples/openapi3/client/petstore/python-httpx/testfiles git checkout -f HEAD -- samples/openapi3/client/petstore/python-lazyImports/testfiles # regenerate samples /mvnw clean package -DskipTests ./bin/generate-samples.sh bin/configs/python.yaml bin/configs/python-echo-api.yaml This highlights a number of file mode changes along with some tests and docs for things that no longer exist in the relevant OpenAPI specs. Signed-off-by: Stephen Finucane --- ...odeTrueArrayIntegerQueryObjectParameter.md | 29 - ...ue_array_integer_query_object_parameter.py | 93 --- .../test/test_query_api.py | 7 + ...odeTrueArrayIntegerQueryObjectParameter.md | 29 - ...ue_array_integer_query_object_parameter.py | 88 --- samples/client/echo_api/python/poetry.lock | 682 ------------------ .../echo_api/python/test/test_query_api.py | 7 + .../client/echo_api/python/testfiles/test.gif | Bin 43 -> 0 bytes .../python-aiohttp/test/test_enum_test.py | 6 +- .../test/test_one_of_enum_string.py | 19 +- .../test/test_with_nested_one_of.py | 2 +- .../test/test_another_fake_api.py | 10 +- .../python-httpx/test/test_default_api.py | 10 +- .../python-httpx/test/test_fake_api.py | 82 +-- .../test/test_fake_classname_tags123_api.py | 10 +- .../test/test_import_test_datetime_api.py | 10 +- .../python-httpx/test/test_pet_api.py | 26 +- .../python-httpx/test/test_store_api.py | 16 +- .../python-httpx/test/test_user_api.py | 24 +- .../openapi3/client/petstore/python/README.md | 0 .../petstore/python/docs/EnumSerialization.md | 11 - .../client/petstore/python/git_push.sh | 0 .../petstore/python/petstore_api/__init__.py | 0 .../python/petstore_api/api/__init__.py | 0 .../petstore_api/api/another_fake_api.py | 0 .../python/petstore_api/api/default_api.py | 0 .../python/petstore_api/api/fake_api.py | 0 .../python/petstore_api/api/pet_api.py | 0 .../python/petstore_api/api/store_api.py | 0 .../python/petstore_api/api/user_api.py | 0 .../python/petstore_api/api_client.py | 0 .../python/petstore_api/configuration.py | 0 .../python/petstore_api/exceptions.py | 0 .../petstore_api/models/enum_serialization.py | 37 - .../petstore/python/petstore_api/rest.py | 0 .../client/petstore/python/requirements.txt | 0 .../openapi3/client/petstore/python/setup.cfg | 0 .../openapi3/client/petstore/python/setup.py | 0 .../petstore/python/test-requirements.txt | 0 .../client/petstore/python/test/__init__.py | 0 .../petstore/python/test/test_enum_test.py | 6 +- .../openapi3/client/petstore/python/tox.ini | 0 42 files changed, 116 insertions(+), 1088 deletions(-) delete mode 100644 samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md delete mode 100644 samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py delete mode 100644 samples/client/echo_api/python/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md delete mode 100644 samples/client/echo_api/python/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py delete mode 100644 samples/client/echo_api/python/poetry.lock delete mode 100644 samples/client/echo_api/python/testfiles/test.gif mode change 100755 => 100644 samples/openapi3/client/petstore/python/README.md delete mode 100644 samples/openapi3/client/petstore/python/docs/EnumSerialization.md mode change 100755 => 100644 samples/openapi3/client/petstore/python/git_push.sh mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/__init__.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/__init__.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/default_api.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/store_api.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api/user_api.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/api_client.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/configuration.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/exceptions.py delete mode 100644 samples/openapi3/client/petstore/python/petstore_api/models/enum_serialization.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/petstore_api/rest.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/requirements.txt mode change 100755 => 100644 samples/openapi3/client/petstore/python/setup.cfg mode change 100755 => 100644 samples/openapi3/client/petstore/python/setup.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/test-requirements.txt mode change 100755 => 100644 samples/openapi3/client/petstore/python/test/__init__.py mode change 100755 => 100644 samples/openapi3/client/petstore/python/tox.ini diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md deleted file mode 100644 index 4c8f1af90f6f..000000000000 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md +++ /dev/null @@ -1,29 +0,0 @@ -# TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter - - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**values** | **List[int]** | | [optional] - -## Example - -```python -from openapi_client.models.test_query_style_form_explode_true_array_integer_query_object_parameter import TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter - -# TODO update the JSON string below -json = "{}" -# create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a JSON string -test_query_style_form_explode_true_array_integer_query_object_parameter_instance = TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.from_json(json) -# print the JSON string representation of the object -print TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.to_json() - -# convert the object into a dict -test_query_style_form_explode_true_array_integer_query_object_parameter_dict = test_query_style_form_explode_true_array_integer_query_object_parameter_instance.to_dict() -# create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a dict -test_query_style_form_explode_true_array_integer_query_object_parameter_form_dict = test_query_style_form_explode_true_array_integer_query_object_parameter.from_dict(test_query_style_form_explode_true_array_integer_query_object_parameter_dict) -``` -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py deleted file mode 100644 index 52e50d5a5612..000000000000 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py +++ /dev/null @@ -1,93 +0,0 @@ -# coding: utf-8 - -""" - Echo Server API - - Echo Server API - - The version of the OpenAPI document: 0.1.0 - Contact: team@openapitools.org - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter(BaseModel): - """ - TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter - """ # noqa: E501 - values: Optional[List[StrictInt]] = None - __properties: ClassVar[List[str]] = ["values"] - - model_config = { - "populate_by_name": True, - "validate_assignment": True, - "protected_namespaces": (), - } - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - # raise errors for additional fields in the input - for _key in obj.keys(): - if _key not in cls.__properties: - raise ValueError("Error due to additional fields (not defined in TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter) in the input: " + _key) - - _obj = cls.model_validate({ - "values": obj.get("values") - }) - return _obj - - diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test/test_query_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test/test_query_api.py index e2e6c2dac461..88d1a7e195d1 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test/test_query_api.py +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test/test_query_api.py @@ -97,6 +97,13 @@ def test_test_query_style_form_explode_true_object_all_of(self) -> None: """ pass + def test_test_query_style_json_serialization_object(self) -> None: + """Test case for test_query_style_json_serialization_object + + Test query parameter(s) + """ + pass + if __name__ == '__main__': unittest.main() diff --git a/samples/client/echo_api/python/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md b/samples/client/echo_api/python/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md deleted file mode 100644 index 4c8f1af90f6f..000000000000 --- a/samples/client/echo_api/python/docs/TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.md +++ /dev/null @@ -1,29 +0,0 @@ -# TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter - - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**values** | **List[int]** | | [optional] - -## Example - -```python -from openapi_client.models.test_query_style_form_explode_true_array_integer_query_object_parameter import TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter - -# TODO update the JSON string below -json = "{}" -# create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a JSON string -test_query_style_form_explode_true_array_integer_query_object_parameter_instance = TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.from_json(json) -# print the JSON string representation of the object -print TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter.to_json() - -# convert the object into a dict -test_query_style_form_explode_true_array_integer_query_object_parameter_dict = test_query_style_form_explode_true_array_integer_query_object_parameter_instance.to_dict() -# create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a dict -test_query_style_form_explode_true_array_integer_query_object_parameter_form_dict = test_query_style_form_explode_true_array_integer_query_object_parameter.from_dict(test_query_style_form_explode_true_array_integer_query_object_parameter_dict) -``` -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/samples/client/echo_api/python/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py b/samples/client/echo_api/python/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py deleted file mode 100644 index 93c6f0c1216d..000000000000 --- a/samples/client/echo_api/python/openapi_client/models/test_query_style_form_explode_true_array_integer_query_object_parameter.py +++ /dev/null @@ -1,88 +0,0 @@ -# coding: utf-8 - -""" - Echo Server API - - Echo Server API - - The version of the OpenAPI document: 0.1.0 - Contact: team@openapitools.org - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import pprint -import re # noqa: F401 -import json - -from pydantic import BaseModel, StrictInt -from typing import Any, ClassVar, Dict, List, Optional -from typing import Optional, Set -from typing_extensions import Self - -class TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter(BaseModel): - """ - TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter - """ # noqa: E501 - values: Optional[List[StrictInt]] = None - __properties: ClassVar[List[str]] = ["values"] - - model_config = { - "populate_by_name": True, - "validate_assignment": True, - "protected_namespaces": (), - } - - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([ - ]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of TestQueryStyleFormExplodeTrueArrayIntegerQueryObjectParameter from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({ - "values": obj.get("values") - }) - return _obj - - diff --git a/samples/client/echo_api/python/poetry.lock b/samples/client/echo_api/python/poetry.lock deleted file mode 100644 index 8948a229b704..000000000000 --- a/samples/client/echo_api/python/poetry.lock +++ /dev/null @@ -1,682 +0,0 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[[package]] -name = "cachetools" -version = "5.5.0" -description = "Extensible memoizing collections and decorators" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "chardet" -version = "5.2.0" -description = "Universal encoding detector for Python 3" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, - {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "coverage" -version = "7.6.1" -description = "Code coverage measurement for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, - {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, - {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, - {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, - {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, - {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, - {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, - {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, - {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, - {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, - {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, - {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, - {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, - {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, - {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, - {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, - {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, - {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, - {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, - {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, - {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, - {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, - {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, - {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, - {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, - {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, - {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, - {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, - {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, - {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, - {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, - {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, - {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, - {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, - {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, - {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, - {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, - {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, - {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, - {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, - {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, - {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, - {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, - {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, -] - -[package.dependencies] -tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} - -[package.extras] -toml = ["tomli ; python_full_version <= \"3.11.0a6\""] - -[[package]] -name = "distlib" -version = "0.3.9" -description = "Distribution utilities" -optional = false -python-versions = "*" -groups = ["dev"] -files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -markers = "python_version < \"3.11\"" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "filelock" -version = "3.16.1" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] - -[[package]] -name = "flake8" -version = "5.0.4" -description = "the modular source code checker: pep8 pyflakes and co" -optional = false -python-versions = ">=3.6.1" -groups = ["dev"] -files = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, -] - -[package.dependencies] -mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -optional = false -python-versions = ">=3.7" -groups = ["dev"] -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - -[[package]] -name = "mypy" -version = "1.13.0" -description = "Optional static typing for Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, - {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, - {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, - {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, - {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, - {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, - {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, - {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, - {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, - {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, - {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, - {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, - {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, - {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, - {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, - {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, - {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, - {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, - {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, - {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, - {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, - {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, - {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, - {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, - {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, - {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, - {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, -] - -[package.dependencies] -mypy-extensions = ">=1.0.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=4.6.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.5" -groups = ["dev"] -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "packaging" -version = "24.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "pycodestyle" -version = "2.9.1" -description = "Python style guide checker" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, -] - -[[package]] -name = "pydantic" -version = "2.9.2" -description = "Data validation using Python type hints" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, -] - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata ; python_version >= \"3.9\" and sys_platform == \"win32\""] - -[[package]] -name = "pydantic-core" -version = "2.23.4" -description = "Core functionality for Pydantic validation and serialization" -optional = false -python-versions = ">=3.8" -groups = ["main"] -files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pyflakes" -version = "2.5.0" -description = "passive checker of Python programs" -optional = false -python-versions = ">=3.6" -groups = ["dev"] -files = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, -] - -[[package]] -name = "pyproject-api" -version = "1.8.0" -description = "API to interact with the python pyproject.toml based projects" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pyproject_api-1.8.0-py3-none-any.whl", hash = "sha256:3d7d347a047afe796fd5d1885b1e391ba29be7169bd2f102fcd378f04273d228"}, - {file = "pyproject_api-1.8.0.tar.gz", hash = "sha256:77b8049f2feb5d33eefcc21b57f1e279636277a8ac8ad6b5871037b243778496"}, -] - -[package.dependencies] -packaging = ">=24.1" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "pytest (>=8.3.3)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "setuptools (>=75.1)"] - -[[package]] -name = "pytest" -version = "8.3.3" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, - {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "5.0.0" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, - {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, -] - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] -files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -groups = ["main"] -files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] - -[[package]] -name = "tomli" -version = "2.0.2" -description = "A lil' TOML parser" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -markers = "python_full_version <= \"3.11.0a6\"" -files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, -] - -[[package]] -name = "tox" -version = "4.23.2" -description = "tox is a generic virtualenv management and test command line tool" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "tox-4.23.2-py3-none-any.whl", hash = "sha256:452bc32bb031f2282881a2118923176445bac783ab97c874b8770ab4c3b76c38"}, - {file = "tox-4.23.2.tar.gz", hash = "sha256:86075e00e555df6e82e74cfc333917f91ecb47ffbc868dcafbd2672e332f4a2c"}, -] - -[package.dependencies] -cachetools = ">=5.5" -chardet = ">=5.2" -colorama = ">=0.4.6" -filelock = ">=3.16.1" -packaging = ">=24.1" -platformdirs = ">=4.3.6" -pluggy = ">=1.5" -pyproject-api = ">=1.8" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.12.2", markers = "python_version < \"3.11\""} -virtualenv = ">=20.26.6" - -[package.extras] -test = ["devpi-process (>=1.0.2)", "pytest (>=8.3.3)", "pytest-mock (>=3.14)"] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20241003" -description = "Typing stubs for python-dateutil" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446"}, - {file = "types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -optional = false -python-versions = ">=3.8" -groups = ["main", "dev"] -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "urllib3" -version = "2.6.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=3.9" -groups = ["main"] -files = [ - {file = "urllib3-2.6.0-py3-none-any.whl", hash = "sha256:c90f7a39f716c572c4e3e58509581ebd83f9b59cced005b7db7ad2d22b0db99f"}, - {file = "urllib3-2.6.0.tar.gz", hash = "sha256:cb9bcef5a4b345d5da5d145dc3e30834f58e8018828cbc724d30b4cb7d4d49f1"}, -] - -[package.extras] -brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] - -[[package]] -name = "virtualenv" -version = "20.27.1" -description = "Virtual Python Environment builder" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"}, - {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"}, -] - -[package.dependencies] -distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] - -[metadata] -lock-version = "2.1" -python-versions = "^3.8" -content-hash = "57d3b5d05d4e2134386b965cb2b75cdb799da017a82c8b162a1d03f7a31a3815" diff --git a/samples/client/echo_api/python/test/test_query_api.py b/samples/client/echo_api/python/test/test_query_api.py index e2e6c2dac461..88d1a7e195d1 100644 --- a/samples/client/echo_api/python/test/test_query_api.py +++ b/samples/client/echo_api/python/test/test_query_api.py @@ -97,6 +97,13 @@ def test_test_query_style_form_explode_true_object_all_of(self) -> None: """ pass + def test_test_query_style_json_serialization_object(self) -> None: + """Test case for test_query_style_json_serialization_object + + Test query parameter(s) + """ + pass + if __name__ == '__main__': unittest.main() diff --git a/samples/client/echo_api/python/testfiles/test.gif b/samples/client/echo_api/python/testfiles/test.gif deleted file mode 100644 index 9884f476b9c7cec495c94005574d7eb7a39475fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 ucmZ?wbhEHbWMp7uXkcXc|NlP&1B2pE7Dg_hfDVuiq!<|(n3#MR8LR=x#0L!k diff --git a/samples/openapi3/client/petstore/python-aiohttp/test/test_enum_test.py b/samples/openapi3/client/petstore/python-aiohttp/test/test_enum_test.py index 5f2f59e6c62b..d84613bc9464 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/test/test_enum_test.py +++ b/samples/openapi3/client/petstore/python-aiohttp/test/test_enum_test.py @@ -40,14 +40,14 @@ def make_instance(self, include_optional) -> EnumTest: enum_integer_default = 1, enum_integer = 1, enum_number = 1.1, - enum_number_vendor_ext = 42, - enum_string_vendor_ext = 'FOO', enum_string_single_member = 'abc', enum_integer_single_member = 100, outer_enum = 'placed', outer_enum_integer = 2, outer_enum_default_value = 'placed', - outer_enum_integer_default_value = -1 + outer_enum_integer_default_value = -1, + enum_number_vendor_ext = 42, + enum_string_vendor_ext = 'FOO' ) else: return EnumTest( diff --git a/samples/openapi3/client/petstore/python-aiohttp/test/test_one_of_enum_string.py b/samples/openapi3/client/petstore/python-aiohttp/test/test_one_of_enum_string.py index 0434db164a7e..ca7314f13eff 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/test/test_one_of_enum_string.py +++ b/samples/openapi3/client/petstore/python-aiohttp/test/test_one_of_enum_string.py @@ -25,26 +25,9 @@ def setUp(self): def tearDown(self): pass - def make_instance(self, include_optional) -> OneOfEnumString: - """Test OneOfEnumString - include_optional is a boolean, when False only required - params are included, when True both required and - optional params are included """ - # uncomment below to create an instance of `OneOfEnumString` - """ - model = OneOfEnumString() - if include_optional: - return OneOfEnumString( - ) - else: - return OneOfEnumString( - ) - """ - def testOneOfEnumString(self): """Test OneOfEnumString""" - # inst_req_only = self.make_instance(include_optional=False) - # inst_req_and_optional = self.make_instance(include_optional=True) + # inst = OneOfEnumString() if __name__ == '__main__': unittest.main() diff --git a/samples/openapi3/client/petstore/python-aiohttp/test/test_with_nested_one_of.py b/samples/openapi3/client/petstore/python-aiohttp/test/test_with_nested_one_of.py index 6d8fd35bfc08..e73d0279b96b 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/test/test_with_nested_one_of.py +++ b/samples/openapi3/client/petstore/python-aiohttp/test/test_with_nested_one_of.py @@ -37,7 +37,7 @@ def make_instance(self, include_optional) -> WithNestedOneOf: return WithNestedOneOf( size = 56, nested_pig = None, - nested_oneof_enum_string = None + nested_oneof_enum_string = 'a' ) else: return WithNestedOneOf( diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_another_fake_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_another_fake_api.py index d1b73d979ffc..93d3c4088940 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_another_fake_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_another_fake_api.py @@ -17,16 +17,16 @@ from petstore_api.api.another_fake_api import AnotherFakeApi -class TestAnotherFakeApi(unittest.TestCase): +class TestAnotherFakeApi(unittest.IsolatedAsyncioTestCase): """AnotherFakeApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = AnotherFakeApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_call_123_test_special_tags(self) -> None: + async def test_call_123_test_special_tags(self) -> None: """Test case for call_123_test_special_tags To test special tags diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_default_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_default_api.py index eb421a8edc1b..763eed825053 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_default_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_default_api.py @@ -17,16 +17,16 @@ from petstore_api.api.default_api import DefaultApi -class TestDefaultApi(unittest.TestCase): +class TestDefaultApi(unittest.IsolatedAsyncioTestCase): """DefaultApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = DefaultApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_foo_get(self) -> None: + async def test_foo_get(self) -> None: """Test case for foo_get """ diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_fake_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_fake_api.py index 11920b00480e..048479d824ed 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_fake_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_fake_api.py @@ -17,257 +17,257 @@ from petstore_api.api.fake_api import FakeApi -class TestFakeApi(unittest.TestCase): +class TestFakeApi(unittest.IsolatedAsyncioTestCase): """FakeApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = FakeApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_fake_any_type_request_body(self) -> None: + async def test_fake_any_type_request_body(self) -> None: """Test case for fake_any_type_request_body test any type request body """ pass - def test_fake_enum_ref_query_parameter(self) -> None: + async def test_fake_enum_ref_query_parameter(self) -> None: """Test case for fake_enum_ref_query_parameter test enum reference query parameter """ pass - def test_fake_health_get(self) -> None: + async def test_fake_health_get(self) -> None: """Test case for fake_health_get Health check endpoint """ pass - def test_fake_http_signature_test(self) -> None: + async def test_fake_http_signature_test(self) -> None: """Test case for fake_http_signature_test test http signature authentication """ pass - def test_fake_outer_boolean_serialize(self) -> None: + async def test_fake_outer_boolean_serialize(self) -> None: """Test case for fake_outer_boolean_serialize """ pass - def test_fake_outer_composite_serialize(self) -> None: + async def test_fake_outer_composite_serialize(self) -> None: """Test case for fake_outer_composite_serialize """ pass - def test_fake_outer_number_serialize(self) -> None: + async def test_fake_outer_number_serialize(self) -> None: """Test case for fake_outer_number_serialize """ pass - def test_fake_outer_string_serialize(self) -> None: + async def test_fake_outer_string_serialize(self) -> None: """Test case for fake_outer_string_serialize """ pass - def test_fake_property_enum_integer_serialize(self) -> None: + async def test_fake_property_enum_integer_serialize(self) -> None: """Test case for fake_property_enum_integer_serialize """ pass - def test_fake_ref_enum_string(self) -> None: + async def test_fake_ref_enum_string(self) -> None: """Test case for fake_ref_enum_string test ref to enum string """ pass - def test_fake_return_boolean(self) -> None: + async def test_fake_return_boolean(self) -> None: """Test case for fake_return_boolean test returning boolean """ pass - def test_fake_return_byte_like_json(self) -> None: + async def test_fake_return_byte_like_json(self) -> None: """Test case for fake_return_byte_like_json test byte like json """ pass - def test_fake_return_enum(self) -> None: + async def test_fake_return_enum(self) -> None: """Test case for fake_return_enum test returning enum """ pass - def test_fake_return_enum_like_json(self) -> None: + async def test_fake_return_enum_like_json(self) -> None: """Test case for fake_return_enum_like_json test enum like json """ pass - def test_fake_return_float(self) -> None: + async def test_fake_return_float(self) -> None: """Test case for fake_return_float test returning float """ pass - def test_fake_return_int(self) -> None: + async def test_fake_return_int(self) -> None: """Test case for fake_return_int test returning int """ pass - def test_fake_return_list_of_objects(self) -> None: + async def test_fake_return_list_of_objects(self) -> None: """Test case for fake_return_list_of_objects test returning list of objects """ pass - def test_fake_return_str_like_json(self) -> None: + async def test_fake_return_str_like_json(self) -> None: """Test case for fake_return_str_like_json test str like json """ pass - def test_fake_return_string(self) -> None: + async def test_fake_return_string(self) -> None: """Test case for fake_return_string test returning string """ pass - def test_fake_uuid_example(self) -> None: + async def test_fake_uuid_example(self) -> None: """Test case for fake_uuid_example test uuid example """ pass - def test_test_additional_properties_reference(self) -> None: + async def test_test_additional_properties_reference(self) -> None: """Test case for test_additional_properties_reference test referenced additionalProperties """ pass - def test_test_body_with_binary(self) -> None: + async def test_test_body_with_binary(self) -> None: """Test case for test_body_with_binary """ pass - def test_test_body_with_file_schema(self) -> None: + async def test_test_body_with_file_schema(self) -> None: """Test case for test_body_with_file_schema """ pass - def test_test_body_with_query_params(self) -> None: + async def test_test_body_with_query_params(self) -> None: """Test case for test_body_with_query_params """ pass - def test_test_client_model(self) -> None: + async def test_test_client_model(self) -> None: """Test case for test_client_model To test \"client\" model """ pass - def test_test_date_time_query_parameter(self) -> None: + async def test_test_date_time_query_parameter(self) -> None: """Test case for test_date_time_query_parameter """ pass - def test_test_empty_and_non_empty_responses(self) -> None: + async def test_test_empty_and_non_empty_responses(self) -> None: """Test case for test_empty_and_non_empty_responses test empty and non-empty responses """ pass - def test_test_endpoint_parameters(self) -> None: + async def test_test_endpoint_parameters(self) -> None: """Test case for test_endpoint_parameters Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 """ pass - def test_test_error_responses_with_model(self) -> None: + async def test_test_error_responses_with_model(self) -> None: """Test case for test_error_responses_with_model test error responses with model """ pass - def test_test_group_parameters(self) -> None: + async def test_test_group_parameters(self) -> None: """Test case for test_group_parameters Fake endpoint to test group parameters (optional) """ pass - def test_test_inline_additional_properties(self) -> None: + async def test_test_inline_additional_properties(self) -> None: """Test case for test_inline_additional_properties test inline additionalProperties """ pass - def test_test_inline_freeform_additional_properties(self) -> None: + async def test_test_inline_freeform_additional_properties(self) -> None: """Test case for test_inline_freeform_additional_properties test inline free-form additionalProperties """ pass - def test_test_json_form_data(self) -> None: + async def test_test_json_form_data(self) -> None: """Test case for test_json_form_data test json serialization of form data """ pass - def test_test_object_for_multipart_requests(self) -> None: + async def test_test_object_for_multipart_requests(self) -> None: """Test case for test_object_for_multipart_requests """ pass - def test_test_query_parameter_collection_format(self) -> None: + async def test_test_query_parameter_collection_format(self) -> None: """Test case for test_query_parameter_collection_format """ pass - def test_test_string_map_reference(self) -> None: + async def test_test_string_map_reference(self) -> None: """Test case for test_string_map_reference test referenced string map """ pass - def test_upload_file_with_additional_properties(self) -> None: + async def test_upload_file_with_additional_properties(self) -> None: """Test case for upload_file_with_additional_properties uploads a file and additional properties using multipart/form-data diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_fake_classname_tags123_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_fake_classname_tags123_api.py index 9282bf7150cb..12a8629dc308 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_fake_classname_tags123_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_fake_classname_tags123_api.py @@ -17,16 +17,16 @@ from petstore_api.api.fake_classname_tags123_api import FakeClassnameTags123Api -class TestFakeClassnameTags123Api(unittest.TestCase): +class TestFakeClassnameTags123Api(unittest.IsolatedAsyncioTestCase): """FakeClassnameTags123Api unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = FakeClassnameTags123Api() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_test_classname(self) -> None: + async def test_test_classname(self) -> None: """Test case for test_classname To test class name in snake case diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_import_test_datetime_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_import_test_datetime_api.py index 6cd4fb8cbaf5..73069b626123 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_import_test_datetime_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_import_test_datetime_api.py @@ -17,16 +17,16 @@ from petstore_api.api.import_test_datetime_api import ImportTestDatetimeApi -class TestImportTestDatetimeApi(unittest.TestCase): +class TestImportTestDatetimeApi(unittest.IsolatedAsyncioTestCase): """ImportTestDatetimeApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = ImportTestDatetimeApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_import_test_return_datetime(self) -> None: + async def test_import_test_return_datetime(self) -> None: """Test case for import_test_return_datetime test date time diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_pet_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_pet_api.py index 4cf869d36a26..19c138fee2c1 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_pet_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_pet_api.py @@ -17,72 +17,72 @@ from petstore_api.api.pet_api import PetApi -class TestPetApi(unittest.TestCase): +class TestPetApi(unittest.IsolatedAsyncioTestCase): """PetApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = PetApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_add_pet(self) -> None: + async def test_add_pet(self) -> None: """Test case for add_pet Add a new pet to the store """ pass - def test_delete_pet(self) -> None: + async def test_delete_pet(self) -> None: """Test case for delete_pet Deletes a pet """ pass - def test_find_pets_by_status(self) -> None: + async def test_find_pets_by_status(self) -> None: """Test case for find_pets_by_status Finds Pets by status """ pass - def test_find_pets_by_tags(self) -> None: + async def test_find_pets_by_tags(self) -> None: """Test case for find_pets_by_tags Finds Pets by tags """ pass - def test_get_pet_by_id(self) -> None: + async def test_get_pet_by_id(self) -> None: """Test case for get_pet_by_id Find pet by ID """ pass - def test_update_pet(self) -> None: + async def test_update_pet(self) -> None: """Test case for update_pet Update an existing pet """ pass - def test_update_pet_with_form(self) -> None: + async def test_update_pet_with_form(self) -> None: """Test case for update_pet_with_form Updates a pet in the store with form data """ pass - def test_upload_file(self) -> None: + async def test_upload_file(self) -> None: """Test case for upload_file uploads an image """ pass - def test_upload_file_with_required_file(self) -> None: + async def test_upload_file_with_required_file(self) -> None: """Test case for upload_file_with_required_file uploads an image (required) diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_store_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_store_api.py index 603b0f7bc57c..5cbcd18b75fb 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_store_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_store_api.py @@ -17,37 +17,37 @@ from petstore_api.api.store_api import StoreApi -class TestStoreApi(unittest.TestCase): +class TestStoreApi(unittest.IsolatedAsyncioTestCase): """StoreApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = StoreApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_delete_order(self) -> None: + async def test_delete_order(self) -> None: """Test case for delete_order Delete purchase order by ID """ pass - def test_get_inventory(self) -> None: + async def test_get_inventory(self) -> None: """Test case for get_inventory Returns pet inventories by status """ pass - def test_get_order_by_id(self) -> None: + async def test_get_order_by_id(self) -> None: """Test case for get_order_by_id Find purchase order by ID """ pass - def test_place_order(self) -> None: + async def test_place_order(self) -> None: """Test case for place_order Place an order for a pet diff --git a/samples/openapi3/client/petstore/python-httpx/test/test_user_api.py b/samples/openapi3/client/petstore/python-httpx/test/test_user_api.py index 6b17c42093e2..e091d190dea4 100644 --- a/samples/openapi3/client/petstore/python-httpx/test/test_user_api.py +++ b/samples/openapi3/client/petstore/python-httpx/test/test_user_api.py @@ -17,65 +17,65 @@ from petstore_api.api.user_api import UserApi -class TestUserApi(unittest.TestCase): +class TestUserApi(unittest.IsolatedAsyncioTestCase): """UserApi unit test stubs""" - def setUp(self) -> None: + async def asyncSetUp(self) -> None: self.api = UserApi() - def tearDown(self) -> None: - pass + async def asyncTearDown(self) -> None: + await self.api.api_client.close() - def test_create_user(self) -> None: + async def test_create_user(self) -> None: """Test case for create_user Create user """ pass - def test_create_users_with_array_input(self) -> None: + async def test_create_users_with_array_input(self) -> None: """Test case for create_users_with_array_input Creates list of users with given input array """ pass - def test_create_users_with_list_input(self) -> None: + async def test_create_users_with_list_input(self) -> None: """Test case for create_users_with_list_input Creates list of users with given input array """ pass - def test_delete_user(self) -> None: + async def test_delete_user(self) -> None: """Test case for delete_user Delete user """ pass - def test_get_user_by_name(self) -> None: + async def test_get_user_by_name(self) -> None: """Test case for get_user_by_name Get user by user name """ pass - def test_login_user(self) -> None: + async def test_login_user(self) -> None: """Test case for login_user Logs user into the system """ pass - def test_logout_user(self) -> None: + async def test_logout_user(self) -> None: """Test case for logout_user Logs out current logged in user session """ pass - def test_update_user(self) -> None: + async def test_update_user(self) -> None: """Test case for update_user Updated user diff --git a/samples/openapi3/client/petstore/python/README.md b/samples/openapi3/client/petstore/python/README.md old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/docs/EnumSerialization.md b/samples/openapi3/client/petstore/python/docs/EnumSerialization.md deleted file mode 100644 index 68d6e8e23fde..000000000000 --- a/samples/openapi3/client/petstore/python/docs/EnumSerialization.md +++ /dev/null @@ -1,11 +0,0 @@ -# EnumSerialization - - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/samples/openapi3/client/petstore/python/git_push.sh b/samples/openapi3/client/petstore/python/git_push.sh old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/__init__.py b/samples/openapi3/client/petstore/python/petstore_api/__init__.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/__init__.py b/samples/openapi3/client/petstore/python/petstore_api/api/__init__.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/another_fake_api.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/default_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/default_api.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/fake_api.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/pet_api.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/store_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/store_api.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api/user_api.py b/samples/openapi3/client/petstore/python/petstore_api/api/user_api.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/api_client.py b/samples/openapi3/client/petstore/python/petstore_api/api_client.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/configuration.py b/samples/openapi3/client/petstore/python/petstore_api/configuration.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/exceptions.py b/samples/openapi3/client/petstore/python/petstore_api/exceptions.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/enum_serialization.py b/samples/openapi3/client/petstore/python/petstore_api/models/enum_serialization.py deleted file mode 100644 index b7177b7f380a..000000000000 --- a/samples/openapi3/client/petstore/python/petstore_api/models/enum_serialization.py +++ /dev/null @@ -1,37 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI Petstore - - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from __future__ import annotations -import json -from enum import Enum -from typing_extensions import Self - - -class EnumSerialization(int, Enum): - """ - EnumSerialization - """ - - """ - allowed enum values - """ - NUMBER_0 = 0 - NUMBER_1 = 1 - - @classmethod - def from_json(cls, json_str: str) -> Self: - """Create an instance of EnumSerialization from a JSON string""" - return cls(json.loads(json_str)) - - diff --git a/samples/openapi3/client/petstore/python/petstore_api/rest.py b/samples/openapi3/client/petstore/python/petstore_api/rest.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/requirements.txt b/samples/openapi3/client/petstore/python/requirements.txt old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/setup.cfg b/samples/openapi3/client/petstore/python/setup.cfg old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/setup.py b/samples/openapi3/client/petstore/python/setup.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/test-requirements.txt b/samples/openapi3/client/petstore/python/test-requirements.txt old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/test/__init__.py b/samples/openapi3/client/petstore/python/test/__init__.py old mode 100755 new mode 100644 diff --git a/samples/openapi3/client/petstore/python/test/test_enum_test.py b/samples/openapi3/client/petstore/python/test/test_enum_test.py index 5f2f59e6c62b..d84613bc9464 100644 --- a/samples/openapi3/client/petstore/python/test/test_enum_test.py +++ b/samples/openapi3/client/petstore/python/test/test_enum_test.py @@ -40,14 +40,14 @@ def make_instance(self, include_optional) -> EnumTest: enum_integer_default = 1, enum_integer = 1, enum_number = 1.1, - enum_number_vendor_ext = 42, - enum_string_vendor_ext = 'FOO', enum_string_single_member = 'abc', enum_integer_single_member = 100, outer_enum = 'placed', outer_enum_integer = 2, outer_enum_default_value = 'placed', - outer_enum_integer_default_value = -1 + outer_enum_integer_default_value = -1, + enum_number_vendor_ext = 42, + enum_string_vendor_ext = 'FOO' ) else: return EnumTest( diff --git a/samples/openapi3/client/petstore/python/tox.ini b/samples/openapi3/client/petstore/python/tox.ini old mode 100755 new mode 100644 From a0dd2bc9fea6fc7b980093e0b41f1bf09f19aee3 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 15:17:41 +0000 Subject: [PATCH 2/7] [python] Drop fallback for poetry 1.x poetry 2.x is a year old now. We no longer need to keep this workaround. Signed-off-by: Stephen Finucane --- .../main/resources/python/pyproject.mustache | 58 +------------------ .../python/PythonClientCodegenTest.java | 54 +---------------- .../pyproject.toml | 2 +- samples/client/echo_api/python/pyproject.toml | 2 +- .../petstore/python-aiohttp/pyproject.toml | 37 +++++++----- .../petstore/python-httpx/pyproject.toml | 2 +- .../python-lazyImports/pyproject.toml | 2 +- .../client/petstore/python/pyproject.toml | 2 +- 8 files changed, 29 insertions(+), 130 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/pyproject.mustache b/modules/openapi-generator/src/main/resources/python/pyproject.mustache index 7eed997a3f43..982f87382cc4 100644 --- a/modules/openapi-generator/src/main/resources/python/pyproject.mustache +++ b/modules/openapi-generator/src/main/resources/python/pyproject.mustache @@ -1,63 +1,15 @@ -{{#poetry1}} -[tool.poetry] -{{/poetry1}} -{{^poetry1}} [project] -{{/poetry1}} name = "{{{packageName}}}" version = "{{{packageVersion}}}" description = "{{{appName}}}" -{{#poetry1}} -authors = ["{{infoName}}{{^infoName}}OpenAPI Generator Community{{/infoName}} <{{infoEmail}}{{^infoEmail}}team@openapitools.org{{/infoEmail}}>"] -{{/poetry1}} -{{^poetry1}} authors = [ - {name = "{{infoName}}{{^infoName}}OpenAPI Generator Community{{/infoName}}",email = "{{infoEmail}}{{^infoEmail}}team@openapitools.org{{/infoEmail}}"}, + {name = "{{infoName}}{{^infoName}}OpenAPI Generator Community{{/infoName}}", email = "{{infoEmail}}{{^infoEmail}}team@openapitools.org{{/infoEmail}}"}, ] -{{/poetry1}} {{#licenseInfo}} -{{#poetry1}} -license = "{{{licenseInfo}}}" -{{/poetry1}} -{{^poetry1}} license = { text = "{{{licenseInfo}}}" } -{{/poetry1}} {{/licenseInfo}} readme = "README.md" -{{#poetry1}} -repository = "https://{{{gitHost}}}/{{{gitUserId}}}/{{{gitRepoId}}}" -{{/poetry1}} keywords = ["OpenAPI", "OpenAPI-Generator", "{{{appName}}}"] -{{#poetry1}} -include = ["{{packageName}}/py.typed"] - -[tool.poetry.dependencies] -python = "^3.9" -{{^async}} -urllib3 = ">= 2.1.0, < 3.0.0" -{{/async}} -python-dateutil = ">= 2.8.2" -{{#asyncio}} -aiohttp = ">= 3.8.4" -aiohttp-retry = ">= 2.8.3" -{{/asyncio}} -{{#httpx}} -httpx = ">= 0.28.1" -{{/httpx}} -{{#tornado}} -tornado = ">=4.2, <5" -{{/tornado}} -{{#hasHttpSignatureMethods}} -pem = ">= 19.3.0" -pycryptodome = ">= 3.9.0" -{{/hasHttpSignatureMethods}} -pydantic = ">= 2" -typing-extensions = ">= 4.7.1" -{{#lazyImports}} -lazy-imports = ">= 1, < 2" -{{/lazyImports}} -{{/poetry1}} -{{^poetry1}} requires-python = ">=3.9" dependencies = [ @@ -89,18 +41,10 @@ dependencies = [ [project.urls] Repository = "https://{{{gitHost}}}/{{{gitUserId}}}/{{{gitRepoId}}}" -{{/poetry1}} -{{^poetry1}} [tool.poetry] requires-poetry = ">=2.0" -{{/poetry1}} -{{#poetry1}} -[tool.poetry.dev-dependencies] -{{/poetry1}} -{{^poetry1}} [tool.poetry.group.dev.dependencies] -{{/poetry1}} pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" tox = ">= 3.9.0" diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java index a18f2f40d11b..2a93352b69e9 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java @@ -613,7 +613,7 @@ public void testInitFileImportsExports() throws IOException { assertFileContains(initFilePath, "from openapi_client.models.user import User as User"); } - @Test(description = "Verify default license format uses object notation when poetry1 is false") + @Test(description = "Verify default license format uses object notation") public void testLicenseFormatInPyprojectToml() throws IOException { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); output.deleteOnExit(); @@ -633,56 +633,4 @@ public void testLicenseFormatInPyprojectToml() throws IOException { TestUtils.assertFileContains(Paths.get(output.getAbsolutePath(), "pyproject.toml"), "license = { text = \"MIT\" }"); } - - @Test(description = "Verify poetry1 mode uses string notation for license") - public void testPoetry1LicenseFormat() throws IOException { - File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); - output.deleteOnExit(); - - final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("python") - .setInputSpec("src/test/resources/bugs/issue_21619.yaml") - .setOutputDir(output.getAbsolutePath()) - .addAdditionalProperty("licenseInfo", "Apache-2.0") - .addAdditionalProperty("poetry1", true); // Enable legacy poetry1 mode - - DefaultGenerator generator = new DefaultGenerator(); - List files = generator.opts(configurator.toClientOptInput()).generate(); - files.forEach(File::deleteOnExit); - - Path pyprojectPath = Paths.get(output.getAbsolutePath(), "pyproject.toml"); - TestUtils.assertFileExists(pyprojectPath); - - // In poetry1 mode, license should use simple string format: "Apache-2.0" - TestUtils.assertFileContains(pyprojectPath, "license = \"Apache-2.0\""); - - // Verify it does NOT use the new object format - TestUtils.assertFileNotContains(pyprojectPath, "license = { text = \"Apache-2.0\" }"); - } - - @Test(description = "Verify non-poetry1 mode uses object notation for license") - public void testNonPoetry1LicenseFormat() throws IOException { - File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); - output.deleteOnExit(); - - final CodegenConfigurator configurator = new CodegenConfigurator() - .setGeneratorName("python") - .setInputSpec("src/test/resources/bugs/issue_21619.yaml") - .setOutputDir(output.getAbsolutePath()) - .addAdditionalProperty("licenseInfo", "BSD-3-Clause") - .addAdditionalProperty("poetry1", false); // Explicitly disable poetry1 mode - - DefaultGenerator generator = new DefaultGenerator(); - List files = generator.opts(configurator.toClientOptInput()).generate(); - files.forEach(File::deleteOnExit); - - Path pyprojectPath = Paths.get(output.getAbsolutePath(), "pyproject.toml"); - TestUtils.assertFileExists(pyprojectPath); - - // In non-poetry1 mode, license should use object format: { text = "BSD-3-Clause" } - TestUtils.assertFileContains(pyprojectPath, "license = { text = \"BSD-3-Clause\" }"); - - // Verify it does NOT use the legacy string format - TestUtils.assertFileNotContains(pyprojectPath, "license = \"BSD-3-Clause\""); - } } diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml index 84c2c75e9f88..3aced99fb3d9 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml @@ -3,7 +3,7 @@ name = "openapi_client" version = "1.0.0" description = "Echo Server API" authors = [ - {name = "OpenAPI Generator Community",email = "team@openapitools.org"}, + {name = "OpenAPI Generator Community", email = "team@openapitools.org"}, ] license = { text = "Apache 2.0" } readme = "README.md" diff --git a/samples/client/echo_api/python/pyproject.toml b/samples/client/echo_api/python/pyproject.toml index 84c2c75e9f88..3aced99fb3d9 100644 --- a/samples/client/echo_api/python/pyproject.toml +++ b/samples/client/echo_api/python/pyproject.toml @@ -3,7 +3,7 @@ name = "openapi_client" version = "1.0.0" description = "Echo Server API" authors = [ - {name = "OpenAPI Generator Community",email = "team@openapitools.org"}, + {name = "OpenAPI Generator Community", email = "team@openapitools.org"}, ] license = { text = "Apache 2.0" } readme = "README.md" diff --git a/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml b/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml index 8e03a6c82feb..b4f28f9b9363 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml +++ b/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml @@ -1,25 +1,32 @@ -[tool.poetry] +[project] name = "petstore_api" version = "1.0.0" description = "OpenAPI Petstore" -authors = ["OpenAPI Generator Community "] -license = "Apache-2.0" +authors = [ + {name = "OpenAPI Generator Community", email = "team@openapitools.org"}, +] +license = { text = "Apache-2.0" } readme = "README.md" -repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" keywords = ["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"] -include = ["petstore_api/py.typed"] +requires-python = ">=3.9" + +dependencies = [ + "python-dateutil (>=2.8.2)", + "aiohttp (>=3.8.4)", + "aiohttp-retry (>=2.8.3)", + "pem (>=19.3.0)", + "pycryptodome (>=3.9.0)", + "pydantic (>=2)", + "typing-extensions (>=4.7.1)", +] + +[project.urls] +Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry.dependencies] -python = "^3.9" -python-dateutil = ">= 2.8.2" -aiohttp = ">= 3.8.4" -aiohttp-retry = ">= 2.8.3" -pem = ">= 19.3.0" -pycryptodome = ">= 3.9.0" -pydantic = ">= 2" -typing-extensions = ">= 4.7.1" +[tool.poetry] +requires-poetry = ">=2.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" tox = ">= 3.9.0" diff --git a/samples/openapi3/client/petstore/python-httpx/pyproject.toml b/samples/openapi3/client/petstore/python-httpx/pyproject.toml index 17720c14e8c2..6655020ebd24 100644 --- a/samples/openapi3/client/petstore/python-httpx/pyproject.toml +++ b/samples/openapi3/client/petstore/python-httpx/pyproject.toml @@ -3,7 +3,7 @@ name = "petstore_api" version = "1.0.0" description = "OpenAPI Petstore" authors = [ - {name = "OpenAPI Generator Community",email = "team@openapitools.org"}, + {name = "OpenAPI Generator Community", email = "team@openapitools.org"}, ] license = { text = "Apache-2.0" } readme = "README.md" diff --git a/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml b/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml index a466656e8b6e..a2f39388489b 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml +++ b/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml @@ -3,7 +3,7 @@ name = "petstore_api" version = "1.0.0" description = "OpenAPI Petstore" authors = [ - {name = "OpenAPI Generator Community",email = "team@openapitools.org"}, + {name = "OpenAPI Generator Community", email = "team@openapitools.org"}, ] license = { text = "Apache-2.0" } readme = "README.md" diff --git a/samples/openapi3/client/petstore/python/pyproject.toml b/samples/openapi3/client/petstore/python/pyproject.toml index eed3d1a1ac49..422365724eeb 100644 --- a/samples/openapi3/client/petstore/python/pyproject.toml +++ b/samples/openapi3/client/petstore/python/pyproject.toml @@ -3,7 +3,7 @@ name = "petstore_api" version = "1.0.0" description = "OpenAPI Petstore" authors = [ - {name = "OpenAPI Generator Community",email = "team@openapitools.org"}, + {name = "OpenAPI Generator Community", email = "team@openapitools.org"}, ] license = { text = "Apache-2.0" } readme = "README.md" From 0c187334d8cc465b63ea9a2ff7ded3992eb233f6 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 15:22:58 +0000 Subject: [PATCH 3/7] [python] Switch build backend to poetry-core This is more efficient and allows for seamless use of the package in e.g. tox Signed-off-by: Stephen Finucane --- .../src/main/resources/python/pyproject.mustache | 13 ++++--------- .../pyproject.toml | 13 ++++--------- samples/client/echo_api/python/pyproject.toml | 13 ++++--------- .../client/petstore/python-aiohttp/pyproject.toml | 13 ++++--------- .../client/petstore/python-httpx/pyproject.toml | 13 ++++--------- .../petstore/python-lazyImports/pyproject.toml | 13 ++++--------- .../openapi3/client/petstore/python/pyproject.toml | 13 ++++--------- 7 files changed, 28 insertions(+), 63 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/pyproject.mustache b/modules/openapi-generator/src/main/resources/python/pyproject.mustache index 982f87382cc4..61c9b6bb990c 100644 --- a/modules/openapi-generator/src/main/resources/python/pyproject.mustache +++ b/modules/openapi-generator/src/main/resources/python/pyproject.mustache @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "{{{packageName}}}" version = "{{{packageVersion}}}" @@ -11,7 +15,6 @@ license = { text = "{{{licenseInfo}}}" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "{{{appName}}}"] requires-python = ">=3.9" - dependencies = [ {{^async}} "urllib3 (>=2.1.0,<3.0.0)", @@ -41,9 +44,6 @@ dependencies = [ [project.urls] Repository = "https://{{{gitHost}}}/{{{gitUserId}}}/{{{gitRepoId}}}" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -52,11 +52,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml index 3aced99fb3d9..b8d92905e1de 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "openapi_client" version = "1.0.0" @@ -9,7 +13,6 @@ license = { text = "Apache 2.0" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "Echo Server API"] requires-python = ">=3.9" - dependencies = [ "urllib3 (>=2.1.0,<3.0.0)", "python-dateutil (>=2.8.2)", @@ -20,9 +23,6 @@ dependencies = [ [project.urls] Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -31,11 +31,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" diff --git a/samples/client/echo_api/python/pyproject.toml b/samples/client/echo_api/python/pyproject.toml index 3aced99fb3d9..b8d92905e1de 100644 --- a/samples/client/echo_api/python/pyproject.toml +++ b/samples/client/echo_api/python/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "openapi_client" version = "1.0.0" @@ -9,7 +13,6 @@ license = { text = "Apache 2.0" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "Echo Server API"] requires-python = ">=3.9" - dependencies = [ "urllib3 (>=2.1.0,<3.0.0)", "python-dateutil (>=2.8.2)", @@ -20,9 +23,6 @@ dependencies = [ [project.urls] Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -31,11 +31,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" diff --git a/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml b/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml index b4f28f9b9363..0f3abd6f2daf 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml +++ b/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "petstore_api" version = "1.0.0" @@ -9,7 +13,6 @@ license = { text = "Apache-2.0" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"] requires-python = ">=3.9" - dependencies = [ "python-dateutil (>=2.8.2)", "aiohttp (>=3.8.4)", @@ -23,9 +26,6 @@ dependencies = [ [project.urls] Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -34,11 +34,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" diff --git a/samples/openapi3/client/petstore/python-httpx/pyproject.toml b/samples/openapi3/client/petstore/python-httpx/pyproject.toml index 6655020ebd24..e11dfa3401ed 100644 --- a/samples/openapi3/client/petstore/python-httpx/pyproject.toml +++ b/samples/openapi3/client/petstore/python-httpx/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "petstore_api" version = "1.0.0" @@ -9,7 +13,6 @@ license = { text = "Apache-2.0" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"] requires-python = ">=3.9" - dependencies = [ "python-dateutil (>=2.8.2)", "httpx (>=0.28.1)", @@ -22,9 +25,6 @@ dependencies = [ [project.urls] Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -33,11 +33,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" diff --git a/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml b/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml index a2f39388489b..cfc676308d06 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml +++ b/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "petstore_api" version = "1.0.0" @@ -9,7 +13,6 @@ license = { text = "Apache-2.0" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"] requires-python = ">=3.9" - dependencies = [ "urllib3 (>=2.1.0,<3.0.0)", "python-dateutil (>=2.8.2)", @@ -23,9 +26,6 @@ dependencies = [ [project.urls] Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -34,11 +34,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" diff --git a/samples/openapi3/client/petstore/python/pyproject.toml b/samples/openapi3/client/petstore/python/pyproject.toml index 422365724eeb..a6eec292ff89 100644 --- a/samples/openapi3/client/petstore/python/pyproject.toml +++ b/samples/openapi3/client/petstore/python/pyproject.toml @@ -1,3 +1,7 @@ +[build-system] +requires = ["poetry-core>=2.0.0"] +build-backend = "poetry.core.masonry.api" + [project] name = "petstore_api" version = "1.0.0" @@ -9,7 +13,6 @@ license = { text = "Apache-2.0" } readme = "README.md" keywords = ["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"] requires-python = ">=3.9" - dependencies = [ "urllib3 (>=2.1.0,<3.0.0)", "python-dateutil (>=2.8.2)", @@ -22,9 +25,6 @@ dependencies = [ [project.urls] Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" -[tool.poetry] -requires-poetry = ">=2.0" - [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" @@ -33,11 +33,6 @@ flake8 = ">= 4.0.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" - -[build-system] -requires = ["setuptools"] -build-backend = "setuptools.build_meta" - [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" From da33f86c5dbc5c56cdec217929fe8e04f62bd517 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 15:29:53 +0000 Subject: [PATCH 4/7] [python] Remove setup.py file We now use poetry so a setuptools setup.py file is unnecessary. The READMEs are also updated to reflect this. Signed-off-by: Stephen Finucane --- .../languages/PythonClientCodegen.java | 3 +- .../src/main/resources/python/README.mustache | 21 +------ .../python/README_onlypackage.mustache | 6 +- .../src/main/resources/python/setup.mustache | 60 ------------------- .../python/PythonClientCodegenTest.java | 5 +- .../.openapi-generator/FILES | 1 - .../README.md | 21 +------ .../setup.py | 51 ---------------- .../echo_api/python/.openapi-generator/FILES | 1 - samples/client/echo_api/python/README.md | 21 +------ samples/client/echo_api/python/setup.py | 51 ---------------- .../python-aiohttp/.openapi-generator/FILES | 1 - .../client/petstore/python-aiohttp/README.md | 21 +------ .../client/petstore/python-aiohttp/setup.py | 53 ---------------- .../python-httpx/.openapi-generator/FILES | 1 - .../client/petstore/python-httpx/README.md | 21 +------ .../client/petstore/python-httpx/setup.py | 52 ---------------- .../.openapi-generator/FILES | 1 - .../petstore/python-lazyImports/README.md | 21 +------ .../petstore/python-lazyImports/setup.py | 53 ---------------- .../petstore/python/.openapi-generator/FILES | 1 - .../openapi3/client/petstore/python/README.md | 21 +------ .../openapi3/client/petstore/python/setup.py | 52 ---------------- 23 files changed, 26 insertions(+), 513 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/python/setup.mustache delete mode 100644 samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/setup.py delete mode 100644 samples/client/echo_api/python/setup.py delete mode 100644 samples/openapi3/client/petstore/python-aiohttp/setup.py delete mode 100644 samples/openapi3/client/petstore/python-httpx/setup.py delete mode 100644 samples/openapi3/client/petstore/python-lazyImports/setup.py delete mode 100644 samples/openapi3/client/petstore/python/setup.py diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index a1caa703f4d2..d4fc36ad8ca0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -133,7 +133,7 @@ public PythonClientCodegen() { cliOptions.clear(); cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "python package name (convention: snake_case).") .defaultValue("openapi_client")); - cliOptions.add(new CliOption(CodegenConstants.PROJECT_NAME, "python project name in setup.py (e.g. petstore-api).")); + cliOptions.add(new CliOption(CodegenConstants.PROJECT_NAME, "python project name in pyproject.toml (e.g. petstore-api).")); cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "python package version.") .defaultValue("1.0.0")); cliOptions.add(new CliOption(PACKAGE_URL, "python package URL.")); @@ -293,7 +293,6 @@ public void processOpts() { supportingFiles.add(new SupportingFile("travis.mustache", "", ".travis.yml")); supportingFiles.add(new SupportingFile("github-workflow.mustache", ".github/workflows", "python.yml")); supportingFiles.add(new SupportingFile("gitlab-ci.mustache", "", ".gitlab-ci.yml")); - supportingFiles.add(new SupportingFile("setup.mustache", "", "setup.py")); supportingFiles.add(new SupportingFile("pyproject.mustache", "", "pyproject.toml")); supportingFiles.add(new SupportingFile("py.typed.mustache", packagePath(), "py.typed")); } diff --git a/modules/openapi-generator/src/main/resources/python/README.mustache b/modules/openapi-generator/src/main/resources/python/README.mustache index 424335a54e94..449700f6dfe5 100644 --- a/modules/openapi-generator/src/main/resources/python/README.mustache +++ b/modules/openapi-generator/src/main/resources/python/README.mustache @@ -12,39 +12,25 @@ This Python package is automatically generated by the [OpenAPI Generator](https: {{/hideGenerationTimestamp}} - Generator version: {{generatorVersion}} - Build package: {{generatorClass}} + {{#infoUrl}} For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) {{/infoUrl}} -## Requirements. +## Requirements Python {{{generatorLanguageVersion}}} ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://{{gitHost}}/{{{gitUserId}}}/{{{gitRepoId}}}.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://{{gitHost}}/{{{gitUserId}}}/{{{gitRepoId}}}.git`) - -Then import the package: -```python -import {{{packageName}}} -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import {{{packageName}}} ``` @@ -58,4 +44,3 @@ Execute `pytest` to run the tests. Please follow the [installation procedure](#installation--usage) and then run the following: {{> common_README }} - diff --git a/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache b/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache index 430fb722f841..25b27d39abc8 100644 --- a/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache +++ b/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache @@ -16,14 +16,13 @@ The `{{packageName}}` package is automatically generated by the [OpenAPI Generat For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) {{/infoUrl}} -## Requirements. +## Requirements Python {{{generatorLanguageVersion}}} ## Installation & Usage -This python library package is generated without supporting files like setup.py or requirements files - +This python library package is generated without supporting files like `pyproject.toml`. To be able to use it, you will need these dependencies in your own package that uses this library: * urllib3 >= 2.1.0, < 3.0.0 @@ -48,4 +47,3 @@ In your own code, to use this library to connect and interact with {{{projectNam you can run the following: {{> common_README }} - diff --git a/modules/openapi-generator/src/main/resources/python/setup.mustache b/modules/openapi-generator/src/main/resources/python/setup.mustache deleted file mode 100644 index d65485b42f90..000000000000 --- a/modules/openapi-generator/src/main/resources/python/setup.mustache +++ /dev/null @@ -1,60 +0,0 @@ -# coding: utf-8 - -{{>partial_header}} - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "{{{projectName}}}" -VERSION = "{{packageVersion}}" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ -{{^async}} - "urllib3 >= 2.1.0, < 3.0.0", -{{/async}} - "python-dateutil >= 2.8.2", -{{#asyncio}} - "aiohttp >= 3.8.4", - "aiohttp-retry >= 2.8.3", -{{/asyncio}} -{{#httpx}} - "httpx >= 0.28.1", -{{/httpx}} -{{#tornado}} - "tornado>=4.2, < 5", -{{/tornado}} -{{#hasHttpSignatureMethods}} - "pem >= 19.3.0", - "pycryptodome >= 3.9.0", -{{/hasHttpSignatureMethods}} - "pydantic >= 2", - "typing-extensions >= 4.7.1", -{{#lazyImports}} - "lazy-imports >= 1, < 2", -{{/lazyImports}} -] - -setup( - name=NAME, - version=VERSION, - description="{{appName}}", - author="{{infoName}}{{^infoName}}OpenAPI Generator community{{/infoName}}", - author_email="{{infoEmail}}{{^infoEmail}}team@openapitools.org{{/infoEmail}}", - url="{{packageUrl}}", - keywords=["OpenAPI", "OpenAPI-Generator", "{{{appName}}}"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - {{#licenseInfo}}license="{{.}}", - {{/licenseInfo}}long_description_content_type='text/markdown', - long_description="""\ - {{appDescription}} - """, # noqa: E501 - package_data={"{{{packageName}}}": ["py.typed"]}, -) \ No newline at end of file diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java index 2a93352b69e9..9039e146a669 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonClientCodegenTest.java @@ -564,9 +564,8 @@ public void testHandleNoApis() throws IOException { File apiFile = files.get(Paths.get(output.getAbsolutePath(), "openapi_client", "api", "hello_example_api.py").toString()); assertNull(apiFile); - File setupFile = files.get(Paths.get(output.getAbsolutePath(), "setup.py").toString()); - assertNotNull(setupFile); - assertFileContains(setupFile.toPath(), "setup("); + File pyprojectTOMLFile = files.get(Paths.get(output.getAbsolutePath(), "pyproject.toml").toString()); + assertNotNull(pyprojectTOMLFile); } @Test(description = "outputs __init__.py with imports for exports") diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES index a7c64d3f55f4..c6f5c4b85f97 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES @@ -52,7 +52,6 @@ openapi_client/rest.py pyproject.toml requirements.txt setup.cfg -setup.py test-requirements.txt test/__init__.py tox.ini diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/README.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/README.md index f60e13fd5284..4a6c2c43aa5f 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/README.md +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/README.md @@ -8,35 +8,21 @@ This Python package is automatically generated by the [OpenAPI Generator](https: - Generator version: 7.19.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen -## Requirements. + +## Requirements Python 3.9+ ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) - -Then import the package: -```python -import openapi_client -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import openapi_client ``` @@ -160,4 +146,3 @@ Authentication schemes defined for the API: team@openapitools.org - diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/setup.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/setup.py deleted file mode 100644 index 5527d5073fe1..000000000000 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/setup.py +++ /dev/null @@ -1,51 +0,0 @@ -# coding: utf-8 - -""" - Echo Server API - - Echo Server API - - The version of the OpenAPI document: 0.1.0 - Contact: team@openapitools.org - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "openapi-client" -VERSION = "1.0.0" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ - "urllib3 >= 2.1.0, < 3.0.0", - "python-dateutil >= 2.8.2", - "pydantic >= 2", - "typing-extensions >= 4.7.1", -] - -setup( - name=NAME, - version=VERSION, - description="Echo Server API", - author="OpenAPI Generator community", - author_email="team@openapitools.org", - url="", - keywords=["OpenAPI", "OpenAPI-Generator", "Echo Server API"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - license="Apache 2.0", - long_description_content_type='text/markdown', - long_description="""\ - Echo Server API - """, # noqa: E501 - package_data={"openapi_client": ["py.typed"]}, -) \ No newline at end of file diff --git a/samples/client/echo_api/python/.openapi-generator/FILES b/samples/client/echo_api/python/.openapi-generator/FILES index a7c64d3f55f4..c6f5c4b85f97 100644 --- a/samples/client/echo_api/python/.openapi-generator/FILES +++ b/samples/client/echo_api/python/.openapi-generator/FILES @@ -52,7 +52,6 @@ openapi_client/rest.py pyproject.toml requirements.txt setup.cfg -setup.py test-requirements.txt test/__init__.py tox.ini diff --git a/samples/client/echo_api/python/README.md b/samples/client/echo_api/python/README.md index f60e13fd5284..4a6c2c43aa5f 100644 --- a/samples/client/echo_api/python/README.md +++ b/samples/client/echo_api/python/README.md @@ -8,35 +8,21 @@ This Python package is automatically generated by the [OpenAPI Generator](https: - Generator version: 7.19.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen -## Requirements. + +## Requirements Python 3.9+ ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) - -Then import the package: -```python -import openapi_client -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import openapi_client ``` @@ -160,4 +146,3 @@ Authentication schemes defined for the API: team@openapitools.org - diff --git a/samples/client/echo_api/python/setup.py b/samples/client/echo_api/python/setup.py deleted file mode 100644 index 5527d5073fe1..000000000000 --- a/samples/client/echo_api/python/setup.py +++ /dev/null @@ -1,51 +0,0 @@ -# coding: utf-8 - -""" - Echo Server API - - Echo Server API - - The version of the OpenAPI document: 0.1.0 - Contact: team@openapitools.org - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "openapi-client" -VERSION = "1.0.0" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ - "urllib3 >= 2.1.0, < 3.0.0", - "python-dateutil >= 2.8.2", - "pydantic >= 2", - "typing-extensions >= 4.7.1", -] - -setup( - name=NAME, - version=VERSION, - description="Echo Server API", - author="OpenAPI Generator community", - author_email="team@openapitools.org", - url="", - keywords=["OpenAPI", "OpenAPI-Generator", "Echo Server API"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - license="Apache 2.0", - long_description_content_type='text/markdown', - long_description="""\ - Echo Server API - """, # noqa: E501 - package_data={"openapi_client": ["py.typed"]}, -) \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES index 6cbba41b5b1b..47f87cc124e7 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES @@ -257,7 +257,6 @@ petstore_api/signing.py pyproject.toml requirements.txt setup.cfg -setup.py test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-aiohttp/README.md b/samples/openapi3/client/petstore/python-aiohttp/README.md index 2d639677cfe5..d6acf4e8324f 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/README.md +++ b/samples/openapi3/client/petstore/python-aiohttp/README.md @@ -8,35 +8,21 @@ This Python package is automatically generated by the [OpenAPI Generator](https: - Generator version: 7.19.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen -## Requirements. + +## Requirements Python 3.9+ ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) - -Then import the package: -```python -import petstore_api -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import petstore_api ``` @@ -314,4 +300,3 @@ Authentication schemes defined for the API: - diff --git a/samples/openapi3/client/petstore/python-aiohttp/setup.py b/samples/openapi3/client/petstore/python-aiohttp/setup.py deleted file mode 100644 index 93a557bdcaa9..000000000000 --- a/samples/openapi3/client/petstore/python-aiohttp/setup.py +++ /dev/null @@ -1,53 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI Petstore - - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "petstore-api" -VERSION = "1.0.0" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ - "python-dateutil >= 2.8.2", - "aiohttp >= 3.8.4", - "aiohttp-retry >= 2.8.3", - "pem >= 19.3.0", - "pycryptodome >= 3.9.0", - "pydantic >= 2", - "typing-extensions >= 4.7.1", -] - -setup( - name=NAME, - version=VERSION, - description="OpenAPI Petstore", - author="OpenAPI Generator community", - author_email="team@openapitools.org", - url="", - keywords=["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - license="Apache-2.0", - long_description_content_type='text/markdown', - long_description="""\ - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - """, # noqa: E501 - package_data={"petstore_api": ["py.typed"]}, -) \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES index 6cbba41b5b1b..47f87cc124e7 100644 --- a/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES @@ -257,7 +257,6 @@ petstore_api/signing.py pyproject.toml requirements.txt setup.cfg -setup.py test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-httpx/README.md b/samples/openapi3/client/petstore/python-httpx/README.md index 2d639677cfe5..d6acf4e8324f 100644 --- a/samples/openapi3/client/petstore/python-httpx/README.md +++ b/samples/openapi3/client/petstore/python-httpx/README.md @@ -8,35 +8,21 @@ This Python package is automatically generated by the [OpenAPI Generator](https: - Generator version: 7.19.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen -## Requirements. + +## Requirements Python 3.9+ ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) - -Then import the package: -```python -import petstore_api -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import petstore_api ``` @@ -314,4 +300,3 @@ Authentication schemes defined for the API: - diff --git a/samples/openapi3/client/petstore/python-httpx/setup.py b/samples/openapi3/client/petstore/python-httpx/setup.py deleted file mode 100644 index e9883ecf3ccc..000000000000 --- a/samples/openapi3/client/petstore/python-httpx/setup.py +++ /dev/null @@ -1,52 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI Petstore - - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "petstore-api" -VERSION = "1.0.0" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ - "python-dateutil >= 2.8.2", - "httpx >= 0.28.1", - "pem >= 19.3.0", - "pycryptodome >= 3.9.0", - "pydantic >= 2", - "typing-extensions >= 4.7.1", -] - -setup( - name=NAME, - version=VERSION, - description="OpenAPI Petstore", - author="OpenAPI Generator community", - author_email="team@openapitools.org", - url="", - keywords=["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - license="Apache-2.0", - long_description_content_type='text/markdown', - long_description="""\ - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - """, # noqa: E501 - package_data={"petstore_api": ["py.typed"]}, -) \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES index 6cbba41b5b1b..47f87cc124e7 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES @@ -257,7 +257,6 @@ petstore_api/signing.py pyproject.toml requirements.txt setup.cfg -setup.py test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-lazyImports/README.md b/samples/openapi3/client/petstore/python-lazyImports/README.md index 1878ef1cf9e6..651c79b9f9f5 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/README.md +++ b/samples/openapi3/client/petstore/python-lazyImports/README.md @@ -8,35 +8,21 @@ This Python package is automatically generated by the [OpenAPI Generator](https: - Generator version: 7.19.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen -## Requirements. + +## Requirements Python 3.9+ ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) - -Then import the package: -```python -import petstore_api -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import petstore_api ``` @@ -314,4 +300,3 @@ Authentication schemes defined for the API: - diff --git a/samples/openapi3/client/petstore/python-lazyImports/setup.py b/samples/openapi3/client/petstore/python-lazyImports/setup.py deleted file mode 100644 index 5edb21a69e69..000000000000 --- a/samples/openapi3/client/petstore/python-lazyImports/setup.py +++ /dev/null @@ -1,53 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI Petstore - - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "petstore-api" -VERSION = "1.0.0" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ - "urllib3 >= 2.1.0, < 3.0.0", - "python-dateutil >= 2.8.2", - "pem >= 19.3.0", - "pycryptodome >= 3.9.0", - "pydantic >= 2", - "typing-extensions >= 4.7.1", - "lazy-imports >= 1, < 2", -] - -setup( - name=NAME, - version=VERSION, - description="OpenAPI Petstore", - author="OpenAPI Generator community", - author_email="team@openapitools.org", - url="", - keywords=["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - license="Apache-2.0", - long_description_content_type='text/markdown', - long_description="""\ - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - """, # noqa: E501 - package_data={"petstore_api": ["py.typed"]}, -) \ No newline at end of file diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/FILES b/samples/openapi3/client/petstore/python/.openapi-generator/FILES index 6cbba41b5b1b..47f87cc124e7 100755 --- a/samples/openapi3/client/petstore/python/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python/.openapi-generator/FILES @@ -257,7 +257,6 @@ petstore_api/signing.py pyproject.toml requirements.txt setup.cfg -setup.py test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python/README.md b/samples/openapi3/client/petstore/python/README.md index 1878ef1cf9e6..651c79b9f9f5 100644 --- a/samples/openapi3/client/petstore/python/README.md +++ b/samples/openapi3/client/petstore/python/README.md @@ -8,35 +8,21 @@ This Python package is automatically generated by the [OpenAPI Generator](https: - Generator version: 7.19.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.PythonClientCodegen -## Requirements. + +## Requirements Python 3.9+ ## Installation & Usage -### pip install If the python package is hosted on a repository, you can install directly using: ```sh pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git ``` -(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`) - -Then import the package: -```python -import petstore_api -``` -### Setuptools +Once installed, import the package: -Install via [Setuptools](http://pypi.python.org/pypi/setuptools). - -```sh -python setup.py install --user -``` -(or `sudo python setup.py install` to install the package for all users) - -Then import the package: ```python import petstore_api ``` @@ -314,4 +300,3 @@ Authentication schemes defined for the API: - diff --git a/samples/openapi3/client/petstore/python/setup.py b/samples/openapi3/client/petstore/python/setup.py deleted file mode 100644 index 35e7395c2b0c..000000000000 --- a/samples/openapi3/client/petstore/python/setup.py +++ /dev/null @@ -1,52 +0,0 @@ -# coding: utf-8 - -""" - OpenAPI Petstore - - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - - The version of the OpenAPI document: 1.0.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - - -from setuptools import setup, find_packages # noqa: H301 - -# To install the library, run the following -# -# python setup.py install -# -# prerequisite: setuptools -# http://pypi.python.org/pypi/setuptools -NAME = "petstore-api" -VERSION = "1.0.0" -PYTHON_REQUIRES = ">= 3.9" -REQUIRES = [ - "urllib3 >= 2.1.0, < 3.0.0", - "python-dateutil >= 2.8.2", - "pem >= 19.3.0", - "pycryptodome >= 3.9.0", - "pydantic >= 2", - "typing-extensions >= 4.7.1", -] - -setup( - name=NAME, - version=VERSION, - description="OpenAPI Petstore", - author="OpenAPI Generator community", - author_email="team@openapitools.org", - url="", - keywords=["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"], - install_requires=REQUIRES, - packages=find_packages(exclude=["test", "tests"]), - include_package_data=True, - license="Apache-2.0", - long_description_content_type='text/markdown', - long_description="""\ - This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - """, # noqa: E501 - package_data={"petstore_api": ["py.typed"]}, -) \ No newline at end of file From 3e1bcdc4acc1785729f9bd9eca2cb5961b5c532a Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 15:39:07 +0000 Subject: [PATCH 5/7] [python] Migrate from flake8 to ruff This has the advantage of being able to automatically format the generated code for us as well as validating it. It also allows us to remove the setup.cfg file. Signed-off-by: Stephen Finucane --- .../openapitools/codegen/languages/PythonClientCodegen.java | 1 - .../src/main/resources/python/__init__model.mustache | 2 -- .../src/main/resources/python/__init__package.mustache | 3 --- .../src/main/resources/python/pyproject.mustache | 6 ++++-- .../src/main/resources/python/setup_cfg.mustache | 2 -- .../src/main/resources/python/test-requirements.mustache | 3 +-- .../.openapi-generator/FILES | 1 - .../openapi_client/__init__.py | 3 --- .../openapi_client/models/__init__.py | 2 -- .../pyproject.toml | 6 ++++-- .../test-requirements.txt | 3 +-- samples/client/echo_api/python/.openapi-generator/FILES | 1 - samples/client/echo_api/python/openapi_client/__init__.py | 3 --- .../echo_api/python/openapi_client/models/__init__.py | 2 -- samples/client/echo_api/python/pyproject.toml | 6 ++++-- samples/client/echo_api/python/setup.cfg | 2 -- samples/client/echo_api/python/test-requirements.txt | 3 +-- .../client/petstore/python-aiohttp/.openapi-generator/FILES | 1 - .../client/petstore/python-aiohttp/petstore_api/__init__.py | 3 --- .../petstore/python-aiohttp/petstore_api/models/__init__.py | 2 -- .../openapi3/client/petstore/python-aiohttp/pyproject.toml | 6 ++++-- .../client/petstore/python-aiohttp/test-requirements.txt | 3 +-- .../client/petstore/python-httpx/.openapi-generator/FILES | 1 - .../client/petstore/python-httpx/petstore_api/__init__.py | 3 --- .../petstore/python-httpx/petstore_api/models/__init__.py | 2 -- .../openapi3/client/petstore/python-httpx/pyproject.toml | 6 ++++-- .../client/petstore/python-httpx/test-requirements.txt | 3 +-- .../petstore/python-lazyImports/.openapi-generator/FILES | 1 - .../petstore/python-lazyImports/petstore_api/__init__.py | 3 --- .../python-lazyImports/petstore_api/models/__init__.py | 2 -- .../client/petstore/python-lazyImports/pyproject.toml | 6 ++++-- .../petstore/python-lazyImports/test-requirements.txt | 3 +-- .../client/petstore/python/.openapi-generator/FILES | 1 - .../client/petstore/python/petstore_api/__init__.py | 3 --- .../client/petstore/python/petstore_api/models/__init__.py | 2 -- samples/openapi3/client/petstore/python/pyproject.toml | 6 ++++-- samples/openapi3/client/petstore/python/setup.cfg | 2 -- .../openapi3/client/petstore/python/test-requirements.txt | 3 +-- 38 files changed, 35 insertions(+), 76 deletions(-) delete mode 100644 modules/openapi-generator/src/main/resources/python/setup_cfg.mustache delete mode 100644 samples/client/echo_api/python/setup.cfg delete mode 100644 samples/openapi3/client/petstore/python/setup.cfg diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index d4fc36ad8ca0..d223a9f1f508 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -286,7 +286,6 @@ public void processOpts() { supportingFiles.add(new SupportingFile("tox.mustache", "", "tox.ini")); supportingFiles.add(new SupportingFile("test-requirements.mustache", "", "test-requirements.txt")); supportingFiles.add(new SupportingFile("requirements.mustache", "", "requirements.txt")); - supportingFiles.add(new SupportingFile("setup_cfg.mustache", "", "setup.cfg")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); diff --git a/modules/openapi-generator/src/main/resources/python/__init__model.mustache b/modules/openapi-generator/src/main/resources/python/__init__model.mustache index 117f69132c40..28f737bf8dba 100644 --- a/modules/openapi-generator/src/main/resources/python/__init__model.mustache +++ b/modules/openapi-generator/src/main/resources/python/__init__model.mustache @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa {{>partial_header}} diff --git a/modules/openapi-generator/src/main/resources/python/__init__package.mustache b/modules/openapi-generator/src/main/resources/python/__init__package.mustache index 73f0adf0d473..c5ab3932acad 100644 --- a/modules/openapi-generator/src/main/resources/python/__init__package.mustache +++ b/modules/openapi-generator/src/main/resources/python/__init__package.mustache @@ -1,10 +1,7 @@ -# coding: utf-8 - # flake8: noqa {{>partial_header}} - __version__ = "{{packageVersion}}" # Define package exports diff --git a/modules/openapi-generator/src/main/resources/python/pyproject.mustache b/modules/openapi-generator/src/main/resources/python/pyproject.mustache index 61c9b6bb990c..c230102981bf 100644 --- a/modules/openapi-generator/src/main/resources/python/pyproject.mustache +++ b/modules/openapi-generator/src/main/resources/python/pyproject.mustache @@ -47,14 +47,16 @@ Repository = "https://{{{gitHost}}}/{{{gitUserId}}}/{{{gitRepoId}}}" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "{{{packageName}}}", diff --git a/modules/openapi-generator/src/main/resources/python/setup_cfg.mustache b/modules/openapi-generator/src/main/resources/python/setup_cfg.mustache deleted file mode 100644 index 11433ee875ab..000000000000 --- a/modules/openapi-generator/src/main/resources/python/setup_cfg.mustache +++ /dev/null @@ -1,2 +0,0 @@ -[flake8] -max-line-length=99 diff --git a/modules/openapi-generator/src/main/resources/python/test-requirements.mustache b/modules/openapi-generator/src/main/resources/python/test-requirements.mustache index e98555c11c8a..5d932557da7d 100644 --- a/modules/openapi-generator/src/main/resources/python/test-requirements.mustache +++ b/modules/openapi-generator/src/main/resources/python/test-requirements.mustache @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES index c6f5c4b85f97..829f8d7a4ec1 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES @@ -51,7 +51,6 @@ openapi_client/py.typed openapi_client/rest.py pyproject.toml requirements.txt -setup.cfg test-requirements.txt test/__init__.py tox.ini diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/__init__.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/__init__.py index e390db819e87..7222b8338fc1 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/__init__.py +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ @@ -14,7 +12,6 @@ Do not edit the class manually. """ # noqa: E501 - __version__ = "1.0.0" # Define package exports diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/__init__.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/__init__.py index 10474719c5a5..5c7b2ae8bfe4 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/__init__.py +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/openapi_client/models/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ Echo Server API diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml index b8d92905e1de..029c5a704357 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/pyproject.toml @@ -26,14 +26,16 @@ Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "openapi_client", diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt index e98555c11c8a..5d932557da7d 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 diff --git a/samples/client/echo_api/python/.openapi-generator/FILES b/samples/client/echo_api/python/.openapi-generator/FILES index c6f5c4b85f97..829f8d7a4ec1 100644 --- a/samples/client/echo_api/python/.openapi-generator/FILES +++ b/samples/client/echo_api/python/.openapi-generator/FILES @@ -51,7 +51,6 @@ openapi_client/py.typed openapi_client/rest.py pyproject.toml requirements.txt -setup.cfg test-requirements.txt test/__init__.py tox.ini diff --git a/samples/client/echo_api/python/openapi_client/__init__.py b/samples/client/echo_api/python/openapi_client/__init__.py index e390db819e87..7222b8338fc1 100644 --- a/samples/client/echo_api/python/openapi_client/__init__.py +++ b/samples/client/echo_api/python/openapi_client/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ @@ -14,7 +12,6 @@ Do not edit the class manually. """ # noqa: E501 - __version__ = "1.0.0" # Define package exports diff --git a/samples/client/echo_api/python/openapi_client/models/__init__.py b/samples/client/echo_api/python/openapi_client/models/__init__.py index 10474719c5a5..5c7b2ae8bfe4 100644 --- a/samples/client/echo_api/python/openapi_client/models/__init__.py +++ b/samples/client/echo_api/python/openapi_client/models/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ Echo Server API diff --git a/samples/client/echo_api/python/pyproject.toml b/samples/client/echo_api/python/pyproject.toml index b8d92905e1de..029c5a704357 100644 --- a/samples/client/echo_api/python/pyproject.toml +++ b/samples/client/echo_api/python/pyproject.toml @@ -26,14 +26,16 @@ Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "openapi_client", diff --git a/samples/client/echo_api/python/setup.cfg b/samples/client/echo_api/python/setup.cfg deleted file mode 100644 index 11433ee875ab..000000000000 --- a/samples/client/echo_api/python/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[flake8] -max-line-length=99 diff --git a/samples/client/echo_api/python/test-requirements.txt b/samples/client/echo_api/python/test-requirements.txt index e98555c11c8a..5d932557da7d 100644 --- a/samples/client/echo_api/python/test-requirements.txt +++ b/samples/client/echo_api/python/test-requirements.txt @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES index 47f87cc124e7..bfa05cce5091 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES @@ -256,7 +256,6 @@ petstore_api/rest.py petstore_api/signing.py pyproject.toml requirements.txt -setup.cfg test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/__init__.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/__init__.py index 278f6dfecf4f..6cdae300c7fe 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/__init__.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ @@ -13,7 +11,6 @@ Do not edit the class manually. """ # noqa: E501 - __version__ = "1.0.0" # Define package exports diff --git a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/__init__.py b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/__init__.py index f34d053a1b72..4a162541e8c8 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/__init__.py +++ b/samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ OpenAPI Petstore diff --git a/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml b/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml index 0f3abd6f2daf..16d83d0440e2 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml +++ b/samples/openapi3/client/petstore/python-aiohttp/pyproject.toml @@ -29,14 +29,16 @@ Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "petstore_api", diff --git a/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt b/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt index e98555c11c8a..5d932557da7d 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt +++ b/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES index 47f87cc124e7..bfa05cce5091 100644 --- a/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES @@ -256,7 +256,6 @@ petstore_api/rest.py petstore_api/signing.py pyproject.toml requirements.txt -setup.cfg test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-httpx/petstore_api/__init__.py b/samples/openapi3/client/petstore/python-httpx/petstore_api/__init__.py index 278f6dfecf4f..6cdae300c7fe 100644 --- a/samples/openapi3/client/petstore/python-httpx/petstore_api/__init__.py +++ b/samples/openapi3/client/petstore/python-httpx/petstore_api/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ @@ -13,7 +11,6 @@ Do not edit the class manually. """ # noqa: E501 - __version__ = "1.0.0" # Define package exports diff --git a/samples/openapi3/client/petstore/python-httpx/petstore_api/models/__init__.py b/samples/openapi3/client/petstore/python-httpx/petstore_api/models/__init__.py index f34d053a1b72..4a162541e8c8 100644 --- a/samples/openapi3/client/petstore/python-httpx/petstore_api/models/__init__.py +++ b/samples/openapi3/client/petstore/python-httpx/petstore_api/models/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ OpenAPI Petstore diff --git a/samples/openapi3/client/petstore/python-httpx/pyproject.toml b/samples/openapi3/client/petstore/python-httpx/pyproject.toml index e11dfa3401ed..b80c8bd66fd5 100644 --- a/samples/openapi3/client/petstore/python-httpx/pyproject.toml +++ b/samples/openapi3/client/petstore/python-httpx/pyproject.toml @@ -28,14 +28,16 @@ Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "petstore_api", diff --git a/samples/openapi3/client/petstore/python-httpx/test-requirements.txt b/samples/openapi3/client/petstore/python-httpx/test-requirements.txt index e98555c11c8a..5d932557da7d 100644 --- a/samples/openapi3/client/petstore/python-httpx/test-requirements.txt +++ b/samples/openapi3/client/petstore/python-httpx/test-requirements.txt @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES index 47f87cc124e7..bfa05cce5091 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES @@ -256,7 +256,6 @@ petstore_api/rest.py petstore_api/signing.py pyproject.toml requirements.txt -setup.cfg test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-lazyImports/petstore_api/__init__.py b/samples/openapi3/client/petstore/python-lazyImports/petstore_api/__init__.py index 5fc37d488192..c4fd50943590 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/petstore_api/__init__.py +++ b/samples/openapi3/client/petstore/python-lazyImports/petstore_api/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ @@ -13,7 +11,6 @@ Do not edit the class manually. """ # noqa: E501 - __version__ = "1.0.0" # Define package exports diff --git a/samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/__init__.py b/samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/__init__.py index 6d488f7a8d6e..9332dd45f65a 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/__init__.py +++ b/samples/openapi3/client/petstore/python-lazyImports/petstore_api/models/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ OpenAPI Petstore diff --git a/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml b/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml index cfc676308d06..681e0af47127 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml +++ b/samples/openapi3/client/petstore/python-lazyImports/pyproject.toml @@ -29,14 +29,16 @@ Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "petstore_api", diff --git a/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt b/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt index e98555c11c8a..5d932557da7d 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt +++ b/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/FILES b/samples/openapi3/client/petstore/python/.openapi-generator/FILES index 47f87cc124e7..bfa05cce5091 100755 --- a/samples/openapi3/client/petstore/python/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python/.openapi-generator/FILES @@ -256,7 +256,6 @@ petstore_api/rest.py petstore_api/signing.py pyproject.toml requirements.txt -setup.cfg test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python/petstore_api/__init__.py b/samples/openapi3/client/petstore/python/petstore_api/__init__.py index 278f6dfecf4f..6cdae300c7fe 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/__init__.py +++ b/samples/openapi3/client/petstore/python/petstore_api/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ @@ -13,7 +11,6 @@ Do not edit the class manually. """ # noqa: E501 - __version__ = "1.0.0" # Define package exports diff --git a/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py b/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py index f34d053a1b72..4a162541e8c8 100644 --- a/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py +++ b/samples/openapi3/client/petstore/python/petstore_api/models/__init__.py @@ -1,5 +1,3 @@ -# coding: utf-8 - # flake8: noqa """ OpenAPI Petstore diff --git a/samples/openapi3/client/petstore/python/pyproject.toml b/samples/openapi3/client/petstore/python/pyproject.toml index a6eec292ff89..97b25e7e45fa 100644 --- a/samples/openapi3/client/petstore/python/pyproject.toml +++ b/samples/openapi3/client/petstore/python/pyproject.toml @@ -28,14 +28,16 @@ Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID" [tool.poetry.group.dev.dependencies] pytest = ">= 7.2.1" pytest-cov = ">= 2.8.1" -tox = ">= 3.9.0" -flake8 = ">= 4.0.0" +ruff = ">= 0.14.0" types-python-dateutil = ">= 2.8.19.14" mypy = ">= 1.5" [tool.pylint.'MESSAGES CONTROL'] extension-pkg-whitelist = "pydantic" +[tool.ruff.lint] +select = ["E4", "E5", "E7", "E9", "F"] + [tool.mypy] files = [ "petstore_api", diff --git a/samples/openapi3/client/petstore/python/setup.cfg b/samples/openapi3/client/petstore/python/setup.cfg deleted file mode 100644 index 11433ee875ab..000000000000 --- a/samples/openapi3/client/petstore/python/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[flake8] -max-line-length=99 diff --git a/samples/openapi3/client/petstore/python/test-requirements.txt b/samples/openapi3/client/petstore/python/test-requirements.txt index e98555c11c8a..5d932557da7d 100644 --- a/samples/openapi3/client/petstore/python/test-requirements.txt +++ b/samples/openapi3/client/petstore/python/test-requirements.txt @@ -1,6 +1,5 @@ pytest >= 7.2.1 pytest-cov >= 2.8.1 -tox >= 3.9.0 -flake8 >= 4.0.0 +ruff >= 0.14.0 types-python-dateutil >= 2.8.19.14 mypy >= 1.5 From ef2dda08ff61b640b00ea4cac9b3b23fcb50bc73 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 15:42:44 +0000 Subject: [PATCH 6/7] [python] Stop generating requirements.txt files by default We only need to generate these for convenience if we are not generating a pyproject.toml file. Signed-off-by: Stephen Finucane --- .../languages/PythonClientCodegen.java | 5 ++-- .../python/README_onlypackage.mustache | 24 ++++++------------- .../.openapi-generator/FILES | 2 -- .../requirements.txt | 4 ---- .../test-requirements.txt | 5 ---- .../echo_api/python/.openapi-generator/FILES | 2 -- .../client/echo_api/python/requirements.txt | 4 ---- .../echo_api/python/test-requirements.txt | 5 ---- .../python-aiohttp/.openapi-generator/FILES | 2 -- .../petstore/python-aiohttp/requirements.txt | 7 ------ .../python-aiohttp/test-requirements.txt | 5 ---- .../python-httpx/.openapi-generator/FILES | 2 -- .../petstore/python-httpx/requirements.txt | 6 ----- .../python-httpx/test-requirements.txt | 5 ---- .../.openapi-generator/FILES | 2 -- .../python-lazyImports/requirements.txt | 7 ------ .../python-lazyImports/test-requirements.txt | 5 ---- .../petstore/python/.openapi-generator/FILES | 2 -- .../client/petstore/python/requirements.txt | 6 ----- .../petstore/python/test-requirements.txt | 5 ---- 20 files changed, 10 insertions(+), 95 deletions(-) delete mode 100644 samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/requirements.txt delete mode 100644 samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt delete mode 100644 samples/client/echo_api/python/requirements.txt delete mode 100644 samples/client/echo_api/python/test-requirements.txt delete mode 100644 samples/openapi3/client/petstore/python-aiohttp/requirements.txt delete mode 100644 samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt delete mode 100644 samples/openapi3/client/petstore/python-httpx/requirements.txt delete mode 100644 samples/openapi3/client/petstore/python-httpx/test-requirements.txt delete mode 100644 samples/openapi3/client/petstore/python-lazyImports/requirements.txt delete mode 100644 samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt delete mode 100644 samples/openapi3/client/petstore/python/requirements.txt delete mode 100644 samples/openapi3/client/petstore/python/test-requirements.txt diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index d223a9f1f508..3537d293a862 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -284,8 +284,6 @@ public void processOpts() { if (!generateSourceCodeOnly) { supportingFiles.add(new SupportingFile("tox.mustache", "", "tox.ini")); - supportingFiles.add(new SupportingFile("test-requirements.mustache", "", "test-requirements.txt")); - supportingFiles.add(new SupportingFile("requirements.mustache", "", "requirements.txt")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); @@ -294,6 +292,9 @@ public void processOpts() { supportingFiles.add(new SupportingFile("gitlab-ci.mustache", "", ".gitlab-ci.yml")); supportingFiles.add(new SupportingFile("pyproject.mustache", "", "pyproject.toml")); supportingFiles.add(new SupportingFile("py.typed.mustache", packagePath(), "py.typed")); + } else { + supportingFiles.add(new SupportingFile("requirements.mustache", "", "requirements.txt")); + supportingFiles.add(new SupportingFile("test-requirements.mustache", "", "test-requirements.txt")); } supportingFiles.add(new SupportingFile("configuration.mustache", packagePath(), "configuration.py")); supportingFiles.add(new SupportingFile("__init__package.mustache", packagePath(), "__init__.py")); diff --git a/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache b/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache index 25b27d39abc8..506c7b832ec2 100644 --- a/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache +++ b/modules/openapi-generator/src/main/resources/python/README_onlypackage.mustache @@ -23,23 +23,13 @@ Python {{{generatorLanguageVersion}}} ## Installation & Usage This python library package is generated without supporting files like `pyproject.toml`. -To be able to use it, you will need these dependencies in your own package that uses this library: - -* urllib3 >= 2.1.0, < 3.0.0 -* python-dateutil >= 2.8.2 -{{#async}} -* aiohttp >= 3.8.4 -* aiohttp-retry >= 2.8.3 -{{/async}} -{{#tornado}} -* tornado >= 4.2, < 5 -{{/tornado}} -{{#hasHttpSignatureMethods}} -* pem >= 19.3.0 -* pycryptodome >= 3.9.0 -{{/hasHttpSignatureMethods}} -* pydantic >= 2 -* typing-extensions >= 4.7.1 +To be able to use it, you will need these dependencies in your own package that uses this library. +Requirements files (`requirement.txt`, `test-requirements.txt`) are provided for this. + +``` +pip install -r requirements.txt # install runtime dependencies +pip install -r test-requirements.txt # (optional) install testing dependencies +``` ## Getting Started diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES index 829f8d7a4ec1..4c321309a511 100644 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES +++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/.openapi-generator/FILES @@ -50,7 +50,5 @@ openapi_client/models/test_query_style_form_explode_true_array_string_query_obje openapi_client/py.typed openapi_client/rest.py pyproject.toml -requirements.txt -test-requirements.txt test/__init__.py tox.ini diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/requirements.txt b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/requirements.txt deleted file mode 100644 index 6cbb2b98b163..000000000000 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -urllib3 >= 2.1.0, < 3.0.0 -python_dateutil >= 2.8.2 -pydantic >= 2 -typing-extensions >= 4.7.1 diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt deleted file mode 100644 index 5d932557da7d..000000000000 --- a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/test-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -pytest >= 7.2.1 -pytest-cov >= 2.8.1 -ruff >= 0.14.0 -types-python-dateutil >= 2.8.19.14 -mypy >= 1.5 diff --git a/samples/client/echo_api/python/.openapi-generator/FILES b/samples/client/echo_api/python/.openapi-generator/FILES index 829f8d7a4ec1..4c321309a511 100644 --- a/samples/client/echo_api/python/.openapi-generator/FILES +++ b/samples/client/echo_api/python/.openapi-generator/FILES @@ -50,7 +50,5 @@ openapi_client/models/test_query_style_form_explode_true_array_string_query_obje openapi_client/py.typed openapi_client/rest.py pyproject.toml -requirements.txt -test-requirements.txt test/__init__.py tox.ini diff --git a/samples/client/echo_api/python/requirements.txt b/samples/client/echo_api/python/requirements.txt deleted file mode 100644 index 6cbb2b98b163..000000000000 --- a/samples/client/echo_api/python/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -urllib3 >= 2.1.0, < 3.0.0 -python_dateutil >= 2.8.2 -pydantic >= 2 -typing-extensions >= 4.7.1 diff --git a/samples/client/echo_api/python/test-requirements.txt b/samples/client/echo_api/python/test-requirements.txt deleted file mode 100644 index 5d932557da7d..000000000000 --- a/samples/client/echo_api/python/test-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -pytest >= 7.2.1 -pytest-cov >= 2.8.1 -ruff >= 0.14.0 -types-python-dateutil >= 2.8.19.14 -mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES index bfa05cce5091..e4c212a4b712 100644 --- a/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-aiohttp/.openapi-generator/FILES @@ -255,7 +255,5 @@ petstore_api/py.typed petstore_api/rest.py petstore_api/signing.py pyproject.toml -requirements.txt -test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-aiohttp/requirements.txt b/samples/openapi3/client/petstore/python-aiohttp/requirements.txt deleted file mode 100644 index add57040b437..000000000000 --- a/samples/openapi3/client/petstore/python-aiohttp/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -python_dateutil >= 2.8.2 -aiohttp >= 3.8.4 -aiohttp-retry >= 2.8.3 -pem >= 19.3.0 -pycryptodome >= 3.9.0 -pydantic >= 2 -typing-extensions >= 4.7.1 diff --git a/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt b/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt deleted file mode 100644 index 5d932557da7d..000000000000 --- a/samples/openapi3/client/petstore/python-aiohttp/test-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -pytest >= 7.2.1 -pytest-cov >= 2.8.1 -ruff >= 0.14.0 -types-python-dateutil >= 2.8.19.14 -mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES index bfa05cce5091..e4c212a4b712 100644 --- a/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-httpx/.openapi-generator/FILES @@ -255,7 +255,5 @@ petstore_api/py.typed petstore_api/rest.py petstore_api/signing.py pyproject.toml -requirements.txt -test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-httpx/requirements.txt b/samples/openapi3/client/petstore/python-httpx/requirements.txt deleted file mode 100644 index 47ae4aa20eac..000000000000 --- a/samples/openapi3/client/petstore/python-httpx/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -python_dateutil >= 2.8.2 -httpx = ">= 0.28.1" -pem >= 19.3.0 -pycryptodome >= 3.9.0 -pydantic >= 2 -typing-extensions >= 4.7.1 diff --git a/samples/openapi3/client/petstore/python-httpx/test-requirements.txt b/samples/openapi3/client/petstore/python-httpx/test-requirements.txt deleted file mode 100644 index 5d932557da7d..000000000000 --- a/samples/openapi3/client/petstore/python-httpx/test-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -pytest >= 7.2.1 -pytest-cov >= 2.8.1 -ruff >= 0.14.0 -types-python-dateutil >= 2.8.19.14 -mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES b/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES index bfa05cce5091..e4c212a4b712 100644 --- a/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python-lazyImports/.openapi-generator/FILES @@ -255,7 +255,5 @@ petstore_api/py.typed petstore_api/rest.py petstore_api/signing.py pyproject.toml -requirements.txt -test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python-lazyImports/requirements.txt b/samples/openapi3/client/petstore/python-lazyImports/requirements.txt deleted file mode 100644 index ca83fcc1d25b..000000000000 --- a/samples/openapi3/client/petstore/python-lazyImports/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -urllib3 >= 2.1.0, < 3.0.0 -python_dateutil >= 2.8.2 -pem >= 19.3.0 -pycryptodome >= 3.9.0 -pydantic >= 2 -typing-extensions >= 4.7.1 -lazy-imports >= 1, < 2 diff --git a/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt b/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt deleted file mode 100644 index 5d932557da7d..000000000000 --- a/samples/openapi3/client/petstore/python-lazyImports/test-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -pytest >= 7.2.1 -pytest-cov >= 2.8.1 -ruff >= 0.14.0 -types-python-dateutil >= 2.8.19.14 -mypy >= 1.5 diff --git a/samples/openapi3/client/petstore/python/.openapi-generator/FILES b/samples/openapi3/client/petstore/python/.openapi-generator/FILES index bfa05cce5091..e4c212a4b712 100755 --- a/samples/openapi3/client/petstore/python/.openapi-generator/FILES +++ b/samples/openapi3/client/petstore/python/.openapi-generator/FILES @@ -255,7 +255,5 @@ petstore_api/py.typed petstore_api/rest.py petstore_api/signing.py pyproject.toml -requirements.txt -test-requirements.txt test/__init__.py tox.ini diff --git a/samples/openapi3/client/petstore/python/requirements.txt b/samples/openapi3/client/petstore/python/requirements.txt deleted file mode 100644 index a4d47b80f2ca..000000000000 --- a/samples/openapi3/client/petstore/python/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -urllib3 >= 2.1.0, < 3.0.0 -python_dateutil >= 2.8.2 -pem >= 19.3.0 -pycryptodome >= 3.9.0 -pydantic >= 2 -typing-extensions >= 4.7.1 diff --git a/samples/openapi3/client/petstore/python/test-requirements.txt b/samples/openapi3/client/petstore/python/test-requirements.txt deleted file mode 100644 index 5d932557da7d..000000000000 --- a/samples/openapi3/client/petstore/python/test-requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -pytest >= 7.2.1 -pytest-cov >= 2.8.1 -ruff >= 0.14.0 -types-python-dateutil >= 2.8.19.14 -mypy >= 1.5 From 10a6206ea85bed324cc9a4c6229ee58001fa1b78 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 9 Jan 2026 18:10:43 +0000 Subject: [PATCH 7/7] bin/generate-samples: Remove warning about sleep The sleep itself has been commented out for a long time (commit 04fa53b69266 from September 2023, to be specific). Signed-off-by: Stephen Finucane --- bin/generate-samples.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/generate-samples.sh b/bin/generate-samples.sh index 3f88859f9779..6c309f22f596 100755 --- a/bin/generate-samples.sh +++ b/bin/generate-samples.sh @@ -52,8 +52,6 @@ if [[ ${#files[@]} -eq 1 && "${files[0]}" != *'*'* ]]; then # shellcheck disable=SC2068 java ${JAVA_OPTS} -jar "$executable" generate -c ${files[0]} ${args[@]} else - echo "Please press CTRL+C to stop or the script will continue in 5 seconds." - #sleep 5 if [ ${#files[@]} -eq 0 ]; then files=("${root}"/bin/configs/*.yaml) fi