首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flake8和Pydantic约束类型的语法错误:regex=

flake8和Pydantic约束类型的语法错误:regex=
EN

Stack Overflow用户
提问于 2020-11-19 10:33:54
回答 2查看 3.1K关注 0票数 15

我在Python中使用软件包pydantic和链接器Flake8。我想用从脓毒症中得到的有规律的表达。只应传递某些字符。(a-z,A-Z,0-9和_)

常规的扩展"^[a-zA-Z0-9_]*$"工作,但是flake8向我展示了以下错误:

前批注'^a-zA-Z0-9_*$‘flake8(F722)中的语法错误

代码语言:javascript
复制
class RedisSettings(BaseModel):
    keyInput: constr(regex="^[a-zA-Z0-9_]*$") = "" 
    keyOutput: constr(regex="^[a-zA-Z0-9_]*$") = ""

你能帮我避免错误信息吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-19 18:06:42

这里的错误来自于根据佩普484试图将类型注释解释为类型注释的pyflake。

pydantic使用的注释与PEP 484不兼容,从而导致错误。您可以阅读更多有关此在这个火堆问题上的信息。

我建议:(1)找出一种不违反PEP 484的使用脓丹的方法,或者(2)用薄片8的extend-ignore / # noqa: ... / per-file-ignores来忽略烧焦片的错误。

免责声明:我是pyflakes的维护人员之一,我是当前的flake8维护人员。

票数 19
EN

Stack Overflow用户

发布于 2022-08-04 11:35:18

您可以将constr(..)语句提取到一个单独的变量:

代码语言:javascript
复制
KeyTypeStr = constr(regex="^[a-zA-Z0-9_]*$")
KeyOutputStr = constr(regex="^[a-zA-Z0-9_]*$")

class RedisSettings(BaseModel):
    keyInput: KeyTypeStr = "" 
    keyOutput: KeyOutputStr = ""

它看起来甚至更干净,类型注释可以很容易地重用,甚至在其他模块中也是如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64909849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档