spaCy icon indicating copy to clipboard operation
spaCy copied to clipboard

Still encounter "TypeError: issubclass() arg 1 must be a class" problem with pydantic == 2.9.2 and scapy == 3.7.6

Open Xiaoxi-Luo-CL opened this issue 1 year ago • 0 comments

Discussed in https://github.com/explosion/spaCy/discussions/13634

Originally posted by LuoXiaoxi-cxq September 26, 2024 I was running the training part of the [self-attentive-parser] (https://github.com/nikitakit/self-attentive-parser), where I met this error (probably caused by version problems of spacy and pydantic):

Traceback (most recent call last):
  File "D:\postgraduate\research\parsing\self-attentive-parser\src\main.py", line 11, in <module>
    from benepar import char_lstm
  File "D:\postgraduate\research\parsing\self-attentive-parser\src\benepar\__init__.py", line 20, in <module>
    from .integrations.spacy_plugin import BeneparComponent, NonConstituentException
  File "D:\postgraduate\research\parsing\self-attentive-parser\src\benepar\integrations\spacy_plugin.py", line 5, in <module>
    from .spacy_extensions import ConstituentData, NonConstituentException
  File "D:\postgraduate\research\parsing\self-attentive-parser\src\benepar\integrations\spacy_extensions.py", line 177, in <module>
    install_spacy_extensions()
  File "D:\postgraduate\research\parsing\self-attentive-parser\src\benepar\integrations\spacy_extensions.py", line 153, in install_spacy_extensions
    from spacy.tokens import Doc, Span, Token
  File "D:\anaconda\lib\site-packages\spacy\__init__.py", line 14, in <module>
    from . import pipeline  # noqa: F401
  File "D:\anaconda\lib\site-packages\spacy\pipeline\__init__.py", line 1, in <module>
    from .attributeruler import AttributeRuler
  File "D:\anaconda\lib\site-packages\spacy\pipeline\attributeruler.py", line 6, in <module>
    from .pipe import Pipe
  File "spacy\pipeline\pipe.pyx", line 8, in init spacy.pipeline.pipe
  File "D:\anaconda\lib\site-packages\spacy\training\__init__.py", line 11, in <module>
    from .callbacks import create_copy_from_base_model  # noqa: F401
  File "D:\anaconda\lib\site-packages\spacy\training\callbacks.py", line 3, in <module>
    from ..language import Language
  File "D:\anaconda\lib\site-packages\spacy\language.py", line 25, in <module>
    from .training.initialize import init_vocab, init_tok2vec
  File "D:\anaconda\lib\site-packages\spacy\training\initialize.py", line 14, in <module>
    from .pretrain import get_tok2vec_ref
  File "D:\anaconda\lib\site-packages\spacy\training\pretrain.py", line 16, in <module>
    from ..schemas import ConfigSchemaPretrain
  File "D:\anaconda\lib\site-packages\spacy\schemas.py", line 216, in <module>
    class TokenPattern(BaseModel):
  File "pydantic\main.py", line 299, in pydantic.main.ModelMetaclass.__new__
    print("Loaded {:,} test examples.".format(len(test_treebank)))
  File "pydantic\fields.py", line 411, in pydantic.fields.ModelField.infer
  File "pydantic\fields.py", line 342, in pydantic.fields.ModelField.__init__
  File "pydantic\fields.py", line 451, in pydantic.fields.ModelField.prepare
  File "pydantic\fields.py", line 545, in pydantic.fields.ModelField._type_analysis
  File "pydantic\fields.py", line 550, in pydantic.fields.ModelField._type_analysis
  File "D:\anaconda\lib\typing.py", line 852, in __subclasscheck__
    return issubclass(cls, self.__origin__)
TypeError: issubclass() arg 1 must be a class

This issue says installing two packages chromadb and pydantic will work, so I installed them. I ran

python -m pip install -U pydantic spacy
python -m pip install -U chromadb spacy

I am running on Windows 11. Now, my environment is

Python == 3.10.14
pydantic == 2.9.2                   
pydantic-core ==  2.23.4 
scapy == 3.7.6
typing-extensions == 4.12.2
chromadb == 0.5.9 

However, the problem still exists. According to this issue, the problem ("TypeError: issubclass() arg 1 must be a class") should only exist for pydantic v1.10.7 and earlier related to the recent release of typing_extensions v4.6.0. My versions are higher, but this error isn't solved.

Xiaoxi-Luo-CL avatar Sep 26 '24 08:09 Xiaoxi-Luo-CL