spaCy icon indicating copy to clipboard operation
spaCy copied to clipboard

bug: pydantic v1 incompatability error (Py3.14 wheels)

Open chamalgomes opened this issue 1 month ago • 2 comments

Noticed the following error on the CI runs, might be due to pydantic incompatibility ?

How to reproduce the behaviour

from spacy.language import Language

Traceback

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    from spacy.language import Language
  File "/workspaces/test.venv/lib/python3.14/site-packages/spacy/__init__.py", line 13, in <module>
    from . import pipeline  # noqa: F401
    ^^^^^^^^^^^^^^^^^^^^^^
  File "/workspaces/test.venv/lib/python3.14/site-packages/spacy/pipeline/__init__.py", line 1, in <module>
    from .attributeruler import AttributeRuler
  File "/workspaces/test/.venv/lib/python3.14/site-packages/spacy/pipeline/attributeruler.py", line 10, in <module>
    from ..language import Language
  File "/workspaces/test/.venv/lib/python3.14/site-packages/spacy/language.py", line 46, in <module>
    from .pipe_analysis import analyze_pipes, print_pipe_analysis, validate_attrs
  File "/workspaces/test/.venv/lib/python3.14/site-packages/spacy/pipe_analysis.py", line 6, in <module>
    from .tokens import Doc, Span, Token
  File "/workspaces/test/.venv/lib/python3.14/site-packages/spacy/tokens/__init__.py", line 1, in <module>
    from ._serialize import DocBin
  File "/workspaces/test/.venv/lib/python3.14/site-packages/spacy/tokens/_serialize.py", line 14, in <module>
    from ..vocab import Vocab
  File "spacy/vocab.pyx", line 1, in init spacy.vocab
  File "spacy/tokens/doc.pyx", line 49, in init spacy.tokens.doc
  File "/workspaces/test/.venv/lib/python3.14/site-packages/spacy/schemas.py", line 195, in <module>
    class TokenPatternString(BaseModel):
    ...<43 lines>...
            return v
  File "/workspaces/test/.venv/lib/python3.14/site-packages/pydantic/v1/main.py", line 221, in __new__
    inferred = ModelField.infer(
        name=var_name,
    ...<3 lines>...
        config=config,
    )
  File "/workspaces/test/.venv/lib/python3.14/site-packages/pydantic/v1/fields.py", line 504, in infer
    return cls(
        name=name,
    ...<7 lines>...
        field_info=field_info,
    )
  File "/workspaces/test/.venv/lib/python3.14/site-packages/pydantic/v1/fields.py", line 434, in __init__
    self.prepare()
    ~~~~~~~~~~~~^^
  File "/workspaces/test/.venv/lib/python3.14/site-packages/pydantic/v1/fields.py", line 544, in prepare
    self._set_default_and_type()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/workspaces/test/.venv/lib/python3.14/site-packages/pydantic/v1/fields.py", line 576, in _set_default_and_type
    raise errors_.ConfigError(f'unable to infer type for attribute "{self.name}"')
pydantic.v1.errors.ConfigError: unable to infer type for attribute "REGEX"

Your Environment

  • Operating System: ubuntu-latest
  • Python Version Used: 3.14
  • spaCy Version Used: 3.8.10

chamalgomes avatar Nov 17 '25 18:11 chamalgomes

C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\confection_init_.py:38: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater. from pydantic.v1 import BaseModel, Extra, ValidationError, create_model Traceback (most recent call last): File "C:\bal1web\sintax.py", line 2, in import spacy File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy_init_.py", line 13, in from . import pipeline # noqa: F401 ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\pipeline_init_.py", line 1, in from .attributeruler import AttributeRuler File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\pipeline\attributeruler.py", line 10, in from ..language import Language File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\language.py", line 46, in from .pipe_analysis import analyze_pipes, print_pipe_analysis, validate_attrs File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\pipe_analysis.py", line 6, in from .tokens import Doc, Span, Token File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\tokens_init_.py", line 1, in from ._serialize import DocBin File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\tokens_serialize.py", line 14, in from ..vocab import Vocab File "spacy/vocab.pyx", line 1, in init spacy.vocab File "spacy/tokens/doc.pyx", line 49, in init spacy.tokens.doc File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\spacy\schemas.py", line 195, in class TokenPatternString(BaseModel): ...<43 lines>... return v File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\pydantic\v1\main.py", line 221, in new inferred = ModelField.infer( name=var_name, ...<3 lines>... config=config, ) File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\pydantic\v1\fields.py", line 504, in infer return cls( name=name, ...<7 lines>... field_info=field_info, ) File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\pydantic\v1\fields.py", line 434, in init self.prepare() ~~~~~~~~~~~~^^ File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\pydantic\v1\fields.py", line 544, in prepare self._set_default_and_type() ~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bal1web\AppData\Local\Programs\Python\Python314\Lib\site-packages\pydantic\v1\fields.py", line 576, in set_default_and_type raise errors.ConfigError(f'unable to infer type for attribute "{self.name}"') pydantic.v1.errors.ConfigError: unable to infer type for attribute "REGEX"

korobovsp avatar Nov 18 '25 06:11 korobovsp

Hey, just want to add on here that spacy isn't functional on Python 3.14 because of this issue. There's a more detailed synopsis here: https://github.com/pydantic/pydantic/issues/12363, but the pydantic.v1 namespace on pydantic>=2.0.0 doesn't support Python 3.14. Similarly, pydantic<2.0.0 doesn't support Python 3.14 at all.

ghmeier avatar Nov 26 '25 02:11 ghmeier