{ "info": { "author": "J. Nick Koston", "author_email": "nick@koston.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Topic :: Software Development :: Libraries" ], "description": "# aiohttp-fast-url-dispatcher\n\n

\n \n \"CI\n \n \n \"Documentation\n \n \n \"Test\n \n

\n

\n \n \"Poetry\"\n \n \n \"black\"\n \n \n \"pre-commit\"\n \n

\n

\n \n \"PyPI\n \n \"Supported\n \"License\"\n

\n\n---\n\n**Documentation**: https://aiohttp-fast-url-dispatcher.readthedocs.io \n\n**Source Code**: https://github.com/bdraco/aiohttp-fast-url-dispatcher \n\n---\n\nA faster URL dispatcher for aiohttp\n\nThe default `UrlDispatcher` implementation does a linear search every which can have a significant [TimeComplexity](https://wiki.python.org/moin/TimeComplexity) when dispatching urls when there are a lot of routes. `FastUrlDispatcher` keeps an index of the urls which allows for fast dispatch.\n\nThis library will become obsolete with aiohttp 3.10 as the changes\nare expected to merge upstream via https://github.com/aio-libs/aiohttp/pull/7829\n\n## Installation\n\nInstall this via pip (or your favourite package manager):\n\n`pip install aiohttp-fast-url-dispatcher`\n\n## Usage\n\nAttach to a `web.Application` before any resources are registered.\n\n```python\ndispatcher = FastUrlDispatcher()\napp = web.Application()\nattach_fast_url_dispatcher(app, dispatcher)\n```\n\nCreate with a new `web.Application`\n\n```python\ndispatcher = FastUrlDispatcher()\napp = web.Application(router=dispatcher)\n```\n\n### Caveats\n\nIf you have multiple handlers that resolve to the same URL, this module will always prefer the static name over a dynamic name. For example:\n\n```python\napp.router.add_get(r\"/second/{user}/info\", handler)\napp.router.add_get(\"/second/bob/info\", handler)\n```\n\n`\"/second/bob/info\"` will always be matched before `r\"/second/{user}/info\"`\n\n## Contributors \u2728\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\n\n\n\n\n\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n## Credits\n\nThis package was created with\n[Copier](https://copier.readthedocs.io/) and the\n[browniebroke/pypackage-template](https://github.com/browniebroke/pypackage-template)\nproject template.\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "dynamic": null, "home_page": "https://github.com/bdraco/aiohttp-fast-url-dispatcher", "keywords": null, "license": null, "maintainer": null, "maintainer_email": null, "name": "aiohttp-fast-url-dispatcher", "package_url": "https://pypi.org/project/aiohttp-fast-url-dispatcher/", "platform": null, "project_url": "https://pypi.org/project/aiohttp-fast-url-dispatcher/", "project_urls": { "Bug Tracker": "https://github.com/bdraco/aiohttp-fast-url-dispatcher/issues", "Changelog": "https://github.com/bdraco/aiohttp-fast-url-dispatcher/blob/main/CHANGELOG.md", "Documentation": "https://aiohttp-fast-url-dispatcher.readthedocs.io", "Homepage": "https://github.com/bdraco/aiohttp-fast-url-dispatcher", "Repository": "https://github.com/bdraco/aiohttp-fast-url-dispatcher" }, "provides_extra": null, "release_url": "https://pypi.org/project/aiohttp-fast-url-dispatcher/0.3.1/", "requires_dist": [ "aiohttp<3.10,>=3.8.5" ], "requires_python": "<4.0,>=3.8", "summary": "A faster URL dispatcher for aiohttp", "version": "0.3.1", "yanked": false, "yanked_reason": null }, "last_serial": 24005485, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "blake2b_256": "68165d89375badd46b0edea490dbcf0482498e4bf5d2cfdbedb2ddec25056236", "md5": "91db80ebecb1affb29550640a7113b12", "sha256": "cfc8960238914e9e473ebbaad30a0fb15531cccff1c2cdd0da95fcb0f08055c4" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "91db80ebecb1affb29550640a7113b12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 8591, "upload_time": "2023-11-08T15:40:32", "upload_time_iso_8601": "2023-11-08T15:40:32.891905Z", "url": "https://files.pythonhosted.org/packages/68/16/5d89375badd46b0edea490dbcf0482498e4bf5d2cfdbedb2ddec25056236/aiohttp_fast_url_dispatcher-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "e665744f9685014d4903a5229df331a7aa0a64b1bea1a2253e8792d440f8c3ad", "md5": "30745c6cedb41efd5e28e561a23e0384", "sha256": "0f688a0483954842b133f2ec0466038e47c42fef2fb88ac7aa76ed2f91445c8b" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.1.0.tar.gz", "has_sig": false, "md5_digest": "30745c6cedb41efd5e28e561a23e0384", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 8818, "upload_time": "2023-11-08T15:40:33", "upload_time_iso_8601": "2023-11-08T15:40:33.986590Z", "url": "https://files.pythonhosted.org/packages/e6/65/744f9685014d4903a5229df331a7aa0a64b1bea1a2253e8792d440f8c3ad/aiohttp_fast_url_dispatcher-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "blake2b_256": "762a4ab4ba16b2af1f5bcb6a9724b54cf47f3d54b6e192a88406e5b6c4d26d34", "md5": "52aee93716cdb375135197b712f0918c", "sha256": "a737b5a3d3459465b0942e9a10858978fe3c842b66db82507a3261df01f7aaed" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "52aee93716cdb375135197b712f0918c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 8594, "upload_time": "2023-11-14T20:14:48", "upload_time_iso_8601": "2023-11-14T20:14:48.785151Z", "url": "https://files.pythonhosted.org/packages/76/2a/4ab4ba16b2af1f5bcb6a9724b54cf47f3d54b6e192a88406e5b6c4d26d34/aiohttp_fast_url_dispatcher-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "650bb720afd5877f2dd310b3be5649df0184cf6a324b4d7a4ed5df41eb6b16bf", "md5": "602c0538de935797f2b121e6f557cbf7", "sha256": "c7e1f9248c3d773233294fe829f5d4b6b67ebbb1ab106839810e308e076e0fe3" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.1.1.tar.gz", "has_sig": false, "md5_digest": "602c0538de935797f2b121e6f557cbf7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 8808, "upload_time": "2023-11-14T20:14:49", "upload_time_iso_8601": "2023-11-14T20:14:49.728820Z", "url": "https://files.pythonhosted.org/packages/65/0b/b720afd5877f2dd310b3be5649df0184cf6a324b4d7a4ed5df41eb6b16bf/aiohttp_fast_url_dispatcher-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "blake2b_256": "1d909042a3a566903fbc65396058dcd4fa5b04929cc748d3e3754ae06b4957c5", "md5": "064b78a142a086d09c5cd191cdba4a87", "sha256": "e038458a34b79ef7c276b3257a1cdc73625da92cf4b64c2d0aefc4fe04dcdbbb" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "064b78a142a086d09c5cd191cdba4a87", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.8,<4.0", "size": 8901, "upload_time": "2023-11-27T14:03:59", "upload_time_iso_8601": "2023-11-27T14:03:59.813674Z", "url": "https://files.pythonhosted.org/packages/1d/90/9042a3a566903fbc65396058dcd4fa5b04929cc748d3e3754ae06b4957c5/aiohttp_fast_url_dispatcher-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "78e8ad774b006fc21425ee29708de0f58696d8f1f5a9a9ce1f744e72ee8b4bfd", "md5": "22d88caadce27304168bbd0238fbb0d2", "sha256": "0fc11c60a4209429340d9d2d07b6b0819a45ebd0d47ceb78bea915dbe042addd" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.3.0.tar.gz", "has_sig": false, "md5_digest": "22d88caadce27304168bbd0238fbb0d2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.8,<4.0", "size": 9166, "upload_time": "2023-11-27T14:04:03", "upload_time_iso_8601": "2023-11-27T14:04:03.235879Z", "url": "https://files.pythonhosted.org/packages/78/e8/ad774b006fc21425ee29708de0f58696d8f1f5a9a9ce1f744e72ee8b4bfd/aiohttp_fast_url_dispatcher-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "blake2b_256": "92ad2763e6c3334e2e53bd210acec81f41499942327d6de17f1faeb221fbcee9", "md5": "ac6e380a31e4eb844ce32e587ff80196", "sha256": "1f7c0040f466e599e34e5b996ae897d13463ddf34b82d15c9048e8d6c6e00412" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ac6e380a31e4eb844ce32e587ff80196", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.8", "size": 8893, "upload_time": "2024-07-05T20:44:43", "upload_time_iso_8601": "2024-07-05T20:44:43.595378Z", "url": "https://files.pythonhosted.org/packages/92/ad/2763e6c3334e2e53bd210acec81f41499942327d6de17f1faeb221fbcee9/aiohttp_fast_url_dispatcher-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "0f4a9be8071f66a46f28d599915832ed9a19b0004f2967d3a5398f0a4f29ec82", "md5": "b5827ee2719639f9c93b047d368a30e9", "sha256": "5a730a3872503ee5c94c65c6dee2a17b4773e022630f2557cae84f2e74ea26ed" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b5827ee2719639f9c93b047d368a30e9", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.8", "size": 9115, "upload_time": "2024-07-05T20:44:45", "upload_time_iso_8601": "2024-07-05T20:44:45.017228Z", "url": "https://files.pythonhosted.org/packages/0f/4a/9be8071f66a46f28d599915832ed9a19b0004f2967d3a5398f0a4f29ec82/aiohttp_fast_url_dispatcher-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "blake2b_256": "92ad2763e6c3334e2e53bd210acec81f41499942327d6de17f1faeb221fbcee9", "md5": "ac6e380a31e4eb844ce32e587ff80196", "sha256": "1f7c0040f466e599e34e5b996ae897d13463ddf34b82d15c9048e8d6c6e00412" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ac6e380a31e4eb844ce32e587ff80196", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "<4.0,>=3.8", "size": 8893, "upload_time": "2024-07-05T20:44:43", "upload_time_iso_8601": "2024-07-05T20:44:43.595378Z", "url": "https://files.pythonhosted.org/packages/92/ad/2763e6c3334e2e53bd210acec81f41499942327d6de17f1faeb221fbcee9/aiohttp_fast_url_dispatcher-0.3.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "0f4a9be8071f66a46f28d599915832ed9a19b0004f2967d3a5398f0a4f29ec82", "md5": "b5827ee2719639f9c93b047d368a30e9", "sha256": "5a730a3872503ee5c94c65c6dee2a17b4773e022630f2557cae84f2e74ea26ed" }, "downloads": -1, "filename": "aiohttp_fast_url_dispatcher-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b5827ee2719639f9c93b047d368a30e9", "packagetype": "sdist", "python_version": "source", "requires_python": "<4.0,>=3.8", "size": 9115, "upload_time": "2024-07-05T20:44:45", "upload_time_iso_8601": "2024-07-05T20:44:45.017228Z", "url": "https://files.pythonhosted.org/packages/0f/4a/9be8071f66a46f28d599915832ed9a19b0004f2967d3a5398f0a4f29ec82/aiohttp_fast_url_dispatcher-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }