second commit

This commit is contained in:
2024-12-27 22:31:23 +09:00
parent 2353324570
commit 10a0f110ca
8819 changed files with 1307198 additions and 28 deletions

View File

@ -0,0 +1 @@
pip

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,176 @@
Metadata-Version: 2.1
Name: websockets
Version: 14.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
.. 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.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):
await asyncio.get_running_loop().create_future() # run 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 frameworks that
build on top of ``websockets`` to support WebSocket connections, like
Sanic_.
.. _Sanic: https://sanicframework.org/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,99 @@
websockets-14.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
websockets-14.1.dist-info/LICENSE,sha256=PWoMBQ2L7FL6utUC5F-yW9ArytvXDeo01Ee2oP9Obag,1514
websockets-14.1.dist-info/METADATA,sha256=RxrmDCrze-5ZDikOsdrc3HgB_GHY-CjZ2DI044-m3DQ,6727
websockets-14.1.dist-info/RECORD,,
websockets-14.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets-14.1.dist-info/WHEEL,sha256=Fk1Lf8ok5hJZa5A6XkrIQRJs3QYnqbg5xUnr-HaqXCs,109
websockets-14.1.dist-info/top_level.txt,sha256=CMpdKklxKsvZgCgyltxUWOHibZXZ1uYIVpca9xsQ8Hk,11
websockets/__init__.py,sha256=uPwwLEZsTNONjvnwusMqnqTo8_FcdVHZSY-tm8iYa04,5285
websockets/__main__.py,sha256=q6tBA72COhz7NUkuP_VG9IVypJjOexx2Oi7qkKNxneg,4756
websockets/__pycache__/__init__.cpython-311.pyc,,
websockets/__pycache__/__main__.cpython-311.pyc,,
websockets/__pycache__/auth.cpython-311.pyc,,
websockets/__pycache__/client.cpython-311.pyc,,
websockets/__pycache__/connection.cpython-311.pyc,,
websockets/__pycache__/datastructures.cpython-311.pyc,,
websockets/__pycache__/exceptions.cpython-311.pyc,,
websockets/__pycache__/frames.cpython-311.pyc,,
websockets/__pycache__/headers.cpython-311.pyc,,
websockets/__pycache__/http.cpython-311.pyc,,
websockets/__pycache__/http11.cpython-311.pyc,,
websockets/__pycache__/imports.cpython-311.pyc,,
websockets/__pycache__/protocol.cpython-311.pyc,,
websockets/__pycache__/server.cpython-311.pyc,,
websockets/__pycache__/streams.cpython-311.pyc,,
websockets/__pycache__/typing.cpython-311.pyc,,
websockets/__pycache__/uri.cpython-311.pyc,,
websockets/__pycache__/utils.cpython-311.pyc,,
websockets/__pycache__/version.cpython-311.pyc,,
websockets/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/asyncio/__pycache__/__init__.cpython-311.pyc,,
websockets/asyncio/__pycache__/async_timeout.cpython-311.pyc,,
websockets/asyncio/__pycache__/client.cpython-311.pyc,,
websockets/asyncio/__pycache__/compatibility.cpython-311.pyc,,
websockets/asyncio/__pycache__/connection.cpython-311.pyc,,
websockets/asyncio/__pycache__/messages.cpython-311.pyc,,
websockets/asyncio/__pycache__/server.cpython-311.pyc,,
websockets/asyncio/async_timeout.py,sha256=N-6Mubyiaoh66PAXGvCzhgxCM-7V2XiRnH32Xi6J6TE,8971
websockets/asyncio/client.py,sha256=nI7pRamZYfPVMock9SVjUAH8s_IB8TGGR0qYzGLSKYU,22002
websockets/asyncio/compatibility.py,sha256=gkenDDhzNbm6_iXV5Edvbvp6uHZYdrTvGNjt8P_JtyQ,786
websockets/asyncio/connection.py,sha256=mtILSa2ylDpy1mESkQgzzBUIoA13_ys57oEhB_QEqDI,47968
websockets/asyncio/messages.py,sha256=U8z-XurHmnKU2Xwht1wCx7ryYI8QcLsaPbDt4EdA2QU,10473
websockets/asyncio/server.py,sha256=v2Fox_hHOy-PsVDLq51Z_bVWY7j9tqVCsDjIyv_TxKw,37029
websockets/auth.py,sha256=U_Jwmn59ZRQ6EecpOvMizQCG_ZbAvgUf1ik7haZRC3c,568
websockets/client.py,sha256=05Ak73sW04VVauz7rb-dAuGiWzJl-ERTYNHlJRzeJ8k,13536
websockets/connection.py,sha256=OLiMVkNd25_86sB8Q7CrCwBoXy9nA0OCgdgLRA8WUR8,323
websockets/datastructures.py,sha256=g6zD6Mt7fPOeCB_ZBqiE7wrFbL5s5H_mQZ0oOlErSls,5600
websockets/exceptions.py,sha256=gNt1QTMO__em0xtM_EL8SbBE82D9Y1Aie28gtozUo7g,11671
websockets/extensions/__init__.py,sha256=QkZsxaJVllVSp1uhdD5uPGibdbx_091GrVVfS5LXcpw,98
websockets/extensions/__pycache__/__init__.cpython-311.pyc,,
websockets/extensions/__pycache__/base.cpython-311.pyc,,
websockets/extensions/__pycache__/permessage_deflate.cpython-311.pyc,,
websockets/extensions/base.py,sha256=zjs3fHPip45aGlDu9YvWqwr5T9XDGr8ED-oMft6h6to,2899
websockets/extensions/permessage_deflate.py,sha256=3yXw3hYtk6pRNT36hrXbNVI_4atMw_NR8RlUGfZO_wQ,25662
websockets/frames.py,sha256=ivOAba_oGvohcHi7zyVIze3N_cnF6waOXgOjg30dPL4,12742
websockets/headers.py,sha256=l_YCLE0Euj8cJG5jdCSf3tRcjmohzNXEcjB_hoVoHWg,15958
websockets/http.py,sha256=T1tNLmbkFCneXQ6qepBmsVVDXyP9i500IVzTJTeBMR4,659
websockets/http11.py,sha256=mia3DtjosNtaoiNnTy1nTTExYfmnIBFZsnUPUDErB8I,13403
websockets/imports.py,sha256=T_B9TUmHoceKMQ-PNphdQQAH2XdxAxwSQNeQEgqILkE,2795
websockets/legacy/__init__.py,sha256=wQ5zRIENGUS_5eKNAX9CRE7x1TwKapKimrQFFWN9Sxs,276
websockets/legacy/__pycache__/__init__.cpython-311.pyc,,
websockets/legacy/__pycache__/auth.cpython-311.pyc,,
websockets/legacy/__pycache__/client.cpython-311.pyc,,
websockets/legacy/__pycache__/exceptions.cpython-311.pyc,,
websockets/legacy/__pycache__/framing.cpython-311.pyc,,
websockets/legacy/__pycache__/handshake.cpython-311.pyc,,
websockets/legacy/__pycache__/http.cpython-311.pyc,,
websockets/legacy/__pycache__/protocol.cpython-311.pyc,,
websockets/legacy/__pycache__/server.cpython-311.pyc,,
websockets/legacy/auth.py,sha256=DcQcCSeVeP93JcH8vFWE0HIJL-X-f23LZ0DsJpav1So,6531
websockets/legacy/client.py,sha256=HgxHe_zozlYoseEW8f8OGlfC60L39BfCBNgBkohHTEY,26981
websockets/legacy/exceptions.py,sha256=JKpIERyBKs_oy3-_nMqx619AzGQkvzTdfCDx2kw44WA,1968
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=qVqzFgPAlFjICkI8TO1sLPwZJMnqC9_gIG3sEDzn6EU,45246
websockets/protocol.py,sha256=Fyog1EsV8xthnJdX3MH9-bHbEGgPRC0tqwGWCPK4Jrg,26537
websockets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
websockets/server.py,sha256=uZEgNa9htnmEdGtwpMspCuiWrsl6T_-WXvktSf1lhjI,20998
websockets/speedups.c,sha256=j-damnT02MKRoYw8MtTT45qLGX6z6TnriqhTkyfcNZE,5767
websockets/speedups.cpython-311-darwin.so,sha256=SfxI25btxaaSUx9ZKq9L1piPNaB2fNLg3HgqpkjDzoQ,51376
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-311.pyc,,
websockets/sync/__pycache__/client.cpython-311.pyc,,
websockets/sync/__pycache__/connection.cpython-311.pyc,,
websockets/sync/__pycache__/messages.cpython-311.pyc,,
websockets/sync/__pycache__/server.cpython-311.pyc,,
websockets/sync/__pycache__/utils.cpython-311.pyc,,
websockets/sync/client.py,sha256=FLWcCx5DJkYfHWUI7815JkCu4y_CXw1N8NCff75ieMo,12010
websockets/sync/connection.py,sha256=tDylCxouUOcUAaSSHd8wtcYog4FM67FdeX7Z9GQ7lhQ,36312
websockets/sync/messages.py,sha256=dql1yH8lKSU5e7j2ll6HBX_LcoA2J5XqFSxDwZjzZtU,11185
websockets/sync/server.py,sha256=Bxjo40rScNhUVBMj1dmejwKWfeQNETVwNYDTnrrL9aI,26450
websockets/sync/utils.py,sha256=TtW-ncYFvJmiSW2gO86ngE2BVsnnBdL-4H88kWNDYbg,1107
websockets/typing.py,sha256=V1pNSMgzJNfq8VknVcGdVgBGyoM0ZEkoVJxW6haXN1U,2017
websockets/uri.py,sha256=1r8dXNEiLcdMrCrzXmsy7DwSHiF3gaOWlmAdoFexOOM,3125
websockets/utils.py,sha256=ZpH3WJLsQS29Jf5R6lTacxf_hPd8E4zS2JmGyNpg4bA,1150
websockets/version.py,sha256=0T63uXAws-kx1ehQWsm6Eux02LX68xwdJPzJvufYq_Y,3202

View File

@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (75.4.0)
Root-Is-Purelib: false
Tag: cp311-cp311-macosx_11_0_arm64

View File

@ -0,0 +1 @@
websockets