Skip to main content

Python polymorphic function declaration with obvious syntax

Project description

Build Status Coverage Status PyPI version PyPI license

Python polymorphic function declaration with obvious syntax. Just use the same function name and mark each function definition with @polymorphic decorator.


pip install polypie


  • Python 3.5+

  • typeguard (will be installed automatically)


from typing import Any, Sequence

from polypie import polymorphic, PolypieException

def example(a: int, b):

def example(a: str, b: Any):

def example(a: Sequence[str]):

example(100, 200)   # (1)
example('foo', 200)   # (2)
example(['foo'])   # (3)
example(('bar', 'baz'))   # (3)
    example({'foo': 'bar'})
except PolypieException as exc:
    print(exc)   # Matching signature <...> not found

class Example:

    def __init__(self):
        self.values = {}

    def value(self, name):
        return self.values[name]

    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


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.

Source Distribution

polypie-0.2.0.tar.gz (3.7 kB view hashes)

Uploaded source

Built Distribution

polypie-0.2.0-py3-none-any.whl (3.8 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page