Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Syntax Error with flake8 and Pydantic Constrained Types: constr(regex=)

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?

like image 824
Phil997 Avatar asked Nov 19 '20 10:11

Phil997


1 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

like image 54
Anthony Sottile Avatar answered Nov 15 '22 19:11

Anthony Sottile