datamodel-code-generator
datamodel-code-generator copied to clipboard
Schemas with keywords names are not works
trafficstars
Describe the bug
Generator crashing in case of bool keywords in a specification. Also, schema with the name None produces an invalid model code.
To Reproduce Try to generate models by the following specification.
Example schema:
openapi: 3.0.2
info:
title: My Test API
description: An API for testing openapi-python-client
version: 0.1.0
paths:
/foo:
delete:
responses:
'200':
description: OK
components:
schemas:
None:
type: object
false:
type: object
True:
type: object
Used commandline:
$ datamodel-codegen --input ... --output ...
Expected behavior Since OAS is valid, expected valid models with a slightly changed name.
Version:
- OS: macOS 12.3.1
- Python version: 3.10.2
- datamodel-code-generator version: 0.13.0
Additional context Traceback:
Traceback (most recent call last):
File ".../datamodel-code-generator/datamodel_code_generator/__main__.py", line 541, in main
generate(
File ".../datamodel-code-generator/datamodel_code_generator/__init__.py", line 367, in generate
results = parser.parse()
File ".../datamodel-code-generator/datamodel_code_generator/parser/base.py", line 449, in parse
self.parse_raw()
File ".../datamodel-code-generator/datamodel_code_generator/parser/openapi.py", line 393, in parse_raw
self.parse_raw_obj(
File ".../datamodel-code-generator/datamodel_code_generator/parser/jsonschema.py", line 1149, in parse_raw_obj
self.parse_obj(name, JsonSchemaObject.parse_obj(raw), path)
File ".../datamodel-code-generator/datamodel_code_generator/parser/jsonschema.py", line 1164, in parse_obj
self.parse_object(name, obj, path)
File ".../datamodel-code-generator/datamodel_code_generator/parser/jsonschema.py", line 587, in parse_object
reference = self.model_resolver.add(
File ".../datamodel-code-generator/datamodel_code_generator/reference.py", line 476, in add
name = self.get_class_name(
File ".../datamodel-code-generator/datamodel_code_generator/reference.py", line 522, in get_class_name
if '.' in name:
TypeError: argument of type 'bool' is not iterable
Also, if it will work None schema produces the following invalid code:
class None(BaseModel):
pass