Perseus037 / nonebot_plugin_batarot

碧蓝档案塔罗牌-nonebot2插件(支持多适配器)
GNU General Public License v3.0
42 stars 5 forks source link

对pydantic2.x的支持 #13

Closed hanasa2023 closed 4 days ago

hanasa2023 commented 1 week ago

看了下依赖要求为pydantic<2,能否提供对pyd2.x的支持

Perseus037 commented 1 week ago

pydantic>2是可以正常使用的,没用到验证器应该没影响。

hanasa2023 commented 1 week ago
10-14 21:32:59 [ERROR] nonebot | Failed to import "nonebot_plugin_batarot"
Traceback (most recent call last):
  File "<string>", line 14, in <module>
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot/plugin/load.py", line 131, in load_from_toml
    return load_all_plugins(plugins, plugin_dirs)
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot/plugin/load.py", line 65, in load_all_plugins
    return manager.load_all_plugins()
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 203, in load_all_plugins
    return set(
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 204, in <genexpr>
    filter(None, (self.load_plugin(name) for name in self.available_plugins))
> File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 167, in load_plugin
    module = importlib.import_module(self._third_party_plugin_ids[name])
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot/plugin/manager.py", line 255, in exec_module
    super().exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot_plugin_batarot/__init__.py", line 12, in <module>
    from . import handler as handler
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot_plugin_batarot/handler.py", line 9, in <module>
    from .config import config
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/nonebot_plugin_batarot/config.py", line 1, in <module>
    from pydantic import BaseSettings
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/pydantic/__init__.py", line 402, in __getattr__
    return _getattr_migration(attr_name)
  File "/home/hanasaki/bot/hanasaki-bot/.venv/lib/python3.10/site-packages/pydantic/_migration.py", line 296, in wrapper
    raise PydanticImportError(
pydantic.errors.PydanticImportError: `BaseSettings` has been moved to the `pydantic-settings` package. See https://docs.pydantic.dev/2.9/migration/#basesettings-has-moved-to-pydantic-settings for more details.

For further information visit https://errors.pydantic.dev/2.9/u/import-error

BaseSettings在V2中被移动了…… 而且我看现有代码中似乎没有用到config?

Perseus037 commented 1 week ago

是的,你把config.py里的导入语句改为from pydantic_settings import BaseSettings试试,应该就能确保BaseSettings正确导入了

hanasa2023 commented 1 week ago

嗯,但是我认为不应该是用户来修改

SaltyFishFly commented 5 days ago

pip install pydantic_settings并修改import后出现如下错误:

  File "E:\Code\Projects\noobie\.venv\lib\site-packages\nonebot_plugin_batarot\handler.py", line 9, in <module>
    from .config import config
  File "E:\Code\Projects\noobie\.venv\lib\site-packages\nonebot_plugin_batarot\config.py", line 9, in <module>
    config = Config()
  File "E:\Code\Projects\noobie\.venv\lib\site-packages\pydantic_settings\main.py", line 167, in __init__
    super().__init__(
  File "E:\Code\Projects\noobie\.venv\lib\site-packages\pydantic\main.py", line 212, in __init__
    validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
pydantic_core._pydantic_core.ValidationError: 2 validation errors for Config
driver
  Extra inputs are not permitted [type=extra_forbidden, input_value='~fastapi', input_type=str]
    For further information visit https://errors.pydantic.dev/2.9/v/extra_forbidden
port
  Extra inputs are not permitted [type=extra_forbidden, input_value='11451', input_type=str]
    For further information visit https://errors.pydantic.dev/2.9/v/extra_forbidden

开了一个pr,maintainer可以稍微看一下?为了不破坏当前的依赖关系所以没有改pyproject.toml

14