Skip to content

Commit ae1e867

Browse files
eli-bldbanty
authored andcommitted
don't declare unused variable if model has no properties (openapi-generators#1109)
Fixes openapi-generators#1108. Co-authored-by: Dylan Anthony <43723790+dbanty@users.noreply.github.com>
1 parent 42ea5f0 commit ae1e867

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
@@ -2270,6 +2270,11 @@
22702270
}
22712271
]
22722272
},
2273+
"ModelWithNoProperties": {
2274+
"type": "object",
2275+
"properties": {},
2276+
"additionalProperties": false
2277+
},
22732278
"AllOfSubModel": {
22742279
"title": "AllOfSubModel",
22752280
"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
@@ -2264,6 +2264,11 @@ info:
22642264
}
22652265
]
22662266
},
2267+
"ModelWithNoProperties": {
2268+
"type": "object",
2269+
"properties": {},
2270+
"additionalProperties": false
2271+
},
22672272
"AllOfSubModel": {
22682273
"title": "AllOfSubModel",
22692274
"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
@@ -138,6 +139,7 @@
138139
"ModelWithCircularRefInAdditionalPropertiesB",
139140
"ModelWithDateTimeProperty",
140141
"ModelWithDiscriminatedUnion",
142+
"ModelWithNoProperties",
141143
"ModelWithPrimitiveAdditionalProperties",
142144
"ModelWithPrimitiveAdditionalPropertiesADateHolder",
143145
"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
@@ -179,6 +179,7 @@ return field_dict
179179
{% for lazy_import in model.lazy_imports %}
180180
{{ lazy_import }}
181181
{% endfor %}
182+
{% if (model.required_properties or model.optional_properties or model.additional_properties) %}
182183
d = src_dict.copy()
183184
{% for property in model.required_properties + model.optional_properties %}
184185
{% if property.required %}
@@ -194,6 +195,7 @@ return field_dict
194195
{% endif %}
195196

196197
{% endfor %}
198+
{% endif %}
197199
{{ module_name }} = cls(
198200
{% for property in model.required_properties + model.optional_properties %}
199201
{{ property.python_name }}={{ property.python_name }},

0 commit comments

Comments
 (0)