Call multimethod on a variable number of types. It returns a decorator which finds the multimethod of the same name, creating it if necessary, and adds that function to it.
@multimethod(*types)
def func(*args):
pass
func is now a multimethod which will delegate to the above function, when called with arguments of the specified types. If an exact match can’t be found, the next closest method is called (and cached).
If strict mode is enabled, and there are multiple candidate methods, a TypeError is raised. A function can have more than one multimethod decorator. Keyword arguments can be used when calling, but won’t affect the dispatching.
The functools.singledispatch style syntax introduced in Python 3.4 is also supported.
@multidispatch
def func(*args):
pass
@func.register(*types)
def _(*args):
pass
See tests for more example usage.
Installation
$ pip install multimethod
Dependencies
Python 2.7 or 3.3+.
Tests
100% branch coverage.
$ py.test [--cov]
Changes
0.5
Optimized dispatching
Support for functools.singledispatch syntax
0.4
Dispatch on Python 3 annotations
Metadata
Release files for multimethod 0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| multimethod-0.5.tar.gz | 4.3 kB | Details |
Release files / multimethod-0.5.tar.gz
| Download URL | multimethod-0.5.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ddba71265cb51dfd3d078b86b2bf57d47426ccf810bd2a695dfcce75526083d
|
|
BLAKE2b-256 checksum How to use checksums |
c13c65ea1ca4f580ec9224c4d0c85cba9b0b440971e2aea147cbbb1c8115681d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |