update to python fastpi

This commit is contained in:
Iliyan Angelov
2025-11-16 15:59:05 +02:00
parent 93d4c1df80
commit 98ccd5b6ff
4464 changed files with 773233 additions and 13740 deletions

View File

@@ -0,0 +1,24 @@
Copyright (c) Aymeric Augustin and contributors
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,179 @@
Metadata-Version: 2.2
Name: websockets
Version: 15.0.1
Summary: An implementation of the WebSocket Protocol (RFC 6455 & 7692)
Author-email: Aymeric Augustin <aymeric.augustin@m4x.org>
License: BSD-3-Clause
Project-URL: Homepage, https://github.com/python-websockets/websockets
Project-URL: Changelog, https://websockets.readthedocs.io/en/stable/project/changelog.html
Project-URL: Documentation, https://websockets.readthedocs.io/
Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-websockets?utm_source=pypi-websockets&utm_medium=referral&utm_campaign=readme
Project-URL: Tracker, https://github.com/python-websockets/websockets/issues
Keywords: WebSocket
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Dynamic: description
Dynamic: description-content-type
.. image:: logo/horizontal.svg
:width: 480px
:alt: websockets
|licence| |version| |pyversions| |tests| |docs| |openssf|
.. |licence| image:: https://img.shields.io/pypi/l/websockets.svg
:target: https://pypi.python.org/pypi/websockets
.. |version| image:: https://img.shields.io/pypi/v/websockets.svg
:target: https://pypi.python.org/pypi/websockets
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/websockets.svg
:target: https://pypi.python.org/pypi/websockets
.. |tests| image:: https://img.shields.io/github/checks-status/python-websockets/websockets/main?label=tests
:target: https://github.com/python-websockets/websockets/actions/workflows/tests.yml
.. |docs| image:: https://img.shields.io/readthedocs/websockets.svg
:target: https://websockets.readthedocs.io/
.. |openssf| image:: https://bestpractices.coreinfrastructure.org/projects/6475/badge
:target: https://bestpractices.coreinfrastructure.org/projects/6475
What is ``websockets``?
-----------------------
websockets is a library for building WebSocket_ servers and clients in Python
with a focus on correctness, simplicity, robustness, and performance.
.. _WebSocket: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
Built on top of ``asyncio``, Python's standard asynchronous I/O framework, the
default implementation provides an elegant coroutine-based API.
An implementation on top of ``threading`` and a Sans-I/O implementation are also
available.
`Documentation is available on Read the Docs. <https://websockets.readthedocs.io/>`_
.. copy-pasted because GitHub doesn't support the include directive
Here's an echo server with the ``asyncio`` API:
.. code:: python
#!/usr/bin/env python
import asyncio
from websockets.asyncio.server import serve
async def echo(websocket):
async for message in websocket:
await websocket.send(message)
async def main():
async with serve(echo, "localhost", 8765) as server:
await server.serve_forever()
asyncio.run(main())
Here's how a client sends and receives messages with the ``threading`` API:
.. code:: python
#!/usr/bin/env python
from websockets.sync.client import connect
def hello():
with connect("ws://localhost:8765") as websocket:
websocket.send("Hello world!")
message = websocket.recv()
print(f"Received: {message}")
hello()
Does that look good?
`Get started with the tutorial! <https://websockets.readthedocs.io/en/stable/intro/index.html>`_
Why should I use ``websockets``?
--------------------------------
The development of ``websockets`` is shaped by four principles:
1. **Correctness**: ``websockets`` is heavily tested for compliance with
:rfc:`6455`. Continuous integration fails under 100% branch coverage.
2. **Simplicity**: all you need to understand is ``msg = await ws.recv()`` and
``await ws.send(msg)``. ``websockets`` takes care of managing connections
so you can focus on your application.
3. **Robustness**: ``websockets`` is built for production. For example, it was
the only library to `handle backpressure correctly`_ before the issue
became widely known in the Python community.
4. **Performance**: memory usage is optimized and configurable. A C extension
accelerates expensive operations. It's pre-compiled for Linux, macOS and
Windows and packaged in the wheel format for each system and Python version.
Documentation is a first class concern in the project. Head over to `Read the
Docs`_ and see for yourself.
.. _Read the Docs: https://websockets.readthedocs.io/
.. _handle backpressure correctly: https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#websocket-servers
Why shouldn't I use ``websockets``?
-----------------------------------
* If you prefer callbacks over coroutines: ``websockets`` was created to
provide the best coroutine-based API to manage WebSocket connections in
Python. Pick another library for a callback-based API.
* If you're looking for a mixed HTTP / WebSocket library: ``websockets`` aims
at being an excellent implementation of :rfc:`6455`: The WebSocket Protocol
and :rfc:`7692`: Compression Extensions for WebSocket. Its support for HTTP
is minimal — just enough for an HTTP health check.
If you want to do both in the same server, look at HTTP + WebSocket servers
that build on top of ``websockets`` to support WebSocket connections, like
uvicorn_ or Sanic_.
.. _uvicorn: https://www.uvicorn.org/
.. _Sanic: https://sanic.dev/en/
What else?
----------
Bug reports, patches and suggestions are welcome!
To report a security vulnerability, please use the `Tidelift security
contact`_. Tidelift will coordinate the fix and disclosure.
.. _Tidelift security contact: https://tidelift.com/security
For anything else, please open an issue_ or send a `pull request`_.
.. _issue: https://github.com/python-websockets/websockets/issues/new
.. _pull request: https://github.com/python-websockets/websockets/compare/
Participants must uphold the `Contributor Covenant code of conduct`_.
.. _Contributor Covenant code of conduct: https://github.com/python-websockets/websockets/blob/main/CODE_OF_CONDUCT.md
``websockets`` is released under the `BSD license`_.
.. _BSD license: https://github.com/python-websockets/websockets/blob/main/LICENSE

View File

@@ -0,0 +1,106 @@
../../../bin/websockets,sha256=mwVdjgw8n3pGSQfn3HQbHD--UOLLPZg9OtgAvnOBy3c,226
websockets-15.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
websockets-15.0.1.dist-info/LICENSE,sha256=PWoMBQ2L7FL6utUC5F-yW9ArytvXDeo01Ee2oP9Obag,1514
websockets-15.0.1.dist-info/METADATA,sha256=VR5K6egG_PpJ2-GQ4hyd-Ck1geIlRMLQpvhB5qfnElQ,6817
websockets-15.0.1.dist-info/RECORD,,
websockets-15.0.1.dist-info/WHEEL,sha256=AgdMHnMTjkZpUyUKDovd66wbI5wZTb2aEgD7363XPtM,224
websockets-15.0.1.dist-info/entry_points.txt,sha256=Dnhn4dm5EsI4ZMAsHldGF6CwBXZrGXnR7cnK2-XR7zY,51
websockets-15.0.1.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
websockets/__init__.py,sha256=AC2Hq92uSc_WOo9_xvITpGshJ7Dy0Md5m2_ywsdSt_Y,7058
websockets/__main__.py,sha256=wu5N2wk8mvBgyvr2ghmQf4prezAe0_i-p123VVreyYc,62
websockets/__pycache__/__init__.cpython-312.pyc,,
websockets/__pycache__/__main__.cpython-312.pyc,,
websockets/__pycache__/auth.cpython-312.pyc,,
websockets/__pycache__/cli.cpython-312.pyc,,
websockets/__pycache__/client.cpython-312.pyc,,
websockets/__pycache__/connection.cpython-312.pyc,,
websockets/__pycache__/datastructures.cpython-312.pyc,,
websockets/__pycache__/exceptions.cpython-312.pyc,,
websockets/__pycache__/frames.cpython-312.pyc,,
websockets/__pycache__/headers.cpython-312.pyc,,
websockets/__pycache__/http.cpython-312.pyc,,
websockets/__pycache__/http11.cpython-312.pyc,,
websockets/__pycache__/imports.cpython-312.pyc,,
websockets/__pycache__/protocol.cpython-312.pyc,,
websockets/__pycache__/server.cpython-312.pyc,,
websockets/__pycache__/streams.cpython-312.pyc,,
websockets/__pycache__/typing.cpython-312.pyc,,
websockets/__pycache__/uri.cpython-312.pyc,,
websockets/__pycache__/utils.cpython-312.pyc,,
websockets/__pycache__/version.cpython-312.pyc,,
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/asyncio/__pycache__/__init__.cpython-312.pyc,,
websockets/asyncio/__pycache__/async_timeout.cpython-312.pyc,,
websockets/asyncio/__pycache__/client.cpython-312.pyc,,
websockets/asyncio/__pycache__/compatibility.cpython-312.pyc,,
websockets/asyncio/__pycache__/connection.cpython-312.pyc,,
websockets/asyncio/__pycache__/messages.cpython-312.pyc,,
websockets/asyncio/__pycache__/router.cpython-312.pyc,,
websockets/asyncio/__pycache__/server.cpython-312.pyc,,
websockets/asyncio/async_timeout.py,sha256=N-6Mubyiaoh66PAXGvCzhgxCM-7V2XiRnH32Xi6J6TE,8971
websockets/asyncio/client.py,sha256=lH083GGunFfEFzOpL1nPcp7ol4fp9n3lnhwnBE7KFL0,31490
websockets/asyncio/compatibility.py,sha256=gkenDDhzNbm6_iXV5Edvbvp6uHZYdrTvGNjt8P_JtyQ,786
websockets/asyncio/connection.py,sha256=6hoPpanp-TuirEIiOi6O2Pyq5wJQmE2osCqIKb22Xpo,48722
websockets/asyncio/messages.py,sha256=EfY6a6WW6gJdnENFqvVbzwm8noFJovKAQZwoFGf0p4s,10993
websockets/asyncio/router.py,sha256=TW2PRiEGEIunyEDf3X1-yabEwrni8a8-MP_wD8Wo0Io,6601
websockets/asyncio/server.py,sha256=oWrh9ZZ5yw3v99jpZ8cs2ajCw9ygdCjvH7ELh_Vxcr4,37385
websockets/auth.py,sha256=U_Jwmn59ZRQ6EecpOvMizQCG_ZbAvgUf1ik7haZRC3c,568
websockets/cli.py,sha256=YnegH59z93JxSVIGiXiWhR3ktgI6k1_pf_BRLanxKrQ,5336
websockets/client.py,sha256=hwaoOHuZhulxyUqEiU27Cx5oUSvJuHJRN65aip7bTvU,13564
websockets/connection.py,sha256=OLiMVkNd25_86sB8Q7CrCwBoXy9nA0OCgdgLRA8WUR8,323
websockets/datastructures.py,sha256=zj0emMN8pLtWyqg2l9aYnlJhat_8IzPhIuLCvhGkEj0,5615
websockets/exceptions.py,sha256=BczwKlo-oxgijKCLsuPp-PG77tDDWPy8vCFjAa5WylE,12811
websockets/extensions/__init__.py,sha256=QkZsxaJVllVSp1uhdD5uPGibdbx_091GrVVfS5LXcpw,98
websockets/extensions/__pycache__/__init__.cpython-312.pyc,,
websockets/extensions/__pycache__/base.cpython-312.pyc,,
websockets/extensions/__pycache__/permessage_deflate.cpython-312.pyc,,
websockets/extensions/base.py,sha256=JNfyk543C7VuPH0QOobiqKoGrzjJILje6sz5ILvOPl4,2903
websockets/extensions/permessage_deflate.py,sha256=_tu4-N4V6-UY9mhBhBTE009TSDqvY1y6PkYanIYphOM,25711
websockets/frames.py,sha256=p6e3R05-SKtMDcHh8SHYspFOHG1ei5yJvTWr5Lebxxs,12759
websockets/headers.py,sha256=yQnPljVZwV1_V-pOSRKNLG_u827wFC1h72cciojcQ8M,16046
websockets/http.py,sha256=T1tNLmbkFCneXQ6qepBmsVVDXyP9i500IVzTJTeBMR4,659
websockets/http11.py,sha256=a2IEvTU6E5UtozqdtWoam31rKn1POVKFwglaeTBSjuY,14925
websockets/imports.py,sha256=T_B9TUmHoceKMQ-PNphdQQAH2XdxAxwSQNeQEgqILkE,2795
websockets/legacy/__init__.py,sha256=wQ5zRIENGUS_5eKNAX9CRE7x1TwKapKimrQFFWN9Sxs,276
websockets/legacy/__pycache__/__init__.cpython-312.pyc,,
websockets/legacy/__pycache__/auth.cpython-312.pyc,,
websockets/legacy/__pycache__/client.cpython-312.pyc,,
websockets/legacy/__pycache__/exceptions.cpython-312.pyc,,
websockets/legacy/__pycache__/framing.cpython-312.pyc,,
websockets/legacy/__pycache__/handshake.cpython-312.pyc,,
websockets/legacy/__pycache__/http.cpython-312.pyc,,
websockets/legacy/__pycache__/protocol.cpython-312.pyc,,
websockets/legacy/__pycache__/server.cpython-312.pyc,,
websockets/legacy/auth.py,sha256=DcQcCSeVeP93JcH8vFWE0HIJL-X-f23LZ0DsJpav1So,6531
websockets/legacy/client.py,sha256=2JJqsVCHz4cXSTf--jSuUKvC04GcOYXEgy_1GQzxGMI,26985
websockets/legacy/exceptions.py,sha256=ViEjpoT09fzx_Zqf0aNGDVtRDNjXaOw0gdCta3LkjFc,1924
websockets/legacy/framing.py,sha256=RbLG5T9Y0zJoS0RybTJ-zpo3GVGjcwIt7aJkCTV29dg,6366
websockets/legacy/handshake.py,sha256=2Nzr5AN2xvDC5EdNP-kB3lOcrAaUNlYuj_-hr_jv7pM,5285
websockets/legacy/http.py,sha256=cOCQmDWhIKQmm8UWGXPW7CDZg03wjogCsb0LP9oetNQ,7061
websockets/legacy/protocol.py,sha256=GqPR2EIrYe0hcuOzqSa06jzX7mCNjUCSC6TpPzSzWaU,63902
websockets/legacy/server.py,sha256=BNhoo8Q6jDrmd42HrZlBYGL7xfiSoVvUB-yRBozh-D0,45250
websockets/protocol.py,sha256=Fyog1EsV8xthnJdX3MH9-bHbEGgPRC0tqwGWCPK4Jrg,26537
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/server.py,sha256=o2lPQgY7sgHaqst-wMcDtsixaEssapW_A7yZHGBzLiE,21565
websockets/speedups.c,sha256=j-damnT02MKRoYw8MtTT45qLGX6z6TnriqhTkyfcNZE,5767
websockets/speedups.cpython-312-x86_64-linux-gnu.so,sha256=3QmaMCm3-DmuIesjHt0234XcsD6QDU2073NNvxPtjb4,35968
websockets/speedups.pyi,sha256=NikZ3sAxs9Z2uWH_ZvctvMJUBbsHeC2D1L954EVSwJc,55
websockets/streams.py,sha256=kcI0JXNRqVPoVEhL67-urICwi0sgLNyPyWdccFzBuVU,4047
websockets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/sync/__pycache__/__init__.cpython-312.pyc,,
websockets/sync/__pycache__/client.cpython-312.pyc,,
websockets/sync/__pycache__/connection.cpython-312.pyc,,
websockets/sync/__pycache__/messages.cpython-312.pyc,,
websockets/sync/__pycache__/router.cpython-312.pyc,,
websockets/sync/__pycache__/server.cpython-312.pyc,,
websockets/sync/__pycache__/utils.cpython-312.pyc,,
websockets/sync/client.py,sha256=63X0yHNqZGMBKaVVYe5sreiyseXu3CwriSvPpk4Jhfo,22648
websockets/sync/connection.py,sha256=AvZnIgthHPkjEsxDRkupsHFEMqRlnASA1XkycTAbOgY,41574
websockets/sync/messages.py,sha256=mthVtlDkXDIqVU0aGxjb6EohDea6_eZVTWyDw5eZzkU,12607
websockets/sync/router.py,sha256=hf6eZvGU0W_BqjiC88DAIpKEB7swJ2wz8bJzwbiEJ54,6291
websockets/sync/server.py,sha256=hHckE3Tv1c8wG9CbxqB3SyMRgispSLcef4pM2ereFn0,27436
websockets/sync/utils.py,sha256=TtW-ncYFvJmiSW2gO86ngE2BVsnnBdL-4H88kWNDYbg,1107
websockets/typing.py,sha256=1Zt2P-lXTC3KJhOhzW2ILyEo1I5ZR9jHVP7b_rnJyQs,2025
websockets/uri.py,sha256=MpdIigZII7Rpw7_-61DisZwDtV-68v4YexzPmRP8Lhk,6986
websockets/utils.py,sha256=ZpH3WJLsQS29Jf5R6lTacxf_hPd8E4zS2JmGyNpg4bA,1150
websockets/version.py,sha256=POhkZh1W0RcVoqXZmWUHBR--4hr8-Bx_3-XDnyXotug,3204

View File

@@ -0,0 +1,8 @@
Wheel-Version: 1.0
Generator: setuptools (75.8.2)
Root-Is-Purelib: false
Tag: cp312-cp312-manylinux_2_5_x86_64
Tag: cp312-cp312-manylinux1_x86_64
Tag: cp312-cp312-manylinux_2_17_x86_64
Tag: cp312-cp312-manylinux2014_x86_64

View File

@@ -0,0 +1,2 @@
[console_scripts]
websockets = websockets.cli:main