Better duck-typing with mypy-compatible extensions to Protocol
Project description
If it walks like a duck and it quacks like a duck, then it must be a duck
Thanks to PEP544, Python now has protocols: a way to define duck typing statically. This library gives you some niceties to make common idioms easier.
Installation
pip install quacks
⚠️ For type checking to work with mypy, you’ll need to enable the plugin in your mypy config file:
[mypy]
plugins = quacks
Features
Easy read-only protocols
Defining read-only protocols is great for encouraging immutability and working with frozen dataclasses. Use the readonly decorator:
from quacks import readonly
@readonly
class User(Protocol):
id: int
name: str
is_premium: bool
Without this decorator, we’d have to write quite a lot of cruft, reducing readability:
class User(Protocol):
@property
def id(self) -> int: ...
@property
def name(self) -> str: ...
@property
def is_premium(self) -> bool: ...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
quacks-1.1.1.tar.gz
(4.9 kB
view hashes)
Built Distribution
quacks-1.1.1-py3-none-any.whl
(6.5 kB
view hashes)