<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/redis-py.git/benchmarks, branch master</title>
<subtitle>github.com: andymccurdy/redis-py.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/'/>
<entry>
<title>Combine auto-concatenated strings (#2482)</title>
<updated>2022-12-14T09:18:41+00:00</updated>
<author>
<name>David Gilman</name>
<email>dgilman@aidentified.com</email>
</author>
<published>2022-12-14T09:18:41+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=3fb65de645bf4dd1beb8e893bdaa2c4766bbd1fa'/>
<id>3fb65de645bf4dd1beb8e893bdaa2c4766bbd1fa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>async_cluster: optimisations (#2205)</title>
<updated>2022-06-01T11:45:50+00:00</updated>
<author>
<name>Utkarsh Gupta</name>
<email>utkarshgupta137@gmail.com</email>
</author>
<published>2022-06-01T11:45:50+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=05fc203f68c24fbd54c7b338b4610fa62972c326'/>
<id>05fc203f68c24fbd54c7b338b4610fa62972c326</id>
<content type='text'>
- return true from execute_pipeline if there are any errors
- use todo list to speedup retries
- store initialisation node in CommandsParser object
- add sync context manager for pipeline
- use if/else instead of try/except
- make command a function argument in _determine_nodes &amp; _determine_slot

- add async cluster pipeline benchmark script</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- return true from execute_pipeline if there are any errors
- use todo list to speedup retries
- store initialisation node in CommandsParser object
- add sync context manager for pipeline
- use if/else instead of try/except
- make command a function argument in _determine_nodes &amp; _determine_slot

- add async cluster pipeline benchmark script</pre>
</div>
</content>
</entry>
<entry>
<title>update black to 22.3.0 (#2171)</title>
<updated>2022-05-30T14:35:19+00:00</updated>
<author>
<name>Utkarsh Gupta</name>
<email>utkarshgupta137@gmail.com</email>
</author>
<published>2022-05-30T14:35:19+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=c54dfa49dda6a7b3389dc230726293af3ffc68a3'/>
<id>c54dfa49dda6a7b3389dc230726293af3ffc68a3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Async RedisCluster (#2099)</title>
<updated>2022-05-08T12:04:20+00:00</updated>
<author>
<name>Utkarsh Gupta</name>
<email>utkarshgupta137@gmail.com</email>
</author>
<published>2022-05-08T12:04:20+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=061d97abe21d3a8ce9738330cabf771dd05c8dc1'/>
<id>061d97abe21d3a8ce9738330cabf771dd05c8dc1</id>
<content type='text'>
* Copy Cluster Client, Commands, Commands Parser, Tests for asyncio

* Async Cluster Tests: Async/Await

* Add Async RedisCluster

* cluster: use ERRORS_ALLOW_RETRY from self.__class__

* async_cluster: rework redis_connection, initialize, &amp; close

- move redis_connection from NodesManager to ClusterNode &amp; handle all related logic in ClusterNode class
- use Locks while initializing or closing
- in case of error, close connections instead of instantly reinitializing
- create ResourceWarning instead of manually deleting client object
- use asyncio.gather to run commands/initialize/close in parallel

- inline single use functions
- fix test_acl_log for py3.6

* async_cluster: add types

* async_cluster: add docs

* docs: update sphinx &amp; add sphinx_autodoc_typehints

* async_cluster: move TargetNodesT to cluster module

* async_cluster/commands: inherit commands from sync class if possible

* async_cluster: add benchmark script with aredis &amp; aioredis-cluster

* async_cluster: remove logging

* async_cluster: inline functions

* async_cluster: manage Connection instead of Redis Client

* async_cluster/commands: optimize parser

* async_cluster: use ensure_future &amp; generators for gather

* async_conn: optimize

* async_cluster: optimize determine_slot

* async_cluster: optimize determine_nodes

* async_cluster/parser: optimize _get_moveable_keys

* async_cluster: inlined check_slots_coverage

* async_cluster: update docstrings

* async_cluster: add concurrent test &amp; use read_response/_update_moved_slots without lock

Co-authored-by: Chayim &lt;chayim@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Copy Cluster Client, Commands, Commands Parser, Tests for asyncio

* Async Cluster Tests: Async/Await

* Add Async RedisCluster

* cluster: use ERRORS_ALLOW_RETRY from self.__class__

* async_cluster: rework redis_connection, initialize, &amp; close

- move redis_connection from NodesManager to ClusterNode &amp; handle all related logic in ClusterNode class
- use Locks while initializing or closing
- in case of error, close connections instead of instantly reinitializing
- create ResourceWarning instead of manually deleting client object
- use asyncio.gather to run commands/initialize/close in parallel

- inline single use functions
- fix test_acl_log for py3.6

* async_cluster: add types

* async_cluster: add docs

* docs: update sphinx &amp; add sphinx_autodoc_typehints

* async_cluster: move TargetNodesT to cluster module

* async_cluster/commands: inherit commands from sync class if possible

* async_cluster: add benchmark script with aredis &amp; aioredis-cluster

* async_cluster: remove logging

* async_cluster: inline functions

* async_cluster: manage Connection instead of Redis Client

* async_cluster/commands: optimize parser

* async_cluster: use ensure_future &amp; generators for gather

* async_conn: optimize

* async_cluster: optimize determine_slot

* async_cluster: optimize determine_nodes

* async_cluster/parser: optimize _get_moveable_keys

* async_cluster: inlined check_slots_coverage

* async_cluster: update docstrings

* async_cluster: add concurrent test &amp; use read_response/_update_moved_slots without lock

Co-authored-by: Chayim &lt;chayim@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Added black and isort (#1734)</title>
<updated>2021-11-30T16:05:51+00:00</updated>
<author>
<name>Anas</name>
<email>anas.el.amraoui@live.com</email>
</author>
<published>2021-11-30T16:05:51+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=b94e230b17d08e6c89d134e933c706256b79bc4a'/>
<id>b94e230b17d08e6c89d134e933c706256b79bc4a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Pyupgrade + flynt + f-strings (#1759)</title>
<updated>2021-11-30T15:20:43+00:00</updated>
<author>
<name>Aarni Koskela</name>
<email>akx@iki.fi</email>
</author>
<published>2021-11-30T15:20:43+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=fbe87acf96aab583975ed3371423eb20602eccaf'/>
<id>fbe87acf96aab583975ed3371423eb20602eccaf</id>
<content type='text'>
@akx Thank you so much for this! Thanks again for introducing me to a new tool that I'm sliding into my workflow as well.  </content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
@akx Thank you so much for this! Thanks again for introducing me to a new tool that I'm sliding into my workflow as well.  </pre>
</div>
</content>
</entry>
<entry>
<title>Remove support for end-of-life Python 2.7 (#1318)</title>
<updated>2020-08-06T22:15:02+00:00</updated>
<author>
<name>Jon Dufresne</name>
<email>jon.dufresne@gmail.com</email>
</author>
<published>2020-08-06T22:15:02+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=8c5a41baf0bd2a1388d601e5b49d06b91997ccb8'/>
<id>8c5a41baf0bd2a1388d601e5b49d06b91997ccb8</id>
<content type='text'>
Remove support for end-of-life Python 2.7

Python 2.7 is end of life. It is no longer receiving bug fixes,
including for security issues. Python 2.7 went EOL on 2020-01-01. For
additional details on support Python versions, see:

Supported: https://devguide.python.org/#status-of-python-branches
EOL: https://devguide.python.org/devcycle/#end-of-life-branches

Removing support for EOL Pythons will reduce testing and maintenance
resources while allowing the library to move towards a modern Python 3
style. Python 2.7 users can continue to use the previous version of
redis-py.

Was able to simplify the code:

- Removed redis._compat module
- Removed __future__ imports
- Removed object from class definition (all classes are new style)
- Removed long (Python 3 unified numeric types)
- Removed deprecated __nonzero__ method
- Use simpler Python 3 super() syntax
- Use unified OSError exception
- Use yield from syntax

Co-authored-by: Andy McCurdy &lt;andy@andymccurdy.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove support for end-of-life Python 2.7

Python 2.7 is end of life. It is no longer receiving bug fixes,
including for security issues. Python 2.7 went EOL on 2020-01-01. For
additional details on support Python versions, see:

Supported: https://devguide.python.org/#status-of-python-branches
EOL: https://devguide.python.org/devcycle/#end-of-life-branches

Removing support for EOL Pythons will reduce testing and maintenance
resources while allowing the library to move towards a modern Python 3
style. Python 2.7 users can continue to use the previous version of
redis-py.

Was able to simplify the code:

- Removed redis._compat module
- Removed __future__ imports
- Removed object from class definition (all classes are new style)
- Removed long (Python 3 unified numeric types)
- Removed deprecated __nonzero__ method
- Use simpler Python 3 super() syntax
- Use unified OSError exception
- Use yield from syntax

Co-authored-by: Andy McCurdy &lt;andy@andymccurdy.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Switch to flake8 for static code analysis (#1328)</title>
<updated>2020-04-16T22:04:22+00:00</updated>
<author>
<name>Jon Dufresne</name>
<email>jon.dufresne@gmail.com</email>
</author>
<published>2020-04-16T22:04:22+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=05548a373f780c512bc7f7a12a18173d19437b12'/>
<id>05548a373f780c512bc7f7a12a18173d19437b12</id>
<content type='text'>
flake8 catches a wider net of mistakes than pycodestyle and is more
commonly used by the larger community. For example, it catches unused
imports, a few of which existed. These have since been removed.

Two "noqa" comments were added. One ignores the _compat.py file as it
has a large amount of Python version specific code. The second is in
utils.py which intentionally does not use an import.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
flake8 catches a wider net of mistakes than pycodestyle and is more
commonly used by the larger community. For example, it catches unused
imports, a few of which existed. These have since been removed.

Two "noqa" comments were added. One ignores the _compat.py file as it
has a large amount of Python version specific code. The second is in
utils.py which intentionally does not use an import.</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify exception handlers (#1319)</title>
<updated>2020-04-11T19:47:38+00:00</updated>
<author>
<name>Jon Dufresne</name>
<email>jon.dufresne@gmail.com</email>
</author>
<published>2020-04-11T19:47:38+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=ae86503e4c9348e43dd927b4a552d72349faf097'/>
<id>ae86503e4c9348e43dd927b4a552d72349faf097</id>
<content type='text'>
Use the "as" keyword to capture the exception in a variable instead of
sys.exc_info().

Re-raise exception with the bare "raise" syntax.

Avoid "# noqa: E722" by catching BaseException, which includes all
exceptions including SystemExit.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use the "as" keyword to capture the exception in a variable instead of
sys.exc_info().

Re-raise exception with the bare "raise" syntax.

Avoid "# noqa: E722" by catching BaseException, which includes all
exceptions including SystemExit.</pre>
</div>
</content>
</entry>
<entry>
<title>Add missing check_health argument to Connection overrides (#1323)</title>
<updated>2020-04-11T19:16:55+00:00</updated>
<author>
<name>Jon Dufresne</name>
<email>jon.dufresne@gmail.com</email>
</author>
<published>2020-04-11T19:16:55+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/python-packages/redis-py.git/commit/?id=2fcd5471105ccb93cc3b06fc83abfd86174dde89'/>
<id>2fcd5471105ccb93cc3b06fc83abfd86174dde89</id>
<content type='text'>
Now matches the parent class signature. Running the benchmark previously
failed with the error:

    TypeError: send_packed_command() got an unexpected keyword argument 'check_health'</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now matches the parent class signature. Running the benchmark previously
failed with the error:

    TypeError: send_packed_command() got an unexpected keyword argument 'check_health'</pre>
</div>
</content>
</entry>
</feed>
