From 45ad3573d6d1815b07fbbc2a25bd211232e0e400 Mon Sep 17 00:00:00 2001 From: Alex Papanicolaou Date: Fri, 17 Dec 2021 09:06:03 -0800 Subject: [PATCH 1/2] test: check against strings using period as delimiter --- .../my_test_api_client/models/__init__.py | 1 + .../models/model_reference_with_periods.py | 44 +++++++++++++++++++ end_to_end_tests/openapi.json | 4 ++ tests/test_utils.py | 5 ++- 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 end_to_end_tests/golden-record/my_test_api_client/models/model_reference_with_periods.py diff --git a/end_to_end_tests/golden-record/my_test_api_client/models/__init__.py b/end_to_end_tests/golden-record/my_test_api_client/models/__init__.py index 40baca7b9..919f8f8c3 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/models/__init__.py +++ b/end_to_end_tests/golden-record/my_test_api_client/models/__init__.py @@ -23,6 +23,7 @@ from .import_ import Import from .model_from_all_of import ModelFromAllOf from .model_name import ModelName +from .model_reference_with_periods import ModelReferenceWithPeriods from .model_with_additional_properties_inlined import ModelWithAdditionalPropertiesInlined from .model_with_additional_properties_inlined_additional_property import ( ModelWithAdditionalPropertiesInlinedAdditionalProperty, diff --git a/end_to_end_tests/golden-record/my_test_api_client/models/model_reference_with_periods.py b/end_to_end_tests/golden-record/my_test_api_client/models/model_reference_with_periods.py new file mode 100644 index 000000000..15bab8de5 --- /dev/null +++ b/end_to_end_tests/golden-record/my_test_api_client/models/model_reference_with_periods.py @@ -0,0 +1,44 @@ +from typing import Any, Dict, List, Type, TypeVar + +import attr + +T = TypeVar("T", bound="ModelReferenceWithPeriods") + + +@attr.s(auto_attribs=True) +class ModelReferenceWithPeriods: + """A Model with periods in its reference""" + + additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict) + + def to_dict(self) -> Dict[str, Any]: + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({}) + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + model_reference_with_periods = cls() + + model_reference_with_periods.additional_properties = d + return model_reference_with_periods + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/end_to_end_tests/openapi.json b/end_to_end_tests/openapi.json index 0cb28e6f9..26e075d7f 100644 --- a/end_to_end_tests/openapi.json +++ b/end_to_end_tests/openapi.json @@ -1870,6 +1870,10 @@ }, "None": { "type": "object" + }, + "model.reference.with.Periods": { + "type": "object", + "description": "A Model with periods in its reference" } } } diff --git a/tests/test_utils.py b/tests/test_utils.py index 2345aaee8..97f0bee2a 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -47,6 +47,7 @@ def test_empty_is_prefixed(self): ("Response200Okay", ["Response", "200", "Okay"]), ("S3Config", ["S3", "Config"]), ("s3config", ["s3config"]), + ("fully.qualified.Name", ["fully", "qualified", "Name"]), ], ) def test_split_words(before, after): @@ -83,8 +84,8 @@ def test_kebab_case(): assert utils.kebab_case("keep_alive") == "keep-alive" -def test__sanitize(): - assert utils.sanitize("something*~with lots_- of weird things}=") == "somethingwith lots_- of weird things" +def test_sanitize(): + assert utils.sanitize("some.thing*~with lots_- of weird things}=") == "some.thingwith lots_- of weird things" def test_no_string_escapes(): From a64fd30c8d694913aecad7273f363db10c101a3b Mon Sep 17 00:00:00 2001 From: Alex Papanicolaou Date: Fri, 17 Dec 2021 08:14:58 -0800 Subject: [PATCH 2/2] fix: include period as a known delimiter --- openapi_python_client/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi_python_client/utils.py b/openapi_python_client/utils.py index 4c47855d2..d8133160e 100644 --- a/openapi_python_client/utils.py +++ b/openapi_python_client/utils.py @@ -3,7 +3,7 @@ from keyword import iskeyword from typing import Any, List -DELIMITERS = " _-" +DELIMITERS = r"\. _-" class PythonIdentifier(str):