Answer a question

I use in Python the package pydantic and the linker Flake8. I want to use constr from pydantic with a regular Experssion. Only certain Characters should be passed. (a-z, A-Z, 0-9 and _)

The regular Experssion "^[a-zA-Z0-9_]*$" works, but flake8 shows me the following error:

syntax error in forward annotation '^[a-zA-Z0-9_]*$' flake8(F722)

class RedisSettings(BaseModel):
    keyInput: constr(regex="^[a-zA-Z0-9_]*$") = "" 
    keyOutput: constr(regex="^[a-zA-Z0-9_]*$") = ""

Can you help me to avoid the Error Message?

Answers

the error here comes from pyflakes which attempts to interpret type annotations as type annotations according to PEP 484

the annotations used by pydantic are incompatible with PEP 484 and result in that error. you can read more about this in this pyflakes issue

I'd suggest either (1) finding a way to use pydantic which doesn't involve violating PEP 484 or (2) ignoring the errors from pyflakes using flake8's extend-ignore / # noqa: ... / per-file-ignores


disclaimer: I am one of the pyflakes maintainers and I am the current flake8 maintainer

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐