Skip to content

[Tests]: Pydantic validation errors when running tests on Python 3.14 #682

Description

@rohansen856

While running the tests, using Python 3.14 results in multiple pydantic validation errors.
When switching to Python 3.11, the same tests run without encountering these pydantic errors.
PO #681

For setting up python 3.11 virtual env and running tests

py -3.11 -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
pytest src/tests

Pydantic Error while using python 3.14

C:\Users\ASUS\Documents\work\opensource\AIOD-rest-api>pytest src/tests
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\ASUS\AppData\Local\Python\pythoncore-3.14-64\Scripts\pytest.exe\__main__.py", line 6, in <module>
    sys.exit(console_main())
             ~~~~~~~~~~~~^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 201, in console_main
    code = main()
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 156, in main
    config = _prepareconfig(args, plugins)
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 341, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
        pluginmanager=pluginmanager, args=args
    )
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 167, in _multicall
    raise exception
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 139, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\helpconfig.py", line 105, in pytest_cmdline_parse
    config = yield
             ^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 1140, in pytest_cmdline_parse
    self.parse(args)
    ~~~~~~~~~~^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 1490, in parse
    self._preparse(args, addopts=addopts)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 1394, in _preparse
    self.hook.pytest_load_initial_conftests(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        early_config=self, args=args, parser=self._parser
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 167, in _multicall
    raise exception
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 139, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\warnings.py", line 151, in pytest_load_initial_conftests
    return (yield)
            ^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 139, in _multicall
    teardown.throw(exception)
    ~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\capture.py", line 154, in pytest_load_initial_conftests
    yield
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pluggy\_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 1218, in pytest_load_initial_conftests
    self.pluginmanager._set_initial_conftests(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        args=args,
        ^^^^^^^^^^
    ...<8 lines>...
        ),
        ^^
    )
    ^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 581, in _set_initial_conftests
    self._try_load_conftest(
    ~~~~~~~~~~~~~~~~~~~~~~~^
        anchor,
        ^^^^^^^
    ...<2 lines>...
        consider_namespace_packages=consider_namespace_packages,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 619, in _try_load_conftest
    self._loadconftestmodules(
    ~~~~~~~~~~~~~~~~~~~~~~~~~^
        anchor,
        ^^^^^^^
    ...<2 lines>...
        consider_namespace_packages=consider_namespace_packages,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 659, in _loadconftestmodules
    mod = self._importconftest(
        conftestpath,
    ...<2 lines>...
        consider_namespace_packages=consider_namespace_packages,
    )
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 735, in _importconftest
    self.consider_conftest(mod, registration_name=conftestpath_plugin_name)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 816, in consider_conftest
    self.register(conftestmodule, name=registration_name)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 512, in register
    self.consider_module(plugin)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 824, in consider_module
    self._import_plugin_specs(getattr(mod, "pytest_plugins", []))
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 831, in _import_plugin_specs
    self.import_plugin(import_spec)
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\config\__init__.py", line 858, in import_plugin
    __import__(importspec)
    ~~~~~~~~~~^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\_pytest\assertion\rewrite.py", line 174, in exec_module
    exec(co, module.__dict__)
    ~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ASUS\Documents\work\opensource\AIOD-rest-api\src\tests\testutils\default_instances.py", line 15, in <module>
    from database.model.agent.contact import Contact
  File "C:\Users\ASUS\Documents\work\opensource\AIOD-rest-api\src\database\model\agent\contact.py", line 6, in <module>
    from database.model.agent.email import Email
  File "C:\Users\ASUS\Documents\work\opensource\AIOD-rest-api\src\database\model\agent\email.py", line 1, in <module>
    from database.model.named_relation import NamedRelation
  File "C:\Users\ASUS\Documents\work\opensource\AIOD-rest-api\src\database\model\named_relation.py", line 16, in <module>
    class NamedRelation(SQLModel):
    ...<19 lines>...
            )
  File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\sqlmodel\main.py", line 536, in __new__
    new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs)
  File "pydantic/main.py", line 238, in pydantic.main.ModelMetaclass.__new__
  File "pydantic/fields.py", line 504, in pydantic.fields.ModelField.infer
  File "pydantic/fields.py", line 434, in pydantic.fields.ModelField.__init__
  File "pydantic/fields.py", line 544, in pydantic.fields.ModelField.prepare
  File "pydantic/fields.py", line 576, in pydantic.fields.ModelField._set_default_and_type
pydantic.errors.ConfigError: unable to infer type for attribute "identifier"

Note

Python 3.11 is mentioned in the pytest workflows .github\workflows\pytest-tests.yml:
python-version: ["3.11"]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions