Describe the bug
Fail to generate python code with an array
of $ref
from an allof
, an AttributeError
has been raised by the lib.
If this is not a bug, please let me know if I'm doing something wrong.
To Reproduce
Example schema:
PetOpts:
type: string
ProjectedPet:
type: object
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
opts:
type: array
items:
$ref: "#/components/schemas/PetOpts"
Pet:
allOf:
- $ref: "#/components/schemas/ProjectedPet"
required:
- id
- name
- opts
Used commandline:
datamodel-codegen --input api.yaml --output model.py --input-file-type openapi --use-annotated --collapse-root-models --use-standard-collections --capitalize-enum-members --target-python-version 3.10 --output-model-type pydantic_v2.BaseModel
Actual behavior
AttributeError: 'NoneType' object has no attribute 'is_list'
Expected behavior
class ProjectedPet(BaseModel):
id: Optional[int] = None
name: Optional[str] = None
tag: Optional[str] = None
opts: Optional[list[str]] = None
class Pet(ProjectedPet):
id: int
name: str
opts: list[str]
Version:
Additional context
The traceback
Traceback (most recent call last):
File "/Users/user/work/issue-datamodel-code-generator/.venv/lib/python3.11/site-packages/datamodel_code_generator/__main__.py", line 445, in main
generate(
File "/Users/user/work/issue-datamodel-code-generator/.venv/lib/python3.11/site-packages/datamodel_code_generator/__init__.py", line 473, in generate
results = parser.parse()
^^^^^^^^^^^^^^
File "/Users/user/work/issue-datamodel-code-generator/.venv/lib/python3.11/site-packages/datamodel_code_generator/parser/base.py", line 1366, in parse
self.__collapse_root_models(
File "/Users/user/work/issue-datamodel-code-generator/.venv/lib/python3.11/site-packages/datamodel_code_generator/parser/base.py", line 1015, in __collapse_root_models
elif data_type.parent.is_list:
^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'is_list'
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too