aiondemand / aiondemand/AIOD-rest-api

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

オープン
#682 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
36
フォーク
77
PR マージ指標
30日以内にマージされた PR はありません

説明

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
```bash
py -3.11 -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
pytest src/tests
```

## Pydantic Error while using python 3.14
```bash
C:\Users\ASUS\Documents\work\opensource\AIOD-rest-api>pytest src/tests
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "C:\Users\ASUS\AppData\Local\Python\pythoncore-3.14-64\Scripts\pytest.exe\__main__.py", line 6, in
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 "", line 1371, in _find_and_load
File "", line 1342, in _find_and_load_unlocked
File "", 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
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
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
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
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"]`

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。