Efficient dispatch-based calling, that might be a switch statement in another language.
Project description
Switcheroo
Efficient dispatch-based calling, that might be a switch statement in another language.
short usage
from switcheroo import Switch
switch = Switch({
'foo': lambda x: x+1,
})
>>> switch['foo'](1) 2
>>> switch['bar'](1) Traceback (most recent call last): ... KeyError: 'bar'
from switcheroo import Switch, default
switch = Switch({
'foo': lambda x: x+1,
default: lambda x: x-1,
})
>>> switch['foo'](1) 2
>>> switch['bar'](1) 0
decorator usage
from switcheroo import Switch
switch = Switch()
@switch.handles('foo')
def handle_foo(x):
return x+1
@switch.default
def handle_others(x):
return x-1
>>> switch['foo'](1) 2
>>> switch['bar'](1) 0
class helper usage
class MoarThingz(object):
switch = Switch()
def __init__(self, state):
self.state = state
@switch.handles('foo')
def handle_foo(self, x):
return self.state - x
@switch.default
def handle_foo(self, x):
return self.state + x
def dispatch(self, case, factor, x):
return factor * self.switch[case](self, x)
>>> things = MoarThingz(3) >>> things.dispatch('foo', factor=1, x=1) 2 >>> things.dispatch('bar', factor=-1, x=2) -5
subclass usage
from switcheroo import Switch, handles, default
class MySwitch(Switch):
@handles('foo')
def handles(x):
return x+1
@default
def default(x):
return x-1
>>> MySwitch['foo'](1) 2 >>> MySwitch['bar'](1) 0
changes
1.0.0 (27 Feb 2019)
100% coverage checking and automated releases.
0.2.0 (13 Dec 2018)
Handle subclasses when using the subclass pattern.
0.1.0 (24 Nov 2018)
Initial release.
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
switcheroo-1.0.0.tar.gz
(2.7 kB
view hashes)
Built Distribution
Close
Hashes for switcheroo-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee9ffe25d7612dd8663858078c6a3852cb1f2379a7ffcf6ae6ed25e5aa4ce995 |
|
MD5 | b158677469655f251e5969ea700e8ee4 |
|
BLAKE2b-256 | 7cfe08945fbe3a2ae22bfddb977191a478fb1f2d0c057d61ef7cbe59f602b86f |