chore: 添加虚拟环境到仓库
- 添加 backend_service/venv 虚拟环境 - 包含所有Python依赖包 - 注意:虚拟环境约393MB,包含12655个文件
This commit is contained in:
@@ -0,0 +1 @@
|
||||
pip
|
||||
@@ -0,0 +1,201 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: websocket-client
|
||||
Version: 1.9.0
|
||||
Summary: WebSocket client for Python with low level API options
|
||||
Home-page: https://github.com/websocket-client/websocket-client.git
|
||||
Download-URL: https://github.com/websocket-client/websocket-client/releases
|
||||
Author: liris
|
||||
Author-email: liris.pp@gmail.com
|
||||
Maintainer: engn33r
|
||||
Maintainer-email: websocket.client@proton.me
|
||||
License: Apache-2.0
|
||||
Project-URL: Documentation, https://websocket-client.readthedocs.io/
|
||||
Project-URL: Source, https://github.com/websocket-client/websocket-client/
|
||||
Keywords: websockets client
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
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
|
||||
Classifier: Operating System :: MacOS :: MacOS X
|
||||
Classifier: Operating System :: POSIX
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Topic :: Internet
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Intended Audience :: Developers
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE
|
||||
Provides-Extra: test
|
||||
Requires-Dist: pytest; extra == "test"
|
||||
Requires-Dist: websockets; extra == "test"
|
||||
Provides-Extra: optional
|
||||
Requires-Dist: python-socks; extra == "optional"
|
||||
Requires-Dist: wsaccel; extra == "optional"
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: Sphinx>=6.0; extra == "docs"
|
||||
Requires-Dist: sphinx_rtd_theme>=1.1.0; extra == "docs"
|
||||
Requires-Dist: myst-parser>=2.0.0; extra == "docs"
|
||||
Dynamic: author
|
||||
Dynamic: author-email
|
||||
Dynamic: classifier
|
||||
Dynamic: description
|
||||
Dynamic: description-content-type
|
||||
Dynamic: download-url
|
||||
Dynamic: home-page
|
||||
Dynamic: keywords
|
||||
Dynamic: license
|
||||
Dynamic: license-file
|
||||
Dynamic: maintainer
|
||||
Dynamic: maintainer-email
|
||||
Dynamic: project-url
|
||||
Dynamic: provides-extra
|
||||
Dynamic: requires-python
|
||||
Dynamic: summary
|
||||
|
||||
[](https://websocket-client.readthedocs.io/)
|
||||
[](https://github.com/websocket-client/websocket-client/actions/workflows/build.yml)
|
||||
[](https://codecov.io/gh/websocket-client/websocket-client)
|
||||
[](https://pepy.tech/project/websocket-client)
|
||||
[](https://pypi.org/project/websocket_client/)
|
||||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://github.com/psf/black)
|
||||
|
||||
# websocket-client
|
||||
|
||||
websocket-client is a WebSocket client for Python. It provides access
|
||||
to low level APIs for WebSockets. websocket-client implements version
|
||||
[hybi-13](https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-13)
|
||||
of the WebSocket protocol. This client does not currently support the
|
||||
permessage-deflate extension from
|
||||
[RFC 7692](https://tools.ietf.org/html/rfc7692).
|
||||
|
||||
## Documentation
|
||||
|
||||
This project's documentation can be found at
|
||||
[https://websocket-client.readthedocs.io/](https://websocket-client.readthedocs.io/)
|
||||
|
||||
## Contributing
|
||||
|
||||
Please see the [contribution guidelines](https://github.com/websocket-client/websocket-client/blob/master/CONTRIBUTING.md)
|
||||
|
||||
## Installation
|
||||
|
||||
You can use `pip install websocket-client` to install, or `pip install -e .`
|
||||
to install from a local copy of the code. This module is tested on Python 3.9+.
|
||||
|
||||
There are several optional dependencies that can be installed to enable
|
||||
specific websocket-client features.
|
||||
- To install `python-socks` for proxy usage and `wsaccel` for a minor performance boost, use:
|
||||
`pip install websocket-client[optional]`
|
||||
- To install `websockets` to run unit tests using the local echo server, use:
|
||||
`pip install websocket-client[test]`
|
||||
- To install `Sphinx` and `sphinx_rtd_theme` to build project documentation, use:
|
||||
`pip install websocket-client[docs]`
|
||||
|
||||
While not a strict dependency, [rel](https://github.com/bubbleboy14/registeredeventlistener)
|
||||
is useful when using `run_forever` with automatic reconnect. Install rel with `pip install rel`.
|
||||
|
||||
Footnote: Some shells, such as zsh, require you to escape the `[` and `]` characters with a `\`.
|
||||
|
||||
## Usage Tips
|
||||
|
||||
Check out the documentation's FAQ for additional guidelines:
|
||||
[https://websocket-client.readthedocs.io/en/latest/faq.html](https://websocket-client.readthedocs.io/en/latest/faq.html)
|
||||
|
||||
Known issues with this library include lack of WebSocket Compression
|
||||
support (RFC 7692) and [minimal threading documentation/support](https://websocket-client.readthedocs.io/en/latest/threading.html).
|
||||
|
||||
## Performance
|
||||
|
||||
The `send` and `validate_utf8` methods can sometimes be bottleneck.
|
||||
You can disable UTF8 validation in this library (and receive a
|
||||
performance enhancement) with the `skip_utf8_validation` parameter.
|
||||
If you want to get better performance, install wsaccel. While
|
||||
websocket-client does not depend on wsaccel, it will be used if
|
||||
available. wsaccel doubles the speed of UTF8 validation and
|
||||
offers a very minor 10% performance boost when masking the
|
||||
payload data as part of the `send` process. Numpy used to
|
||||
be a suggested performance enhancement alternative, but
|
||||
[issue #687](https://github.com/websocket-client/websocket-client/issues/687)
|
||||
found it didn't help.
|
||||
|
||||
## Examples
|
||||
|
||||
Many more examples are found in the
|
||||
[examples documentation](https://websocket-client.readthedocs.io/en/latest/examples.html).
|
||||
|
||||
### Long-lived Connection
|
||||
|
||||
Most real-world WebSockets situations involve longer-lived connections.
|
||||
The WebSocketApp `run_forever` loop will automatically try to reconnect
|
||||
to an open WebSocket connection when a network
|
||||
connection is lost if it is provided with:
|
||||
|
||||
- a `dispatcher` argument (async dispatcher like rel or pyevent)
|
||||
- a non-zero `reconnect` argument (delay between disconnection and attempted reconnection)
|
||||
|
||||
`run_forever` provides a variety of event-based connection controls
|
||||
using callbacks like `on_message` and `on_error`.
|
||||
`run_forever` **does not automatically reconnect** if the server
|
||||
closes the WebSocket gracefully (returning
|
||||
[a standard websocket close code](https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1)).
|
||||
[This is the logic](https://github.com/websocket-client/websocket-client/pull/838#issuecomment-1228454826) behind the decision.
|
||||
Customizing behavior when the server closes
|
||||
the WebSocket should be handled in the `on_close` callback.
|
||||
This example uses [rel](https://github.com/bubbleboy14/registeredeventlistener)
|
||||
for the dispatcher to provide automatic reconnection.
|
||||
|
||||
```python
|
||||
import websocket
|
||||
import _thread
|
||||
import time
|
||||
import rel
|
||||
|
||||
def on_message(ws, message):
|
||||
print(message)
|
||||
|
||||
def on_error(ws, error):
|
||||
print(error)
|
||||
|
||||
def on_close(ws, close_status_code, close_msg):
|
||||
print("### closed ###")
|
||||
|
||||
def on_open(ws):
|
||||
print("Opened connection")
|
||||
|
||||
if __name__ == "__main__":
|
||||
websocket.enableTrace(True)
|
||||
ws = websocket.WebSocketApp("wss://api.gemini.com/v1/marketdata/BTCUSD",
|
||||
on_open=on_open,
|
||||
on_message=on_message,
|
||||
on_error=on_error,
|
||||
on_close=on_close)
|
||||
|
||||
ws.run_forever(dispatcher=rel, reconnect=5) # Set dispatcher to automatic reconnection, 5 second reconnect delay if connection closed unexpectedly
|
||||
rel.signal(2, rel.abort) # Keyboard Interrupt
|
||||
rel.dispatch()
|
||||
```
|
||||
|
||||
### Short-lived Connection
|
||||
|
||||
This is if you want to communicate a short message and disconnect
|
||||
immediately when done. For example, if you want to confirm that a WebSocket
|
||||
server is running and responds properly to a specific request.
|
||||
|
||||
```python
|
||||
from websocket import create_connection
|
||||
|
||||
ws = create_connection("ws://echo.websocket.events/")
|
||||
print(ws.recv())
|
||||
print("Sending 'Hello, World'...")
|
||||
ws.send("Hello, World")
|
||||
print("Sent")
|
||||
print("Receiving...")
|
||||
result = ws.recv()
|
||||
print("Received '%s'" % result)
|
||||
ws.close()
|
||||
```
|
||||
@@ -0,0 +1,74 @@
|
||||
../../../bin/wsdump,sha256=SmQBAq46Yz8O0yWM7oXoO7B6AHa4k1ZzywfyJ0ViiM4,235
|
||||
websocket/__init__.py,sha256=I3CZijeQ5Rkn6HxnwO6QZdNeZbuYEwXBOB62e_y5xp0,958
|
||||
websocket/__pycache__/__init__.cpython-313.pyc,,
|
||||
websocket/__pycache__/_abnf.cpython-313.pyc,,
|
||||
websocket/__pycache__/_app.cpython-313.pyc,,
|
||||
websocket/__pycache__/_cookiejar.cpython-313.pyc,,
|
||||
websocket/__pycache__/_core.cpython-313.pyc,,
|
||||
websocket/__pycache__/_dispatcher.cpython-313.pyc,,
|
||||
websocket/__pycache__/_exceptions.cpython-313.pyc,,
|
||||
websocket/__pycache__/_handshake.cpython-313.pyc,,
|
||||
websocket/__pycache__/_http.cpython-313.pyc,,
|
||||
websocket/__pycache__/_logging.cpython-313.pyc,,
|
||||
websocket/__pycache__/_socket.cpython-313.pyc,,
|
||||
websocket/__pycache__/_ssl_compat.cpython-313.pyc,,
|
||||
websocket/__pycache__/_url.cpython-313.pyc,,
|
||||
websocket/__pycache__/_utils.cpython-313.pyc,,
|
||||
websocket/__pycache__/_wsdump.cpython-313.pyc,,
|
||||
websocket/_abnf.py,sha256=RA4YpPUqFhgUjQZi3nFzejQY8qt5fpSRCOTNVVi4xKI,15649
|
||||
websocket/_app.py,sha256=o_9M84DHP16PZPYtHpL_z6IQ8-lpMbDjlXmzpyNAaPo,23686
|
||||
websocket/_cookiejar.py,sha256=0VbGaki2nZf-qC_iEDxa_hVxid2EPmqYJ3cKxPDOWRo,2346
|
||||
websocket/_core.py,sha256=3Xdnig87pa3Lz_rc9GV8zFd-EoRPhOi_q3utNmdUY3c,21856
|
||||
websocket/_dispatcher.py,sha256=HHM4QOJ9s6OOrRdQxQD0JugP_C-N352aUwI1NqBcdTs,4592
|
||||
websocket/_exceptions.py,sha256=avW2kjXe2sgby-hsUW_QNIuMN6cM3TXf3tBmnSZznis,2178
|
||||
websocket/_handshake.py,sha256=WScX-WwtgJBIv-v3YDFJdiUIDbaSa9PcAd2LXpEzNK4,6837
|
||||
websocket/_http.py,sha256=aJpOlMYcz6iPb036TcJWWDDInFOdLrEWGkGwvw0q19Q,14676
|
||||
websocket/_logging.py,sha256=k7OXNnIh3UdSKNHdZWOR6PeZ3k1AZTpTNjgy8Encwpw,2254
|
||||
websocket/_socket.py,sha256=lVZwjro2qGxcoDmkJfcWhamLApsXyqQWX7_7AhHeVKg,6046
|
||||
websocket/_ssl_compat.py,sha256=hkC7PiQ6ZkH82a6DneNRHCdKypNvQESrIbgS7j3RqW8,1800
|
||||
websocket/_url.py,sha256=4WNYIrWsDVFaZggncSuvBVqZU2ERwMW3tzyByPEp7Eg,5154
|
||||
websocket/_utils.py,sha256=Q6En3DqyActKN5A8DZb_S6AUrecnSjH_kqCj3VXedTI,6983
|
||||
websocket/_wsdump.py,sha256=nXf2mH7sVHHhNCW0z1g2w--7_WLsd8knD9lWNyMi4-w,7025
|
||||
websocket/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
websocket/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
websocket/tests/__pycache__/__init__.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/echo-server.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_abnf.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_app.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_cookiejar.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_dispatcher.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_handshake_large_response.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_http.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_large_payloads.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_socket.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_socket_bugs.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_ssl_compat.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_ssl_edge_cases.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_url.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_utils.cpython-313.pyc,,
|
||||
websocket/tests/__pycache__/test_websocket.cpython-313.pyc,,
|
||||
websocket/tests/data/header01.txt,sha256=eR9UDpnf7mREys9MttKytzB5OXA5IwOGWJZKmaF4II8,163
|
||||
websocket/tests/data/header02.txt,sha256=1HzQGIMG0OGwfnboRkUqwbTEg2nTevOX2Waj0gQARaw,161
|
||||
websocket/tests/data/header03.txt,sha256=l_soTbfEWjZTLC5Ydx2U8uj8NJ30IwAc8yo5IUG5fyQ,216
|
||||
websocket/tests/echo-server.py,sha256=yYwKXimgqo6gHFjGgqhkADb6fRncSrF-OewX6UinZVg,482
|
||||
websocket/tests/test_abnf.py,sha256=R4QQVCedzcAs7vFTVzur6m3rn4Y-qeIolHaEhAS3vgU,4629
|
||||
websocket/tests/test_app.py,sha256=VL9pdeLxlQrGBnv1yU2roIVHCfNocKn29eqdrgQzWbY,14150
|
||||
websocket/tests/test_cookiejar.py,sha256=NDOzlQqGGbE2A5NDaZuEK7Lc7SF39tEVhbG4SIN3SJU,4395
|
||||
websocket/tests/test_dispatcher.py,sha256=Pd0cqdhbnsrUgqVDjWMn7x2jgEaOB7oxQndp0ypTmBU,13446
|
||||
websocket/tests/test_handshake_large_response.py,sha256=Phpwe_xeeZ-tctGKO6bVTg8N-MUgXhCv95TCYiO8n3I,6165
|
||||
websocket/tests/test_http.py,sha256=zbtMX7RGEj7wkgpav82jcqCLPhqA2XIqMgr1MM0TaMQ,12461
|
||||
websocket/tests/test_large_payloads.py,sha256=NnhryYBbUpmEXHXCai6Tl47ZC87geL1geqwrS_L5Bqk,10064
|
||||
websocket/tests/test_socket.py,sha256=Rbok7KEK87Zvlkopwc2QTx2_ShVQR3KK56RBsYkfPKI,12971
|
||||
websocket/tests/test_socket_bugs.py,sha256=TV3ycFYTsw0yDi_AsGWgqiutasbcIAO6V0VhbG5NgcQ,6408
|
||||
websocket/tests/test_ssl_compat.py,sha256=N-wKgN_bktOO7N8kSi1-bhRXvzBXtNYxaE3svbidRtA,3467
|
||||
websocket/tests/test_ssl_edge_cases.py,sha256=qLV9tYrOoxMXPrM5iE2VssBjEQJS59FggFymXHjBKpI,24932
|
||||
websocket/tests/test_url.py,sha256=wwX92RoDY0edDKwyD_Ot3rK24lxtjZ448i1YDWMqqts,18268
|
||||
websocket/tests/test_utils.py,sha256=v01GZJ-guDR6LfjuTf6ryZ6bj8Gn7F74_aVdPxcUxJc,5441
|
||||
websocket/tests/test_websocket.py,sha256=NRNglZnlRZIryRGxYQdpUGTPk0Ai436wHoA1Ow5YC5k,18430
|
||||
websocket_client-1.9.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
websocket_client-1.9.0.dist-info/METADATA,sha256=Kc_Exsui3P2HVxKPiT1p6hP-dZgVPEhUIywgQFpJO7E,8337
|
||||
websocket_client-1.9.0.dist-info/RECORD,,
|
||||
websocket_client-1.9.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
||||
websocket_client-1.9.0.dist-info/entry_points.txt,sha256=IoCGCuANLuLxE3m2QXEd2Ip57qScBjf7RfQnkjn6DNE,50
|
||||
websocket_client-1.9.0.dist-info/licenses/LICENSE,sha256=162NCWaqNj1Fx7FrCDjK3NUWdqzfIVrZZzB9WBtHhyw,11339
|
||||
websocket_client-1.9.0.dist-info/top_level.txt,sha256=8m_tTpcUlzWGl8v-pj5Wi7XhAFaN1_bLKRHQKCyz5_I,10
|
||||
@@ -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]
|
||||
wsdump = websocket._wsdump:main
|
||||
@@ -0,0 +1,203 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2025 engn33r
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
websocket
|
||||
Reference in New Issue
Block a user