Skip to content

Commit e22c235

Browse files
authored
feat: Add description to Property definitions BNCH-29178
To enable adding docstrings to python members in a generated way from the OpenAPI spec, add the description member to Property objects (which have been already parsed by the generator just not included in templates).
1 parent 0e1afa8 commit e22c235

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

openapi_python_client/parser/properties/__init__.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,20 +239,23 @@ def _string_based_property(
239239
required=required,
240240
default=convert("datetime.datetime", data.default),
241241
nullable=data.nullable,
242+
description=data.description,
242243
)
243244
elif string_format == "date":
244245
return DateProperty(
245246
name=name,
246247
required=required,
247248
default=convert("datetime.date", data.default),
248249
nullable=data.nullable,
250+
description=data.description,
249251
)
250252
elif string_format == "binary":
251253
return FileProperty(
252254
name=name,
253255
required=required,
254256
default=None,
255257
nullable=data.nullable,
258+
description=data.description,
256259
)
257260
else:
258261
return StringProperty(
@@ -261,6 +264,7 @@ def _string_based_property(
261264
required=required,
262265
pattern=data.pattern,
263266
nullable=data.nullable,
267+
description=data.description,
264268
)
265269

266270

@@ -414,6 +418,7 @@ def build_enum_property(
414418
reference=reference,
415419
values=values,
416420
value_type=value_type,
421+
description=data.description,
417422
)
418423
schemas = attr.evolve(schemas, enums={**schemas.enums, prop.reference.class_name: prop})
419424
return prop, schemas
@@ -439,6 +444,7 @@ def build_union_property(
439444
default=default,
440445
inner_properties=sub_properties,
441446
nullable=data.nullable,
447+
description=data.description,
442448
),
443449
schemas,
444450
)
@@ -461,6 +467,7 @@ def build_list_property(
461467
default=None,
462468
inner_property=inner_prop,
463469
nullable=data.nullable,
470+
description=data.description,
464471
),
465472
schemas,
466473
)
@@ -517,6 +524,7 @@ def _property_from_data(
517524
default=convert("float", data.default),
518525
required=required,
519526
nullable=data.nullable,
527+
description=data.description,
520528
),
521529
schemas,
522530
)
@@ -527,6 +535,7 @@ def _property_from_data(
527535
default=convert("int", data.default),
528536
required=required,
529537
nullable=data.nullable,
538+
description=data.description,
530539
),
531540
schemas,
532541
)
@@ -537,6 +546,7 @@ def _property_from_data(
537546
required=required,
538547
default=convert("bool", data.default),
539548
nullable=data.nullable,
549+
description=data.description,
540550
),
541551
schemas,
542552
)
@@ -545,7 +555,13 @@ def _property_from_data(
545555
elif data.type == "object" or data.allOf:
546556
return build_model_property(data=data, name=name, schemas=schemas, required=required, parent_name=parent_name)
547557
elif not data.type:
548-
return NoneProperty(name=name, required=required, nullable=False, default=None), schemas
558+
return NoneProperty(
559+
name=name,
560+
required=required,
561+
nullable=False,
562+
default=None,
563+
description=data.description
564+
), schemas
549565
return PropertyError(data=data, detail=f"unknown type {data.type}"), schemas
550566

551567

openapi_python_client/parser/properties/property.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Property:
2727
_json_type_string: ClassVar[str] = "" # Type of the property after JSON serialization
2828
default: Optional[str] = attr.ib()
2929
python_name: str = attr.ib(init=False)
30+
description: Optional[str]
3031

3132
template: ClassVar[Optional[str]] = None
3233
json_is_dict: ClassVar[bool] = False

openapi_python_client/parser/responses.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Response:
2828
def empty_response(status_code: int, response_name: str) -> Response:
2929
return Response(
3030
status_code=status_code,
31-
prop=NoneProperty(name=response_name, default=None, nullable=False, required=True),
31+
prop=NoneProperty(name=response_name, default=None, nullable=False, required=True, description=None),
3232
source="None",
3333
)
3434

0 commit comments

Comments
 (0)