| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Adding support for SSL private keys with a password. This PR also adds support for future SSL tests.
|
| |
|
|
|
| |
Co-authored-by: Chayim <chayim@users.noreply.github.com>
|
| |
|
| |
|
| |
|
|
|
| |
@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.
|
| |
|
| |
|
|
|
|
| |
Co-authored-by: Chayim <chayim@users.noreply.github.com>
Co-authored-by: Anas <anas.el.amraoui@live.com>
|
|
|
| |
Co-authored-by: Alex Wu <alex@anyscale.com>
|
| |
|
| |
|
|
|
|
|
| |
* Adding vulture for static analysis
Removing dead code found previously by vulture in local runs.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Prior versions of redis-py supported this by specifying the
``decode_components`` flag to the ``from_url`` functions. This is now done by
default and cannot be disabled.
Fixes #589
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 <andy@andymccurdy.com>
|
|
|
|
|
| |
Fix a few broken links and class references, move a docstring, and fix a
code block.
|
|
|
|
|
|
|
|
|
|
|
| |
* Support for loading, unloading and listing Redis Modules
* minor fixes for flake
* unit test for module list - only the empty use case
* ModuleError should inherit from ResponseError rather than RedisError
Co-authored-by: Vamsi Atluri <vamc19@gmail.com>
|
|
|
|
|
|
|
|
|
| |
Prevent the pool from closing sockets on connections that are actively in use
by other threads when the master address changes. Connections returned to the
pool that are still connected to the old master will be disconnected
gracefully.
Fixes #1345
|
|
|
|
| |
Fixed #1339
|
|
|
|
|
| |
The lock does not need to be held while waiting for the socket to
establish and validate the TCP connection.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Calling str() on a bytes object can result in a BytesWarning being
emitted and usually indicates a mixup between byte and string handling.
Now, in the event of an invalid RESP response, use the repr value of the
raw response in the exception message.
Can further simplify the bytes/str handling by comparing the first byte
as a bytes object instead of converting it to str. The bytes literal is
available on all supported Pythons. This removes the need for the
compatibility function, byte_to_chr().
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
This allows memoryview instances to be passed to Redis command args that
expect strings or bytes. The memoryview instance is sent directly to
the socket such that there are zero copies made of the underlying data
during command packing.
Fixes #1265
Fixes #1285
|
|
|
|
| |
Ref #1274
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If an exception occurs inside the __del__ method, it should be reported
to the developer. Not doing so could hide bugs.
Python automatically handles exceptions inside __del__ methods, for
example:
class A:
def __del__(self):
1 / 0
A()
print("after del")
Results in the output:
$ python3 ~/blah.py
Exception ignored in: <function A.__del__ at 0x7fbbf2bbfc20>
Traceback (most recent call last):
File "/home/jon/test.py", line 3, in __del__
1 / 0
ZeroDivisionError: division by zero
after del
From this example, we can see the bug was not hidden and the code after
__del__ still executed.
fixes #1281
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After further thought this was a bad idea. Just because two connection
pools share the same connection arguments does not make them equal.
It would seem quite odd if pool_a == pool_b yet pool_a.disconnect() doesn't
close all of pool_b's connections.
Ref #1240
Fixes #1277
Fixes #1275
Fixes #1267
Fixes #1273
|
|
|
|
|
|
|
| |
This helps those poor souls that specify all their connection options as
non-keyword arguments.
Fixes #1276
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to ACL support, redis-py ignored the username component of
Connection URLs. With ACL support, usernames are no longer ignored and
are used to authenticate against an ACL rule. Some cloud vendors with
managed Redis instances (like Heroku) provide connection URLs with a
username component pre-ACL that is not intended to be used. Sending that
username to Redis servers < 6.0.0 results in an error. Attempt to detect
this condition and retry the AUTH command with only the password such
that authentication continues to work for these users.
Fixes #1274
|
|
|
| |
Better thread and fork safety for ConnectionPool and BlockingConnectionPool
|
|
|
|
| |
Fixed #1255
|
|
|
|
|
|
|
|
| |
'ssl_check_hostname' tells SSL Connections to whether to require the TCP
hostname to match the hostname specified in the SSL Cert. By default
'ssl_check_hostname' is False to maintain backwards compatibility.
Fixed #1196
|
|
|
|
| |
fixes #1214
|
|
|
|
|
|
| |
Client instances and Connection pools now accept "client_name" as an optional
argument. If supplied, all connections created will be named via
CLIENT SETNAME once the connection to the server is established.
|
| |
|
|
|
|
| |
Closes #1252
|
|
|
| |
Add equality test on Redis client and connection pool
|
|
|
|
|
|
|
|
|
| |
Fixes SSL read timeouts in Python 2.7
The ssl module in Python 2.7 raises timeouts as ssl.SSLError instead of
socket.timeout. When these timeouts are encountered, the error will be
re-raised as socket.timeout so it is handled appropriately by the
connection.
|
|
|
|
|
|
|
| |
Prior versions of 3.3.x could potentially raise a raw socket.error
(or one of its subclasses) instead of a redis.exceptions.ConnectionError.
Fixes #1202
|
|
|
|
| |
Fixes #1200
|
|
|
|
|
| |
Fix an issue where socket.timeout errors could be handled by the wrong
exception handler in Python 2.7.
|