Closed NekoAria closed 1 year ago
现在有一个问题,我现在有一个分支(dev0.7)也修改了很多内容(很多没有push上来),merge以后不好把这部分内容迁移过去
各种命名的不规范是我的问题(我的坏习惯,我认为用大驼峰命名类型,小驼峰命名函数,下划线命名变量,这样可以从命名上直接看出他们的类型),我应该遵守pep8的标准
还有就是我不是很想支持3.10以下的版本
还有就是我不是很想支持3.10以下的版本
能说说为什么吗? 之前没去看别人的 fork ,原来 @Ikaros-521 也对 3.8 做了兼容。
现在有一个问题,我现在有一个分支(dev0.7)也修改了很多内容(很多没有push上来),merge以后不好把这部分内容迁移过去
不merge,用rebase,试试,我也不是太懂你们这冲突会不会很多
现在有一个问题,我现在有一个分支(dev0.7)也修改了很多内容(很多没有push上来),merge以后不好把这部分内容迁移过去
不merge,用rebase,试试,我也不是太懂你们这冲突会不会很多
主要还是有个文件内容修改的同时,还修改了文件名,别的冲突都好说。
我很多函数和变量的位置都改了
我没记错的话,事实上你只用到了 python 3.10
新特性里的 match-case
以及 type union operator
,要兼容 3.8 并不是什么特别麻烦的事情吧。
还有,我认为使用我添加的那个 deep_get
函数,可读性会更好。
所以能否说一下,你是出于什么原因不想兼容 3.10 以下的 python 版本?
如果只是喜好问题,我也没意见。
我很多函数和变量的位置都改了
等你改好之后,我处理好冲突后,重新发 PR 也行。
咕咕咕
我在想那个怎么处理掉那个type ignore
然后你们怎么看这个问题 pydantic/pydantic#5211
from typing import List
from pydantic import BaseModel, validator
class Model(BaseModel):
word_list: List[str]
@validator('word_list', pre=True)
def word_list_validator(cls, v):
return [v] if isinstance(v, str) else v
这样?
我在想那个怎么处理掉那个type ignore
validator 相关的 v 可以注解为 Any 类型,但是涉及到 event.sender.user_id 那些就没办法了,因为它是 Optional[int] ,但是接收方不允许它是 None 。
我打算支持OB12,所以我自己写了一个Sender类,optional的问题不大
mypy一样会报错
mypy一样会报错
~我用 PyCharm 无法复现:~
from typing import List, Union
from pydantic import BaseModel, validator
class Model(BaseModel):
word_list: List[str]
@validator('word_list', pre=True)
def word_list_validator(cls, v: Union[str, List[str]]) -> List[str]:
return list(v)
if __name__ == '__main__':
m = Model(word_list="abc")
print(type(m.word_list))
print(m.word_list)
~运行结果:~
<class 'list'>
['a', 'b', 'c']
~这个报错应该是 vscode 的 Pylance 给出的吧。~
我更新了 mypy 后也遇到了。
mypy类型检查
$ mypy C:\Programs\BOT\NoneBot2\bing-chat-dev\src\plugins\test\test02.py
test02.py:11: error: Argument "word_list" to "Model" has incompatible type "str"; expected "List[str]" [arg-type]
Found 1 error in 1 file (checked 1 source file)
我在纠结这个问题,要不给mypy提一个issue(?
这并不算是 issue 吧,你也不会直接用 m = Model(word_list="abc")
吧,不应该是这样吗:
d = {"word_list": "abc"}
m = Model.parse_obj(d)
这样并不会报错。 至于上面的报错,我更新了 mypy 后也遇到了,它就是这么设计的吧。
我没记错的话,事实上你只用到了
python 3.10
新特性里的match-case
以及type union operator
,要兼容 3.8 并不是什么特别麻烦的事情吧。还有,我认为使用我添加的那个
deep_get
函数,可读性会更好。所以能否说一下,你是出于什么原因不想兼容 3.10 以下的 python 版本?
如果只是喜好问题,我也没意见。
3.10确实是我的喜好问题了
refactor: 对
python 3.8
向下兼容style: 规范变量、类、函数、文件命名
chore: 引入格式化工具配置和代码检查工具配置
~feat: 支持自定义代理 (close #19)~
我没看仔细,原来 0.0.58.2 支持自定义代理,后来又取消了。