diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-10 08:59:01 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 08:59:01 +0000 |
commit | 23020080dba89cf90ef02b4b9784ae12e7eb20f0 (patch) | |
tree | 2b4fa85e006f00311672c0af3b82192a3026bffb | |
parent | c14ed9ecd75aa0a468d1b3c23a069a282d74c112 (diff) |
automatic import of python-trio-websocket
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-trio-websocket.spec | 339 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 341 insertions, 0 deletions
@@ -0,0 +1 @@ +/trio-websocket-0.10.2.tar.gz diff --git a/python-trio-websocket.spec b/python-trio-websocket.spec new file mode 100644 index 0000000..de6804d --- /dev/null +++ b/python-trio-websocket.spec @@ -0,0 +1,339 @@ +%global _empty_manifest_terminate_build 0 +Name: python-trio-websocket +Version: 0.10.2 +Release: 1 +Summary: WebSocket library for Trio +License: MIT License +URL: https://github.com/HyperionGray/trio-websocket +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ea/56/33f46c824c43493de52d62842e569a8c3db6b0e965825257a0684a608580/trio-websocket-0.10.2.tar.gz +BuildArch: noarch + +Requires: python3-exceptiongroup +Requires: python3-trio +Requires: python3-wsproto + +%description +# Trio WebSocket + +This library implements both server and client aspects of the [the WebSocket +protocol](https://tools.ietf.org/html/rfc6455), striving for safety, +correctness, and ergonomics. It is based on the [wsproto +project](https://wsproto.readthedocs.io/en/latest/), which is a +[Sans-IO](https://sans-io.readthedocs.io/) state machine that implements the +majority of the WebSocket protocol, including framing, codecs, and events. This +library handles I/O using [the Trio +framework](https://trio.readthedocs.io/en/latest/). This library passes the +[Autobahn Test Suite](https://github.com/crossbario/autobahn-testsuite). + +This README contains a brief introduction to the project. Full documentation [is +available here](https://trio-websocket.readthedocs.io). + +[](https://pypi.org/project/trio-websocket/) + +[](https://github.com/HyperionGray/trio-websocket/actions/workflows/ci.yml) +[](https://trio-websocket.readthedocs.io) + +## Alternatives + +If you happen to only need a server, using Quart via the [quart-trio](https://github.com/pgjones/quart-trio) +extension may suffice. While trio-websocket is more flexible, Quart covers +both HTTP and WebSocket within a single framework, and serving both from the +same port is straightforward. There has yet to be a performance comparison. + +## Installation + +This library requires Python 3.7 or greater. To install from PyPI: + + pip install trio-websocket + +## Client Example + +This example demonstrates how to open a WebSocket URL: + +```python +import trio +from sys import stderr +from trio_websocket import open_websocket_url + + +async def main(): + try: + async with open_websocket_url('wss://echo.websocket.org') as ws: + await ws.send_message('hello world!') + message = await ws.get_message() + print('Received message: %s' % message) + except OSError as ose: + print('Connection attempt failed: %s' % ose, file=stderr) + +trio.run(main) +``` + +The WebSocket context manager connects automatically before entering the block +and disconnects automatically before exiting the block. The full API offers a +lot of flexibility and additional options. + +## Server Example + +A WebSocket server requires a bind address, a port, and a coroutine to handle +incoming connections. This example demonstrates an "echo server" that replies to +each incoming message with an identical outgoing message. + +```python +import trio +from trio_websocket import serve_websocket, ConnectionClosed + +async def echo_server(request): + ws = await request.accept() + while True: + try: + message = await ws.get_message() + await ws.send_message(message) + except ConnectionClosed: + break + +async def main(): + await serve_websocket(echo_server, '127.0.0.1', 8000, ssl_context=None) + +trio.run(main) +``` + +The server's handler ``echo_server(…)`` receives a connection request object. +This object can be used to inspect the client's request and modify the +handshake, then it can be exchanged for an actual WebSocket object ``ws``. +Again, the full API offers a lot of flexibility and additional options. + + +%package -n python3-trio-websocket +Summary: WebSocket library for Trio +Provides: python-trio-websocket +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-trio-websocket +# Trio WebSocket + +This library implements both server and client aspects of the [the WebSocket +protocol](https://tools.ietf.org/html/rfc6455), striving for safety, +correctness, and ergonomics. It is based on the [wsproto +project](https://wsproto.readthedocs.io/en/latest/), which is a +[Sans-IO](https://sans-io.readthedocs.io/) state machine that implements the +majority of the WebSocket protocol, including framing, codecs, and events. This +library handles I/O using [the Trio +framework](https://trio.readthedocs.io/en/latest/). This library passes the +[Autobahn Test Suite](https://github.com/crossbario/autobahn-testsuite). + +This README contains a brief introduction to the project. Full documentation [is +available here](https://trio-websocket.readthedocs.io). + +[](https://pypi.org/project/trio-websocket/) + +[](https://github.com/HyperionGray/trio-websocket/actions/workflows/ci.yml) +[](https://trio-websocket.readthedocs.io) + +## Alternatives + +If you happen to only need a server, using Quart via the [quart-trio](https://github.com/pgjones/quart-trio) +extension may suffice. While trio-websocket is more flexible, Quart covers +both HTTP and WebSocket within a single framework, and serving both from the +same port is straightforward. There has yet to be a performance comparison. + +## Installation + +This library requires Python 3.7 or greater. To install from PyPI: + + pip install trio-websocket + +## Client Example + +This example demonstrates how to open a WebSocket URL: + +```python +import trio +from sys import stderr +from trio_websocket import open_websocket_url + + +async def main(): + try: + async with open_websocket_url('wss://echo.websocket.org') as ws: + await ws.send_message('hello world!') + message = await ws.get_message() + print('Received message: %s' % message) + except OSError as ose: + print('Connection attempt failed: %s' % ose, file=stderr) + +trio.run(main) +``` + +The WebSocket context manager connects automatically before entering the block +and disconnects automatically before exiting the block. The full API offers a +lot of flexibility and additional options. + +## Server Example + +A WebSocket server requires a bind address, a port, and a coroutine to handle +incoming connections. This example demonstrates an "echo server" that replies to +each incoming message with an identical outgoing message. + +```python +import trio +from trio_websocket import serve_websocket, ConnectionClosed + +async def echo_server(request): + ws = await request.accept() + while True: + try: + message = await ws.get_message() + await ws.send_message(message) + except ConnectionClosed: + break + +async def main(): + await serve_websocket(echo_server, '127.0.0.1', 8000, ssl_context=None) + +trio.run(main) +``` + +The server's handler ``echo_server(…)`` receives a connection request object. +This object can be used to inspect the client's request and modify the +handshake, then it can be exchanged for an actual WebSocket object ``ws``. +Again, the full API offers a lot of flexibility and additional options. + + +%package help +Summary: Development documents and examples for trio-websocket +Provides: python3-trio-websocket-doc +%description help +# Trio WebSocket + +This library implements both server and client aspects of the [the WebSocket +protocol](https://tools.ietf.org/html/rfc6455), striving for safety, +correctness, and ergonomics. It is based on the [wsproto +project](https://wsproto.readthedocs.io/en/latest/), which is a +[Sans-IO](https://sans-io.readthedocs.io/) state machine that implements the +majority of the WebSocket protocol, including framing, codecs, and events. This +library handles I/O using [the Trio +framework](https://trio.readthedocs.io/en/latest/). This library passes the +[Autobahn Test Suite](https://github.com/crossbario/autobahn-testsuite). + +This README contains a brief introduction to the project. Full documentation [is +available here](https://trio-websocket.readthedocs.io). + +[](https://pypi.org/project/trio-websocket/) + +[](https://github.com/HyperionGray/trio-websocket/actions/workflows/ci.yml) +[](https://trio-websocket.readthedocs.io) + +## Alternatives + +If you happen to only need a server, using Quart via the [quart-trio](https://github.com/pgjones/quart-trio) +extension may suffice. While trio-websocket is more flexible, Quart covers +both HTTP and WebSocket within a single framework, and serving both from the +same port is straightforward. There has yet to be a performance comparison. + +## Installation + +This library requires Python 3.7 or greater. To install from PyPI: + + pip install trio-websocket + +## Client Example + +This example demonstrates how to open a WebSocket URL: + +```python +import trio +from sys import stderr +from trio_websocket import open_websocket_url + + +async def main(): + try: + async with open_websocket_url('wss://echo.websocket.org') as ws: + await ws.send_message('hello world!') + message = await ws.get_message() + print('Received message: %s' % message) + except OSError as ose: + print('Connection attempt failed: %s' % ose, file=stderr) + +trio.run(main) +``` + +The WebSocket context manager connects automatically before entering the block +and disconnects automatically before exiting the block. The full API offers a +lot of flexibility and additional options. + +## Server Example + +A WebSocket server requires a bind address, a port, and a coroutine to handle +incoming connections. This example demonstrates an "echo server" that replies to +each incoming message with an identical outgoing message. + +```python +import trio +from trio_websocket import serve_websocket, ConnectionClosed + +async def echo_server(request): + ws = await request.accept() + while True: + try: + message = await ws.get_message() + await ws.send_message(message) + except ConnectionClosed: + break + +async def main(): + await serve_websocket(echo_server, '127.0.0.1', 8000, ssl_context=None) + +trio.run(main) +``` + +The server's handler ``echo_server(…)`` receives a connection request object. +This object can be used to inspect the client's request and modify the +handshake, then it can be exchanged for an actual WebSocket object ``ws``. +Again, the full API offers a lot of flexibility and additional options. + + +%prep +%autosetup -n trio-websocket-0.10.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-trio-websocket -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.10.2-1 +- Package Spec generated @@ -0,0 +1 @@ +a53db2fdeffbccf687fb03a914211eaf trio-websocket-0.10.2.tar.gz |