Skip to content

earonesty/pystrict

Repository files navigation

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

About

@strict tag for python classes and functions

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages