diff --git a/openapi_python_client/parser/properties/__init__.py b/openapi_python_client/parser/properties/__init__.py index 9a1e050e8..94c6e3d08 100644 --- a/openapi_python_client/parser/properties/__init__.py +++ b/openapi_python_client/parser/properties/__init__.py @@ -137,7 +137,7 @@ def _property_from_ref( return prop, schemas -def property_from_data( # noqa: PLR0911 +def property_from_data( # noqa: PLR0911, PLR0912 name: str, required: bool, data: oai.Reference | oai.Schema, diff --git a/openapi_python_client/parser/properties/merge_properties.py b/openapi_python_client/parser/properties/merge_properties.py index aaf5c8d1f..3259bcc62 100644 --- a/openapi_python_client/parser/properties/merge_properties.py +++ b/openapi_python_client/parser/properties/merge_properties.py @@ -34,7 +34,7 @@ STRING_WITH_FORMAT_TYPES = (DateProperty, DateTimeProperty, FileProperty) -def merge_properties( # noqa:PLR0911 +def merge_properties( # noqa:PLR0911 prop1: Property, prop2: Property, parent_name: str, @@ -83,7 +83,9 @@ def merge_properties( # noqa:PLR0911 ) -def _merge_same_type(prop1: Property, prop2: Property, parent_name: str, config: Config) -> Property | None | PropertyError: +def _merge_same_type( + prop1: Property, prop2: Property, parent_name: str, config: Config +) -> Property | None | PropertyError: if type(prop1) is not type(prop2): return None @@ -105,7 +107,9 @@ def _merge_same_type(prop1: Property, prop2: Property, parent_name: str, config: return _merge_common_attributes(prop1, prop2) -def _merge_models(prop1: ModelProperty, prop2: ModelProperty, parent_name: str, config: Config) -> Property | PropertyError: +def _merge_models( + prop1: ModelProperty, prop2: ModelProperty, parent_name: str, config: Config +) -> Property | PropertyError: # Ideally, we would treat this case the same as a schema that consisted of "allOf: [prop1, prop2]", # applying the property merge logic recursively and creating a new third schema if the result could # not be fully described by one or the other. But for now we will just handle the common case where @@ -137,9 +141,9 @@ def _merge_models(prop1: ModelProperty, prop2: ModelProperty, parent_name: str, merged_props[sub_prop.name] = merged_prop else: merged_props[sub_prop.name] = sub_prop - + prop_data = _gather_property_data(merged_props.values(), Schemas()) - + name = prop2.name class_string = f"{utils.pascal_case(parent_name)}{utils.pascal_case(name)}" class_info = Class.from_string(string=class_string, config=config) @@ -276,7 +280,9 @@ def _values_are_subset(prop1: EnumProperty, prop2: EnumProperty) -> bool: return set(prop1.values.items()) <= set(prop2.values.items()) -def _model_is_extension_of(extended_model: ModelProperty, base_model: ModelProperty, parent_name: str, config: Config) -> bool: +def _model_is_extension_of( + extended_model: ModelProperty, base_model: ModelProperty, parent_name: str, config: Config +) -> bool: def _properties_are_extension_of(extended_list: list[Property], base_list: list[Property]) -> bool: for p2 in base_list: if not [p1 for p1 in extended_list if _property_is_extension_of(p2, p1, parent_name, config)]: @@ -288,7 +294,9 @@ def _properties_are_extension_of(extended_list: list[Property], base_list: list[ ) and _properties_are_extension_of(extended_model.optional_properties, base_model.optional_properties) -def _property_is_extension_of(extended_prop: PropertyProtocol, base_prop: PropertyProtocol, parent_name: str, config: Config) -> bool: +def _property_is_extension_of( + extended_prop: PropertyProtocol, base_prop: PropertyProtocol, parent_name: str, config: Config +) -> bool: return base_prop.name == extended_prop.name and ( base_prop == extended_prop or merge_properties(base_prop, extended_prop, parent_name, config) == extended_prop ) diff --git a/tests/test_parser/test_properties/test_merge_properties.py b/tests/test_parser/test_properties/test_merge_properties.py index 2e67377ff..16228869c 100644 --- a/tests/test_parser/test_properties/test_merge_properties.py +++ b/tests/test_parser/test_properties/test_merge_properties.py @@ -153,7 +153,8 @@ def test_merge_enums(literal_enums, enum_property_factory, literal_enum_property @pytest.mark.parametrize("literal_enums", (False, True)) def test_merge_string_with_string_enum( - literal_enums, string_property_factory, enum_property_factory, literal_enum_property_factory, config): + literal_enums, string_property_factory, enum_property_factory, literal_enum_property_factory, config +): string_prop = string_property_factory(default=Value("A", "A"), description="desc1", example="example1") enum_prop = ( literal_enum_property_factory( @@ -327,7 +328,9 @@ def test_merge_related_models(model_property_factory, string_property_factory, c class_info=Class.from_string(string="DerivedModel", config=config), ) - assert merge_properties(base_model, extension_model, "", config) == evolve(extension_model, example=base_model.example) + assert merge_properties(base_model, extension_model, "", config) == evolve( + extension_model, example=base_model.example + ) assert merge_properties(extension_model, base_model, "", config) == evolve( extension_model, description=base_model.description, example=base_model.example )