summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* raise a LockError when the context manager fails to acquire a lockv3-breaking-changesAndy McCurdy2018-11-142-2/+9
| | | | | Fixes #621 Fixes #927
* only support LuaLock going forwardAndy McCurdy2018-11-143-156/+61
| | | | | | | | | | Everyone is using Redis 2.6 or greater, right? The Lua lock implementation is so much nicer and less buggy. Fixes #1031 Fixes #902 Fixes #793 Fixes #610
* all commands should be able to accept bytes or strings for key namesAndy McCurdy2018-11-141-18/+6
| | | | fixes #965
* list_or_args should always create a new listAndy McCurdy2018-11-141-1/+3
|
* use str() to encode int or long valuesAndy McCurdy2018-11-141-1/+4
| | | | | on python2.7, repr() on a long produces '123L', which is clearly not what we want
* raise DataError instead of RedisError for user input problemsAndy McCurdy2018-11-141-47/+47
| | | | | This should be backwards compatible since DataError is a subclass of RedisError.
* only accept bytes, strings, ints, longs and floats as user inputAndy McCurdy2018-11-142-12/+31
| | | | | | | | | | | | | | | | | All input sent to Redis is coerced into bytes. This includes key names and values. Prior to this change, redis-py made an effort to cooerce all input into strings by calling str() (Python 3) or unicode() (Python 2). While this works for a handful of types like ints, longs and floats, it fails for other types like bools ('True' or 'False'), None ('None') and many user defined types. Starting with redis-py version 3.0, sending input of any other type is considered an error an a DataError exception will be raised. Fixes #471 Fixes #472 Fixes #321 Fixes #190
* fix order of zincrby args to match redis serverAndy McCurdy2018-11-143-4/+4
| | | | fixes #571
* remove legacy Redis classAndy McCurdy2018-11-1311-285/+191
| | | | | | | | | | | | | | | | | | | redis-py maintained backwards compatibility by keeping the old "Redis" class around for quite some time. While no doubt a convenience for folks who relied on it, the presence of both Redis and StrictRedis causes a number of support issues and general confusion. With 3.0, we're breaking a few things to make redis-py better going forward. This change removes the old Redis class. We also renamed the StrictRedis class to Redis and aliased StrictRedis to Redis. For people that have been using StrictRedis, this should not change anything. You can continue doing things as you are. People still using the legacy Redis class will need to update the argument order for the SETEX, LREM and ZADD commands. Additionally, the return values for TTL and PTTL now return the integer values -1 when a key exists but has no expire time and -2 when a key does not exist. Previously these cases returned a None value in the Redis class.
* force mapping to be a single dict object on MSET, MSETNX and ZADDAndy McCurdy2018-11-132-47/+17
| | | | | | | | | Previously MSET, MSETNX and ZADD accepted multiple ways to specify the mapping of keys to values including via **kwargs. This turned out to be a poor choice. As Redis evolved and added additional options to the ZADD command, these options couldn't be specified in redis-py without possible element name conflictd. This fixes that going forward and makes the commands simpler.
* Merge pull request #1064 from andymccurdy/migrateAndy McCurdy2018-11-131-0/+35
|\ | | | | add migrate command
| * Token.get_token for literalsmigrateAndy McCurdy2018-11-121-4/+4
| |
| * add migrate commandAndy McCurdy2018-11-121-0/+35
| |
* | Merge pull request #1057 from RoeyPrat/roey-client_pauseAndy McCurdy2018-11-132-1/+39
|\ \ | | | | | | CLIENT PAUSE and type argument in client_list
| * | pep8 fixesAndy McCurdy2018-11-131-3/+4
| | |
| * | Normalizes type to lowercase in client_list()Itamar Haber2018-11-131-1/+1
| | | | | | | | | I know @RoeyPrat has a lot on his plate atm so taking some liberty here.
| * | Implements type argument in client_listRoey Prat2018-11-072-4/+21
| | |
| * | Implements CLIENT PAUSERoey Prat2018-11-072-0/+20
| | |
* | | Merge pull request #1019 from krishan-carbon/patch-1Andy McCurdy2018-11-132-2/+37
|\ \ \ | | | | | | | | Allow pings in PubSub
| * | | .Krishan Patel2018-10-281-0/+1
| | | |
| * | | .Krishan Patel2018-10-282-2/+11
| | | |
| * | | fix indentKrishan Patel2018-08-131-2/+2
| | | |
| * | | Added testKrishan Patel2018-08-132-2/+14
| | | |
| * | | Allow pings in PubSubKrishan Patel2018-08-131-0/+13
| | | | | | | | | | | | | | | | | | | | According to https://redis.io/topics/pubsub, “The commands that are allowed in the context of a subscribed client are SUBSCRIBE, PSUBSCRIBE, UNSUBSCRIBE, PUNSUBSCRIBE, PING and QUIT.” According to https://redis.io/commands/ping, “If the client is subscribed to a channel or a pattern, it will instead return a multi-bulk with a "pong" in the first position and an empty bulk in the second position, unless an argument is provided in which case it returns a copy of the argument.”
* | | | Merge pull request #1061 from itamarhaber/memory_commandAndy McCurdy2018-11-122-0/+25
|\ \ \ \ | |_|_|/ |/| | | Adds the memory_usage and memory_purge commands
| * | | Adds the memory_usage and memory_purge commandsItamar Haber2018-11-092-0/+25
| | | | | | | | | | | | | | | | Signed-off-by: Itamar Haber <itamar@redislabs.com>
* | | | Merge pull request #1063 from andymccurdy/noreadmesudoAndy McCurdy2018-11-121-2/+9
|\ \ \ \ | |/ / / |/| | | Removes `sudo` from README
| * | | Cast from md to rstnoreadmesudoItamar Haber2018-11-121-3/+3
| | | |
| * | | Warns against `sudo pip` and refers to venvsItamar Haber2018-11-121-0/+7
| | | |
| * | | Removes `sudo` from READMEItamar Haber2018-11-121-2/+2
|/ / /
* | | Merge pull request #1058 from itamarhaber/flush-asyncAndy McCurdy2018-11-081-6/+22
|\ \ \ | | | | | | | | Adds `sync` flag to flushdb and flushall
| * | | Renames sync to asynchronousItamar Haber2018-11-081-8/+8
| | | | | | | | | | | | | | | | Signed-off-by: Itamar Haber <itamar@redislabs.com>
| * | | Adds `sync` flag to flushdb and flushallItamar Haber2018-11-081-6/+22
|/ / / | | | | | | | | | | | | | | | Uses sync as async is a keyword. Defaults to Redis pre v4 behavior. Signed-off-by: Itamar Haber <itamar@redislabs.com>
* | | Merge pull request #1056 from andymccurdy/bitfieldAndy McCurdy2018-11-083-0/+183
|\ \ \ | |_|/ |/| | Bitfields
| * | fix stupid linter warningbitfieldAndy McCurdy2018-11-071-4/+4
| | |
| * | added better overflow control and lifecycle mgmt to bitfieldsAndy McCurdy2018-11-072-32/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - bitfields now accept a `default_overflow` argument that sets the default overflow behavior for incrby operations - exposed an overflow() method that sets the overflow behavior for future incrby operations. this can be used in place of the overfly argument to incrby if someone prefers - clean up bitfield instance upon execution, resetting the overflow behavior back to the default provided and clearing the list of operations
| * | confirm bitfield works with pipelinesAndy McCurdy2018-11-061-0/+17
| | |
| * | support for the bitfield command thanks to Charles LeiferAndy McCurdy2018-11-062-0/+119
|/ /
* | test python3.7 on travisAndy McCurdy2018-11-061-6/+16
| |
* | Merge branch 'pr/916' into drop26Andy McCurdy2018-11-0620-445/+373
|\ \
| * | Unpin test dependenciesJon Dufresne2018-11-032-3/+3
| | | | | | | | | | | | | | | Now that redis-py has removed support for EOL Pythons, can once again run tests using the latest version of pytest.
| * | Pass python_requires argument to setuptoolsJon Dufresne2018-11-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Helps pip decide what version of the library to install. https://packaging.python.org/tutorials/distributing-packages/#python-requires > If your project only runs on certain Python versions, setting the > python_requires argument to the appropriate PEP 440 version specifier > string will prevent pip from installing the project on other Python > versions. https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords > python_requires > > A string corresponding to a version specifier (as defined in PEP 440) > for the Python version, used to specify the Requires-Python defined in > PEP 345.
| * | Remove support and testing for EOL Python 3.3Jon Dufresne2018-11-034-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | Python 3.3 is EOL. It is no longer receiving bug fixes, including for security issues. It has been EOL since 2017-09-29. For additional details of the status of Python versions, see: https://devguide.python.org/#status-of-python-branches
| * | Use timedelta.total_seconds(); available since Python 2.7Jon Dufresne2018-11-031-10/+7
| | |
| * | Use unicode literals throughout projectJon Dufresne2018-11-0311-372/+339
| | | | | | | | | | | | Remove workaround for handling unicode with older Pythons.
| * | Use io package for BytesIOJon Dufresne2018-11-032-7/+3
| | | | | | | | | | | | Available on all supported Python versions.
| * | Remove Queue package workarounds for older unsupported PythonsJon Dufresne2018-11-031-24/+2
| | |
| * | Pass iterator to tuple() without coercing to a listJon Dufresne2018-11-031-2/+2
| | |
| * | Prefer dict comprehension over dict(<generator>)Jon Dufresne2018-11-032-5/+6
| | |
| * | Pass generators to dict() instead of coercing to a listJon Dufresne2018-11-032-7/+7
| | |