%define scl rh-python36 %{?scl:%scl_package %{name}} %{!?scl:%global pkg_name %{name}} %define name aioredis %define version 1.3.1 %define unmangled_version 1.3.1 %define unmangled_version 1.3.1 %define release 1 Summary: asyncio (PEP 3156) Redis support %{?scl:Requires: %{scl}-runtime} %{?scl:BuildRequires: %{scl}-runtime} Name: %{?scl_prefix}aioredis Version: %{version} Release: %{release} Source0: aioredis-%{unmangled_version}.tar.gz License: MIT Group: Development/Libraries BuildRoot: %{_tmppath}/aioredis-%{version}-%{release}-buildroot Prefix: %{_prefix} BuildArch: noarch Vendor: Alexey Popravka Packager: Martin Juhl Url: https://github.com/aio-libs/aioredis %description aioredis ======== asyncio (PEP 3156) Redis client library. .. image:: https://travis-ci.com/aio-libs/aioredis.svg?branch=master :target: https://travis-ci.com/aio-libs/aioredis .. image:: https://codecov.io/gh/aio-libs/aioredis/branch/master/graph/badge.svg :target: https://codecov.io/gh/aio-libs/aioredis .. image:: https://ci.appveyor.com/api/projects/status/wngyx6s98o6hsxmt/branch/master?svg=true :target: https://ci.appveyor.com/project/popravich/aioredis Features -------- ================================ ============================== hiredis_ parser Yes Pure-python parser Yes Low-level & High-level APIs Yes Connections Pool Yes Pipelining support Yes Pub/Sub support Yes SSL/TLS support Yes Sentinel support Yes Redis Cluster support WIP Trollius (python 2.7) No Tested CPython versions `3.5.3, 3.6, 3.7 `_ [1]_ Tested PyPy3 versions `pypy3.5-7.0 pypy3.6-7.1.1 `_ Tested for Redis server `2.6, 2.8, 3.0, 3.2, 4.0 5.0 `_ Support for dev Redis server through low-level API ================================ ============================== .. [1] For Python 3.3, 3.4 support use aioredis v0.3. Documentation ------------- http://aioredis.readthedocs.io/ Usage example ------------- Simple high-level interface with connections pool: .. code:: python import asyncio import aioredis async def go(): redis = await aioredis.create_redis_pool( 'redis://localhost') await redis.set('my-key', 'value') val = await redis.get('my-key', encoding='utf-8') print(val) redis.close() await redis.wait_closed() asyncio.run(go()) # will print 'value' Requirements ------------ * Python_ 3.5.3+ * hiredis_ .. note:: hiredis is preferred requirement. Pure-python protocol parser is implemented as well and can be used through ``parser`` parameter. Benchmarks ---------- Benchmarks can be found here: https://github.com/popravich/python-redis-benchmark Discussion list --------------- *aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs Or gitter room: https://gitter.im/aio-libs/Lobby License ------- The aioredis is offered under MIT license. .. _Python: https://www.python.org .. _hiredis: https://pypi.python.org/pypi/hiredis .. _travis: https://travis-ci.com/aio-libs/aioredis Changes ------- .. towncrier release notes start 1.3.1 (2019-12-02) ^^^^^^^^^^^^^^^^^^ Bugfixes ~~~~~~~~ - Fix transaction data decoding (see `#657 `_); - Fix duplicate calls to ``pool.wait_closed()`` upon ``create_pool()`` exception. (see `#671 `_); Deprecations and Removals ~~~~~~~~~~~~~~~~~~~~~~~~~ - Drop explicit loop requirement in API. Deprecate ``loop`` argument. Throw warning in Python 3.8+ if explicit ``loop`` is passed to methods. (see `#666 `_); Misc ~~~~ - `#643 `_, `#646 `_, `#648 `_; 1.3.0 (2019-09-24) ^^^^^^^^^^^^^^^^^^ Features ~~~~~~~~ - Added ``xdel`` and ``xtrim`` method which missed in ``commands/streams.py`` & also added unit test code for them (see `#438 `_); - Add ``count`` argument to ``spop`` command (see `#485 `_); - Add support for ``zpopmax`` and ``zpopmin`` redis commands (see `#550 `_); - Add ``towncrier``: change notes are now stored in ``CHANGES.txt`` (see `#576 `_); - Type hints for the library (see `#584 `_); - A few additions to the sorted set commands: - the blocking pop commands: ``BZPOPMAX`` and ``BZPOPMIN`` - the ``CH`` and ``INCR`` options of the ``ZADD`` command (see `#618 `_); - Added ``no_ack`` parameter to ``xread_group`` streams method in ``commands/streams.py`` (see `#625 `_); Bugfixes ~~~~~~~~ - Fix for sensitive logging (see `#459 `_); - Fix slow memory leak in ``wait_closed`` implementation (see `#498 `_); - Fix handling of instances were Redis returns null fields for a stream message (see `#605 `_); Improved Documentation ~~~~~~~~~~~~~~~~~~~~~~ - Rewrite "Getting started" documentation. (see `#641 `_); Misc ~~~~ - `#585 `_, `#611 `_, `#612 `_, `#619 `_, `#620 `_, `#642 `_; 1.2.0 (2018-10-24) ^^^^^^^^^^^^^^^^^^ **NEW**: * Implemented new Stream command support (see `#299 `_); * Reduce ``encode_command()`` cost about 60% (see `#397 `_); **FIX**: * Fix pipeline commands buffering was causing multiple ``sendto`` syscalls (see `#464 `_ and `#473 `_); * Python 3.7 compatibility fixes (see `#426 `_); * Fix typos in documentation (see `#400 `_); * Fix ``INFO`` command result parsing (see `#405 `_); * Fix bug in ``ConnectionsPool._drop_closed`` method (see `#461 `_); **MISC**: * Update dependencies versions; * Multiple tests improvements; 1.1.0 (2018-02-16) ^^^^^^^^^^^^^^^^^^ **NEW**: * Implement new commands: ``wait``, ``touch``, ``swapdb``, ``unlink`` (see `#376 `_); * Add ``async_op`` argument to ``flushall`` and ``flushdb`` commands (see `#364 `_, and `#370 `_); **FIX**: * **Important!** Fix Sentinel sentinel client with pool ``minsize`` greater than 1 (see `#380 `_); * Fix ``SentinelPool.discover_timeout`` usage (see `#379 `_); * Fix ``Receiver`` hang on disconnect (see `#354 `_, and `#366 `_); * Fix an issue with ``subscribe``/``psubscribe`` with empty pool (see `#351 `_, and `#355 `_); * Fix an issue when ``StreamReader``'s feed_data is called before set_parser (see `#347 `_); **MISC**: * Update dependencies versions; * Multiple test fixes; 1.0.0 (2017-11-17) ^^^^^^^^^^^^^^^^^^ **NEW**: * **Important!** Drop Python 3.3, 3.4 support; (see `#321 `_, `#323 `_ and `#326 `_); * **Important!** Connections pool has been refactored; now ``create_redis`` function will yield ``Redis`` instance instead of ``RedisPool`` (see `#129 `_); * **Important!** Change sorted set commands reply format: return list of tuples instead of plain list for commands accepting ``withscores`` argument (see `#334 `_); * **Important!** Change ``hscan`` command reply format: return list of tuples instead of mixed key-value list (see `#335 `_); * Implement Redis URI support as supported ``address`` argument value (see `#322 `_); * Dropped ``create_reconnecting_redis``, ``create_redis_pool`` should be used instead; * Implement custom ``StreamReader`` (see `#273 `_); * Implement Sentinel support (see `#181 `_); * Implement pure-python parser (see `#212 `_); * Add ``migrate_keys`` command (see `#187 `_); * Add ``zrevrangebylex`` command (see `#201 `_); * Add ``command``, ``command_count``, ``command_getkeys`` and ``command_info`` commands (see `#229 `_); * Add ``ping`` support in pubsub connection (see `#264 `_); * Add ``exist`` parameter to ``zadd`` command (see `#288 `_); * Add ``MaxClientsError`` and implement ``ReplyError`` specialization (see `#325 `_); * Add ``encoding`` parameter to sorted set commands (see `#289 `_); **FIX**: * Fix ``CancelledError`` in ``conn._reader_task`` (see `#301 `_); * Fix pending commands cancellation with ``CancelledError``, use explicit exception instead of calling ``cancel()`` method (see `#316 `_); * Correct error message on Sentinel discovery of master/slave with password (see `#327 `_); * Fix ``bytearray`` support as command argument (see `#329 `_); * Fix critical bug in patched asyncio.Lock (see `#256 `_); * Fix Multi/Exec transaction canceled error (see `#225 `_); * Add missing arguments to ``create_redis`` and ``create_redis_pool``; * Fix deprecation warning (see `#191 `_); * Make correct ``__aiter__()`` (see `#192 `_); * Backward compatibility fix for ``with (yield from pool) as conn:`` (see `#205 `_); * Fixed pubsub receiver stop() (see `#211 `_); **MISC**: * Multiple test fixes; * Add PyPy3 to build matrix; * Update dependencies versions; * Add missing Python 3.6 classifier; 0.3.5 (2017-11-08) ^^^^^^^^^^^^^^^^^^ **FIX**: * Fix for indistinguishable futures cancellation with ``asyncio.CancelledError`` (see `#316 `_), cherry-picked from master; 0.3.4 (2017-10-25) ^^^^^^^^^^^^^^^^^^ **FIX**: * Fix time command result decoding when using connection-wide encoding setting (see `#266 `_); 0.3.3 (2017-06-30) ^^^^^^^^^^^^^^^^^^ **FIX**: * Critical bug fixed in patched asyncio.Lock (see `#256 `_); 0.3.2 (2017-06-21) ^^^^^^^^^^^^^^^^^^ **NEW**: * Added ``zrevrangebylex`` command (see `#201 `_), cherry-picked from master; * Add connection timeout (see `#221 `_), cherry-picked from master; **FIX**: * Fixed pool close warning (see `#239 `_ and `#236 `_), cherry-picked from master; * Fixed asyncio Lock deadlock issue (see `#231 `_ and `#241 `_); 0.3.1 (2017-05-09) ^^^^^^^^^^^^^^^^^^ **FIX**: * Fix pubsub Receiver missing iter() method (see `#203 `_); 0.3.0 (2017-01-11) ^^^^^^^^^^^^^^^^^^ **NEW**: * Pub/Sub connection commands accept ``Channel`` instances (see `#168 `_); * Implement new Pub/Sub MPSC (multi-producers, single-consumer) Queue -- ``aioredis.pubsub.Receiver`` (see `#176 `_); * Add ``aioredis.abc`` module providing abstract base classes defining interface for basic lib components; (see `#176 `_); * Implement Geo commands support (see `#177 `_ and `#179 `_); **FIX**: * Minor tests fixes; **MISC**: * Update examples and docs to use ``async``/``await`` syntax also keeping ``yield from`` examples for history (see `#173 `_); * Reflow Travis CI configuration; add Python 3.6 section (see `#170 `_); * Add AppVeyor integration to run tests on Windows (see `#180 `_); * Update multiple development requirements; 0.2.9 (2016-10-24) ^^^^^^^^^^^^^^^^^^ **NEW**: * Allow multiple keys in ``EXISTS`` command (see `#156 `_ and `#157 `_); **FIX**: * Close RedisPool when connection to Redis failed (see `#136 `_); * Add simple ``INFO`` command argument validation (see `#140 `_); * Remove invalid uses of ``next()`` **MISC**: * Update devel.rst docs; update Pub/Sub Channel docs (cross-refs); * Update MANIFEST.in to include docs, examples and tests in source bundle; 0.2.8 (2016-07-22) ^^^^^^^^^^^^^^^^^^ **NEW**: * Add ``hmset_dict`` command (see `#130 `_); * Add ``RedisConnection.address`` property; * RedisPool ``minsize``/``maxsize`` must not be ``None``; * Implement ``close()``/``wait_closed()``/``closed`` interface for pool (see `#128 `_); **FIX**: * Add test for ``hstrlen``; * Test fixes **MISC**: * Enable Redis 3.2.0 on Travis; * Add spell checking when building docs (see `#132 `_); * Documentation updated; 0.2.7 (2016-05-27) ^^^^^^^^^^^^^^^^^^ * ``create_pool()`` minsize default value changed to 1; * Fixed cancellation of wait_closed (see `#118 `_); * Fixed ``time()`` conversion to float (see `#126 `_); * Fixed ``hmset()`` method to return bool instead of ``b'OK'`` (see `#126`_); * Fixed multi/exec + watch issue (changed watch variable was causing ``tr.execute()`` to fail) (see `#121 `_); * Replace ``asyncio.Future`` uses with utility method (get ready to Python 3.5.2 ``loop.create_future()``); * Tests switched from unittest to pytest (see `#126`_); * Documentation updates; 0.2.6 (2016-03-30) ^^^^^^^^^^^^^^^^^^ * Fixed Multi/Exec transactions cancellation issue (see `#110 `_ and `#114 `_); * Fixed Pub/Sub subscribe concurrency issue (see `#113 `_ and `#115 `_); * Add SSL/TLS support (see `#116 `_); * ``aioredis.ConnectionClosedError`` raised in ``execute_pubsub`` as well (see `#108 `_); * ``Redis.slaveof()`` method signature changed: now to disable replication one should call ``redis.slaveof(None)`` instead of ``redis.slaveof()``; * More tests added; 0.2.5 (2016-03-02) ^^^^^^^^^^^^^^^^^^ * Close all Pub/Sub channels on connection close (see `#88 `_); * Add ``iter()`` method to ``aioredis.Channel`` allowing to use it with ``async for`` (see `#89 `_); * Inline code samples in docs made runnable and downloadable (see `#92 `_); * Python 3.5 examples converted to use ``async``/``await`` syntax (see `#93 `_); * Fix Multi/Exec to honor encoding parameter (see `#94 `_ and `#97 `_); * Add debug message in ``create_connection`` (see `#90 `_); * Replace ``asyncio.async`` calls with wrapper that respects asyncio version (see `#101 `_); * Use NODELAY option for TCP sockets (see `#105 `_); * New ``aioredis.ConnectionClosedError`` exception added. Raised if connection to Redis server is lost (see `#108 `_ and `#109 `_); * Fix RedisPool to close and drop connection in subscribe mode on release; * Fix ``aioredis.util.decode`` to recursively decode list responses; * More examples added and docs updated; * Add google groups link to README; * Bump year in LICENSE and docs; 0.2.4 (2015-10-13) ^^^^^^^^^^^^^^^^^^ * Python 3.5 ``async`` support: - New scan commands API (``iscan``, ``izscan``, ``ihscan``); - Pool made awaitable (allowing ``with await pool: ...`` and ``async with pool.get() as conn:`` constructs); * Fixed dropping closed connections from free pool (see `#83 `_); * Docs updated; 0.2.3 (2015-08-14) ^^^^^^^^^^^^^^^^^^ * Redis cluster support work in progress; * Fixed pool issue causing pool growth over max size & ``acquire`` call hangs (see `#71 `_); * ``info`` server command result parsing implemented; * Fixed behavior of util functions (see `#70 `_); * ``hstrlen`` command added; * Few fixes in examples; * Few fixes in documentation; 0.2.2 (2015-07-07) ^^^^^^^^^^^^^^^^^^ * Decoding data with ``encoding`` parameter now takes into account list (array) replies (see `#68 `_); * ``encoding`` parameter added to following commands: - generic commands: keys, randomkey; - hash commands: hgetall, hkeys, hmget, hvals; - list commands: blpop, brpop, brpoplpush, lindex, lpop, lrange, rpop, rpoplpush; - set commands: smembers, spop, srandmember; - string commands: getrange, getset, mget; * Backward incompatibility: ``ltrim`` command now returns bool value instead of 'OK'; * Tests updated; 0.2.1 (2015-07-06) ^^^^^^^^^^^^^^^^^^ * Logging added (aioredis.log module); * Fixed issue with ``wait_message`` in pub/sub (see `#66 `_); 0.2.0 (2015-06-04) ^^^^^^^^^^^^^^^^^^ * Pub/Sub support added; * Fix in ``zrevrangebyscore`` command (see `#62 `_); * Fixes/tests/docs; 0.1.5 (2014-12-09) ^^^^^^^^^^^^^^^^^^ * AutoConnector added; * wait_closed method added for clean connections shutdown; * ``zscore`` command fixed; * Test fixes; 0.1.4 (2014-09-22) ^^^^^^^^^^^^^^^^^^ * Dropped following Redis methods -- ``Redis.multi()``, ``Redis.exec()``, ``Redis.discard()``; * ``Redis.multi_exec`` hack'ish property removed; * ``Redis.multi_exec()`` method added; * High-level commands implemented: * generic commands (tests); * transactions commands (api stabilization). * Backward incompatibilities: * Following sorted set commands' API changed: ``zcount``, ``zrangebyscore``, ``zremrangebyscore``, ``zrevrangebyscore``; * set string command' API changed; 0.1.3 (2014-08-08) ^^^^^^^^^^^^^^^^^^ * RedisConnection.execute refactored to support commands pipelining (see `#33 `_); * Several fixes; * WIP on transactions and commands interface; * High-level commands implemented and tested: * hash commands; * hyperloglog commands; * set commands; * scripting commands; * string commands; * list commands; 0.1.2 (2014-07-31) ^^^^^^^^^^^^^^^^^^ * ``create_connection``, ``create_pool``, ``create_redis`` functions updated: db and password arguments made keyword-only (see `#26 `_); * Fixed transaction handling (see `#32 `_); * Response decoding (see `#16 `_); 0.1.1 (2014-07-07) ^^^^^^^^^^^^^^^^^^ * Transactions support (in connection, high-level commands have some issues); * Docs & tests updated. 0.1.0 (2014-06-24) ^^^^^^^^^^^^^^^^^^ * Initial release; * RedisConnection implemented; * RedisPool implemented; * Docs for RedisConnection & RedisPool; * WIP on high-level API. %prep %{?scl:scl enable %{scl} - << \EOF} set -ex %setup -n aioredis-%{unmangled_version} -n aioredis-%{unmangled_version} %{?scl:EOF} %build %{?scl:scl enable %{scl} - << \EOF} set -ex python3 setup.py build %{?scl:EOF} %install %{?scl:scl enable %{scl} - << \EOF} set -ex python3 setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES %{?scl:EOF} %clean %{?scl:scl enable %{scl} - << \EOF} set -ex rm -rf $RPM_BUILD_ROOT %{?scl:EOF} %files -f INSTALLED_FILES %defattr(-,root,root)