Skip to content

Commit

Permalink
lint
Browse files Browse the repository at this point in the history
  • Loading branch information
eli-bl committed Nov 5, 2024
1 parent e35b31a commit 10cae28
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 10 deletions.
2 changes: 1 addition & 1 deletion openapi_python_client/parser/properties/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
22 changes: 15 additions & 7 deletions openapi_python_client/parser/properties/merge_properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)]:
Expand All @@ -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
)
7 changes: 5 additions & 2 deletions tests/test_parser/test_properties/test_merge_properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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
)
Expand Down

0 comments on commit 10cae28

Please sign in to comment.