skip to navigation
skip to content

Not Logged In

multipledispatch 0.2.0

Multiple dispatch

Latest Version: 0.4.0

Build Status

A relatively sane approach to multiple dispatch in Python.

There are a few implementations of multiple dispatch already out there (see links below). This implementation one is efficient, relatively complete, and performs static analysis to avoid common issues.

Example

>>> from multipledispatch import dispatch

>>> @dispatch(int, int)
... def add(x, y):
...     return x + y

>>> @dispatch(object, object)
... def add(x, y):
...     return "%s + %s" % (x, y)

>>> add(1, 2)
3

>>> add(1, 'hello')
'1 + hello'

What this does

  • Dispatches on all non-keyword arguments
  • Supports inheritance
  • Supports union types, e.g. (int, float)
  • Supports builtin abstract classes, e.g. Iterator, Number, ...
  • Caches for fast repeated lookup
  • Identifies possible ambiguities at function definition time
  • Provides hints to resolve ambiguities when they occur

What this doesn't do

  • Dispatch on class methods
class Foo(object):
    @dispatch(int)
    def add(self, other):
        ...
  • Vararg dispatch
@dispatch([int])
def add(*args):
    ...
  • Diagonal dispatch
a = arbitrary_type()
@dispatch(a, a)
def are_same_type(x, y):
    return True
  • Respect namespaces

Installation and Dependencies

multipledispatch is on the Python Package Index (PyPI):

pip install multipledispatch

or

easy_install multipledispatch

multipledispatch supports Python 2.6+ and Python 3.2+ with a common codebase. It is pure Python and requires no dependencies beyond the standard library.

It is, in short, a light weight dependency.

License

New BSD. See License.

 
File Type Py Version Uploaded on Size
multipledispatch-0.2.0.tar.gz (md5) Source 2014-02-23 5KB
  • Downloads (All Versions):
  • 11 downloads in the last day
  • 114 downloads in the last week
  • 1057 downloads in the last month