{ "info": { "author": "Kaede Hoshikawa", "author_email": "futursolo@icloud.com", "bugtrack_url": null, "classifiers": [ "Operating System :: MacOS", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython" ], "description": "===========\nDestination\n===========\n.. image:: https://travis-ci.org/futursolo/destination.svg?branch=master\n :target: https://travis-ci.org/futursolo/destination\n\n.. image:: https://coveralls.io/repos/github/futursolo/destination/badge.svg?branch=master\n :target: https://coveralls.io/github/futursolo/destination?branch=master\n\nDestination is a framework agnostic regular expression based path routing\nlibrary.\n\nInstallation\n============\n\n.. code-block:: shell\n\n $ pip install -U destination\n\nRequirements\n============\n- Python 3.5.1 or higher\n\nThread Safety\n=============\nCurrently, destination is not thread safety. Hence, you should deepcopy\ninstances or add a mutex lock before try to use dispatchers and rules in the\nother threads.\n\nUsage\n=====\nThe default implementation of url parsing uses regular expressions. This is\nsimilar to Django and Tornado. You create rules and dispatchers to resolve and\nparse your url using regular expressions set in the rules.\n\nGenerally, you should start with creating a :code:`ReRule` and a\n:code:`Dispatcher`. You can create a :code:`ReRule` with the regular expression\nthat is going to be used to parse (and possibly compose) the url, and an\noptional identifier to help you identify which rule is parsed, if an identifier\nis not provided or its value is set to :code:`None`, the rule itself will be\nused as an identifier. A :code:`Dispatcher` may be instantiated with no\narguments as a storage of multiple rules. You can add or remove rules at\nany time.\n\n:code:`ReSubDispatcher` is a sub-dispatcher that can be added to a dispatcher\nas a rule. It uses regular expressions to chop off the part matched to the\nregular expression and dispatches the rest part to the rules added to it.\n\n:code:`BaseRule` and :code:`BaseDispatcher` can be used to create custom rules\nand dispatchers.\n\nLicence\n=======\nMIT License\n\nCopyright (c) 2017 Kaede Hoshikawa\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/futursolo/destination", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "destination", "package_url": "https://pypi.org/project/destination/", "platform": "", "project_url": "https://pypi.org/project/destination/", "project_urls": { "Homepage": "https://github.com/futursolo/destination" }, "release_url": "https://pypi.org/project/destination/1.1.0/", "requires_dist": [ "mypy (<1,>=0.641) ; extra == 'dev'", "flake8 (<4,>=3.6.0) ; extra == 'dev'", "pytest (<5,>=4.0.1) ; extra == 'dev'", "pytest (<5,>=4.0.1) ; extra == 'test'" ], "requires_python": "", "summary": "A Regex Based Path Routing Library.", "version": "1.1.0" }, "last_serial": 4558533, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "0542e468b181d273e08cc6d79dc3d70d", "sha256": "07f0af88b3a697bda0dc839dfd71664c8578559ca449610f6960a192fe61e03a" }, "downloads": -1, "filename": "destination-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0542e468b181d273e08cc6d79dc3d70d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10368, "upload_time": "2017-07-01T01:05:08", "url": "https://files.pythonhosted.org/packages/1e/b0/d01c7fc976f801890dfc40320f8e1a3d46dd9c33d0ac8cfc4036e2698156/destination-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49cffada665b3f8d117f0c3ad83c605d", "sha256": "ee18ac9c77859e31167355e6575b6eb506504e9d565b5da217364f2ca60eac6e" }, "downloads": -1, "filename": "destination-0.1.0.tar.gz", "has_sig": false, "md5_digest": "49cffada665b3f8d117f0c3ad83c605d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8093, "upload_time": "2017-07-01T01:05:09", "url": "https://files.pythonhosted.org/packages/0d/a7/e914800f9cc7271840ff94d93d53f761d9fccb5f4afc96abf3cf89649f19/destination-0.1.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "284a4bc36aa9f6760e91bd9a059a1074", "sha256": "4e3c1d704360b9caaecb9e3e0bf680f6cf4eb12993f0f8fc3cfa00b5bc91ca6e" }, "downloads": -1, "filename": "destination-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "284a4bc36aa9f6760e91bd9a059a1074", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8973, "upload_time": "2018-12-04T07:17:47", "url": "https://files.pythonhosted.org/packages/81/df/404aef6e1db02f90f96982c77eab477ed43b59f67f0537e2771fcb0b1bad/destination-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "970ce1c554f4887d48ea947169cae7c4", "sha256": "046c1f625f0c6c00b95b30c4682d945bdc785c88faf829b0b1463ba58230d872" }, "downloads": -1, "filename": "destination-1.1.0.tar.gz", "has_sig": false, "md5_digest": "970ce1c554f4887d48ea947169cae7c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10348, "upload_time": "2018-12-04T07:17:48", "url": "https://files.pythonhosted.org/packages/f3/59/cd13d5616c231ae2f00c3cf61b36e2db299f582124d00a693f61d787c540/destination-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "284a4bc36aa9f6760e91bd9a059a1074", "sha256": "4e3c1d704360b9caaecb9e3e0bf680f6cf4eb12993f0f8fc3cfa00b5bc91ca6e" }, "downloads": -1, "filename": "destination-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "284a4bc36aa9f6760e91bd9a059a1074", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8973, "upload_time": "2018-12-04T07:17:47", "url": "https://files.pythonhosted.org/packages/81/df/404aef6e1db02f90f96982c77eab477ed43b59f67f0537e2771fcb0b1bad/destination-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "970ce1c554f4887d48ea947169cae7c4", "sha256": "046c1f625f0c6c00b95b30c4682d945bdc785c88faf829b0b1463ba58230d872" }, "downloads": -1, "filename": "destination-1.1.0.tar.gz", "has_sig": false, "md5_digest": "970ce1c554f4887d48ea947169cae7c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10348, "upload_time": "2018-12-04T07:17:48", "url": "https://files.pythonhosted.org/packages/f3/59/cd13d5616c231ae2f00c3cf61b36e2db299f582124d00a693f61d787c540/destination-1.1.0.tar.gz" } ] }