Switch to pydantic v2
Upstream has indicated that pydantic v1 will not get python3.14 support. So it might be best to drop the usage of pydantic v1 api usage.
Pydantic install v1 or pydantic API v1 isn't supported by 3.14? The former is no problem as v1 API is importable from v2 installed. The latter is more serious, and this line supports that https://github.com/pydantic/pydantic/pull/11991/files#diff-8d8ba22e73ee4a9ada85d578f878761d988f380fdc122d93d74261329d5a4b48R18 . Do you have any more definitive link? That not a huge problem as the next2025 branches of QCElemental and QCEngine offer a QCSchema v2 (see also #323) that's written in pydantic API v2. Those programs demanding QCSchema v1 in pydantic API v1 will have to confine themselves to py39-313. Thanks for the notice!
pydantic API v1 isn't supported by 3.14
This unfortunately https://github.com/pydantic/pydantic/issues/11613#issuecomment-3061291322
I am doing a transition right now and making some compatibility shims for v1 doesn't seem so hard, but the project doesn't use pydantic extensively to know where the compatibility ahima may break
Thanks, that link does look more definitive.
Yes, v1 to v2 isn't bad at all. It's the deeply nested model used by several big software projects that has been a stumbling block. Fortunately, this project has a path now, if only I was getting around to finishing it.
I am getting a build error with Python 3.14 https://koji.fedoraproject.org/koji/taskinfo?taskID=136232690
ImportError while loading conftest '/builddir/build/BUILD/python-qcelemental-0.29.0-build/QCElemental-0.29.0/qcelemental/conftest.py'.
qcelemental/__init__.py:10: in <module>
from . import covalent_radii, models, molparse, molutil, periodic_table, physical_constants, util, vanderwaals_radii
qcelemental/covalent_radii.py:9: in <module>
from .datum import Datum, print_variables
qcelemental/datum.py:16: in <module>
class Datum(BaseModel):
/usr/lib/python3.14/site-packages/pydantic/v1/main.py:221: in __new__
inferred = ModelField.infer(
/usr/lib/python3.14/site-packages/pydantic/v1/fields.py:504: in infer
return cls(
/usr/lib/python3.14/site-packages/pydantic/v1/fields.py:434: in __init__
self.prepare()
/usr/lib/python3.14/site-packages/pydantic/v1/fields.py:544: in prepare
self._set_default_and_type()
/usr/lib/python3.14/site-packages/pydantic/v1/fields.py:576: in _set_default_and_type
raise errors_.ConfigError(f'unable to infer type for attribute "{self.name}"')
E pydantic.v1.errors.ConfigError: unable to infer type for attribute "doi"
I'll see about getting next2025 moved to master. qmelemental.models (qcsk v1; pyd v1) won't be avail for py314, but the rest of the qcel package will work and and qcsk v2 will work (and poetry is out the door). qcel next2025 should be harmless to existing projects, but qcng next2025 has the potential to break things b/c it's using qcsk v2 always behind the scenes.