chore: rename project coven → hack-house ⛧

Rebrand the Rust client crate (coven/ → hh/, package+binary "hack-house"),
README, CLI strings, and branch (coven → hack-house). Gitea repo renamed
cmd-chat → hack-house to match. Crypto/server logic unchanged; selftest +
golden-vector test still green, binary is now `hack-house`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
leetcrypt
2026-05-30 13:29:14 -07:00
parent 82a04f3e12
commit bb1d662ee1
2730 changed files with 712933 additions and 46 deletions
@@ -0,0 +1,278 @@
Metadata-Version: 2.4
Name: sanic
Version: 25.12.0
Summary: A web server and web framework that's written to go fast. Build fast. Run fast.
Home-page: http://github.com/sanic-org/sanic/
Author: Sanic Community
Author-email: admhpkns@gmail.com
License: MIT
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.10
License-File: LICENSE
Requires-Dist: sanic-routing>=23.12.0
Requires-Dist: httptools>=0.0.10
Requires-Dist: uvloop>=0.15.0; sys_platform != "win32" and implementation_name == "cpython"
Requires-Dist: ujson>=1.35; sys_platform != "win32" and implementation_name == "cpython"
Requires-Dist: aiofiles>=0.6.0
Requires-Dist: websockets>=10.0
Requires-Dist: multidict<7.0,>=5.0
Requires-Dist: html5tagger>=1.2.1
Requires-Dist: tracerite>=2.2.0
Requires-Dist: typing-extensions>=4.4.0
Requires-Dist: setuptools>=70.1.0
Provides-Extra: test
Requires-Dist: sanic-testing>=23.6.0; extra == "test"
Requires-Dist: pytest>=8.2.2; extra == "test"
Requires-Dist: pytest-xdist>=3.5.0; extra == "test"
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: beautifulsoup4; extra == "test"
Requires-Dist: pytest-sanic; extra == "test"
Requires-Dist: pytest-benchmark; extra == "test"
Requires-Dist: chardet==3.*; extra == "test"
Requires-Dist: ruff; extra == "test"
Requires-Dist: bandit; extra == "test"
Requires-Dist: mypy; extra == "test"
Requires-Dist: docutils; extra == "test"
Requires-Dist: pygments; extra == "test"
Requires-Dist: uvicorn; extra == "test"
Requires-Dist: slotscheck<1,>=0.8.0; extra == "test"
Requires-Dist: types-ujson; (sys_platform != "win32" and implementation_name == "cpython") and extra == "test"
Provides-Extra: dev
Requires-Dist: sanic-testing>=23.6.0; extra == "dev"
Requires-Dist: pytest>=8.2.2; extra == "dev"
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: beautifulsoup4; extra == "dev"
Requires-Dist: pytest-sanic; extra == "dev"
Requires-Dist: pytest-benchmark; extra == "dev"
Requires-Dist: chardet==3.*; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: docutils; extra == "dev"
Requires-Dist: pygments; extra == "dev"
Requires-Dist: uvicorn; extra == "dev"
Requires-Dist: slotscheck<1,>=0.8.0; extra == "dev"
Requires-Dist: types-ujson; (sys_platform != "win32" and implementation_name == "cpython") and extra == "dev"
Requires-Dist: cryptography; extra == "dev"
Requires-Dist: tox; extra == "dev"
Requires-Dist: towncrier; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=2.1.2; extra == "docs"
Requires-Dist: sphinx_rtd_theme>=0.4.3; extra == "docs"
Requires-Dist: docutils; extra == "docs"
Requires-Dist: pygments; extra == "docs"
Requires-Dist: m2r2; extra == "docs"
Requires-Dist: enum-tools[sphinx]; extra == "docs"
Requires-Dist: mistune>=2.0.0; extra == "docs"
Requires-Dist: autodocsumm>=0.2.11; extra == "docs"
Requires-Dist: msgspec; extra == "docs"
Requires-Dist: python-frontmatter; extra == "docs"
Requires-Dist: docstring-parser; extra == "docs"
Requires-Dist: libsass; extra == "docs"
Provides-Extra: all
Requires-Dist: mypy; extra == "all"
Requires-Dist: msgspec; extra == "all"
Requires-Dist: bandit; extra == "all"
Requires-Dist: chardet==3.*; extra == "all"
Requires-Dist: slotscheck<1,>=0.8.0; extra == "all"
Requires-Dist: sphinx_rtd_theme>=0.4.3; extra == "all"
Requires-Dist: docstring-parser; extra == "all"
Requires-Dist: mistune>=2.0.0; extra == "all"
Requires-Dist: tox; extra == "all"
Requires-Dist: pytest-xdist>=3.5.0; extra == "all"
Requires-Dist: beautifulsoup4; extra == "all"
Requires-Dist: enum-tools[sphinx]; extra == "all"
Requires-Dist: coverage; extra == "all"
Requires-Dist: sphinx>=2.1.2; extra == "all"
Requires-Dist: libsass; extra == "all"
Requires-Dist: cryptography; extra == "all"
Requires-Dist: uvicorn; extra == "all"
Requires-Dist: m2r2; extra == "all"
Requires-Dist: pytest>=8.2.2; extra == "all"
Requires-Dist: autodocsumm>=0.2.11; extra == "all"
Requires-Dist: ruff; extra == "all"
Requires-Dist: types-ujson; (sys_platform != "win32" and implementation_name == "cpython") and extra == "all"
Requires-Dist: sanic-testing>=23.6.0; extra == "all"
Requires-Dist: python-frontmatter; extra == "all"
Requires-Dist: pytest-benchmark; extra == "all"
Requires-Dist: towncrier; extra == "all"
Requires-Dist: pytest-cov>=4.0.0; extra == "all"
Requires-Dist: pytest-sanic; extra == "all"
Requires-Dist: docutils; extra == "all"
Requires-Dist: pygments; extra == "all"
Provides-Extra: ext
Requires-Dist: sanic-ext; extra == "ext"
Provides-Extra: http3
Requires-Dist: aioquic; extra == "http3"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: platform
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary
.. image:: https://raw.githubusercontent.com/sanic-org/sanic-assets/master/png/sanic-framework-logo-400x97.png
:alt: Sanic | Build fast. Run fast.
Sanic | Build fast. Run fast.
=============================
.. start-badges
.. list-table::
:widths: 15 85
:stub-columns: 1
* - Build
- | |Tests|
* - Docs
- | |UserGuide| |Documentation|
* - Package
- | |PyPI| |PyPI version| |Wheel| |Supported implementations| |Code style ruff|
* - Support
- | |Forums| |Discord| |Awesome|
* - Stats
- | |Monthly Downloads| |Weekly Downloads| |Conda downloads|
.. |UserGuide| image:: https://img.shields.io/badge/user%20guide-sanic-ff0068
:target: https://sanic.dev/
.. |Forums| image:: https://img.shields.io/badge/forums-community-ff0068.svg
:target: https://community.sanicframework.org/
.. |Discord| image:: https://img.shields.io/discord/812221182594121728?logo=discord&label=Discord&color=5865F2
:target: https://discord.gg/FARQzAEMAA
.. |Tests| image:: https://github.com/sanic-org/sanic/actions/workflows/tests.yml/badge.svg?branch=main
:target: https://github.com/sanic-org/sanic/actions/workflows/tests.yml
.. |Documentation| image:: https://readthedocs.org/projects/sanic/badge/?version=latest
:target: http://sanic.readthedocs.io/en/latest/?badge=latest
.. |PyPI| image:: https://img.shields.io/pypi/v/sanic.svg
:target: https://pypi.python.org/pypi/sanic/
.. |PyPI version| image:: https://img.shields.io/pypi/pyversions/sanic.svg
:target: https://pypi.python.org/pypi/sanic/
.. |Code style ruff| image:: https://img.shields.io/badge/code%20style-ruff-000000.svg
:target: https://docs.astral.sh/ruff/
.. |Wheel| image:: https://img.shields.io/pypi/wheel/sanic.svg
:alt: PyPI Wheel
:target: https://pypi.python.org/pypi/sanic
.. |Supported implementations| image:: https://img.shields.io/pypi/implementation/sanic.svg
:alt: Supported implementations
:target: https://pypi.python.org/pypi/sanic
.. |Awesome| image:: https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg
:alt: Awesome Sanic List
:target: https://github.com/mekicha/awesome-sanic
.. |Monthly Downloads| image:: https://img.shields.io/pypi/dm/sanic.svg
:alt: Downloads
:target: https://pepy.tech/project/sanic
.. |Weekly Downloads| image:: https://img.shields.io/pypi/dw/sanic.svg
:alt: Downloads
:target: https://pepy.tech/project/sanic
.. |Conda downloads| image:: https://img.shields.io/conda/dn/conda-forge/sanic.svg
:alt: Downloads
:target: https://anaconda.org/conda-forge/sanic
.. end-badges
Sanic is a **Python 3.10+** web server and web framework that's written to go fast. It allows the usage of the ``async/await`` syntax added in Python 3.5, which makes your code non-blocking and speedy.
Sanic is also ASGI compliant, so you can deploy it with an `alternative ASGI webserver <https://sanicframework.org/en/guide/deployment/running.html#asgi>`_.
`Source code on GitHub <https://github.com/sanic-org/sanic/>`_ | `Help and discussion board <https://community.sanicframework.org/>`_ | `User Guide <https://sanicframework.org>`_ | `Chat on Discord <https://discord.gg/FARQzAEMAA>`_
The project is maintained by the community, for the community. **Contributions are welcome!**
The goal of the project is to provide a simple way to get up and running a highly performant HTTP server that is easy to build, to expand, and ultimately to scale.
Sponsor
-------
Check out `open collective <https://opencollective.com/sanic-org>`_ to learn more about helping to fund Sanic.
Installation
------------
``pip install sanic``
Sanic makes use of ``uvloop`` and ``ujson`` to help with performance. If you do not want to use those packages, simply add an environmental variable ``SANIC_NO_UVLOOP=true`` or ``SANIC_NO_UJSON=true`` at install time.
.. code:: shell
$ export SANIC_NO_UVLOOP=true
$ export SANIC_NO_UJSON=true
$ pip install --no-binary :all: sanic
.. note::
If you are running on a clean install of Fedora 28 or above, please make sure you have the ``redhat-rpm-config`` package installed in case if you want to
use ``sanic`` with ``ujson`` dependency.
Hello World Example
-------------------
.. code:: python
from sanic import Sanic
from sanic.response import json
app = Sanic("my-hello-world-app")
@app.route('/')
async def test(request):
return json({'hello': 'world'})
Sanic can now be easily run from CLI using ``sanic hello.app``.
.. code::
[2018-12-30 11:37:41 +0200] [13564] [INFO] Goin' Fast @ http://127.0.0.1:8000
[2018-12-30 11:37:41 +0200] [13564] [INFO] Starting worker [13564]
And, we can verify it is working: ``curl localhost:8000 -i``
.. code::
HTTP/1.1 200 OK
Connection: keep-alive
Keep-Alive: 5
Content-Length: 17
Content-Type: application/json
{"hello":"world"}
**Now, let's go build something fast!**
Minimum Python version is 3.10.
Documentation
-------------
User Guide, Changelog, and API Documentation can be found at `sanic.dev <https://sanic.dev>`__.
Questions and Discussion
------------------------
`Ask a question or join the conversation <https://community.sanicframework.org/>`__.
Contribution
------------
We are always happy to have new contributions. We have `marked issues good for anyone looking to get started <https://github.com/sanic-org/sanic/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner>`_, and welcome `questions on the forums <https://community.sanicframework.org/>`_. Please take a look at our `Contribution guidelines <https://github.com/sanic-org/sanic/blob/master/CONTRIBUTING.md>`_.
@@ -0,0 +1,277 @@
../../../bin/sanic,sha256=9qz-WNkho9GzGnTsmTbqjfK-oD-LverTS12Eip_NDqA,198
sanic-25.12.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
sanic-25.12.0.dist-info/METADATA,sha256=n8m9aSo74BKyoTbGlrlpO9HYvXUGct5NKsclkuWcoTg,11066
sanic-25.12.0.dist-info/RECORD,,
sanic-25.12.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic-25.12.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
sanic-25.12.0.dist-info/entry_points.txt,sha256=0vIzcvJJECQnWr4YHvpLveDvBw5jLvB5pq9x9RCl-rE,46
sanic-25.12.0.dist-info/licenses/LICENSE,sha256=zcKUxJWo2A8_tZbyV_t7YSFMfV5e4lSFK3U_-B6OE3w,1080
sanic-25.12.0.dist-info/top_level.txt,sha256=ENtJKuBkCofUPUrIvzElGjOx1MUNBOm9GExhwSlZZQ8,6
sanic/__init__.py,sha256=JnxQbtAwLI7vsTRJDo0MOKPnunEFiB3Al8RAeEsahzs,1752
sanic/__main__.py,sha256=tPbFh2saH0TxJGAk9B9OHvZhP2s4qqIK66liRTMT4IM,675
sanic/__pycache__/__init__.cpython-312.pyc,,
sanic/__pycache__/__main__.cpython-312.pyc,,
sanic/__pycache__/__version__.cpython-312.pyc,,
sanic/__pycache__/app.cpython-312.pyc,,
sanic/__pycache__/asgi.cpython-312.pyc,,
sanic/__pycache__/blueprint_group.cpython-312.pyc,,
sanic/__pycache__/blueprints.cpython-312.pyc,,
sanic/__pycache__/compat.cpython-312.pyc,,
sanic/__pycache__/config.cpython-312.pyc,,
sanic/__pycache__/constants.cpython-312.pyc,,
sanic/__pycache__/errorpages.cpython-312.pyc,,
sanic/__pycache__/exceptions.cpython-312.pyc,,
sanic/__pycache__/headers.cpython-312.pyc,,
sanic/__pycache__/helpers.cpython-312.pyc,,
sanic/__pycache__/log.cpython-312.pyc,,
sanic/__pycache__/middleware.cpython-312.pyc,,
sanic/__pycache__/router.cpython-312.pyc,,
sanic/__pycache__/signals.cpython-312.pyc,,
sanic/__pycache__/simple.cpython-312.pyc,,
sanic/__pycache__/utils.cpython-312.pyc,,
sanic/__pycache__/views.cpython-312.pyc,,
sanic/__version__.py,sha256=j8iGa0_eusgomUBlpg53I6Uyvo1If0uNo9Y9RMqWjzI,24
sanic/app.py,sha256=irn_Au_1hahnKOSpaYqo_lwRvSsP_KI0nnBUdaA9SuQ,92936
sanic/application/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/application/__pycache__/__init__.cpython-312.pyc,,
sanic/application/__pycache__/constants.cpython-312.pyc,,
sanic/application/__pycache__/ext.cpython-312.pyc,,
sanic/application/__pycache__/logo.cpython-312.pyc,,
sanic/application/__pycache__/motd.cpython-312.pyc,,
sanic/application/__pycache__/spinner.cpython-312.pyc,,
sanic/application/__pycache__/state.cpython-312.pyc,,
sanic/application/constants.py,sha256=2IL0wxTqVWLo0uguOj0cEvyq6f0hJrK6JAW8jP32jsU,711
sanic/application/ext.py,sha256=SvB8lSru84QJAeXB7FigPX-VNODLjZjbkv8Pnh32w6g,1241
sanic/application/logo.py,sha256=-LzPzPpmEQueVSXnFhpP5VH4rEqzsKljQGdSbdcpP1E,4030
sanic/application/motd.py,sha256=VF2Wvy_rYUNN_BjhazHdD5HsWE4-uTiPPTkqwWauC2c,6026
sanic/application/spinner.py,sha256=9EcXRY8eoXYo7Y4GNbctT-YfnTCburVBWsX93xEVrHE,2347
sanic/application/state.py,sha256=_fm8FO5iWNLFfXjyZRL4O1Yk4VIao9mtXHjTKdXRiTw,3575
sanic/asgi.py,sha256=OzI2irCA6rnBcLgn8-zbCloRwc-ufUeW42ktQRUwkE8,9383
sanic/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/base/__pycache__/__init__.cpython-312.pyc,,
sanic/base/__pycache__/meta.cpython-312.pyc,,
sanic/base/__pycache__/root.cpython-312.pyc,,
sanic/base/meta.py,sha256=o_H0oTtu4kr285uyN_YZSK6PmksbN20tmUWWexNAHoc,208
sanic/base/root.py,sha256=jWeBC3aDjBFKPqS4B_zd5cmBmsUMl3wFUAVq5MAbvzU,2127
sanic/blueprint_group.py,sha256=3jhb8Z4A9BcplfVeMpKdcuF1T79SaFXjSMbAqWCkoBw,84
sanic/blueprints.py,sha256=jGaJRJaTAG1PiYCwrPA1GaIa02C4CvBi1gB_SxXlmQs,32509
sanic/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/cli/__pycache__/__init__.cpython-312.pyc,,
sanic/cli/__pycache__/app.cpython-312.pyc,,
sanic/cli/__pycache__/arguments.cpython-312.pyc,,
sanic/cli/__pycache__/base.cpython-312.pyc,,
sanic/cli/__pycache__/console.cpython-312.pyc,,
sanic/cli/__pycache__/daemon.cpython-312.pyc,,
sanic/cli/__pycache__/executor.cpython-312.pyc,,
sanic/cli/__pycache__/inspector.cpython-312.pyc,,
sanic/cli/__pycache__/inspector_client.cpython-312.pyc,,
sanic/cli/app.py,sha256=ZK4O1XHR-kj_-EUNNFr1xwx32H8ldRfZGUqfB4ier40,16814
sanic/cli/arguments.py,sha256=nH9RBrpRTA684HzdtnHa4rjnVK8myUiNMIbOq0DTXXM,12052
sanic/cli/base.py,sha256=rpn2WMXUTp_RvWkl1oojXxxx2O3rv4poE67xospRd_Q,1075
sanic/cli/console.py,sha256=UBKHlkM0zJ3BqKEK9vHLiyydrbqpV9omlXukS6hYYmQ,9189
sanic/cli/daemon.py,sha256=UUWbaRMHQxXuF-c2tD_Y5ch-A2VmryP-2aE7jVb5nYI,4308
sanic/cli/executor.py,sha256=b2NtRDCDfRedUL6iipdR8eILaNYE1D2gAItjHqLjkwA,3296
sanic/cli/inspector.py,sha256=ndvCVsN6GiTIeeHP54sdKJAsFz18A3vypbJjuPZs-FA,3266
sanic/cli/inspector_client.py,sha256=CFiny588lAQVP5KvBWKpWpN2G1ljdTCcR9vSxs8cerY,3779
sanic/compat.py,sha256=490_6FCNnKgc9l-ZI0HkpKe_Az_2ULzTnhUhkQw2W-A,5907
sanic/config.py,sha256=8dfDSGqYm5hBvVblHfta8_QB4F9VDczWakaVU7GtIjU,16083
sanic/constants.py,sha256=BPl-dSbJ6MXOsD6hIjy-M0f9Ec-Ll_EyhUACIEF4eis,862
sanic/cookies/__init__.py,sha256=LhKqwzYs4p-8yFPsGXS81WvL279tFEqpbXNQx-xULX0,76
sanic/cookies/__pycache__/__init__.cpython-312.pyc,,
sanic/cookies/__pycache__/request.cpython-312.pyc,,
sanic/cookies/__pycache__/response.cpython-312.pyc,,
sanic/cookies/request.py,sha256=oAvWAZFOYWr5gY3z0n3xb2Qb_MHNjK8qRrVggZ-X-9M,4988
sanic/cookies/response.py,sha256=wsuqyHOcf2SLTrvsaq-BDX2azaBUjTyYBVbXt--7cME,21455
sanic/errorpages.py,sha256=lEUuc6XUxBNnjVo-ucRk9hRUL_Q67DUZU7gWZRzGbmE,12859
sanic/exceptions.py,sha256=cSWFSlUZEPIlTTQAmH2V8sVaWmuRAr7tm7pjc7O8Opg,26463
sanic/handlers/__init__.py,sha256=i0ajf0Bh0gLHLKexyuQ-2yyu4vVHc5re6UxV9vyD6a0,206
sanic/handlers/__pycache__/__init__.cpython-312.pyc,,
sanic/handlers/__pycache__/content_range.cpython-312.pyc,,
sanic/handlers/__pycache__/directory.cpython-312.pyc,,
sanic/handlers/__pycache__/error.cpython-312.pyc,,
sanic/handlers/content_range.py,sha256=T44F9KDhwOOmi8JWEtiuRSunnceHDgm-dGqZ9KAHQjQ,2534
sanic/handlers/directory.py,sha256=6nEBjsWSrjccHs4WsjbCDS7E36SPu11LClV9E_UEk6Q,5652
sanic/handlers/error.py,sha256=1wdR31lZipA0fxQrqqOS3Y4BFjpPuSEFRhOZ9VNTb_A,7243
sanic/headers.py,sha256=8aWCGUP5MlHsEeFNbSW_YeU5ZvpRxl7kd_J7d3_1Dks,18775
sanic/helpers.py,sha256=fgBFbHBYtdYJhU6I6pv2gMdjFTz5xNqKEVtr6spiClw,4593
sanic/http/__init__.py,sha256=qPK2fBZtnmDfYutL4QRqxbmDWn_10Edo2PV1bVJzpc8,117
sanic/http/__pycache__/__init__.cpython-312.pyc,,
sanic/http/__pycache__/constants.cpython-312.pyc,,
sanic/http/__pycache__/http1.cpython-312.pyc,,
sanic/http/__pycache__/http3.cpython-312.pyc,,
sanic/http/__pycache__/stream.cpython-312.pyc,,
sanic/http/constants.py,sha256=4znFzWXzBEy1beqELyJbZiaipoNqVnqpTRWUXSAfZZQ,890
sanic/http/http1.py,sha256=rmGlWQmc3Wa_4JZfniFflteZJYrGpucwwoddRyWf_TQ,21441
sanic/http/http3.py,sha256=XHxPryrZBtv6dpzevtqlF72a5puzt1VT7BdwjCW4_WY,13601
sanic/http/stream.py,sha256=b-zJLvfxlSF5ktj3TEqnIo28WgViKXRfiQSMynlY-qQ,657
sanic/http/tls/__init__.py,sha256=c34IH1GBUnLd1xZoO4q8yPifNPxwgIGgY9_03YBB7-4,132
sanic/http/tls/__pycache__/__init__.cpython-312.pyc,,
sanic/http/tls/__pycache__/context.cpython-312.pyc,,
sanic/http/tls/__pycache__/creators.cpython-312.pyc,,
sanic/http/tls/context.py,sha256=Rgp5Qof0Jh1E_Fdgd7H0ssRnxHH432BzRradkHV5_0U,7361
sanic/http/tls/creators.py,sha256=PuMKA2xmyrFtLVKeFDPylX_tOYTytrCn5alb0P0UuI4,9501
sanic/log.py,sha256=5T-WHfwyAJzOnR2maitiPruqRM3PkgwMIoOqM0JQyVY,529
sanic/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/logging/__pycache__/__init__.cpython-312.pyc,,
sanic/logging/__pycache__/color.cpython-312.pyc,,
sanic/logging/__pycache__/default.cpython-312.pyc,,
sanic/logging/__pycache__/deprecation.cpython-312.pyc,,
sanic/logging/__pycache__/filter.cpython-312.pyc,,
sanic/logging/__pycache__/formatter.cpython-312.pyc,,
sanic/logging/__pycache__/loggers.cpython-312.pyc,,
sanic/logging/__pycache__/setup.cpython-312.pyc,,
sanic/logging/color.py,sha256=HEwkxKCxwpBdboT36IynaN6FPXdted4aDKF6n61OpNQ,1586
sanic/logging/default.py,sha256=GZ5SQTYHUF2CBA6zUCBHUfPh9CmM0Phl_58tjwqCMp8,1637
sanic/logging/deprecation.py,sha256=XCxb3RZEK49nXM8cm1ME9hrg3hi6sdfar5EadTtJvW8,934
sanic/logging/filter.py,sha256=mmcHnPHoeFMdNM8VeBSFrTD3L7Rte9_U2qvCE5ynOAs,298
sanic/logging/formatter.py,sha256=fjYg_A-sxEkNp6tipnBrKceOSOcgUsDkrwxhSoR6LA0,12112
sanic/logging/loggers.py,sha256=RlEB2C_pOzUOet6QrQfay0JEOkGtrzRLD83uzeFew5U,951
sanic/logging/setup.py,sha256=2ulciGU07NXIaIccUUorkyYugkgWn8jGhZJwGBTHDkQ,1453
sanic/middleware.py,sha256=o17m6DkHpglyB_WWNi_nI200rt7N2Occx90qtIm9cDM,2989
sanic/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/mixins/__pycache__/__init__.cpython-312.pyc,,
sanic/mixins/__pycache__/base.cpython-312.pyc,,
sanic/mixins/__pycache__/commands.cpython-312.pyc,,
sanic/mixins/__pycache__/exceptions.cpython-312.pyc,,
sanic/mixins/__pycache__/listeners.cpython-312.pyc,,
sanic/mixins/__pycache__/middleware.cpython-312.pyc,,
sanic/mixins/__pycache__/routes.cpython-312.pyc,,
sanic/mixins/__pycache__/signals.cpython-312.pyc,,
sanic/mixins/__pycache__/startup.cpython-312.pyc,,
sanic/mixins/__pycache__/static.cpython-312.pyc,,
sanic/mixins/base.py,sha256=fm6xXV5nnZLbHN_06tFX4oi7vWEygsusQjZksol4qL4,1071
sanic/mixins/commands.py,sha256=ue9CNvhRh8ipirfN_xA4F7FV1H4IIke-oY_lmanbZkU,1000
sanic/mixins/exceptions.py,sha256=Cnpz0mc8uY8Ou_EqVKkR807KrBuz9xWiNZoXC7vy0gM,3911
sanic/mixins/listeners.py,sha256=TgBqCEBhNCqw3A4qMg9n9VttvvS-UQWFgY7dchGXFTY,16442
sanic/mixins/middleware.py,sha256=KnZ5DHW-Lx_f03Y2gJCyYhVewsa--ocLQeVMhhHippg,8406
sanic/mixins/routes.py,sha256=QUJr3D665j0OQJhaYrhSSRTCl9ntf4y23I_ohcTJksI,31298
sanic/mixins/signals.py,sha256=hnViaO13ieg0BHwJDNp3aUBKZLHHGqADAMS2flNhd0I,5235
sanic/mixins/startup.py,sha256=U6LCJKLISXuy71msxTlGesJ2gN_mmgoFNZ14qHSWOwU,53793
sanic/mixins/static.py,sha256=SWYOmOioOp_EkmfmeF4zOCSGiWovxCG1r8mhCl6FxcM,16399
sanic/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/models/__pycache__/__init__.cpython-312.pyc,,
sanic/models/__pycache__/asgi.cpython-312.pyc,,
sanic/models/__pycache__/ctx_types.cpython-312.pyc,,
sanic/models/__pycache__/futures.cpython-312.pyc,,
sanic/models/__pycache__/handler_types.cpython-312.pyc,,
sanic/models/__pycache__/http_types.cpython-312.pyc,,
sanic/models/__pycache__/protocol_types.cpython-312.pyc,,
sanic/models/__pycache__/server_types.cpython-312.pyc,,
sanic/models/asgi.py,sha256=lM9GkIYGrYLUwkFhgULtKqtcFqqzS2ymgX5vb6TBfPc,3046
sanic/models/ctx_types.py,sha256=LFwkvc59vARZK40aB8hVTZuoNWeBBDWFxYl0DvZhtB4,1948
sanic/models/futures.py,sha256=Vum3T1E60OD9yQ7K5WJ0wLH3aA9NhXwjDrdZj5KKXz4,1690
sanic/models/handler_types.py,sha256=MeuQnTdKvEmmLLNh7FwLzJ3VEM3hgeMocp2JfbW6wq0,1013
sanic/models/http_types.py,sha256=TbHjOPzobj8Jnks4423Yf7CgpcJcZHsgRVYu-Dn2eac,941
sanic/models/protocol_types.py,sha256=OK7Tno_xmXlr1b7H_LAhv6_CGkiLMvjg50crV6PzDE4,570
sanic/models/server_types.py,sha256=Rt9Cfbbh6tZ4tFYqchKEjC0C5hJV_HeIldiWCei6K1M,2390
sanic/pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/pages/__pycache__/__init__.cpython-312.pyc,,
sanic/pages/__pycache__/base.cpython-312.pyc,,
sanic/pages/__pycache__/css.cpython-312.pyc,,
sanic/pages/__pycache__/directory_page.cpython-312.pyc,,
sanic/pages/__pycache__/error.cpython-312.pyc,,
sanic/pages/base.py,sha256=oSfb9U80yMb5_wEkpIgGjw9zRNs-Z1-Rqf1xSruzwrY,2301
sanic/pages/css.py,sha256=Oe8KpBPwgMT6sSMFWTkvbbd9xOiC_7s69WLgR-fihpw,1074
sanic/pages/directory_page.py,sha256=XNCbZ1huxY0gfjQkUe7fgSvrSflLsiA_vV9KYAw12B8,1669
sanic/pages/error.py,sha256=4Wk0JzRWDWk2_K5_nyWQlZXmGKsvBITA6eO2U9j5D3s,3943
sanic/pages/styles/BasePage.css,sha256=XmqZR2AeLkMtbXOg_7UN0neK0rH_u5J_ns2Wu5rsauA,2852
sanic/pages/styles/DirectoryPage.css,sha256=rVJkr2u3yqoXbx_iRGU1tf0ktyNyzVn0Yhjf2hG_BuE,909
sanic/pages/styles/ErrorPage.css,sha256=QfFiKMBqw88yOC_dsm5Tzo0ucMtxxNC2WxJRMkfBRks,2126
sanic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/request/__init__.py,sha256=t-tmbN2UK6e6sCBs8pipRZ88Z_pECj5Pc4C1eiuF2Iw,210
sanic/request/__pycache__/__init__.cpython-312.pyc,,
sanic/request/__pycache__/form.cpython-312.pyc,,
sanic/request/__pycache__/parameters.cpython-312.pyc,,
sanic/request/__pycache__/types.cpython-312.pyc,,
sanic/request/form.py,sha256=mcvMks5ysO9Z4IRTboBpDYiK1IqfmKTM90QVYK2p8Bw,3830
sanic/request/parameters.py,sha256=G-I_YEno48jWABDzsk7lwK8G06jc4spROJo8jWyn-e8,1102
sanic/request/types.py,sha256=BA5FDrbRXSVMBEjYFJX-Z87zkSrnaGjuW0YJlzHHnaE,36965
sanic/response/__init__.py,sha256=Pt4p_yILevgwftUBLJCzWlKoKBq-qvfOjBPRjUIMMNY,504
sanic/response/__pycache__/__init__.cpython-312.pyc,,
sanic/response/__pycache__/convenience.cpython-312.pyc,,
sanic/response/__pycache__/types.cpython-312.pyc,,
sanic/response/convenience.py,sha256=Q5TTT0ROnJ2ffrnds1_1t3wgtMRM-ceL0yFNDc5VeMQ,14202
sanic/response/types.py,sha256=7WyYrL493rbPW0LBBVzjsoNEduJos57OqU9gtzYR9KM,18262
sanic/router.py,sha256=DKcQiv9YDgJD9x6-EKpOen-A255pFouQXPzZzmRykhA,9283
sanic/server/__init__.py,sha256=ifxPV3-LZXbgaGvDSFlEk8ziJxBX9oKpYpEDgK8uqoE,375
sanic/server/__pycache__/__init__.cpython-312.pyc,,
sanic/server/__pycache__/async_server.cpython-312.pyc,,
sanic/server/__pycache__/events.cpython-312.pyc,,
sanic/server/__pycache__/goodbye.cpython-312.pyc,,
sanic/server/__pycache__/loop.cpython-312.pyc,,
sanic/server/__pycache__/runners.cpython-312.pyc,,
sanic/server/__pycache__/socket.cpython-312.pyc,,
sanic/server/async_server.py,sha256=NWAozvMhVsdqa2bq6X2zgagchJLAs1cmiPdFaemaWuU,3443
sanic/server/events.py,sha256=bP6K007yi2R_6o8PTIflrAIFrBSZU7Y0nDSJmYAol7s,1005
sanic/server/goodbye.py,sha256=nc6Rg3AjEQaU_hss0dB_8WSe2ZhioRXwStBGDnjtVPQ,1096
sanic/server/loop.py,sha256=5SANqxl0vxuxwJeRzM2UZ6RIUEM9ejNvi1EIajcFk6I,2515
sanic/server/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/server/protocols/__pycache__/__init__.cpython-312.pyc,,
sanic/server/protocols/__pycache__/base_protocol.cpython-312.pyc,,
sanic/server/protocols/__pycache__/http_protocol.cpython-312.pyc,,
sanic/server/protocols/__pycache__/websocket_protocol.cpython-312.pyc,,
sanic/server/protocols/base_protocol.py,sha256=5vi51N8BA2xYUfB5Molyr4flXIRVGVzWeHA-RKLdiPQ,9304
sanic/server/protocols/http_protocol.py,sha256=TVQ6E2h0CzZj6xPH5eqwEt--QFjE9qRKOHNOOhw61JY,11287
sanic/server/protocols/websocket_protocol.py,sha256=3BJCpuMSIWexZ-_vjnOvV_tarCEV7y0u5wkfNrPVLV8,8306
sanic/server/runners.py,sha256=j1oOa09ZLGSY0L0zA-bcLMqNj8DFvjSrRHbMx4C6GF0,13052
sanic/server/socket.py,sha256=gCYBVdpAS8GcuB3NTtsE4IeuBiafGvQ77QbTkBiTJCs,3743
sanic/server/websockets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/server/websockets/__pycache__/__init__.cpython-312.pyc,,
sanic/server/websockets/__pycache__/connection.cpython-312.pyc,,
sanic/server/websockets/__pycache__/frame.cpython-312.pyc,,
sanic/server/websockets/__pycache__/impl.cpython-312.pyc,,
sanic/server/websockets/connection.py,sha256=z6mbE5zAWFDAmxWbvE--12evDST8qDWOkOve15P8VJA,2283
sanic/server/websockets/frame.py,sha256=eN-BDFBiuphFRc7-0mD-YFdUkMBWZQ4VDai0cd8DCFk,11459
sanic/server/websockets/impl.py,sha256=Ki5GcNNX7z7L6JzzrtyKvTO2f7tBWS-jlJmrd3E_NaM,36260
sanic/signals.py,sha256=lYY6Hqao2z0U6I8jA2-qKbiBEoUhhMjpyqaxg79whGI,14735
sanic/simple.py,sha256=BhEg0NxDoUnGmNYc1asrejd0sp-3lPwx4FhGY7HqnpU,435
sanic/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/startup/__pycache__/__init__.cpython-312.pyc,,
sanic/startup/__pycache__/errors.cpython-312.pyc,,
sanic/startup/errors.py,sha256=FXuddH22bzPlz8xKqgTbHSDQtrob8w80cHlWm0crR9c,1446
sanic/touchup/__init__.py,sha256=kBf5cCmZAwRD3buui0EeryaCc0lieMZQJ9l4Asms-jI,109
sanic/touchup/__pycache__/__init__.cpython-312.pyc,,
sanic/touchup/__pycache__/meta.cpython-312.pyc,,
sanic/touchup/__pycache__/service.cpython-312.pyc,,
sanic/touchup/meta.py,sha256=hLR72V4D4U4qV9Sd5uW9GtKpp7mgRDtu7L5AlcvLmok,702
sanic/touchup/schemes/__init__.py,sha256=UVoQByp8fxnA0yVn79FHxXfqQayvdMLJBvpSzh1NR24,144
sanic/touchup/schemes/__pycache__/__init__.cpython-312.pyc,,
sanic/touchup/schemes/__pycache__/altsvc.cpython-312.pyc,,
sanic/touchup/schemes/__pycache__/base.cpython-312.pyc,,
sanic/touchup/schemes/__pycache__/ode.cpython-312.pyc,,
sanic/touchup/schemes/altsvc.py,sha256=iW97wVKRCy17GBzLopqqNlI77DH0BDNNrsszzsAXix8,1584
sanic/touchup/schemes/base.py,sha256=qa9jP3XX9pa6LEi8js95kyp179wSgaKW5FXySR1ixkA,992
sanic/touchup/schemes/ode.py,sha256=jCATsiwa4jVKlY7orfo9ntXH7hlv2pymjBCHdsUDRIk,2857
sanic/touchup/service.py,sha256=9X8cF0eZY-m90DvuWbma5pnIvKMGUwtKlFHTUwKbkiw,907
sanic/types/__init__.py,sha256=nWL8T3hDPq1KBWF1086JgXh5uDctgZqr2koOxIL9axE,70
sanic/types/__pycache__/__init__.cpython-312.pyc,,
sanic/types/__pycache__/hashable_dict.cpython-312.pyc,,
sanic/types/__pycache__/shared_ctx.cpython-312.pyc,,
sanic/types/hashable_dict.py,sha256=RJe9BXg7Ej57KKzi-x7drY-uziAo2bApSTIzYvU67U4,99
sanic/types/shared_ctx.py,sha256=1igVxCx9sDQ1-Hkw9-e_cl4_iVlzvjlHbcLMmhWuOkU,1893
sanic/utils.py,sha256=SJzfIANP2N2lRzMqUfwSjjVpsejagn04xepxmNRe9s0,4484
sanic/views.py,sha256=EttoFxb-Ro3jMmSklHI94BC493pNsf8_xB1bG3JtS4U,8507
sanic/worker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
sanic/worker/__pycache__/__init__.cpython-312.pyc,,
sanic/worker/__pycache__/constants.cpython-312.pyc,,
sanic/worker/__pycache__/daemon.cpython-312.pyc,,
sanic/worker/__pycache__/inspector.cpython-312.pyc,,
sanic/worker/__pycache__/loader.cpython-312.pyc,,
sanic/worker/__pycache__/manager.cpython-312.pyc,,
sanic/worker/__pycache__/multiplexer.cpython-312.pyc,,
sanic/worker/__pycache__/process.cpython-312.pyc,,
sanic/worker/__pycache__/reloader.cpython-312.pyc,,
sanic/worker/__pycache__/restarter.cpython-312.pyc,,
sanic/worker/__pycache__/serve.cpython-312.pyc,,
sanic/worker/__pycache__/state.cpython-312.pyc,,
sanic/worker/constants.py,sha256=pf9GgJcHqLtC2t9txPSK0CTUWuDBz-VQQbcQEUrsQR8,465
sanic/worker/daemon.py,sha256=LdlIC8L0jboK--6xZwuM6c1m_yK5y7Pz7VnQTLT9Y6g,14773
sanic/worker/inspector.py,sha256=5dFH9AQl2KfOLiHaabfxPqzIicWz0DKd5m0YhKf32rU,5176
sanic/worker/loader.py,sha256=457318EvLOI4xCOC0Cw9G3bvGdPn7eTfqQb7duSMa6k,5958
sanic/worker/manager.py,sha256=5KCv5d3e3dV_A-S49kmKQ_7e7RT2XTuTat-msKy4ZHY,19322
sanic/worker/multiplexer.py,sha256=QBy-WJeOqNJg7e3LPtHK5WSO2owm1VSNvgOCYXWfMQY,5490
sanic/worker/process.py,sha256=JesyIhVUMLT50LnP3mRUW2Z1K_3IDppJ87ebONftzFc,9103
sanic/worker/reloader.py,sha256=BJWbtGzbIHFqfUioMG5-rYLufBMLFWvTdo1bMUM-Lug,3955
sanic/worker/restarter.py,sha256=dPKgpfUI5Y4BGd0Iz_sX0fCjKPlHmF5_vH9uagTf_2s,3042
sanic/worker/serve.py,sha256=oXEjM3cfEdi14CsHQxfE8MlExiwtLyzf5ZErdwoVw2Y,4776
sanic/worker/state.py,sha256=lJfJ2D5xYl64zP-LWRIGQFJeN9h99X98LOGMlvfsm98,2375
@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (80.9.0)
Root-Is-Purelib: true
Tag: py3-none-any
@@ -0,0 +1,2 @@
[console_scripts]
sanic = sanic.__main__:main
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2016-present Sanic Community
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.