|
9 | 9 | "property_from_data",
|
10 | 10 | ]
|
11 | 11 |
|
12 |
| -from itertools import chain |
13 | 12 | from typing import Any, ClassVar, Dict, Generic, Iterable, Iterator, List, Optional, Set, Tuple, TypeVar, Union
|
14 | 13 |
|
15 | 14 | import attr
|
@@ -352,7 +351,14 @@ def build_union_property(
|
352 | 351 | *, data: oai.Schema, name: str, required: bool, schemas: Schemas, parent_name: str, config: Config
|
353 | 352 | ) -> Tuple[Union[UnionProperty, PropertyError], Schemas]:
|
354 | 353 | sub_properties: List[Property] = []
|
355 |
| - for i, sub_prop_data in enumerate(chain(data.anyOf, data.oneOf)): |
| 354 | + |
| 355 | + for i, sub_prop_data in enumerate( |
| 356 | + [ |
| 357 | + data |
| 358 | + for sublists in filter(lambda x: isinstance(x, Iterable), [[], data.anyOf, data.oneOf]) |
| 359 | + for data in sublists |
| 360 | + ] |
| 361 | + ): |
356 | 362 | sub_prop, schemas = property_from_data(
|
357 | 363 | name=f"{name}_type{i}",
|
358 | 364 | required=required,
|
@@ -440,7 +446,11 @@ def _property_from_data(
|
440 | 446 | return _property_from_ref(name=name, required=required, parent=None, data=data, schemas=schemas)
|
441 | 447 |
|
442 | 448 | # A union of a single reference should just be passed through to that reference (don't create copy class)
|
443 |
| - sub_data = (data.allOf or []) + data.anyOf + data.oneOf |
| 449 | + sub_data = [ |
| 450 | + data |
| 451 | + for sublists in filter(lambda x: isinstance(x, Iterable), [[], data.allOf, data.anyOf, data.oneOf]) |
| 452 | + for data in sublists |
| 453 | + ] |
444 | 454 | if len(sub_data) == 1 and isinstance(sub_data[0], oai.Reference):
|
445 | 455 | return _property_from_ref(name=name, required=required, parent=data, data=sub_data[0], schemas=schemas)
|
446 | 456 |
|
|
0 commit comments