{ "info": { "author": "Chris Withers", "author_email": "chris@withers.org", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "|CircleCI|_\n\n.. |CircleCI| image:: https://circleci.com/gh/cjw296/switcheroo/tree/master.svg?style=shield\n.. _CircleCI: https://circleci.com/gh/cjw296/switcheroo/tree/master\n\nSwitcheroo\n==========\n\nEfficient dispatch-based calling, that might be a switch statement in another language.\n\nshort usage\n~~~~~~~~~~~\n\n.. code-block:: python\n\n from switcheroo import Switch\n\n switch = Switch({\n 'foo': lambda x: x+1,\n })\n\n>>> switch['foo'](1)\n2\n\n>>> switch['bar'](1)\nTraceback (most recent call last):\n...\nKeyError: 'bar'\n\n.. code-block:: python\n\n from switcheroo import Switch, default\n\n switch = Switch({\n 'foo': lambda x: x+1,\n default: lambda x: x-1,\n })\n\n>>> switch['foo'](1)\n2\n\n>>> switch['bar'](1)\n0\n\ndecorator usage\n~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from switcheroo import Switch\n\n switch = Switch()\n\n @switch.handles('foo')\n def handle_foo(x):\n return x+1\n\n @switch.default\n def handle_others(x):\n return x-1\n\n>>> switch['foo'](1)\n2\n\n>>> switch['bar'](1)\n0\n\nclass helper usage\n~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n class MoarThingz(object):\n\n switch = Switch()\n\n def __init__(self, state):\n self.state = state\n\n @switch.handles('foo')\n def handle_foo(self, x):\n return self.state - x\n\n @switch.default\n def handle_foo(self, x):\n return self.state + x\n\n def dispatch(self, case, factor, x):\n return factor * self.switch[case](self, x)\n\n>>> things = MoarThingz(3)\n>>> things.dispatch('foo', factor=1, x=1)\n2\n>>> things.dispatch('bar', factor=-1, x=2)\n-5\n\nsubclass usage\n~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from switcheroo import Switch, handles, default\n\n class MySwitch(Switch):\n\n @handles('foo')\n def handles(x):\n return x+1\n\n @default\n def default(x):\n return x-1\n\n>>> MySwitch['foo'](1)\n2\n>>> MySwitch['bar'](1)\n0\n\n\nchanges\n~~~~~~~\n\n1.0.0 (27 Feb 2019)\n-------------------\n\n- 100% coverage checking and automated releases.\n\n0.2.0 (13 Dec 2018)\n-------------------\n\n- Handle subclasses when using the subclass pattern.\n\n0.1.0 (24 Nov 2018)\n-------------------\n\n- Initial release.\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cjw296/carthorse", "keywords": "", "license": "MIT", "maintainer": "Chris Withers", "maintainer_email": "chris@withers.org", "name": "switcheroo", "package_url": "https://pypi.org/project/switcheroo/", "platform": "", "project_url": "https://pypi.org/project/switcheroo/", "project_urls": { "Homepage": "https://github.com/cjw296/carthorse", "Repository": "https://github.com/cjw296/carthorse" }, "release_url": "https://pypi.org/project/switcheroo/1.0.0/", "requires_dist": [ "six (>=1.11,<2.0)" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "summary": "Efficient dispatch-based calling, that might be a switch statement in another language.", "version": "1.0.0" }, "last_serial": 4876629, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f2a4ea7c79141f3589522a98a7286690", "sha256": "bd901afa52305804ec7945a9075a8cca98bb550b5bbe61df42b7612500885080" }, "downloads": -1, "filename": "switcheroo-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f2a4ea7c79141f3589522a98a7286690", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 3327, "upload_time": "2018-11-24T00:35:38", "url": "https://files.pythonhosted.org/packages/ee/30/9883ea55890ec3566a301a9d73605c258c68bb17268695a6179d623aac2c/switcheroo-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ff6f155bddae94108fed153616d3410", "sha256": "fbd44448cb9f850ebface7515fb7f1d5826cf14e0bf2e009452c6838eccebbf1" }, "downloads": -1, "filename": "switcheroo-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8ff6f155bddae94108fed153616d3410", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 2254, "upload_time": "2018-11-24T00:35:40", "url": "https://files.pythonhosted.org/packages/93/ce/51dfa47488b7f1afa22bbab2ddba4dec9f0cfae8f52bc1f298ea6fd8f307/switcheroo-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9c4042c6b3a26f3afcdab42077591672", "sha256": "d3943740265f7b391c43e52159edc88037f5c1190980d62def55307b3c1ac15a" }, "downloads": -1, "filename": "switcheroo-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9c4042c6b3a26f3afcdab42077591672", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 3646, "upload_time": "2018-12-13T16:31:17", "url": "https://files.pythonhosted.org/packages/e4/fa/77b0c058e6c7c90ac353e41b52c7f1a0135c4f9137c132a3744bcf3874bd/switcheroo-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2ab037ad04305c63a231dae5de9b36f", "sha256": "c24022dcc7deed9bc791c9621c7edfff358053a340cb442ea29440ae688baeb6" }, "downloads": -1, "filename": "switcheroo-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a2ab037ad04305c63a231dae5de9b36f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 2398, "upload_time": "2018-12-13T16:31:19", "url": "https://files.pythonhosted.org/packages/de/fc/3d2458b79e07349e10b5510337b1bee703208cf5b6baa1fb424ccb1bf6a9/switcheroo-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b158677469655f251e5969ea700e8ee4", "sha256": "ee9ffe25d7612dd8663858078c6a3852cb1f2379a7ffcf6ae6ed25e5aa4ce995" }, "downloads": -1, "filename": "switcheroo-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b158677469655f251e5969ea700e8ee4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 3803, "upload_time": "2019-02-27T23:35:53", "url": "https://files.pythonhosted.org/packages/7c/fe/08945fbe3a2ae22bfddb977191a478fb1f2d0c057d61ef7cbe59f602b86f/switcheroo-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb6880b200ec22a435747ea3d7462dc5", "sha256": "fe735a6253237f3ca7931f95d453c7e83671e8f973a2cf6ccd3522ebd0e2cf86" }, "downloads": -1, "filename": "switcheroo-1.0.0.tar.gz", "has_sig": false, "md5_digest": "fb6880b200ec22a435747ea3d7462dc5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 2703, "upload_time": "2019-02-27T23:35:55", "url": "https://files.pythonhosted.org/packages/2c/b8/7450764500ffb210652605e9d358046f7e7fa5826805ccde11c4aca9818b/switcheroo-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b158677469655f251e5969ea700e8ee4", "sha256": "ee9ffe25d7612dd8663858078c6a3852cb1f2379a7ffcf6ae6ed25e5aa4ce995" }, "downloads": -1, "filename": "switcheroo-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b158677469655f251e5969ea700e8ee4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 3803, "upload_time": "2019-02-27T23:35:53", "url": "https://files.pythonhosted.org/packages/7c/fe/08945fbe3a2ae22bfddb977191a478fb1f2d0c057d61ef7cbe59f602b86f/switcheroo-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb6880b200ec22a435747ea3d7462dc5", "sha256": "fe735a6253237f3ca7931f95d453c7e83671e8f973a2cf6ccd3522ebd0e2cf86" }, "downloads": -1, "filename": "switcheroo-1.0.0.tar.gz", "has_sig": false, "md5_digest": "fb6880b200ec22a435747ea3d7462dc5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*", "size": 2703, "upload_time": "2019-02-27T23:35:55", "url": "https://files.pythonhosted.org/packages/2c/b8/7450764500ffb210652605e9d358046f7e7fa5826805ccde11c4aca9818b/switcheroo-1.0.0.tar.gz" } ] }