From 89d093b418ebd7d410ca5b03ed526c4f504b5316 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 31 May 2023 04:45:09 +0000 Subject: automatic import of python-wsrpc-aiohttp --- .gitignore | 1 + python-wsrpc-aiohttp.spec | 546 ++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 548 insertions(+) create mode 100644 python-wsrpc-aiohttp.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..737a246 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/wsrpc-aiohttp-4.0.1.tar.gz diff --git a/python-wsrpc-aiohttp.spec b/python-wsrpc-aiohttp.spec new file mode 100644 index 0000000..9c1b101 --- /dev/null +++ b/python-wsrpc-aiohttp.spec @@ -0,0 +1,546 @@ +%global _empty_manifest_terminate_build 0 +Name: python-wsrpc-aiohttp +Version: 4.0.1 +Release: 1 +Summary: WSRPC is the RPC over WebSocket for aiohttp +License: Apache Software License +URL: https://github.com/wsrpc/wsrpc-aiohttp +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/37/b2/f0b31889e065a4fccb21aca7dd514a65dfba053c07c9bf4677301fdc83ea/wsrpc-aiohttp-4.0.1.tar.gz +BuildArch: noarch + +Requires: python3-aiohttp +Requires: python3-yarl +Requires: python3-typing-extensions +Requires: python3-async-timeout +Requires: python3-coverage +Requires: python3-coveralls +Requires: python3-orjson +Requires: python3-nox +Requires: python3-pytest +Requires: python3-pytest-aiohttp +Requires: python3-pytest-cov +Requires: python3-requests +Requires: python3-sphinx +Requires: python3-tox +Requires: python3-async-timeout +Requires: python3-coverage +Requires: python3-coveralls +Requires: python3-orjson +Requires: python3-pytest +Requires: python3-pytest-aiohttp +Requires: python3-pytest-cov + +%description +# WSRPC aiohttp + +[![Github Actions](https://github.com/wsrpc/wsrpc-aiohttp/workflows/tests/badge.svg)](https://github.com/wsrpc/wsrpc-aiohttp/actions?query=branch%3Amaster) + +[![Coveralls](https://coveralls.io/repos/github/wsrpc/wsrpc-aiohttp/badge.svg?branch=master)](https://coveralls.io/github/wsrpc/wsrpc-aiohttp?branch=master) + +[![Latest Version](https://img.shields.io/pypi/v/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![python wheel](https://img.shields.io/pypi/wheel/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![Python Versions](https://img.shields.io/pypi/pyversions/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![license](https://img.shields.io/pypi/l/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +Easy to use minimal WebSocket Remote Procedure Call library for aiohttp +servers. + +See [online demo](https://demo.wsrpc.info/) and +[documentation](https://docs.wsrpc.info/) with examples. + +## Features + +- Call server functions from the client side; +- Call client functions from the server (for example to notify clients + about events); +- Async connection protocol: both server or client are able to call + several functions and get responses as soon as each response would + be ready in any order. +- Fully async server-side functions; +- Transfer any exceptions from a client side to the server side and + vise versa; +- Ready-to-use frontend-library without dependencies; +- Thread-based websocket handler for writing fully-synchronous backend + code (for synchronous database drivers etc.) +- Protected server-side methods (cliens are not able to call methods, + starting with underline directly); +- Signals for introspection + +## Installation + +Install via pip: + + pip install wsrpc-aiohttp + +You may want to install *optional* +[ujson](https://pypi.python.org/pypi/ujson) library to speedup message +serialization/deserialization: + + pip install ujson + +Python module provides client js library out of the box. But for pure +javascript applications you can install [standalone js client +library](https://www.npmjs.com/package/@wsrpc/client) using npm: + + npm install @wsrpc/client + +## Usage + +Backend code: + +``` python +import logging +from time import time + +import aiohttp.web +from wsrpc_aiohttp import Route, STATIC_DIR, WebSocketRoute, decorators + + +log = logging.getLogger(__name__) + + +# This class can be called by client. +# Connection object will have this class instance after calling route-alias. +class TestRoute(Route): + # This method will be executed when client calls route-alias + # for the first time. + def init(self, **kwargs): + # Python __init__ must be return "self". + # This method might return anything. + return kwargs + + # This method named by camelCase because the client can call it. + @decorators.proxy + async def getEpoch(self): + + # You can execute functions on the client side + await self.do_notify() + + return time() + + # This method calls function on the client side + @decorators.proxy + async def do_notify(self): + awesome = 'Somebody executed test1.getEpoch method!' + await self.socket.call('notify', result=awesome) + + +app = aiohttp.web.Application() +app.router.add_route("*", "/ws/", WebSocketAsync) # Websocket route +app.router.add_static('/js', STATIC_DIR) # WSRPC js library +app.router.add_static('/', ".") # Your static files + +# Stateful request +# This is the route alias TestRoute as "test1" +WebSocketAsync.add_route('test1', TestRoute) + +# Stateless request +WebSocketAsync.add_route('test2', lambda *a, **kw: True) + + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + aiohttp.web.run_app(app, port=8000) +``` + +Frontend code: + +``` HTML + + +``` + +## Versioning + +This software follows [Semantic Versioning](http://semver.org/) + + + + +%package -n python3-wsrpc-aiohttp +Summary: WSRPC is the RPC over WebSocket for aiohttp +Provides: python-wsrpc-aiohttp +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-wsrpc-aiohttp +# WSRPC aiohttp + +[![Github Actions](https://github.com/wsrpc/wsrpc-aiohttp/workflows/tests/badge.svg)](https://github.com/wsrpc/wsrpc-aiohttp/actions?query=branch%3Amaster) + +[![Coveralls](https://coveralls.io/repos/github/wsrpc/wsrpc-aiohttp/badge.svg?branch=master)](https://coveralls.io/github/wsrpc/wsrpc-aiohttp?branch=master) + +[![Latest Version](https://img.shields.io/pypi/v/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![python wheel](https://img.shields.io/pypi/wheel/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![Python Versions](https://img.shields.io/pypi/pyversions/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![license](https://img.shields.io/pypi/l/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +Easy to use minimal WebSocket Remote Procedure Call library for aiohttp +servers. + +See [online demo](https://demo.wsrpc.info/) and +[documentation](https://docs.wsrpc.info/) with examples. + +## Features + +- Call server functions from the client side; +- Call client functions from the server (for example to notify clients + about events); +- Async connection protocol: both server or client are able to call + several functions and get responses as soon as each response would + be ready in any order. +- Fully async server-side functions; +- Transfer any exceptions from a client side to the server side and + vise versa; +- Ready-to-use frontend-library without dependencies; +- Thread-based websocket handler for writing fully-synchronous backend + code (for synchronous database drivers etc.) +- Protected server-side methods (cliens are not able to call methods, + starting with underline directly); +- Signals for introspection + +## Installation + +Install via pip: + + pip install wsrpc-aiohttp + +You may want to install *optional* +[ujson](https://pypi.python.org/pypi/ujson) library to speedup message +serialization/deserialization: + + pip install ujson + +Python module provides client js library out of the box. But for pure +javascript applications you can install [standalone js client +library](https://www.npmjs.com/package/@wsrpc/client) using npm: + + npm install @wsrpc/client + +## Usage + +Backend code: + +``` python +import logging +from time import time + +import aiohttp.web +from wsrpc_aiohttp import Route, STATIC_DIR, WebSocketRoute, decorators + + +log = logging.getLogger(__name__) + + +# This class can be called by client. +# Connection object will have this class instance after calling route-alias. +class TestRoute(Route): + # This method will be executed when client calls route-alias + # for the first time. + def init(self, **kwargs): + # Python __init__ must be return "self". + # This method might return anything. + return kwargs + + # This method named by camelCase because the client can call it. + @decorators.proxy + async def getEpoch(self): + + # You can execute functions on the client side + await self.do_notify() + + return time() + + # This method calls function on the client side + @decorators.proxy + async def do_notify(self): + awesome = 'Somebody executed test1.getEpoch method!' + await self.socket.call('notify', result=awesome) + + +app = aiohttp.web.Application() +app.router.add_route("*", "/ws/", WebSocketAsync) # Websocket route +app.router.add_static('/js', STATIC_DIR) # WSRPC js library +app.router.add_static('/', ".") # Your static files + +# Stateful request +# This is the route alias TestRoute as "test1" +WebSocketAsync.add_route('test1', TestRoute) + +# Stateless request +WebSocketAsync.add_route('test2', lambda *a, **kw: True) + + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + aiohttp.web.run_app(app, port=8000) +``` + +Frontend code: + +``` HTML + + +``` + +## Versioning + +This software follows [Semantic Versioning](http://semver.org/) + + + + +%package help +Summary: Development documents and examples for wsrpc-aiohttp +Provides: python3-wsrpc-aiohttp-doc +%description help +# WSRPC aiohttp + +[![Github Actions](https://github.com/wsrpc/wsrpc-aiohttp/workflows/tests/badge.svg)](https://github.com/wsrpc/wsrpc-aiohttp/actions?query=branch%3Amaster) + +[![Coveralls](https://coveralls.io/repos/github/wsrpc/wsrpc-aiohttp/badge.svg?branch=master)](https://coveralls.io/github/wsrpc/wsrpc-aiohttp?branch=master) + +[![Latest Version](https://img.shields.io/pypi/v/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![python wheel](https://img.shields.io/pypi/wheel/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![Python Versions](https://img.shields.io/pypi/pyversions/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +[![license](https://img.shields.io/pypi/l/wsrpc-aiohttp.svg)](https://pypi.python.org/pypi/wsrpc-aiohttp/) + +Easy to use minimal WebSocket Remote Procedure Call library for aiohttp +servers. + +See [online demo](https://demo.wsrpc.info/) and +[documentation](https://docs.wsrpc.info/) with examples. + +## Features + +- Call server functions from the client side; +- Call client functions from the server (for example to notify clients + about events); +- Async connection protocol: both server or client are able to call + several functions and get responses as soon as each response would + be ready in any order. +- Fully async server-side functions; +- Transfer any exceptions from a client side to the server side and + vise versa; +- Ready-to-use frontend-library without dependencies; +- Thread-based websocket handler for writing fully-synchronous backend + code (for synchronous database drivers etc.) +- Protected server-side methods (cliens are not able to call methods, + starting with underline directly); +- Signals for introspection + +## Installation + +Install via pip: + + pip install wsrpc-aiohttp + +You may want to install *optional* +[ujson](https://pypi.python.org/pypi/ujson) library to speedup message +serialization/deserialization: + + pip install ujson + +Python module provides client js library out of the box. But for pure +javascript applications you can install [standalone js client +library](https://www.npmjs.com/package/@wsrpc/client) using npm: + + npm install @wsrpc/client + +## Usage + +Backend code: + +``` python +import logging +from time import time + +import aiohttp.web +from wsrpc_aiohttp import Route, STATIC_DIR, WebSocketRoute, decorators + + +log = logging.getLogger(__name__) + + +# This class can be called by client. +# Connection object will have this class instance after calling route-alias. +class TestRoute(Route): + # This method will be executed when client calls route-alias + # for the first time. + def init(self, **kwargs): + # Python __init__ must be return "self". + # This method might return anything. + return kwargs + + # This method named by camelCase because the client can call it. + @decorators.proxy + async def getEpoch(self): + + # You can execute functions on the client side + await self.do_notify() + + return time() + + # This method calls function on the client side + @decorators.proxy + async def do_notify(self): + awesome = 'Somebody executed test1.getEpoch method!' + await self.socket.call('notify', result=awesome) + + +app = aiohttp.web.Application() +app.router.add_route("*", "/ws/", WebSocketAsync) # Websocket route +app.router.add_static('/js', STATIC_DIR) # WSRPC js library +app.router.add_static('/', ".") # Your static files + +# Stateful request +# This is the route alias TestRoute as "test1" +WebSocketAsync.add_route('test1', TestRoute) + +# Stateless request +WebSocketAsync.add_route('test2', lambda *a, **kw: True) + + +if __name__ == '__main__': + logging.basicConfig(level=logging.DEBUG) + aiohttp.web.run_app(app, port=8000) +``` + +Frontend code: + +``` HTML + + +``` + +## Versioning + +This software follows [Semantic Versioning](http://semver.org/) + + + + +%prep +%autosetup -n wsrpc-aiohttp-4.0.1 + +%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-wsrpc-aiohttp -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 31 2023 Python_Bot - 4.0.1-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..d69b905 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +4b3b08dcdc99fce8a9cde3ce27f5c39c wsrpc-aiohttp-4.0.1.tar.gz -- cgit v1.2.3