Skip to content

Cannot generate models from Checkout.com OpenAPI schema: 'Input should be a valid string' #1414

@arseniiarsenii

Description

@arseniiarsenii

Describe the bug
Cannot generate models from Checkout.com OpenAPI schema. Produces following traceback:

...
    New var:....... path_parts = ['https://api-reference.checkout.com', 'swagger.yaml']
    10:49:06.508976 exception 1583                 yield source, path_parts
    Exception:..... GeneratorExit
    10:49:06.619282 line      1580             with self.model_resolver.current_base_path_context(
    10:49:06.635393 line      1580             with self.model_resolver.current_base_path_context(
    10:49:06.643497 return    1583                 yield source, path_parts
    Return value:.. None
Call ended by exception
Elapsed time: 00:03:36.971955
10:49:06.686984 exception  995         self.parse_raw()
Exception:..... pydantic_core._pydantic_core.ValidationError: 1 validation error for JsonSchemaObject
required.1
  Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
    For further information visit https://errors.pydantic.dev/2.1.2/v/string_type
Call ended by exception
10:49:06.687150 exception  305                 return function(*args, **kwargs)
Exception:..... pydantic_core._pydantic_core.ValidationError: 1 validation error for JsonSchemaObject
required.1
  Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
    For further information visit https://errors.pydantic.dev/2.1.2/v/string_type
10:49:06.687211 line       304             with self:
Elapsed time: 00:03:36.972749
Call ended by exception
Elapsed time: 00:03:36.973667

Traceback (most recent call last):
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/datamodel_code_generator/__main__.py", line 767, in main
    generate(
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/datamodel_code_generator/__init__.py", line 431, in generate
    results = parser.parse()
              ^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pysnooper/tracer.py", line 305, in simple_wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pysnooper/tracer.py", line 305, in simple_wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/datamodel_code_generator/parser/base.py", line 995, in parse
    self.parse_raw()
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pysnooper/tracer.py", line 305, in simple_wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/datamodel_code_generator/parser/openapi.py", line 549, in parse_raw
    self.parse_raw_obj(
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pysnooper/tracer.py", line 305, in simple_wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pysnooper/tracer.py", line 305, in simple_wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/datamodel_code_generator/parser/jsonschema.py", line 1535, in parse_raw_obj
    self.parse_obj(name, JsonSchemaObject.parse_obj(raw), path)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/typing_extensions.py", line 2562, in wrapper
    return __arg(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pydantic/main.py", line 942, in parse_obj
    return cls.model_validate(obj)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pydantic/main.py", line 480, in model_validate
    return cls.__pydantic_validator__.validate_python(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/datamodel_code_generator/parser/jsonschema.py", line 271, in __init__
    super().__init__(**data)
  File "/home/user/PycharmProjects/fix/playground/.venv/lib/python3.11/site-packages/pydantic/main.py", line 150, in __init__
    __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)
pydantic_core._pydantic_core.ValidationError: 1 validation error for JsonSchemaObject
required.1
  Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]
    For further information visit https://errors.pydantic.dev/2.1.2/v/string_type

To Reproduce

Example schema:
Schema is too long to paste, so attaching a link

Used commandline:

$ datamodel-codegen \
    --url https://api-reference.checkout.com/swagger.yaml \
    --output='checkout_models.py' \
    --snake-case-field \
    --use-schema-description \
    --use-field-description \
    --use-standard-collections \
    --set-default-enum-member \
    --target-python-version='3.9' \
    --disable-warnings \
    --use-double-quotes \
    --wrap-string-literal \
    --debug

Expected behavior
A clear and concise description of what you expected to happen.

Version:

  • OS: Linux endeavour 6.4.1-arch1-1 change template library to jinja2 #1 SMP PREEMPT_DYNAMIC Sat, 01 Jul 2023 16:17:21 +0000 x86_64 GNU/Linux
  • Python version: 3.11.3
  • datamodel-code-generator version: 0.21.1

Additional context
Thank you for the awesome work you do!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions