tornado


Nametornado JSON
Version 6.5.2 PyPI version JSON
download
home_pagehttp://www.tornadoweb.org/
SummaryTornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
upload_time2025-08-08 18:27:00
maintainerNone
docs_urlNone
authorFacebook
requires_python>=3.9
licenseApache-2.0
keywords
VCS
bugtrack_url
requirements alabaster babel black build cachetools certifi chardet charset-normalizer click colorama distlib docutils filelock flake8 idna imagesize jinja2 markupsafe mccabe mypy mypy-extensions packaging pathspec pip-tools platformdirs pluggy pycodestyle pyflakes pygments pyproject-api pyproject-hooks requests roman-numerals-py snowballstemmer sphinx sphinx-rtd-theme sphinxcontrib-applehelp sphinxcontrib-devhelp sphinxcontrib-htmlhelp sphinxcontrib-jquery sphinxcontrib-jsmath sphinxcontrib-qthelp sphinxcontrib-serializinghtml tox types-pycurl typing-extensions urllib3 virtualenv wheel
Travis-CI No Travis.
coveralls test coverage
            Tornado Web Server
==================

.. image:: https://badges.gitter.im/Join%20Chat.svg
   :alt: Join the chat at https://gitter.im/tornadoweb/tornado
   :target: https://gitter.im/tornadoweb/tornado?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

`Tornado <http://www.tornadoweb.org>`_ is a Python web framework and
asynchronous networking library, originally developed at `FriendFeed
<http://friendfeed.com>`_.  By using non-blocking network I/O, Tornado
can scale to tens of thousands of open connections, making it ideal for
`long polling <http://en.wikipedia.org/wiki/Push_technology#Long_Polling>`_,
`WebSockets <http://en.wikipedia.org/wiki/WebSocket>`_, and other
applications that require a long-lived connection to each user.

Hello, world
------------

Here is a simple "Hello, world" example web app for Tornado:

.. code-block:: python

    import asyncio
    import tornado

    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")

    def make_app():
        return tornado.web.Application([
            (r"/", MainHandler),
        ])

    async def main():
        app = make_app()
        app.listen(8888)
        await asyncio.Event().wait()

    if __name__ == "__main__":
        asyncio.run(main())

This example does not use any of Tornado's asynchronous features; for
that see this `simple chat room
<https://github.com/tornadoweb/tornado/tree/stable/demos/chat>`_.

Documentation
-------------

Documentation and links to additional resources are available at
https://www.tornadoweb.org

            

Raw data

            {
    "_id": null,
    "home_page": "http://www.tornadoweb.org/",
    "name": "tornado",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": null,
    "author": "Facebook",
    "author_email": "python-tornado@googlegroups.com",
    "download_url": "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz",
    "platform": null,
    "description": "Tornado Web Server\n==================\n\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n   :alt: Join the chat at https://gitter.im/tornadoweb/tornado\n   :target: https://gitter.im/tornadoweb/tornado?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\n`Tornado <http://www.tornadoweb.org>`_ is a Python web framework and\nasynchronous networking library, originally developed at `FriendFeed\n<http://friendfeed.com>`_.  By using non-blocking network I/O, Tornado\ncan scale to tens of thousands of open connections, making it ideal for\n`long polling <http://en.wikipedia.org/wiki/Push_technology#Long_Polling>`_,\n`WebSockets <http://en.wikipedia.org/wiki/WebSocket>`_, and other\napplications that require a long-lived connection to each user.\n\nHello, world\n------------\n\nHere is a simple \"Hello, world\" example web app for Tornado:\n\n.. code-block:: python\n\n    import asyncio\n    import tornado\n\n    class MainHandler(tornado.web.RequestHandler):\n        def get(self):\n            self.write(\"Hello, world\")\n\n    def make_app():\n        return tornado.web.Application([\n            (r\"/\", MainHandler),\n        ])\n\n    async def main():\n        app = make_app()\n        app.listen(8888)\n        await asyncio.Event().wait()\n\n    if __name__ == \"__main__\":\n        asyncio.run(main())\n\nThis example does not use any of Tornado's asynchronous features; for\nthat see this `simple chat room\n<https://github.com/tornadoweb/tornado/tree/stable/demos/chat>`_.\n\nDocumentation\n-------------\n\nDocumentation and links to additional resources are available at\nhttps://www.tornadoweb.org\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.",
    "version": "6.5.2",
    "project_urls": {
        "Homepage": "http://www.tornadoweb.org/",
        "Source": "https://github.com/tornadoweb/tornado"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f6486a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd",
                "md5": "d1da498ba99736b8435c9e5cac391509",
                "sha256": "2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "d1da498ba99736b8435c9e5cac391509",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 442563,
            "upload_time": "2025-08-08T18:26:42",
            "upload_time_iso_8601": "2025-08-08T18:26:42.945328Z",
            "url": "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f2b59b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b",
                "md5": "e1865ec1ef62e53d731a3bba542c16b3",
                "sha256": "583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e1865ec1ef62e53d731a3bba542c16b3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 440729,
            "upload_time": "2025-08-08T18:26:44",
            "upload_time_iso_8601": "2025-08-08T18:26:44.473689Z",
            "url": "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1b4e619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c",
                "md5": "1a99172b38b5851d6d787d9b1b753bdf",
                "sha256": "b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1a99172b38b5851d6d787d9b1b753bdf",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 444295,
            "upload_time": "2025-08-08T18:26:46",
            "upload_time_iso_8601": "2025-08-08T18:26:46.021887Z",
            "url": "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "95fa87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065",
                "md5": "094b03821c83759f15b54319b5543d4f",
                "sha256": "b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "094b03821c83759f15b54319b5543d4f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 443644,
            "upload_time": "2025-08-08T18:26:47",
            "upload_time_iso_8601": "2025-08-08T18:26:47.625967Z",
            "url": "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f941fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559",
                "md5": "2cc1eefa14348607e1127b00ec2b8a6b",
                "sha256": "e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2cc1eefa14348607e1127b00ec2b8a6b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 443878,
            "upload_time": "2025-08-08T18:26:50",
            "upload_time_iso_8601": "2025-08-08T18:26:50.599951Z",
            "url": "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1192fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f",
                "md5": "c994e35e8f2e8e069e1c6d2b817dd57a",
                "sha256": "06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "c994e35e8f2e8e069e1c6d2b817dd57a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 444549,
            "upload_time": "2025-08-08T18:26:51",
            "upload_time_iso_8601": "2025-08-08T18:26:51.864228Z",
            "url": "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9b02c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93",
                "md5": "ec3880a9e37f30e7b1e2d3fd6db99da5",
                "sha256": "74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "ec3880a9e37f30e7b1e2d3fd6db99da5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 443973,
            "upload_time": "2025-08-08T18:26:53",
            "upload_time_iso_8601": "2025-08-08T18:26:53.625556Z",
            "url": "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ae2df5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd",
                "md5": "857ac295b18fbe74e088c9df11d16026",
                "sha256": "b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "857ac295b18fbe74e088c9df11d16026",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 443954,
            "upload_time": "2025-08-08T18:26:55",
            "upload_time_iso_8601": "2025-08-08T18:26:55.072255Z",
            "url": "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e859593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd",
                "md5": "f3c136a5b902b7798bb9a7e02c5db7f0",
                "sha256": "c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "f3c136a5b902b7798bb9a7e02c5db7f0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 445023,
            "upload_time": "2025-08-08T18:26:56",
            "upload_time_iso_8601": "2025-08-08T18:26:56.677445Z",
            "url": "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c72af609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb",
                "md5": "d6593a626f144890eed547af5cd78967",
                "sha256": "e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d6593a626f144890eed547af5cd78967",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 445427,
            "upload_time": "2025-08-08T18:26:57",
            "upload_time_iso_8601": "2025-08-08T18:26:57.910876Z",
            "url": "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5e4fe1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9",
                "md5": "f76dff346ffcfe8bc8c71e1c51285ae0",
                "sha256": "d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2-cp39-abi3-win_arm64.whl",
            "has_sig": false,
            "md5_digest": "f76dff346ffcfe8bc8c71e1c51285ae0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 444456,
            "upload_time": "2025-08-08T18:26:59",
            "upload_time_iso_8601": "2025-08-08T18:26:59.207491Z",
            "url": "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "09ce1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90",
                "md5": "dbf1f706f0a1efd9ed3dad8d82b7e865",
                "sha256": "ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0"
            },
            "downloads": -1,
            "filename": "tornado-6.5.2.tar.gz",
            "has_sig": false,
            "md5_digest": "dbf1f706f0a1efd9ed3dad8d82b7e865",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 510821,
            "upload_time": "2025-08-08T18:27:00",
            "upload_time_iso_8601": "2025-08-08T18:27:00.780539Z",
            "url": "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-08 18:27:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tornadoweb",
    "github_project": "tornado",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [
        {
            "name": "alabaster",
            "specs": [
                [
                    "==",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "babel",
            "specs": [
                [
                    "==",
                    "2.17.0"
                ]
            ]
        },
        {
            "name": "black",
            "specs": [
                [
                    "==",
                    "25.1.0"
                ]
            ]
        },
        {
            "name": "build",
            "specs": [
                [
                    "==",
                    "1.2.2.post1"
                ]
            ]
        },
        {
            "name": "cachetools",
            "specs": [
                [
                    "==",
                    "5.5.2"
                ]
            ]
        },
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2025.4.26"
                ]
            ]
        },
        {
            "name": "chardet",
            "specs": [
                [
                    "==",
                    "5.2.0"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.4.2"
                ]
            ]
        },
        {
            "name": "click",
            "specs": [
                [
                    "==",
                    "8.2.1"
                ]
            ]
        },
        {
            "name": "colorama",
            "specs": [
                [
                    "==",
                    "0.4.6"
                ]
            ]
        },
        {
            "name": "distlib",
            "specs": [
                [
                    "==",
                    "0.3.9"
                ]
            ]
        },
        {
            "name": "docutils",
            "specs": [
                [
                    "==",
                    "0.21.2"
                ]
            ]
        },
        {
            "name": "filelock",
            "specs": [
                [
                    "==",
                    "3.18.0"
                ]
            ]
        },
        {
            "name": "flake8",
            "specs": [
                [
                    "==",
                    "7.2.0"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.10"
                ]
            ]
        },
        {
            "name": "imagesize",
            "specs": [
                [
                    "==",
                    "1.4.1"
                ]
            ]
        },
        {
            "name": "jinja2",
            "specs": [
                [
                    "==",
                    "3.1.6"
                ]
            ]
        },
        {
            "name": "markupsafe",
            "specs": [
                [
                    "==",
                    "3.0.2"
                ]
            ]
        },
        {
            "name": "mccabe",
            "specs": [
                [
                    "==",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "mypy",
            "specs": [
                [
                    "==",
                    "1.15.0"
                ]
            ]
        },
        {
            "name": "mypy-extensions",
            "specs": [
                [
                    "==",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "25.0"
                ]
            ]
        },
        {
            "name": "pathspec",
            "specs": [
                [
                    "==",
                    "0.12.1"
                ]
            ]
        },
        {
            "name": "pip-tools",
            "specs": [
                [
                    "==",
                    "7.4.1"
                ]
            ]
        },
        {
            "name": "platformdirs",
            "specs": [
                [
                    "==",
                    "4.3.8"
                ]
            ]
        },
        {
            "name": "pluggy",
            "specs": [
                [
                    "==",
                    "1.6.0"
                ]
            ]
        },
        {
            "name": "pycodestyle",
            "specs": [
                [
                    "==",
                    "2.13.0"
                ]
            ]
        },
        {
            "name": "pyflakes",
            "specs": [
                [
                    "==",
                    "3.3.2"
                ]
            ]
        },
        {
            "name": "pygments",
            "specs": [
                [
                    "==",
                    "2.19.1"
                ]
            ]
        },
        {
            "name": "pyproject-api",
            "specs": [
                [
                    "==",
                    "1.9.1"
                ]
            ]
        },
        {
            "name": "pyproject-hooks",
            "specs": [
                [
                    "==",
                    "1.2.0"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.4"
                ]
            ]
        },
        {
            "name": "roman-numerals-py",
            "specs": [
                [
                    "==",
                    "3.1.0"
                ]
            ]
        },
        {
            "name": "snowballstemmer",
            "specs": [
                [
                    "==",
                    "3.0.1"
                ]
            ]
        },
        {
            "name": "sphinx",
            "specs": [
                [
                    "==",
                    "8.2.3"
                ]
            ]
        },
        {
            "name": "sphinx-rtd-theme",
            "specs": [
                [
                    "==",
                    "3.0.2"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-applehelp",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-devhelp",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-htmlhelp",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-jquery",
            "specs": [
                [
                    "==",
                    "4.1"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-jsmath",
            "specs": [
                [
                    "==",
                    "1.0.1"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-qthelp",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-serializinghtml",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "tox",
            "specs": [
                [
                    "==",
                    "4.26.0"
                ]
            ]
        },
        {
            "name": "types-pycurl",
            "specs": [
                [
                    "==",
                    "7.45.6.20250309"
                ]
            ]
        },
        {
            "name": "typing-extensions",
            "specs": [
                [
                    "==",
                    "4.13.2"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.5.0"
                ]
            ]
        },
        {
            "name": "virtualenv",
            "specs": [
                [
                    "==",
                    "20.31.2"
                ]
            ]
        },
        {
            "name": "wheel",
            "specs": [
                [
                    "==",
                    "0.45.1"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "tornado"
}
        
Elapsed time: 0.94120s