datamodel-code-generator
datamodel-code-generator copied to clipboard
IndexError: string index out of range from openapi 3.0.0 yaml file
trafficstars
Describe the bug
When I attempt to use either of the schemas in the attached zip file as --input, I get a traceback
To Reproduce
$ datamodel-codegen --input Parcel-Perform-PublicAPI-OAS3-v5.1.0-derefed.yaml
Traceback (most recent call last):
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/__main__.py", line 531, in main
use_annotated=config.use_annotated,
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/__init__.py", line 353, in generate
results = parser.parse()
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/base.py", line 426, in parse
self.parse_raw()
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/openapi.py", line 388, in parse_raw
[*path_parts, '#/components', 'schemas', obj_name],
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 1122, in parse_raw_obj
self.parse_obj(name, JsonSchemaObject.parse_obj(raw), path)
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 1137, in parse_obj
self.parse_object(name, obj, path)
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 582, in parse_object
obj, path, get_module_name(class_name, None)
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 527, in parse_object_fields
field_type = self.parse_item(modular_name, field, [*path, field_name])
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 656, in parse_item
name, item, object_path, singular_name=singular_name
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 582, in parse_object
obj, path, get_module_name(class_name, None)
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 527, in parse_object_fields
field_type = self.parse_item(modular_name, field, [*path, field_name])
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 656, in parse_item
name, item, object_path, singular_name=singular_name
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 582, in parse_object
obj, path, get_module_name(class_name, None)
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/parser/jsonschema.py", line 521, in parse_object_fields
original_field_name, exclude_field_names
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/reference.py", line 571, in get_valid_field_name_and_alias
field_name, excludes
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/reference.py", line 172, in get_valid_field_name_and_alias
valid_name = self.get_valid_name(field_name, excludes=excludes)
File "/home/bkc/.local/pipx/venvs/datamodel-code-generator/lib/python3.7/site-packages/datamodel_code_generator/reference.py", line 152, in get_valid_name
if name[0].isnumeric():
IndexError: string index out of range
Example schema:
Used commandline:
$ datamodel-codegen --input Parcel-Perform-PublicAPI-OAS3-v5.1.0-derefed.yaml
Expected behavior
I expect to get a pydantic model
Version:
- OS: Ubuntu 16
- Python version: 3.7.10
- datamodel-code-generator version: 0.11.13
Additional context
installed via pipx
package datamodel-code-generator 0.11.13, Python 3.7.10
- activate-global-python-argcomplete
- datamodel-codegen
- isort
- python-argcomplete-check-easy-install-script
- python-argcomplete-tcsh
- register-python-argcomplete
problem possibly caused by a property name '#' as shown in this fragment below
nested-field-validation-errors:
description: Nested field level errors
type: object
properties:
api_response:
type: string
minLength: 1
message:
type: string
minLength: 1
errors:
type: object
required:
- object_name
properties:
object_name:
type: object
required:
- '#'
properties:
'#':
type: object
required:
- field_name
properties:
field_name:
type: array
items: {}
@bkcsfi Thank you for creating this issue.
problem possibly caused by a property name '#' as shown in this fragment below
I can reproduce the problem. OK, I will fix it.