Closed Andrew-S-Rosen closed 11 months ago
Any updates on pydantic2 support? With the recent upgrade of maggma/emmet/mp-api to pydantic2, I am now deep in dependency conflict land
@mattmcdermott: Check out #440! Help would be greatly appreciated while I'm on PTO! There is one failing test.
Thanks for the rapid work @Andrew-S-Rosen. I've pushed a new version v0.1.14 with Pydantic2 support.
@Andrew-S-Rosen , thanks for adding Pydantic2
support to Jobflow
.
I've also updated #424 accordingly.
Hi all! I was using the following cofiguration without issues: jobflow == 0.1.13 pydantic == 1.10.12
However, today I configured environment on a new machine, my packages: jobflow == 0.1.14 pydantic == 2.4.2 pydantic_core == 2.10.1 pydantic-settings == 2.0.3
import jobflow as jf returns the following:
python
Python 3.10.12 | packaged by conda-forge | (main, Jun 23 2023, 22:40:32) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import jobflow as jf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/jobflow/__init__.py", line 11, in <module>
from jobflow.settings import JobflowSettings
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/jobflow/settings.py", line 29, in <module>
class JobflowSettings(BaseSettings):
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py", line 184, in __new__
complete_model_class(
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_model_construction.py", line 481, in complete_model_class
schema = cls.__get_pydantic_core_schema__(cls, handler)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/main.py", line 576, in __get_pydantic_core_schema__
return __handler(__source)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(__source_type)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 452, in generate_schema
schema = self._generate_schema(obj)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 684, in _generate_schema
schema = self._post_process_generated_schema(self._generate_schema_inner(obj))
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 706, in _generate_schema_inner
return self._model_schema(obj)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 525, in _model_schema
{k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 525, in <dictcomp>
{k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 870, in _generate_md_field_schema
common_field = self._common_field_schema(name, field_info, decorators)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 923, in _common_field_schema
schema = self._apply_annotations(
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 1592, in _apply_annotations
schema = get_inner_schema(source_type)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(__source_type)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 1576, in inner_handler
metadata_js_function = _extract_get_pydantic_json_schema(obj, schema)
File "/global/homes/v/vbaib/miniconda3/envs/quacc/lib/python3.10/site-packages/pydantic/_internal/_generate_schema.py", line 1936, in _extract_get_pydantic_json_schema
raise PydanticUserError(
pydantic.errors.PydanticUserError: The `__modify_schema__` method is not supported in Pydantic v2. Use `__get_pydantic_json_schema__` instead.
For further information visit https://errors.pydantic.dev/2.4/u/custom-json-schema
@ViktoriiaBaib: Might be worth opening a new issue to ensure it gets seen. That said, I'm having trouble reproducing this error.
I made a fresh Python 3.10 environment and ran the following:
pip install jobflow==0.1.14 pydantic==2.4.2 pydantic_core==2.10.1 pydantic-settings==2.0.3
Then import jobflow as jf
worked fine. Can you double-check your versions and your environment?
That issue was caused because custodian installation downgraded monty. Doing pip install monty==2023.9.25
afterwards resolved the error.
To clarify, it was because you installed the Custodian dependencies from requirements.txt
rather than having them installed automatically from setup.py
. The install_requires
line in setup.py
of Custodian has monty>=2.0.6
rather than monty==2022.9.9
.
This is mainly an issue tracker to monitor the progress towards support for Pydantic 2.
Related: