Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incompatibility with recent Pydantic version 2.4.0 #1570

Closed
ofek opened this issue Sep 25, 2023 · 2 comments
Closed

Incompatibility with recent Pydantic version 2.4.0 #1570

ofek opened this issue Sep 25, 2023 · 2 comments
Labels

Comments

@ofek
Copy link

ofek commented Sep 25, 2023

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\ofek\AppData\Local\Programs\Python\Python311\Scripts\ddev.exe\__main__.py", line 4, in <module>
  File "C:\Users\ofek\Desktop\code\integrations-core\ddev\src\ddev\cli\__init__.py", line 8, in <module>
    from datadog_checks.dev.tooling.commands.create import create
  File "C:\Users\ofek\Desktop\code\integrations-core\datadog_checks_dev\datadog_checks\dev\tooling\commands\__init__.py", line 15, in <module>
    from .validate import validate
  File "C:\Users\ofek\Desktop\code\integrations-core\datadog_checks_dev\datadog_checks\dev\tooling\commands\validate\__init__.py", line 9, in <module>
    from .all_validations import all
  File "C:\Users\ofek\Desktop\code\integrations-core\datadog_checks_dev\datadog_checks\dev\tooling\commands\validate\all_validations.py", line 10, in <module>
    from .config import config
  File "C:\Users\ofek\Desktop\code\integrations-core\datadog_checks_dev\datadog_checks\dev\tooling\commands\validate\config.py", line 13, in <module>
    from ...configuration.consumers import ExampleConsumer
  File "C:\Users\ofek\Desktop\code\integrations-core\datadog_checks_dev\datadog_checks\dev\tooling\configuration\consumers\__init__.py", line 5, in <module>
    from .model.model_consumer import ModelConsumer
  File "C:\Users\ofek\Desktop\code\integrations-core\datadog_checks_dev\datadog_checks\dev\tooling\configuration\consumers\model\model_consumer.py", line 13, in <module>
    from datamodel_code_generator.parser.openapi import OpenAPIParser
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\datamodel_code_generator\parser\openapi.py", line 143, in <module>
    class ComponentsObject(BaseModel):
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_model_construction.py", line 184, in __new__
    complete_model_class(
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_model_construction.py", line 495, in complete_model_class
    schema = apply_discriminators(simplify_schema_references(schema))
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 519, in simplify_schema_references
    schema = walk_core_schema(schema, count_refs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 439, in walk_core_schema
    return f(schema, _dispatch)
           ^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 515, in count_refs
    recurse(state['definitions'][ref], count_refs)
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 227, in _handle_other_schemas
    schema['schema'] = self.walk(sub_schema, f)  # type: ignore
                       ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 362, in handle_model_fields_schema
    replaced_field['schema'] = self.walk(v['schema'], f)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 227, in _handle_other_schemas
    schema['schema'] = self.walk(sub_schema, f)  # type: ignore
                       ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 308, in handle_dict_schema
    schema['values_schema'] = self.walk(values_schema, f)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 323, in handle_union_schema
    new_choices.append(self.walk(v, f))
                       ^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 515, in count_refs
    recurse(state['definitions'][ref], count_refs)
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 227, in _handle_other_schemas
    schema['schema'] = self.walk(sub_schema, f)  # type: ignore
                       ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 362, in handle_model_fields_schema
    replaced_field['schema'] = self.walk(v['schema'], f)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 227, in _handle_other_schemas
    schema['schema'] = self.walk(sub_schema, f)  # type: ignore
                       ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 503, in count_refs
    return recurse(s, count_refs)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 218, in _walk
    schema = self._schema_type_to_method[schema['type']](schema, f)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 308, in handle_dict_schema
    schema['values_schema'] = self.walk(values_schema, f)
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 215, in walk
    return f(schema, self._walk)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\USERS\OFEK\APPDATA\LOCAL\PROGRAMS\PYTHON\PYTHON311\Lib\site-packages\pydantic\_internal\_core_utils.py", line 515, in count_refs
    recurse(state['definitions'][ref], count_refs)
            ~~~~~~~~~~~~~~~~~~~~^^^^^
KeyError: 'datamodel_code_generator.parser.openapi.ParameterObject:2550164507056'
@willarmiros
Copy link
Contributor

willarmiros commented Sep 25, 2023

I am experiencing the same issue.

Command used:

datamodel-codegen --url http://localhost:3001/openapi.json --input-file-type openapi --use-annotated --output-model-type "pydantic_v2.BaseModel" --base-class "my.package.MyBaseModel" --output my/package/model.py

@koxudaxi
Copy link
Owner

koxudaxi commented Oct 4, 2023

@ofek @willarmiros
Thank you for reporting the issue.
I can reproduce the problem.
But, The bug is fixed Pydantic version 2.4.1
Could you please try 2.4.1 or later?

Release:

PR:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants