diff options
Diffstat (limited to 'python-bitmex-trio-websocket.spec')
-rw-r--r-- | python-bitmex-trio-websocket.spec | 454 |
1 files changed, 454 insertions, 0 deletions
diff --git a/python-bitmex-trio-websocket.spec b/python-bitmex-trio-websocket.spec new file mode 100644 index 0000000..7d37959 --- /dev/null +++ b/python-bitmex-trio-websocket.spec @@ -0,0 +1,454 @@ +%global _empty_manifest_terminate_build 0 +Name: python-bitmex-trio-websocket +Version: 0.16.1 +Release: 1 +Summary: Websocket implementation for BitMEX cryptocurrency derivatives exchange. +License: MIT +URL: https://github.com/andersea/bitmex-trio-websocket +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/3d/73/54e2148e85ea46d6b0675d50f1d991f6df73137dbb49131fb4479f19ad03/bitmex-trio-websocket-0.16.1.tar.gz +BuildArch: noarch + +Requires: python3-sortedcontainers +Requires: python3-async_generator +Requires: python3-pendulum +Requires: python3-slurry-websocket + +%description +# BitMEX Trio-Websocket + + +[](https://pypi.python.org/pypi/bitmex-trio-websocket) +[](https://travis-ci.com/andersea/bitmex-trio-websocket) + +Websocket implementation for BitMEX cryptocurrency derivatives exchange. + +* Free software: MIT license + +## Features + +* Supports authenticated connections using api keys. +* Uses SortedDict as backend storage for easy and fast table searching. +* Fully async using async generators. No callbacks or event emitters. +* Based on [Slurry](https://slurry.readthedocs.io/en/latest/) and [Slurry-websocket](https://github.com/andersea/slurry-websocket). + +## Installation + +This library requires Python 3.7 or greater. + +To install from PyPI: + + pip install bitmex-trio-websocket + +## Client example + + import trio + from async_generator import aclosing + + from bitmex_trio_websocket import open_bitmex_websocket + from trio_websocket import ConnectionClosed + + async def main(): + async with open_bitmex_websocket('testnet') as bws: + async with aclosing(bws.listen('instrument')) as agen: + try: + async for msg in agen: + print(f'Received message, symbol: \'{msg["symbol"]}\', timestamp: \'{msg["timestamp"]}\'') + except ConnectionClosed as e: + print(e) + + if __name__ == '__main__': + trio.run(main) + +This will print a sequence of dicts for each received item on inserts (including partials) or updates. + +Multiple tables can be listened to concurrently, by running each listener in a seperate task using nursery.start_soon. + +## API + +-blue) + +Creates a new websocket object. + +This is an async context manager, so it needs to be used with the `async with .. as ..:` construct. The returned value is a BitMEXWebsocket object. + +**`network`** str + +Network to connect to. Options: 'mainnet', 'testnet'. + +**`api_key`** Optional\[str\] + +Api key for authenticated connections. + +**`api_secret`** Optional\[str\] + +Api secret for authenticated connections. + +**`dead_mans_switch`** Optional\[bool\] + +When enabled, the websocket will periodically send cancelAllAfter messages with a timeout of 60 seconds. The timer is refreshed every 15 seconds. + +See: https://www.bitmex.com/app/wsAPI#Dead-Mans-Switch-Auto-Cancel + + + + +-green) + +Subscribes to the channel and optionally a specific symbol. It is possible for multiple listeners +to be listening using the same subscription. + +Returns an async generator object that yields messages from the channel. + +If the websocket is closed, while a listener is still active, a [trio-websocket.ConnectionClosed](https://trio-websocket.readthedocs.io/en/stable/api.html#trio_websocket.ConnectionClosed) error will be raised by the generator, with the reason for the closure. + +**`table`** str + +Channel to subscribe to. + +**`symbol`** Optional[str] + +Optional symbol to subscribe to. + + + +This attribute contains the storage object for the websocket. The storage object caches the data tables for received +items. The implementation uses SortedDict from [Sorted Containers](http://www.grantjenks.com/docs/sortedcontainers/index.html), +to handle inserts, updates and deletes. + +The storage object has two public attributes `data`, and `keys`. + +`data` contains the table state for each channel as a dictionary with the table name as key. The tables are sorted dictionaries, stored with key tuples generated from each item using the keys schema received in the initial partial message. + +`data['orderBookL2']` is a special state dictionary for the orderBookL2 table. It is a double nested defaultdict, with a SortedDict containing each price level. The nested dictionaries are composed like this: + + # Special storage for orderBookL2 + # dict[symbol][side][id] + self.data['orderBookL2'] = defaultdict(lambda: defaultdict(SortedDict)) + +`keys` contains a mapping for lists of keys by which to look up values in each table. + +In addition the following helper methods are supplied: + +`make_key(table, match_data)` creates a key for searching the `data` table. Raises `ValueError` if `table == 'orderBookL2'`, since this table needs special indexing. + +`parse_timestamp(timestamp)` static method for converting BitMEX timestamps to datetime with timezone (UTC). + +## Credits + +Thanks to the [Trio](https://github.com/python-trio/trio) and [Trio-websocket](https://github.com/HyperionGray/trio-websocket) libraries for their awesome work. + +The library was originally based on the [reference client](https://github.com/BitMEX/api-connectors/tree/master/official-ws), but is now substantially redesigned. + +This package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the [audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) project template. + + +%package -n python3-bitmex-trio-websocket +Summary: Websocket implementation for BitMEX cryptocurrency derivatives exchange. +Provides: python-bitmex-trio-websocket +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-bitmex-trio-websocket +# BitMEX Trio-Websocket + + +[](https://pypi.python.org/pypi/bitmex-trio-websocket) +[](https://travis-ci.com/andersea/bitmex-trio-websocket) + +Websocket implementation for BitMEX cryptocurrency derivatives exchange. + +* Free software: MIT license + +## Features + +* Supports authenticated connections using api keys. +* Uses SortedDict as backend storage for easy and fast table searching. +* Fully async using async generators. No callbacks or event emitters. +* Based on [Slurry](https://slurry.readthedocs.io/en/latest/) and [Slurry-websocket](https://github.com/andersea/slurry-websocket). + +## Installation + +This library requires Python 3.7 or greater. + +To install from PyPI: + + pip install bitmex-trio-websocket + +## Client example + + import trio + from async_generator import aclosing + + from bitmex_trio_websocket import open_bitmex_websocket + from trio_websocket import ConnectionClosed + + async def main(): + async with open_bitmex_websocket('testnet') as bws: + async with aclosing(bws.listen('instrument')) as agen: + try: + async for msg in agen: + print(f'Received message, symbol: \'{msg["symbol"]}\', timestamp: \'{msg["timestamp"]}\'') + except ConnectionClosed as e: + print(e) + + if __name__ == '__main__': + trio.run(main) + +This will print a sequence of dicts for each received item on inserts (including partials) or updates. + +Multiple tables can be listened to concurrently, by running each listener in a seperate task using nursery.start_soon. + +## API + +-blue) + +Creates a new websocket object. + +This is an async context manager, so it needs to be used with the `async with .. as ..:` construct. The returned value is a BitMEXWebsocket object. + +**`network`** str + +Network to connect to. Options: 'mainnet', 'testnet'. + +**`api_key`** Optional\[str\] + +Api key for authenticated connections. + +**`api_secret`** Optional\[str\] + +Api secret for authenticated connections. + +**`dead_mans_switch`** Optional\[bool\] + +When enabled, the websocket will periodically send cancelAllAfter messages with a timeout of 60 seconds. The timer is refreshed every 15 seconds. + +See: https://www.bitmex.com/app/wsAPI#Dead-Mans-Switch-Auto-Cancel + + + + +-green) + +Subscribes to the channel and optionally a specific symbol. It is possible for multiple listeners +to be listening using the same subscription. + +Returns an async generator object that yields messages from the channel. + +If the websocket is closed, while a listener is still active, a [trio-websocket.ConnectionClosed](https://trio-websocket.readthedocs.io/en/stable/api.html#trio_websocket.ConnectionClosed) error will be raised by the generator, with the reason for the closure. + +**`table`** str + +Channel to subscribe to. + +**`symbol`** Optional[str] + +Optional symbol to subscribe to. + + + +This attribute contains the storage object for the websocket. The storage object caches the data tables for received +items. The implementation uses SortedDict from [Sorted Containers](http://www.grantjenks.com/docs/sortedcontainers/index.html), +to handle inserts, updates and deletes. + +The storage object has two public attributes `data`, and `keys`. + +`data` contains the table state for each channel as a dictionary with the table name as key. The tables are sorted dictionaries, stored with key tuples generated from each item using the keys schema received in the initial partial message. + +`data['orderBookL2']` is a special state dictionary for the orderBookL2 table. It is a double nested defaultdict, with a SortedDict containing each price level. The nested dictionaries are composed like this: + + # Special storage for orderBookL2 + # dict[symbol][side][id] + self.data['orderBookL2'] = defaultdict(lambda: defaultdict(SortedDict)) + +`keys` contains a mapping for lists of keys by which to look up values in each table. + +In addition the following helper methods are supplied: + +`make_key(table, match_data)` creates a key for searching the `data` table. Raises `ValueError` if `table == 'orderBookL2'`, since this table needs special indexing. + +`parse_timestamp(timestamp)` static method for converting BitMEX timestamps to datetime with timezone (UTC). + +## Credits + +Thanks to the [Trio](https://github.com/python-trio/trio) and [Trio-websocket](https://github.com/HyperionGray/trio-websocket) libraries for their awesome work. + +The library was originally based on the [reference client](https://github.com/BitMEX/api-connectors/tree/master/official-ws), but is now substantially redesigned. + +This package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the [audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) project template. + + +%package help +Summary: Development documents and examples for bitmex-trio-websocket +Provides: python3-bitmex-trio-websocket-doc +%description help +# BitMEX Trio-Websocket + + +[](https://pypi.python.org/pypi/bitmex-trio-websocket) +[](https://travis-ci.com/andersea/bitmex-trio-websocket) + +Websocket implementation for BitMEX cryptocurrency derivatives exchange. + +* Free software: MIT license + +## Features + +* Supports authenticated connections using api keys. +* Uses SortedDict as backend storage for easy and fast table searching. +* Fully async using async generators. No callbacks or event emitters. +* Based on [Slurry](https://slurry.readthedocs.io/en/latest/) and [Slurry-websocket](https://github.com/andersea/slurry-websocket). + +## Installation + +This library requires Python 3.7 or greater. + +To install from PyPI: + + pip install bitmex-trio-websocket + +## Client example + + import trio + from async_generator import aclosing + + from bitmex_trio_websocket import open_bitmex_websocket + from trio_websocket import ConnectionClosed + + async def main(): + async with open_bitmex_websocket('testnet') as bws: + async with aclosing(bws.listen('instrument')) as agen: + try: + async for msg in agen: + print(f'Received message, symbol: \'{msg["symbol"]}\', timestamp: \'{msg["timestamp"]}\'') + except ConnectionClosed as e: + print(e) + + if __name__ == '__main__': + trio.run(main) + +This will print a sequence of dicts for each received item on inserts (including partials) or updates. + +Multiple tables can be listened to concurrently, by running each listener in a seperate task using nursery.start_soon. + +## API + +-blue) + +Creates a new websocket object. + +This is an async context manager, so it needs to be used with the `async with .. as ..:` construct. The returned value is a BitMEXWebsocket object. + +**`network`** str + +Network to connect to. Options: 'mainnet', 'testnet'. + +**`api_key`** Optional\[str\] + +Api key for authenticated connections. + +**`api_secret`** Optional\[str\] + +Api secret for authenticated connections. + +**`dead_mans_switch`** Optional\[bool\] + +When enabled, the websocket will periodically send cancelAllAfter messages with a timeout of 60 seconds. The timer is refreshed every 15 seconds. + +See: https://www.bitmex.com/app/wsAPI#Dead-Mans-Switch-Auto-Cancel + + + + +-green) + +Subscribes to the channel and optionally a specific symbol. It is possible for multiple listeners +to be listening using the same subscription. + +Returns an async generator object that yields messages from the channel. + +If the websocket is closed, while a listener is still active, a [trio-websocket.ConnectionClosed](https://trio-websocket.readthedocs.io/en/stable/api.html#trio_websocket.ConnectionClosed) error will be raised by the generator, with the reason for the closure. + +**`table`** str + +Channel to subscribe to. + +**`symbol`** Optional[str] + +Optional symbol to subscribe to. + + + +This attribute contains the storage object for the websocket. The storage object caches the data tables for received +items. The implementation uses SortedDict from [Sorted Containers](http://www.grantjenks.com/docs/sortedcontainers/index.html), +to handle inserts, updates and deletes. + +The storage object has two public attributes `data`, and `keys`. + +`data` contains the table state for each channel as a dictionary with the table name as key. The tables are sorted dictionaries, stored with key tuples generated from each item using the keys schema received in the initial partial message. + +`data['orderBookL2']` is a special state dictionary for the orderBookL2 table. It is a double nested defaultdict, with a SortedDict containing each price level. The nested dictionaries are composed like this: + + # Special storage for orderBookL2 + # dict[symbol][side][id] + self.data['orderBookL2'] = defaultdict(lambda: defaultdict(SortedDict)) + +`keys` contains a mapping for lists of keys by which to look up values in each table. + +In addition the following helper methods are supplied: + +`make_key(table, match_data)` creates a key for searching the `data` table. Raises `ValueError` if `table == 'orderBookL2'`, since this table needs special indexing. + +`parse_timestamp(timestamp)` static method for converting BitMEX timestamps to datetime with timezone (UTC). + +## Credits + +Thanks to the [Trio](https://github.com/python-trio/trio) and [Trio-websocket](https://github.com/HyperionGray/trio-websocket) libraries for their awesome work. + +The library was originally based on the [reference client](https://github.com/BitMEX/api-connectors/tree/master/official-ws), but is now substantially redesigned. + +This package was created with [Cookiecutter](https://github.com/audreyr/cookiecutter) and the [audreyr/cookiecutter-pypackage](https://github.com/audreyr/cookiecutter-pypackage) project template. + + +%prep +%autosetup -n bitmex-trio-websocket-0.16.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-bitmex-trio-websocket -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.16.1-1 +- Package Spec generated |