Skip to content

Latest commit

 

History

History
42 lines (28 loc) · 1 KB

README.md

File metadata and controls

42 lines (28 loc) · 1 KB

Build Status

strict

Python strict tag

pip install pystrict

Using @strict on classes can prevent serious errors by raising an exception when an instance has a variable created outside of init. Unfortunately, linters don't (cannot) always catch this. I can't express how much time this has saved me recently.

Using @strict on functions only checks type specifiers.

Example:

from pystrict import strict

# not allowed, missing type specifier
@strict
def foo(x: int, y):
    ...


# not allowed, missing type specifier in __init__
@strict
class Foo():
    def __init__(self, x: int, y):
        ...

# not allowed, object modified outside of init
@strict
class Foo():
    def __init__(self, x: int):
        self.x = 1

# mypy and pytest won't check this
def evil():
    return list({'a':Foo(1)}.values())

z = evil()
z[0].y = 4