{ "info": { "author": "Dariusz G\u00f3recki", "author_email": "darek.krk@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3" ], "description": ".. image:: https://travis-ci.org/canni/switch.svg?branch=v1.1.0\n :target: https://travis-ci.org/canni/switch\n\n.. image:: https://coveralls.io/repos/canni/switch/badge.png?branch=v1.1.0\n :target: https://coveralls.io/r/canni/switch?branch=v1.1.0\n\n\nSwitch\n======\n\nChangelog\n---------\n\n- v1.1.0: No BC breaks, new features:\n - Multiple case test within single case (see examples)\n - Cases now support regexp matching (see examples)\n- v1.0.4: 15% performance improvement, no BC breaks\n- v1.0.3: Maintenance release, no significant code changes\n- v1.0.2: 100% unit test coverage\n\n\nSimple example:\n---------------\n\n.. code-block:: python\n\n from switch import Switch\n\n def simple_example(val):\n values = []\n\n with Switch(val) as case:\n if case(1):\n values.append('Found 1')\n\n if case(2, 3):\n values.append('Found 2 or 3')\n\n return values\n\n assert simple_example(1) == ['Found 1']\n assert simple_example(2) == ['Found 2 or 3']\n assert simple_example(3) == ['Found 2 or 3']\n assert simple_example('anything else') == []\n\n\nSimple example with default case:\n---------------------------------\n\n.. code-block:: python\n\n from switch import Switch\n\n def simple_example_with_default(val):\n values = []\n\n with Switch(val) as case:\n if case(1):\n values.append('Found 1')\n\n if case(2, 3):\n values.append('Found 2 or 3')\n\n if case.default:\n values.append('No love for 1, 2 or 3?')\n\n return values\n\n assert simple_example_with_default(1) == ['Found 1']\n assert simple_example_with_default(2) == ['Found 2 or 3']\n assert simple_example_with_default(3) == ['Found 2 or 3']\n assert simple_example_with_default('anything else') == ['No love for 1, 2 or 3?']\n\n\nFall through example:\n---------------------\n\n.. code-block:: python\n\n from switch import Switch\n\n def fall_through_example(val):\n values = []\n\n with Switch(val) as case:\n if case(1, fall_through=True):\n values.append('Found 1')\n\n if case(2, 3):\n values.append('Found 2 or 3')\n\n if case.default:\n values.append('No love for 1, 2 or 3?')\n\n return values\n\n assert fall_through_example(1) == ['Found 1', 'Found 2 or 3']\n assert fall_through_example(2) == ['Found 2 or 3']\n assert fall_through_example(3) == ['Found 2 or 3']\n assert fall_through_example('anything else') == ['No love for 1, 2 or 3?']\n\n\nCases can have callable test:\n-----------------------------\n\n.. code-block:: python\n\n from switch import Switch\n\n def ouh_callable_too(val):\n values = []\n\n with Switch(val) as case:\n if case(1):\n values.append('Found 1')\n\n if case.call(lambda v: v < 100):\n values.append('Found <100')\n\n if case.default:\n values.append('No love for anything lower than 100?')\n\n return values\n\n assert ouh_callable_too(1) == ['Found 1']\n assert ouh_callable_too(50) == ['Found <100']\n assert ouh_callable_too('anything else') == ['No love for anything lower than 100?']\n\n\nCases can have test against regexp:\n-----------------------------------\n\n.. code-block:: python\n\n from switch import Switch\n\n def test_regexp(val):\n values = []\n\n with Switch(val) as case:\n if case(1):\n values.append('Found 1')\n\n if case.match(r'10|ten'):\n values.append('Found 10')\n\n if case.default:\n values.append('No love for 1 or 10?')\n\n return values\n\n assert test_regexp(1) == ['Found 1']\n assert test_regexp(10) == ['Found 10']\n assert test_regexp('ten') == ['Found 10']\n assert test_regexp('anything else') == ['No love for 1 or 10??']\n\n\nFall through by default:\n------------------------\n\n.. code-block:: python\n\n from switch import CSwitch, Switch\n\n def fall_through_by_default(val):\n values = []\n\n with Switch(val, fall_through=True) as case:\n if case(1):\n values.append('Found 1')\n\n if case(2):\n values.append('Found 2')\n\n if case(3, fall_through=False):\n values.append('Found 3')\n\n if case(4):\n values.append('Found 4')\n\n if case.default:\n values.append('No love for 1, 2, 3 or 4?')\n\n return values\n\n\n def cswitch_shortcut(val):\n values = []\n\n with CSwitch(val) as case:\n if case(1):\n values.append('Found 1')\n\n if case(2):\n values.append('Found 2')\n\n if case(3, fall_through=False):\n values.append('Found 3')\n\n if case(4):\n values.append('Found 4')\n\n if case.default:\n values.append('No love for 1, 2, 3 or 4?')\n\n return values\n\n assert fall_through_by_default(1) == ['Found 1', 'Found 2', 'Found 3']\n assert fall_through_by_default(2) == ['Found 2', 'Found 3']\n assert fall_through_by_default(3) == ['Found 3']\n assert fall_through_by_default(4) == ['Found 4']\n assert fall_through_by_default('anything else') == ['No love for 1, 2, 3 or 4?']\n\n assert cswitch_shortcut(1) == fall_through_by_default(1)\n assert cswitch_shortcut(2) == fall_through_by_default(2)\n assert cswitch_shortcut(3) == fall_through_by_default(3)\n assert cswitch_shortcut(4) == fall_through_by_default(4)\n assert cswitch_shortcut('anything else') == fall_through_by_default('anything else')\n\n\nHaving a case after a default is a bad thing:\n---------------------------------------------\n\n* Unless some case executes early and finishes without fall through.\n\n.. code-block:: python\n\n from switch import Switch\n\n def case_after_default_is_baad(val):\n values = []\n\n with Switch(val) as case:\n if case(1):\n values.append('Found 1')\n\n if case.default:\n values.append('Found default')\n\n if case('this is baad'):\n values.append('Should not happen!')\n\n return values\n\n assert case_after_default_is_baad(1) == ['Found 1']\n\n try:\n case_after_default_is_baad('this is baad')\n assert False\n except SyntaxError:\n assert True\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/canni/switch", "keywords": "switch", "license": "BSD License", "maintainer": null, "maintainer_email": null, "name": "switch", "package_url": "https://pypi.org/project/switch/", "platform": "any", "project_url": "https://pypi.org/project/switch/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/canni/switch" }, "release_url": "https://pypi.org/project/switch/1.1.0/", "requires_dist": null, "requires_python": null, "summary": "The missing switch statement", "version": "1.1.0" }, "last_serial": 1058503, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "de9449e09f72110e101a7d006d832cd4", "sha256": "1398682f60a0d2d267d85ad7884dd9c516ceb5a45d179aba6d4295a77963d680" }, "downloads": -1, "filename": "switch-1.0.0.tar.gz", "has_sig": false, "md5_digest": "de9449e09f72110e101a7d006d832cd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2905, "upload_time": "2014-03-30T17:46:39", "url": "https://files.pythonhosted.org/packages/03/cb/ea3ea162776064aade5f385048f7beae9eebf8b6113a794913800d3a1752/switch-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "d527608f41ed90430ce068ce3c40b417", "sha256": "4b78d898c807422c0d5003354e4a443b081884361e49d2eca69decc36a7beb57" }, "downloads": -1, "filename": "switch-1.0.1-py27-none-any.whl", "has_sig": false, "md5_digest": "d527608f41ed90430ce068ce3c40b417", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 3153, "upload_time": "2014-03-30T22:18:00", "url": "https://files.pythonhosted.org/packages/7c/61/6ec4a18b6ecfc13ceffe462190b9bd2b80e08ef6aacc78da4e35a064308a/switch-1.0.1-py27-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f86572fd13fefdfb76248669fba1752", "sha256": "2634a590c1d4db31c39cd8d1c1d0958996a28e14121ef4a8095f390fe6987411" }, "downloads": -1, "filename": "switch-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0f86572fd13fefdfb76248669fba1752", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2590, "upload_time": "2014-03-30T18:54:36", "url": "https://files.pythonhosted.org/packages/88/b4/aca7b513917080df39d4548aab6d621dcf6218ad191c1067e68bc96bd3ad/switch-1.0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "f5c74f2c152eeb09c6cc7fb4a7bd4057", "sha256": "e2af1ad0ecf568cea97b4c5f37968a2f2b976cae7d016a45cd30f8a3591fa175" }, "downloads": -1, "filename": "switch-1.0.1.zip", "has_sig": false, "md5_digest": "f5c74f2c152eeb09c6cc7fb4a7bd4057", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3273, "upload_time": "2014-03-31T08:51:32", "url": "https://files.pythonhosted.org/packages/ec/5c/e17bb531ad14efcc0a830f8d8bde63e9e8109f862ccafaa31f01603c69ef/switch-1.0.1.zip" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "a8c9995ca94cbd3c24803c11d52baf9e", "sha256": "43e56e417f3037c15c0b681796cc9b8c97a4473f95648c0b44574928b0f76151" }, "downloads": -1, "filename": "switch-1.0.2-py26-none-any.whl", "has_sig": false, "md5_digest": "a8c9995ca94cbd3c24803c11d52baf9e", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 2965, "upload_time": "2014-03-31T10:05:15", "url": "https://files.pythonhosted.org/packages/38/85/607475efd325a3a46eadd7bd8fe1425353e67b440c14f7ba8922a0d0b175/switch-1.0.2-py26-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ff8d6b1d1553b07f20ea138920178f2", "sha256": "2a18952b287ed9caeb0e3470dd17ab0d5620d64cf3969d242dd5600d233d605d" }, "downloads": -1, "filename": "switch-1.0.2-py27-none-any.whl", "has_sig": false, "md5_digest": "4ff8d6b1d1553b07f20ea138920178f2", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 2963, "upload_time": "2014-03-31T10:03:47", "url": "https://files.pythonhosted.org/packages/25/8f/9a1c925ae142f823ac4fb1ad92216803bd6eb0141ab2102bea9578f5af93/switch-1.0.2-py27-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea41ce50c6d2ae42850f99fa0c8f4b1b", "sha256": "c6d75c7b3c6a18ce20349a1977360b9e32096ae4b4d96504b1353e81115f7654" }, "downloads": -1, "filename": "switch-1.0.2.tar.gz", "has_sig": false, "md5_digest": "ea41ce50c6d2ae42850f99fa0c8f4b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2730, "upload_time": "2014-03-31T10:00:47", "url": "https://files.pythonhosted.org/packages/53/9c/61f0dbc7d5832d7ccab1215aab5da31532d167fb5b2c74d1ce77615b3a57/switch-1.0.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "b215400d9f004826dcdb467930c32876", "sha256": "dc3e0d5d066faae25ba10709a685a02c14724c62cb9d2f021ff1542e41d4d81a" }, "downloads": -1, "filename": "switch-1.0.2.zip", "has_sig": false, "md5_digest": "b215400d9f004826dcdb467930c32876", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3378, "upload_time": "2014-03-31T10:00:57", "url": "https://files.pythonhosted.org/packages/83/77/1e71dbf89ca9dcb2271c116fb2a5e0ea97470254bff8b79cb51bbd609593/switch-1.0.2.zip" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "bd40ec9cee005794937e47145e9f9e11", "sha256": "785e80b91e45454b7ea767e9f5b0861b912e50750a78f7bf40fef6686ef545ef" }, "downloads": -1, "filename": "switch-1.0.3.tar.gz", "has_sig": false, "md5_digest": "bd40ec9cee005794937e47145e9f9e11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3772, "upload_time": "2014-03-31T22:02:52", "url": "https://files.pythonhosted.org/packages/7c/98/b0140ad13480598464ecf955f87dca2e966fe7a729e51c38d69a1f4e4de7/switch-1.0.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "84de4bf75f356909c31b3f755ed56c22", "sha256": "42a268de04cffc33a32c4aaf6611af32fe77aaf192809dc66296b540a9df9dc9" }, "downloads": -1, "filename": "switch-1.0.3.zip", "has_sig": false, "md5_digest": "84de4bf75f356909c31b3f755ed56c22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5748, "upload_time": "2014-03-31T22:03:00", "url": "https://files.pythonhosted.org/packages/66/0a/196319d23ded5025bced3306348d430aca0375d4fe09ef1b30ffb41a8f51/switch-1.0.3.zip" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "cefbfebf79ee65d4209fdbf3f6bb70bf", "sha256": "a6a0b12e212778417449e850863f475b805a0c9645a92bbe336828e3fa8dc477" }, "downloads": -1, "filename": "switch-1.0.4.tar.gz", "has_sig": false, "md5_digest": "cefbfebf79ee65d4209fdbf3f6bb70bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3773, "upload_time": "2014-04-03T10:41:03", "url": "https://files.pythonhosted.org/packages/01/d9/93a354feed13948a5677ffca629a795786ebe5c4360703f4220235005bf2/switch-1.0.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "35be866c3c3b822447cd3ad640f3d112", "sha256": "41369af82aa53c956ae880d52015ed2474d2f50e4db3ec1a5eccc2521b422417" }, "downloads": -1, "filename": "switch-1.0.4.zip", "has_sig": false, "md5_digest": "35be866c3c3b822447cd3ad640f3d112", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5688, "upload_time": "2014-04-03T10:41:11", "url": "https://files.pythonhosted.org/packages/be/b3/180536c20645c2ca80022d6ce116b7dda8fbfde980926aca20e2fe3b220c/switch-1.0.4.zip" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5e3794fb8bdd3e6b76912ce602d9e671", "sha256": "bc71e10d57bb0f8732cc5d060db0ecb004f65d21caa6a200675379f18eacb357" }, "downloads": -1, "filename": "switch-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5e3794fb8bdd3e6b76912ce602d9e671", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4141, "upload_time": "2014-04-12T11:46:33", "url": "https://files.pythonhosted.org/packages/e6/23/485451334a8994b7afa9798517d15ca030bc638ee5cbd7fb3c086c5d6553/switch-1.1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "ac6b9b4fafdf0de7b9642604e1c75f88", "sha256": "d803027e8fa5c9b8c3b72e6f6cc00f565c5f8d58ea8220c462831f27d1f56ebd" }, "downloads": -1, "filename": "switch-1.1.0.zip", "has_sig": false, "md5_digest": "ac6b9b4fafdf0de7b9642604e1c75f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6119, "upload_time": "2014-04-12T11:46:41", "url": "https://files.pythonhosted.org/packages/17/ee/ba4f303c77343ef8f5a968cb987f3a697b9b003ab61dbfe2e412ba385b02/switch-1.1.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5e3794fb8bdd3e6b76912ce602d9e671", "sha256": "bc71e10d57bb0f8732cc5d060db0ecb004f65d21caa6a200675379f18eacb357" }, "downloads": -1, "filename": "switch-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5e3794fb8bdd3e6b76912ce602d9e671", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4141, "upload_time": "2014-04-12T11:46:33", "url": "https://files.pythonhosted.org/packages/e6/23/485451334a8994b7afa9798517d15ca030bc638ee5cbd7fb3c086c5d6553/switch-1.1.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "ac6b9b4fafdf0de7b9642604e1c75f88", "sha256": "d803027e8fa5c9b8c3b72e6f6cc00f565c5f8d58ea8220c462831f27d1f56ebd" }, "downloads": -1, "filename": "switch-1.1.0.zip", "has_sig": false, "md5_digest": "ac6b9b4fafdf0de7b9642604e1c75f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6119, "upload_time": "2014-04-12T11:46:41", "url": "https://files.pythonhosted.org/packages/17/ee/ba4f303c77343ef8f5a968cb987f3a697b9b003ab61dbfe2e412ba385b02/switch-1.1.0.zip" } ] }