Python polymorphic function declaration with obvious syntax
Project description
Python polymorphic function declaration with obvious syntax. Just use the same function name and mark each function definition with @polymorphic decorator.
Installation
pip install polypie
Requirements
- Python 3.5+
- typeguard (will be installed automatically)
Example
from typing import Any, Sequence from polypie import polymorphic, PolypieException @polymorphic def example(a: int, b): print('(1)') @polymorphic def example(a: str, b: Any): print('(2)') @polymorphic def example(a: Sequence[str]): print('(3)') example(100, 200) # (1) example('foo', 200) # (2) example(['foo']) # (3) example(('bar', 'baz')) # (3) try: example({'foo': 'bar'}) except PolypieException as exc: print(exc) # Matching signature <...> not found class Example: def __init__(self): self.values = {} @polymorphic def value(self, name): return self.values[name] @polymorphic def value(self, name, value): self.values[name] = value instance = Example() instance.value('foo', 100) instance.value('bar', 'baz') print(instance.value('foo')) # 100 print(instance.value('bar')) # baz
Tests
tox [-e ENV] [-- --cov]
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size polypie-0.2.0-py3-none-any.whl (3.8 kB) | File type Wheel | Python version py3 | Upload date | Hashes View hashes |
Filename, size polypie-0.2.0.tar.gz (3.7 kB) | File type Source | Python version None | Upload date | Hashes View hashes |