@@ -177,7 +177,6 @@ class UnionProperty(Property):
177
177
has_properties_without_templates : bool = attr .ib (init = False )
178
178
179
179
def __attrs_post_init__ (self ) -> None :
180
- super ().__attrs_post_init__ ()
181
180
object .__setattr__ (
182
181
self , "has_properties_without_templates" , any (prop .template is None for prop in self .inner_properties )
183
182
)
@@ -235,30 +234,34 @@ def inner_properties_with_template(self) -> Iterator[Property]:
235
234
236
235
237
236
def _string_based_property (
238
- name : str , required : bool , data : oai .Schema
237
+ name : str , required : bool , data : oai .Schema , config : Config
239
238
) -> Union [StringProperty , DateProperty , DateTimeProperty , FileProperty ]:
240
239
"""Construct a Property from the type "string" """
241
240
string_format = data .schema_format
241
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix )
242
242
if string_format == "date-time" :
243
243
return DateTimeProperty (
244
244
name = name ,
245
245
required = required ,
246
246
default = convert ("datetime.datetime" , data .default ),
247
247
nullable = data .nullable ,
248
+ python_name = python_name ,
248
249
)
249
250
elif string_format == "date" :
250
251
return DateProperty (
251
252
name = name ,
252
253
required = required ,
253
254
default = convert ("datetime.date" , data .default ),
254
255
nullable = data .nullable ,
256
+ python_name = python_name ,
255
257
)
256
258
elif string_format == "binary" :
257
259
return FileProperty (
258
260
name = name ,
259
261
required = required ,
260
262
default = None ,
261
263
nullable = data .nullable ,
264
+ python_name = python_name ,
262
265
)
263
266
else :
264
267
return StringProperty (
@@ -267,6 +270,7 @@ def _string_based_property(
267
270
required = required ,
268
271
pattern = data .pattern ,
269
272
nullable = data .nullable ,
273
+ python_name = python_name ,
270
274
)
271
275
272
276
@@ -326,6 +330,7 @@ def build_enum_property(
326
330
values = values ,
327
331
value_type = value_type ,
328
332
default = None ,
333
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
329
334
)
330
335
331
336
default = get_enum_default (prop , data )
@@ -373,6 +378,7 @@ def build_union_property(
373
378
default = default ,
374
379
inner_properties = sub_properties ,
375
380
nullable = data .nullable ,
381
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
376
382
),
377
383
schemas ,
378
384
)
@@ -395,6 +401,7 @@ def build_list_property(
395
401
default = None ,
396
402
inner_property = inner_prop ,
397
403
nullable = data .nullable ,
404
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
398
405
),
399
406
schemas ,
400
407
)
@@ -406,6 +413,7 @@ def _property_from_ref(
406
413
parent : Union [oai .Schema , None ],
407
414
data : oai .Reference ,
408
415
schemas : Schemas ,
416
+ config : Config ,
409
417
) -> Tuple [Union [Property , PropertyError ], Schemas ]:
410
418
ref_path = parse_reference_path (data .ref )
411
419
if isinstance (ref_path , ParseError ):
@@ -414,7 +422,12 @@ def _property_from_ref(
414
422
if not existing :
415
423
return PropertyError (data = data , detail = "Could not find reference in parsed models or enums" ), schemas
416
424
417
- prop = attr .evolve (existing , required = required , name = name )
425
+ prop = attr .evolve (
426
+ existing ,
427
+ required = required ,
428
+ name = name ,
429
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
430
+ )
418
431
if parent :
419
432
prop = attr .evolve (prop , nullable = parent .nullable )
420
433
if isinstance (prop , EnumProperty ):
@@ -437,12 +450,14 @@ def _property_from_data(
437
450
"""Generate a Property from the OpenAPI dictionary representation of it"""
438
451
name = utils .remove_string_escapes (name )
439
452
if isinstance (data , oai .Reference ):
440
- return _property_from_ref (name = name , required = required , parent = None , data = data , schemas = schemas )
453
+ return _property_from_ref (name = name , required = required , parent = None , data = data , schemas = schemas , config = config )
441
454
442
455
# A union of a single reference should just be passed through to that reference (don't create copy class)
443
456
sub_data = (data .allOf or []) + data .anyOf + data .oneOf
444
457
if len (sub_data ) == 1 and isinstance (sub_data [0 ], oai .Reference ):
445
- return _property_from_ref (name = name , required = required , parent = data , data = sub_data [0 ], schemas = schemas )
458
+ return _property_from_ref (
459
+ name = name , required = required , parent = data , data = sub_data [0 ], schemas = schemas , config = config
460
+ )
446
461
447
462
if data .enum :
448
463
return build_enum_property (
@@ -459,14 +474,15 @@ def _property_from_data(
459
474
data = data , name = name , required = required , schemas = schemas , parent_name = parent_name , config = config
460
475
)
461
476
elif data .type == "string" :
462
- return _string_based_property (name = name , required = required , data = data ), schemas
477
+ return _string_based_property (name = name , required = required , data = data , config = config ), schemas
463
478
elif data .type == "number" :
464
479
return (
465
480
FloatProperty (
466
481
name = name ,
467
482
default = convert ("float" , data .default ),
468
483
required = required ,
469
484
nullable = data .nullable ,
485
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
470
486
),
471
487
schemas ,
472
488
)
@@ -477,6 +493,7 @@ def _property_from_data(
477
493
default = convert ("int" , data .default ),
478
494
required = required ,
479
495
nullable = data .nullable ,
496
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
480
497
),
481
498
schemas ,
482
499
)
@@ -487,6 +504,7 @@ def _property_from_data(
487
504
required = required ,
488
505
default = convert ("bool" , data .default ),
489
506
nullable = data .nullable ,
507
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
490
508
),
491
509
schemas ,
492
510
)
@@ -499,7 +517,16 @@ def _property_from_data(
499
517
data = data , name = name , schemas = schemas , required = required , parent_name = parent_name , config = config
500
518
)
501
519
elif not data .type :
502
- return AnyProperty (name = name , required = required , nullable = False , default = None ), schemas
520
+ return (
521
+ AnyProperty (
522
+ name = name ,
523
+ required = required ,
524
+ nullable = False ,
525
+ default = None ,
526
+ python_name = utils .PythonIdentifier (value = name , prefix = config .field_prefix ),
527
+ ),
528
+ schemas ,
529
+ )
503
530
return PropertyError (data = data , detail = f"unknown type { data .type } " ), schemas
504
531
505
532
0 commit comments