Skip to content

Commit fc31254

Browse files
eli-bldbanty
andauthored
don't declare unused variable if model has no properties (#1109)
Fixes #1108. Co-authored-by: Dylan Anthony <[email protected]>
1 parent 104e2a6 commit fc31254

File tree

6 files changed

+42
-0
lines changed

6 files changed

+42
-0
lines changed

.changeset/no_properties_fix.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
default: patch
3+
---
4+
5+
# Produce valid code for an object that has no properties at all
6+
7+
Fixed by PR #1109. Thanks @eli-bl!

end_to_end_tests/baseline_openapi_3.0.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2219,6 +2219,11 @@
22192219
}
22202220
]
22212221
},
2222+
"ModelWithNoProperties": {
2223+
"type": "object",
2224+
"properties": {},
2225+
"additionalProperties": false
2226+
},
22222227
"AllOfSubModel": {
22232228
"title": "AllOfSubModel",
22242229
"type": "object",

end_to_end_tests/baseline_openapi_3.1.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2213,6 +2213,11 @@ info:
22132213
}
22142214
]
22152215
},
2216+
"ModelWithNoProperties": {
2217+
"type": "object",
2218+
"properties": {},
2219+
"additionalProperties": false
2220+
},
22162221
"AllOfSubModel": {
22172222
"title": "AllOfSubModel",
22182223
"type": "object",

end_to_end_tests/golden-record/my_test_api_client/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
from .model_with_circular_ref_in_additional_properties_b import ModelWithCircularRefInAdditionalPropertiesB
6161
from .model_with_date_time_property import ModelWithDateTimeProperty
6262
from .model_with_discriminated_union import ModelWithDiscriminatedUnion
63+
from .model_with_no_properties import ModelWithNoProperties
6364
from .model_with_primitive_additional_properties import ModelWithPrimitiveAdditionalProperties
6465
from .model_with_primitive_additional_properties_a_date_holder import ModelWithPrimitiveAdditionalPropertiesADateHolder
6566
from .model_with_property_ref import ModelWithPropertyRef
@@ -137,6 +138,7 @@
137138
"ModelWithCircularRefInAdditionalPropertiesB",
138139
"ModelWithDateTimeProperty",
139140
"ModelWithDiscriminatedUnion",
141+
"ModelWithNoProperties",
140142
"ModelWithPrimitiveAdditionalProperties",
141143
"ModelWithPrimitiveAdditionalPropertiesADateHolder",
142144
"ModelWithPropertyRef",
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from typing import Any, Dict, Type, TypeVar
2+
3+
from attrs import define as _attrs_define
4+
5+
T = TypeVar("T", bound="ModelWithNoProperties")
6+
7+
8+
@_attrs_define
9+
class ModelWithNoProperties:
10+
""" """
11+
12+
def to_dict(self) -> Dict[str, Any]:
13+
field_dict: Dict[str, Any] = {}
14+
15+
return field_dict
16+
17+
@classmethod
18+
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
19+
model_with_no_properties = cls()
20+
21+
return model_with_no_properties

openapi_python_client/templates/model.py.jinja

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ return field_dict
138138
{% for lazy_import in model.lazy_imports %}
139139
{{ lazy_import }}
140140
{% endfor %}
141+
{% if (model.required_properties or model.optional_properties or model.additional_properties) %}
141142
d = src_dict.copy()
142143
{% for property in model.required_properties + model.optional_properties %}
143144
{% if property.required %}
@@ -153,6 +154,7 @@ return field_dict
153154
{% endif %}
154155

155156
{% endfor %}
157+
{% endif %}
156158
{{ module_name }} = cls(
157159
{% for property in model.required_properties + model.optional_properties %}
158160
{{ property.python_name }}={{ property.python_name }},

0 commit comments

Comments
 (0)