
This implementation of multiple dispatch is efficient, mostly complete, performs static analysis to avoid conflicts, and provides optional namespace support. It looks good too.
What this does: * Dispatches on all non-keyword arguments * Supports inheritance * Supports instance methods * 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 * Supports namespaces with optional keyword arguments * Supports variadic dispatch
What this doesn't do: * Diagonal dispatch * Efficient update: The addition of a new signature requires a full resolve of the whole function. This becomes troublesome after you get to a few hundred type signatures.
This package contains the Python 3.x version of multipledispatch.