Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
fix(generator): Bad class·name for components/schemas without titles (f…
…ixes #397)
  • Loading branch information
dbanty committed May 2, 2021
commit 47e316e39edd3ee16e495f5f3e8893f76e9211d5
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
from .an_int_enum import AnIntEnum
from .another_all_of_sub_model import AnotherAllOfSubModel
from .body_upload_file_tests_upload_post import BodyUploadFileTestsUploadPost
from .componentsschemas_model_with_additional_properties_inlined_additional_property import (
ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty,
)
from .different_enum import DifferentEnum
from .free_form_model import FreeFormModel
from .http_validation_error import HTTPValidationError
from .model_from_all_of import ModelFromAllOf
from .model_name import ModelName
from .model_with_additional_properties_inlined import ModelWithAdditionalPropertiesInlined
from .model_with_additional_properties_inlined_additional_property import (
ModelWithAdditionalPropertiesInlinedAdditionalProperty,
)
from .model_with_additional_properties_refed import ModelWithAdditionalPropertiesRefed
from .model_with_any_json_properties import ModelWithAnyJsonProperties
from .model_with_any_json_properties_additional_property_type_0 import ModelWithAnyJsonPropertiesAdditionalPropertyType0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import attr

from ..models.componentsschemas_model_with_additional_properties_inlined_additional_property import (
ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty,
from ..models.model_with_additional_properties_inlined_additional_property import (
ModelWithAdditionalPropertiesInlinedAdditionalProperty,
)
from ..types import UNSET, Unset

Expand All @@ -15,7 +15,7 @@ class ModelWithAdditionalPropertiesInlined:
""" """

a_number: Union[Unset, float] = UNSET
additional_properties: Dict[str, ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty] = attr.ib(
additional_properties: Dict[str, ModelWithAdditionalPropertiesInlinedAdditionalProperty] = attr.ib(
init=False, factory=dict
)

Expand Down Expand Up @@ -43,9 +43,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:

additional_properties = {}
for prop_name, prop_dict in d.items():
additional_property = ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty.from_dict(
prop_dict
)
additional_property = ModelWithAdditionalPropertiesInlinedAdditionalProperty.from_dict(prop_dict)

additional_properties[prop_name] = additional_property

Expand All @@ -56,12 +54,10 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
def additional_keys(self) -> List[str]:
return list(self.additional_properties.keys())

def __getitem__(self, key: str) -> ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty:
def __getitem__(self, key: str) -> ModelWithAdditionalPropertiesInlinedAdditionalProperty:
return self.additional_properties[key]

def __setitem__(
self, key: str, value: ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty
) -> None:
def __setitem__(self, key: str, value: ModelWithAdditionalPropertiesInlinedAdditionalProperty) -> None:
self.additional_properties[key] = value

def __delitem__(self, key: str) -> None:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

from ..types import UNSET, Unset

T = TypeVar("T", bound="ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty")
T = TypeVar("T", bound="ModelWithAdditionalPropertiesInlinedAdditionalProperty")


@attr.s(auto_attribs=True)
class ComponentsschemasModelWithAdditionalPropertiesInlinedAdditionalProperty:
class ModelWithAdditionalPropertiesInlinedAdditionalProperty:
""" """

extra_props_prop: Union[Unset, str] = UNSET
Expand All @@ -30,12 +30,12 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
extra_props_prop = d.pop("extra_props_prop", UNSET)

componentsschemas_model_with_additional_properties_inlined_additional_property = cls(
model_with_additional_properties_inlined_additional_property = cls(
extra_props_prop=extra_props_prop,
)

componentsschemas_model_with_additional_properties_inlined_additional_property.additional_properties = d
return componentsschemas_model_with_additional_properties_inlined_additional_property
model_with_additional_properties_inlined_additional_property.additional_properties = d
return model_with_additional_properties_inlined_additional_property

@property
def additional_keys(self) -> List[str]:
Expand Down
10 changes: 5 additions & 5 deletions openapi_python_client/parser/properties/model_property.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,18 +180,18 @@ def build_model_property(
parent_name: The name of the property that this property is inside of (affects class naming)
config: Config data for this run of the generator, used to modifying names
"""
class_name = data.title or name
class_string = data.title or name
if parent_name:
class_name = f"{utils.pascal_case(parent_name)}{utils.pascal_case(class_name)}"
class_info = Class.from_string(string=class_name, config=config)
class_string = f"{utils.pascal_case(parent_name)}{utils.pascal_case(class_string)}"
class_info = Class.from_string(string=class_string, config=config)

property_data = _process_properties(data=data, schemas=schemas, class_name=class_name, config=config)
property_data = _process_properties(data=data, schemas=schemas, class_name=class_info.name, config=config)
if isinstance(property_data, PropertyError):
return property_data, schemas
schemas = property_data.schemas

additional_properties, schemas = _get_additional_properties(
schema_additional=data.additionalProperties, schemas=schemas, class_name=class_name, config=config
schema_additional=data.additionalProperties, schemas=schemas, class_name=class_info.name, config=config
)
if isinstance(additional_properties, Property):
property_data.relative_imports.update(additional_properties.get_imports(prefix=".."))
Expand Down
4 changes: 2 additions & 2 deletions tests/test_parser/test_properties/test_model_property.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ def test_bad_props_return_error(self):
assert err == PropertyError(detail="unknown type not_real", data=oai.Schema(type="not_real"))

def test_bad_additional_props_return_error(self):
from openapi_python_client.parser.properties import Schemas, build_model_property
from openapi_python_client.parser.properties import Config, Schemas, build_model_property

additional_properties = oai.Schema(
type="object",
Expand All @@ -190,7 +190,7 @@ def test_bad_additional_props_return_error(self):
schemas = Schemas()

err, new_schemas = build_model_property(
data=data, name="prop", schemas=schemas, required=True, parent_name=None, config=MagicMock()
data=data, name="prop", schemas=schemas, required=True, parent_name=None, config=Config()
)

assert new_schemas == schemas
Expand Down