commit 5d3e53c861b8e8d8d8a84a68fb9ea3d7c861dc32
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Aug 14 11:32:01 2019 +0200

    Prepare for 1.0.4 release.

commit d8ba9392978cb0902b18d692cb0fb28dc4968093
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Aug 14 11:23:51 2019 +0200

    Add redis-py 3.3 to test matrix

commit ca3c15a6a03ac5dddd32fd82e9478357e3ec6578
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Aug 14 11:22:19 2019 +0200

    Disable response parsing in certain tests
    
    It had been accidentally disabled in redis<3.3 because the commands were
    all tested in lowercase, but redis-py 3.3 fixed `execute_command` to be
    case-insensitive in how it looks up response parsers.
    
    Closes #242.

commit 99f5436bf07f969765f4145c628b36d946f3bee7
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Aug 14 11:19:53 2019 +0200

    Do not truncate command name at ASCII NUL
    
    Fakeredis was assuming that real redis treats the command name as a
    null-terminated string, but a Hypothesis test failure shows otherwise.
    I'm not sure how this hasn't failed before.

commit d675ee1d6c4ac7a3bb0129f916232c0f2c6e9dd5
Merge: 7c663bf 513f570
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Jul 30 12:25:39 2019 +0200

    Merge pull request #243 from isms/240-health-check-interval
    
    Add FakeConnection.health_check_interval, closes #240

commit 513f5706e45549c37a1a9a076c6e8fac00847764
Author: Isaac Slavitt <isaac.slavitt@gmail.com>
Date:   Mon Jul 29 09:50:48 2019 -0400

    Add FakeConnection.health_check_interval, closes #240

commit 7c663bf99896cb3f32c162717e0169050c76ff3d
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Jul 1 20:49:03 2019 +0200

    Clarify that renaming also breaks *SCAN

commit 994a06e64dc0312da59227f811a9912f525510d6
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jul 1 09:35:41 2019 +0200

    Update Python versions in Travis config
    
    - Run 3.7 similarly to the others (possible now that Travis uses xenial)
    - Remove 3.4 (it's end-of-life)
    - Remove nightly (lupa doesn't build against it)

commit eed049d90cf153cc14466b23b6c655554f0e141e
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jul 1 08:49:59 2019 +0200

    Bump lupa version
    
    lupa 1.7 isn't compiling against Python 3.8 nightly.

commit d87d0585bd41fe95ae41c8820c78759056c15988
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Jul 1 08:15:08 2019 +0200

    Fix two README typos

commit f4a5b38cabb4ca99120592423e80d387c557fc8a
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Mar 25 10:23:14 2019 +0200

    Eliminate some redundant code
    
    PR #236 had some copy-and-paste in check_can_read that's now eliminated.

commit 34587ad7811fa4ecac62c350ea4e0f9378952a19
Merge: a514f5e 0cd67a2
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Mar 25 10:08:28 2019 +0200

    Merge pull request #236 from cbsiamlg/redis-py-3-2
    
    Support for redis-py 3.2

commit 0cd67a2e66b5162d61f29e185e8bcb9d492278b0
Author: Rob Harrigan <rob.harrigan89@gmail.com>
Date:   Fri Mar 22 15:59:30 2019 -0500

    Address PR comment on checking if socket can read

commit 13d1893e8539580e31635900c590f8d9c092b46c
Author: Rob Harrigan <rob.harrigan89@gmail.com>
Date:   Wed Mar 20 10:10:45 2019 -0500

    PR comment responses

commit 4bea758db4db0e8da49434cd1d8e346ed6481656
Author: Rob Harrigan <rob.harrigan89@gmail.com>
Date:   Thu Mar 14 11:12:18 2019 -0500

    Handle redis-py unsubscribe race condition

commit a75ec5193802a6460bb1fb97a2ba71d27874bc16
Author: Rob Harrigan <rob.harrigan89@gmail.com>
Date:   Wed Mar 13 15:11:43 2019 -0500

    Check for compatibility with 3.1.0

commit a8a50051101fca2f575dde5bb07739821b78fc82
Author: Rob Harrigan <rob.harrigan89@gmail.com>
Date:   Wed Mar 13 13:40:15 2019 -0500

    Add redis-py 3.2 to travis and support python 2.7 super()

commit cc0d1eb1aa8d3cbf90eb5b5360f60f4bc2aa2e3c
Author: Rob Harrigan <rob.harrigan89@gmail.com>
Date:   Wed Mar 13 13:26:54 2019 -0500

    Support redis-py 3.2 by creating a fake selector

commit a514f5e9d84b29c3f94a87a415849e29c3f5aabe
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Feb 18 14:56:09 2019 +0200

    Put in a dependency on redis<3.2
    
    redis-py 3.2 changes the way it interacts with sockets to use selectors,
    which in turn requires a real socket. It will need some finesse to
    support that in future.
    
    See #235.

commit 32252a6d9a801e3a12f1b588e158f573ce2e09a8
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Feb 14 12:29:51 2019 +0200

    Prepare for 1.0.1 release

commit 713d3125ee46b8b724de70c55809d62df942db83
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Feb 14 12:27:49 2019 +0200

    Unsubscribe from pubsub when connection closes
    
    This fixes a problem where publishing to a channel to which a closed
    connection was subscribed would crash.

commit 3a728f684cfd70849f20525efb922c7f45ce46df
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Jan 30 15:40:27 2019 +0200

    Revert "Switch Travis to testing against redis==3.1.0"
    
    This reverts commit e0e042ca795f63dcfaf02be7ef5cc370ab965391.

commit e0e042ca795f63dcfaf02be7ef5cc370ab965391
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Jan 30 14:42:36 2019 +0200

    Switch Travis to testing against redis==3.1.0

commit d1b390448947d1d4a1f928e24a3e4a6c3166bd69
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Jan 24 11:52:18 2019 +0200

    Update changelog for 1.0

commit ac79d3571f2261b30f4fb7dcdfc96da1666c74c3
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Jan 24 11:47:59 2019 +0200

    Bump version number to 1.0

commit b7ee3e1593c15e4b058a4635120eaddc288f7448
Merge: aed0c2f 8a5032b
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Jan 24 11:47:02 2019 +0200

    Merge branch 'rewrite'

commit 8a5032b2e7c46b23c505e6574676a34ef78e586f
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Jan 17 10:20:38 2019 +0200

    Add note about Lua/lupa to the README

commit d365feac54d94527abdfa9b6816907d84adc03e7
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Jan 15 12:09:00 2019 +0200

    Export FakeConnection from top-level module
    
    This would allow people to hand-construct their own connection pool.

commit 962a6a8593da2c7ff37c4d9f218e9026fac9769a
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jan 14 10:02:20 2019 +0200

    Update README

commit 66e9194b8e10595992280637d9941205101ffe75
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jan 14 09:52:20 2019 +0200

    Bump version to 1.0rc1

commit e22a2051a59906775765a0d40bf824c0f3e3f09f
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jan 7 11:45:49 2019 +0200

    Minor optimisations to zset
    
    Instead of storing a separate SortedDict sorted lexically, it just
    stores a regular dict to look up scores. The *BYLEX commands now take
    advantage of the assumption that all scores are equal by searching in
    the _byscore list, using the score of the first key.
    
    This makes a very small improvement in performance, and also reduces
    memory usage.

commit 166b2f66a79e8d8eb2d64b1e353d5774b64a82d6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 13 14:16:56 2019 +0200

    Improve structuring of hypothesis tests
    
    - Generate the GenericStateMachine inside the test, instead of vice
      versa. This allows the 'slow' attribute to be applied, gives the test
      class a sensible name, and reduces the amount of boilerplate.
    
    - If redis isn't up, skip the test instead of failing hard.

commit be44407f3e063bef0a08dd89f24055aa2f9c28f0
Merge: c54b16d 082a295
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 13 08:04:02 2019 +0200

    Merge pull request #231 from onovy/rewrite
    
    Fix setup.py, fakeredis is directory/package now

commit 082a295536fd0a7e058c444cdb9b8458966c2ba4
Author: Ondřej Nový <ondrej.novy@firma.seznam.cz>
Date:   Sun Jan 13 00:03:29 2019 +0100

    Fix setup.py, fakeredis is directory/package now

commit c54b16de36f7a2a08be3961eacef401674a96c99
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 17:18:24 2019 +0200

    Mark test_pubsub_ping as redis-py 3 only
    
    PubSub.ping does not exist in redis-py 2.

commit 9b70266f3fe79563899ae0818f041c7990d19af1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 16:56:34 2019 +0200

    Fix placement of flags kwarg for UNSUBSCRIBE

commit aaec96960687e99bf8898cb27d5f6b1639178716
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 16:53:43 2019 +0200

    Fix corner case with +0 vs -0
    
    min/max are not commutative when the arguments are +0 and -0. Swap the
    arguments to match the behaviour of redis.

commit 469c4fa6bb0cdeb7252eb8f2ec93f5f303d79fa4
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 16:53:27 2019 +0200

    Flake8 fix

commit c55a8ca1c6618763f95f3ea098026034a28a7df0
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 16:43:13 2019 +0200

    Fix handling of PING inside a pubsub connection

commit c4ac7606d1dceafc5347ff20229fa3a869503164
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 16:27:44 2019 +0200

    Fix handling of blocking commands inside transactions

commit f1c7afeb07114fccc07b27d79b6bb44142554af0
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 16:09:07 2019 +0200

    Fix get_message with timeout

commit dc5cb4f45e4131195f1fb8aabb266b47bc02c8af
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 12 15:56:50 2019 +0200

    Handle some commands being banned in scripts

commit 26c8c1ae722ccd5d45edac5257a33b14645ce4e4
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jan 7 09:56:33 2019 +0200

    Update limitations and changes in README

commit d3712cf014477746328906da0adb802a8d2adf54
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 19:59:44 2019 +0200

    Add a unit test to cover EVALSHA and SCRIPT LOAD
    
    It uses the redis-py register_script wrapper.

commit f71d09bd4d5e3b01ee4f1f2b13011cafb8c7521a
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 17:55:00 2019 +0200

    Fix zadd when key already exists with same score
    
    Real redis treats it as a no-op rather than replacing it. This means
    that if the score was -0.0 and is being changed to +0.0 (or vice versa),
    it isn't updated. It also affects watches.

commit 38e9da2a60199ac33e9fc1c8f77e53acfbd4a6ec
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 13:59:43 2019 +0200

    Avoid testing [p]setex with expiry times that may overflow
    
    redis has some integer overflow bugs when specifying very large expiry
    times, which were causing unit tests to fail.

commit d8293c842d140ff9a9de5e7b7ebea559459e34f9
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 13:37:13 2019 +0200

    Update to latest version of hypothesis
    
    There is a bug-fix that may solve the issue of test cases being reported
    as "flaky".

commit bf14807a0eb1641d339568a0b16bec26637ded47
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 13:32:10 2019 +0200

    Fix handling of large commands
    
    redis-py (for some reason) splits large commands into multiple calls to
    socket.sendall, but we were expecting each call to contain one or more
    complete commands.
    
    Fixed by using a generator to incrementally parse commands.

commit 3c65e6ed2d4da5e31aff32dad76ef38d61e44036
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 12:33:11 2019 +0200

    Make fuzz testing a bit more reliable
    
    - The result normalization is computed from the Command, instead of
      being specified. That allows it to adapt to changed made by the
      fuzzer.
    - A filter is added so that generated commands that are expected to fail
      or be untestable can be excluded.

commit a13d6d6a4b21be4c0c243664b653dd5c7d5d89db
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Jan 6 12:32:10 2019 +0200

    Support multiple key-value pairs in hset
    
    It's not documented and it's not implemented in redis-py, but it's in
    redis and was picked up by the fuzzer.

commit 286e2584997c4be7a81ca78ecf7d7a8907b50adc
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 5 20:51:51 2019 +0200

    Some coverage improvements in test_fakeredis.py

commit e9862ac900da178677dafb8ccba26cf9a9edc7d6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Jan 5 19:45:17 2019 +0200

    Fix handling of empty groups in patterns
    
    It was implemented, but a bug caused it not to work correctly.

commit ad7284f3142a52d115541708be8b9d0cf0b38bed
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 16:46:47 2019 +0200

    hypothesis: use st.composite instead of subclassing
    
    SearchStrategy internals are not documented by hypothesis, so using
    st.composite means we're less likely to be broken by a hypothesis
    update.

commit 853edd2bfaa48a4f00980d12e86b4fc0dc77507f
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 16:21:57 2019 +0200

    Fix issue links in README.rst

commit 3af2c433d0392dd4ee1e8a5f938a444c7484a6b8
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 16:15:42 2019 +0200

    More documentation about 1.0b1

commit c9919b611f471482b62fae26785f405f27c4f721
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:48:15 2019 +0200

    Fix handling of NULs when matching keywords like WITHSCORES
    
    Because redis uses strcasecmp, "WITHSCORES\0xyz" is a match for
    "withscores".

commit cd95d604cc3bd24fc3805f84d00a1870325cec30
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:37:50 2019 +0200

    Put _ prefix on internal submodules

commit 010f98a0eb60c998c6c457767f6c9d576fc57915
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:31:50 2019 +0200

    Bump version to 1.0b1

commit 543a3ab0eff4627c17dd91554f4b1c98f69ba91d
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:23:28 2019 +0200

    Update out-of-date TODOs

commit 71c1f2ea95de84db5a006bc57ce010608f56e175
Merge: 0a73496 aed0c2f
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:23:18 2019 +0200

    Merge branch 'master' into rewrite

commit 0a73496490e180295bdb2dcbeaf444995337f0d7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:19:30 2019 +0200

    Updated supported script to Python 3

commit 8fc76a4276d2f922e9995c501fc0d318f2c254cd
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 14:19:16 2019 +0200

    Updates to README for 1.0

commit a6bf177eee41e116082f5bf207430eb08991a758
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 13:03:14 2019 +0200

    Enable testing redis-py 3 in Travis

commit 6c746313c2fa56f6414c0c6094bfbd46fd94201f
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 13:02:38 2019 +0200

    Make unit tests pass on redis-py 3 again
    
    Some of the ConnectionError tests were not valid under redis-py 3's
    stricter limits on value types.

commit 53c15f1e2b457f66119c84bca52eaf78d18e6b82
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 11:27:07 2019 +0200

    Add some pragma: nocover on assert False statement

commit 9a104766d89eef29744864c02277ba6f04ae1eda
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 11:26:36 2019 +0200

    Cleanup on Lua <-> Redis conversion
    
    It had a bunch of dead code, and didn't handle long appropriately.

commit fe0654a2f9318f3af5e748de1a70e1e29c020474
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 11:26:12 2019 +0200

    Support DBSIZE command

commit 83f3a061accb2d63554b67043796494722bc4fe3
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 21:14:07 2019 +0200

    Do some fuzz testing
    
    Commands are randomly mutated to add, remove, swap etc arguments.

commit eae0234a950fdefc6cca89363de71c04e85a84e3
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 10:41:55 2019 +0200

    Handle multiple keys in EXISTS

commit c1978810edcbf5a785c889b155e1d5871441f102
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 4 10:41:20 2019 +0200

    Fix corner case handling of score ranges
    
    See https://github.com/antirez/redis/issues/5706

commit 1e7476de9ba571bbc75a14cc0904615428ebd690
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 22:10:28 2019 +0200

    Add missing import of hypothesis.stateful
    
    Seems to be needed with the latest versions of hypothesis

commit 440fdf5bb54a02b7d31f682a4a94a7e942e28e47
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 21:14:53 2019 +0200

    Flake8 fixes

commit 88504f3148426ac012e007b23712b480ec90b607
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 21:13:07 2019 +0200

    hypothesis: more fixes to transaction testing
    
    - Reset transaction on DISCARD
    - Handle failed EXEC correctly

commit 2240edc891f75c4ef8f0afe4b64fd331b30850ce
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 20:54:14 2019 +0200

    Fix watch notification in zrem*
    
    Previously it would unconditionally notify watches, but in fact it
    should only do so if at least one value was deleted.

commit 8070af72608d622eb246689f944c4f30e5d6365c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 12:16:22 2019 +0200

    Fix testing of transactions
    
    The normalization functions have to be recorded then later applied to
    the collected results.

commit d2e458fb713e5980cddf996a7e18593f079d4c79
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jan 3 12:01:19 2019 +0200

    Fix handling of -inf+inf in zunionstore/zinterstore
    
    redis maps NaN->0 after adding them.

commit 4dea5e549387024440991ba21be41df8de3309d5
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 22:12:33 2019 +0200

    hypothesis: improve coverage with explicit create step
    
    Each machine has a create_command_strategy which is run some number of
    times at the start to populate the database. This reduces the number of
    commands that just get skipped because there isn't a key of the right
    type available.

commit a8ef168509a5e536acb9c3c38e2213f41850ad0c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 22:11:33 2019 +0200

    hypothesis: fix some bugs in normalization
    
    - KEYS needs its output sorted
    - SORT can't be tested with LIMIT and needs its output sorted, because
      the sort is unstable

commit 56c13ac42b29e44ff60a0d10f950f1ec6f9e5844
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 22:10:33 2019 +0200

    hypothesis: fix a major bug that reduced test strength
    
    Any command that didn't have a normalize function would not have its
    result examined. That left test coverage looking good while not actually
    testing anything.

commit 60f8bc46185498462404396794380c843714c291
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 22:09:08 2019 +0200

    Fix handling of ZINCRBY with -0.0
    
    If the member didn't previously exist, the score would be set to
    0.0+-0.0 = +0.0, instead of to -0.0.

commit 815df391218cf47e869f2ac7c9186df101893699
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 20:23:20 2019 +0200

    Fix zunionstore/zinterstore weighting with NaN
    
    If redis encounters a nan as a result of weighting (e.g. from 0*inf) it
    remaps it to 0.0.

commit 8d49795be98e36ffee843ddf4c771b6ca8c32cdb
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 18:16:42 2019 +0200

    Some fixes to hypothesis tests to improve coverage

commit 07edda6bd87efe051d504181a2935b8926626962
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 17:08:19 2019 +0200

    hypothesis: redo tests with GenericStateMachine
    
    This makes it possible to simplify the interaction with bundles, by just
    generating a fixed list of keys/values/fields/scores in an
    initialisation step, and then just running commands after that.

commit 90a2f6c1825b8a0b5701c1ca4ec227bfa5eec0e7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 2 16:06:17 2019 +0200

    hypothesis: limit number of generated elements in bundles
    
    This should improve test coverage, since previously it could generate
    huge numbers of keys which would mostly not be used.

commit 252f0b80fd21d98e3a1f6afa77dae001a826c6fa
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 16:49:09 2018 +0200

    Rewrite the hypothesis unit tests
    
    Instead of having a separate rule per command, use one rule per group of
    commands with a strategy to generate individual commands.

commit 78a1badfe69467445acb89f7988a32c858e35aa8
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 16:48:57 2018 +0200

    Remove some dead code

commit 301d796d132b9504cbb1fa59f30c10f8b50a358c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 14:05:09 2018 +0200

    Remove some obsolete TODOs

commit 99a683ef78e295d2cf30eb88ca684a7708791404
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 12:37:29 2018 +0200

    Fix some corner cases in sinter[store]
    
    redis uses a different algorithm that stops as soon as it has an empty
    list. This means that later keys can be of different types without
    triggering a wrongtype error.

commit 6202be9e6f47a5287895b9743666a87cfe6826e6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 12:17:16 2018 +0200

    Make handling of renamed commands more uniform
    
    - 'delete' changed to 'del_'
    - set_ and exec_ given name= in signature

commit ea87a51b40272c9658fb23a98e3f5d27bda13087
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 12:13:43 2018 +0200

    Avoid hitting bug in real redis during test
    
    Due to https://github.com/antirez/redis/issues/5737, the rest was
    failing when hypothesis passed a number that was off by a multiple of
    2**32.

commit 37010bada4aa5a2a227af9c35a7efbc7b1d17ac3
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 12:09:55 2018 +0200

    Fix some decoding details for Python 2
    
    - Integers are always returned as long
    - When decoding for testing, decode as UTF-8

commit 013c6e8df5ee8d27f97ec8854df9815597c71799
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 09:30:35 2018 +0200

    Remove accidentally-committed old version of fakeredis

commit 55c0cbeb464e4eb4482156e52b1e35339e18de06
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 09:11:39 2018 +0200

    Fix requirements.txt

commit 4c2277ea915fd657bc1031b57387a9d0c861ee98
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 31 09:03:57 2018 +0200

    Fix use of % with bytes

commit e93e709963282bba3bd198dfda811bb852e1d689
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 30 17:51:21 2018 +0200

    Rip out Python 2.7 and 3.3 support
    
    This is based on #210, but applied to the rewrite branch.

commit 3f776c13c592a46bd85c54506fc4f39a7c67bda1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 30 17:43:16 2018 +0200

    Rename test to more accurately reflect its purpose

commit b17d9674353981fa85874a29e03d0ebad369e5d4
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 30 17:39:08 2018 +0200

    Add enum34 as requirements for Python 2 (needed by hypothesis)

commit 553e163a88fe8410ce3cdbcaf09ac9a087f1263d
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 30 17:35:21 2018 +0200

    Add hypothesis to requirements

commit 42546f28be7fb7f707d72be4ac4d8760dda19187
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 30 17:30:30 2018 +0200

    Implement from_url
    
    It replaces any parsed information with a fake connection.
    
    This is the first commit of the rewrite to pass all the unit tests!

commit 4c5a44ba2717669ea1d605fa8ae5825895c36fdb
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 30 17:14:12 2018 +0200

    Make the disconnected pubsub tests pass
    
    Now additionally raises a connection error when disconnect and
    - trying to perform the initial connection
    - reading a response from an empty queue
    
    The test also had to be updated because it didn't match behaviour with a
    real redis server. One test had to be removed because there is no way to
    publish to a disconnected server, and publishing to a connected server
    immediately queues the result to all clients because it can be
    disconnected.

commit 5d87bf8824492f309e7a83b34bf4fe2eef4f6e0e
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 29 12:54:55 2018 +0200

    Add FakeServer.connected attribute
    
    Sending raises a connection error instead of executing if this attribute
    is set to true.

commit 48b5aff92ac45d2d6651263068cb656a3a67e26d
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Dec 28 13:22:02 2018 +0200

    Improvements to coverage from hypothesis testing
    
    Also fixed a few bugs in the implementation.

commit 9a5da8a13e5f86149a69f12665d29b3800915e68
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Dec 28 11:01:27 2018 +0200

    More fixes to unit tests

commit 913a6f9baa1840a64541082baf0fe336c380f3cf
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Dec 28 10:29:13 2018 +0200

    Fix up TestFakeRedis tests
    
    They had been broken by the updates to wrap zadd. Also make them skip
    for redis-py 3, since they're specific to the extra adaptations in
    redis-py 2.

commit 8dfe5eca5fefaf0a12bb7feadcf275675e4d7dc1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Dec 28 10:09:14 2018 +0200

    Some flake8 cleanup

commit d588d27a91a432f4d018cbe152021995fc62ccee
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Dec 26 18:07:10 2018 +0200

    Make unit tests work better with redis-py 3.0

commit 7a965d6495b7f58d5ce91c1ee06fbb6aa8bfdbfc
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Dec 26 17:10:13 2018 +0200

    Update dependencies

commit 1d2442bc5c25dade344aa75c97a1940d2c0b93f1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Dec 26 17:06:46 2018 +0200

    Make fakeredis work with Python 2 again

commit 02424509bbab7877fef421b5aa9bd22d8214f7c6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 16:02:10 2018 +0200

    Remove no-longer-needed unit test for libc import

commit 24216b6ad29286f53661f0a60befbf37353f9219
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 16:01:43 2018 +0200

    Fix handling of decode_responses=True
    
    Also fix the unit tests to test those cases properly

commit 9def2ded5d3552df4bed45291bc2e849379039e8
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 14:35:31 2018 +0200

    Implement ZREMRANGEBYSCORE
    
    That's the final command tested by the original fakeredis unit tests! So
    the main remaining piece of functionality is to handle decode_responses.

commit c5619625e062cbd2ee30c27db91a768f12abbefd
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 14:14:05 2018 +0200

    Quick-and-dirty HLL implementation
    
    It uses the same set-based implementation of hyperloglog as the old
    fakeredis.

commit e0025814b1dca9cf2ec169e27a61a4518888da61
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 14:03:08 2018 +0200

    Fixes to unit test
    
    - Remove uses of fakeredis.to_bytes (replaced by six.ensure_binary)
    - Use the same fakeredis server for all clients

commit 9e8b2fb45b5e93e839d6cbfa3f87a1a25a278350
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 13:51:24 2018 +0200

    Implement SRANDMEMBER and SPOP

commit 0a9d33db0420dab165e2e6b3ebbd5eacf3289269
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 12:24:31 2018 +0200

    Implement ZREMRANGEBYLEX

commit f35dbbab443f9fbb9be913cb2a01196df0290ee6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 12:18:38 2018 +0200

    Implement ZREMRANGEBYRANK

commit a5a9678a15b862ea69e835a1e17a2ace57bfb6c0
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 12:03:23 2018 +0200

    Implement Z[REV]RANGEBYSCORE

commit 30caf78f221f6157cc8cea3af0745aafbcf329da
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 25 10:48:59 2018 +0200

    Implement pub/sub
    
    It's not tested with hypothesis, which might be a bit tricky since it
    relies on multiple actors.

commit ad2ebc1a759bad52b3dd060a375540b7494f5826
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 24 15:58:24 2018 +0200

    Implement SCRIPT LOAD and EVALSHA

commit a3f2b6a35c8c24680e865e4f13047c19e001e74d
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 24 15:45:03 2018 +0200

    Make hypothesis unit tests pass again

commit f67e218d55bda05b7b3eedc01aee370fdfb8e79c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 18 22:40:50 2018 +0200

    Implement ZUNIONSTORE and ZINTERSTORE
    
    They still need hypothesis tests though

commit 4c08076be1cf8af3d81b0fa55d010c52c51e5bb2
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 18 17:52:07 2018 +0200

    Implement ZSCORE

commit c8a7d62c9486dd65f814dc06676698235bf88dc0
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 18 17:47:57 2018 +0200

    Implement ZRANK and ZREVRANK

commit 731fe31ccf090b4256659dc16d430659fad6d806
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 18 17:40:26 2018 +0200

    Implement TYPE

commit e66aac6f6d092bb51d6f2757e6dc27948a7231d7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 18 17:34:25 2018 +0200

    Implement SORT
    
    It still needs a lot of testing for corner cases though

commit d20eec1fada32f65154e9135ce516453854e1de4
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Dec 18 14:20:26 2018 +0200

    Implement SAVE, BGSAVE, LASTSAVE

commit cab11022c558b4b35fef937fb6eb6667ce6e7667
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 21:42:38 2018 +0200

    Implement BRPOPLPUSH

commit 8a865052eeb5318e37fb9ee61258d6ed40d1c6f3
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 21:42:28 2018 +0200

    Fix SCAN command

commit f2cba9a6ddb23c21a14c7c8a64a17a8ea8cf4a24
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 11:51:10 2018 +0200

    Implement blpop and brpop

commit 873cfaa1a581c2f9e006a22e5639ede4e6e69b19
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 11:50:38 2018 +0200

    Fix removal of watches
    
    There was a mixup between key names and CommandItem objects.

commit 07046ef28f6f2d82b2a1b36c871e5ad2e7e614e6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 11:50:14 2018 +0200

    Fix handling of multiple commands in one sendall call
    
    redis-py uses it for pipelines.

commit 5aa9631a171e7f7e670a40972a6e98f180d4abc8
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 11:48:17 2018 +0200

    Fix some instances of wrong return types
    
    ZSet scores were returned as floats not strings, and PING returned a
    string without SimpleString wrapper.

commit 386f593cecc19f62ff64e1f33a6ebb53d8415acf
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Dec 17 11:26:41 2018 +0200

    Fix for each connection creating its own server

commit 13d6d331606207739f7561b443e33cd073a94b51
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 16 08:33:38 2018 +0200

    Fix expiry handling in setbit

commit 0857fe65a6b6be7c6249dbe9763bd4c95925ed7a
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 15 15:57:41 2018 +0200

    Implement *SCAN commands (untested)

commit 3521e41714cfad52502ee96d2e36f2667f4cea87
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 15 15:37:41 2018 +0200

    Implement setbit

commit c6a801437b4cb0617e0f67d999a1f8d887704849
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 15 13:33:55 2018 +0200

    Implement ZREM

commit 277352fa7c1b95dd382d8b0a294cacce734377a6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 15 13:26:44 2018 +0200

    Add basic scripting support
    
    Only supports EVAL, not EVALSHA or SCRIPT LOAD

commit 471cdee22cf396847576d8c55251de8f285313e1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 2 21:30:46 2018 +0200

    More fixes
    
    Only write back CommandItem if actually modified. This only works as
    long as a command doesn't modify the same key twice via different
    argument slots (so care is needed for RENAME, MOVE).
    
    Transactions are failing due to exceptions not comparing equal to
    equivalent exceptions.

commit ba25f5459316145f6f69b1a94b44863b29e5ba4c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 2 19:21:44 2018 +0200

    Assorted bug fixes and additions

commit 536b45f3801d4053c53e7f6679ce56f26cbbbc67
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 2 14:39:50 2018 +0200

    Add more hash commands

commit ac87bc4a791f1f3052546e106d572c71b82f96a3
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 2 14:23:08 2018 +0200

    More fixes to match redis

commit 13c8f1de8f701a5291a06fa74c2355650b0057c6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 2 13:39:04 2018 +0200

    Split up tests
    
    Also fix more bugs uncovered as a result, and work around a redis crash.

commit 2efdbe13d43084030a7b522fe109b06b34fb9c51
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Dec 2 08:09:14 2018 +0200

    More zset commands

commit 289005c5abda82209584452d48f26d53e73e3b99
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 1 20:21:28 2018 +0200

    More commands and features

commit f81f96523296cff955157ceec48cee4bc8f7a7a9
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Dec 1 16:06:33 2018 +0200

    Implement watch/unwatch
    
    Redesign Item to removing versioning, and replace it with a CommandItem
    class that manages the temporary state about each item during a command.

commit 9a8c4c1e271355f6fb24abf33cd4a7648e700281
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 28 19:58:01 2018 +0200

    Remove hyphen prefix on compile_pattern
    
    The entire file is considered private other than __all__.

commit c9174f9d825fd1d0ae4934a280a9711bb27ffa99
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 28 19:54:17 2018 +0200

    Add more to .gitignore

commit aed0c2fe19e58923d0b76527ad931d9ed653cd4a
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 28 07:49:41 2018 +0200

    Bump version number to 0.16

commit 34be573551e9ff5dd21d9e41b64a0e3dbaf5d58c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 28 07:49:16 2018 +0200

    Prepare for 0.16 release

commit 689b2310b920d44b5ad0b3f3af87fce1fe576bb7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 28 07:40:26 2018 +0200

    Depend on redis<3
    
    redis-py 3 is not backwards-compatible, and fakeredis only implements
    the version 2 interface.
    
    Closes #226

commit db7f239b0a082dc6983d27f34750f8adde2df8d8
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Nov 25 12:55:27 2018 +0200

    More work on rewrite

commit d023e5a102dc4fc8942af8fbb32b68bab01221b1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Nov 25 12:44:37 2018 +0200

    More work on rewrite

commit 43213f012deae18fc0bc1bef39270a525bf0531a
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Nov 24 08:41:15 2018 +0200

    Bring back ExpiringDict so that expiry will actually work
    
    It's a much simpler implementation than the original though, since the
    expiry time is held in the values.

commit 869502c69e241fc5faecd13d52bfbcb70970bfb6
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Nov 24 08:09:27 2018 +0200

    Move command logic into _FakeSocket so that it can use per-connection state

commit 226a45a0ad4acaa9b2f4dfb7fc73338aec3811d5
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Nov 24 07:52:46 2018 +0200

    WIP

commit da948fd6117552df2b719f877ac4546f57154fb2
Merge: aa6a0d6 49f6f7a
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Nov 8 21:55:52 2018 +0200

    Merge pull request #224 from viljoviitanen/del
    
    Add __delitem__

commit 49f6f7a85b84a466344a4c1ca342cf362367bc3e
Author: Viljo Viitanen <viljo.viitanen@gmail.com>
Date:   Thu Nov 8 21:44:34 2018 +0200

    Add __delitem__ implementation

commit 6d56cfd3346588dda33191eab823c3af16c3cb65
Author: Viljo Viitanen <viljo.viitanen@gmail.com>
Date:   Thu Nov 8 19:56:30 2018 +0200

    Add test for __delitem__

commit aa6a0d670e08528b66e115818f1818892d06f745
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Nov 8 07:48:33 2018 +0200

    Prepare for 0.15.0 release

commit c5a23b5e8113c3c205bf7738d26817de5938c2d9
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 7 19:49:38 2018 +0200

    No longer test that SDIFF from Lua sorts
    
    It was the case in real redis up to v4, but wasn't intended to be part
    of the contract (see antirez/redis#5538)

commit 16ee5eb2af1259360b443165a03656e70230ec73
Merge: 39a56a6 fb7b600
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Nov 7 17:02:08 2018 +0200

    Merge pull request #222 from owenstranathan/fix-deprication-warnings
    
    Python 3.7

commit fb7b600a25799b063c9c6f3afe65ab129a285406
Author: Owen Stranathan <owen+github@appfigures.com>
Date:   Wed Nov 7 08:07:18 2018 -0500

    Explicitly catch ImportError

commit 5b465806a951c6efc58d21ae73e16f742657c823
Author: Owen Stranathan <owen+github@appfigures.com>
Date:   Tue Nov 6 15:28:17 2018 -0500

    Added py37 to tox.ini and Pipfile(.lock)

commit 043fc642cbeb2dc37dd1a18ac2b788975f970ff6
Author: Owen Stranathan <owen+github@appfigures.com>
Date:   Tue Nov 6 15:02:04 2018 -0500

    Import MutableMapping ABC from  per https://docs.python.org/3/whatsnew/3.7.html#id3

commit 39a56a6b299a65c5457c052f32b099a191b783c9
Merge: a4e85b8 ec92d60
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Oct 17 08:20:43 2018 +0200

    Merge pull request #219 from dwilliams-kenzan/adding-save-bgsave-lastsave
    
    Adding save, bgsave, and lastsave commands.

commit ec92d60f8387665e298c98612b804b563d4a1ab8
Author: Daniel Williams <dwilliams@kenzan.com>
Date:   Tue Oct 16 14:41:16 2018 -0600

    TestRealStricRedis version of bgsave test are failing.  Might not be waiting long enough for the background process to finish.

commit f9deeb09b6a51730ab21e8ecf4f12562ede2df9e
Author: Daniel Williams <dwilliams@kenzan.com>
Date:   Tue Oct 16 14:30:38 2018 -0600

    Removing implemented commands from readme, and extending the sleep to make sure time stamps are different.

commit 8d69fa9ed3d2754a2a824ee2d99fabaad054aa1c
Author: Daniel Williams <dwilliams@kenzan.com>
Date:   Tue Oct 16 14:20:23 2018 -0600

    Added two more tests that check the updating of the lastsave timestamp.

commit 2a76f9a66e1001ca3d838e1b8b7e694742b2f2d9
Author: Daniel Williams <dwilliams@kenzan.com>
Date:   Tue Oct 16 14:03:50 2018 -0600

    Added method bodies to new commands and tests.

commit 2f52bcde8f19ea7a33259cec82ca33ef7b1abd34
Author: Daniel Williams <dwilliams@kenzan.com>
Date:   Tue Oct 16 13:13:57 2018 -0600

    Adding placeholders for the SAVE, BGSAVE, and LASTSAVE commands.

commit a4e85b8959713f78e1e893ac375d69a9f8b17abf
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Sep 25 16:02:47 2018 +0200

    Prepare for 0.14.0 release

commit 3a4966c6c983de6ac1b3ccf647c27ea0b574f22a
Merge: ed36fff e3d5326
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Sep 25 15:09:38 2018 +0200

    Merge pull request #214 from AlexEshoo/master
    
    added pubsub.run_in_thread as it is implemented in redis-py

commit e3d532685aac1a3a7347b20b87550bf8a571c7fe
Merge: 431dc7b ed36fff
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Sep 25 14:43:44 2018 +0200

    Merge branch 'master' into master

commit ed36fff38ded3d34af8bb7e9f6ffe5dd1d8071e2
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Sep 25 14:41:01 2018 +0200

    Add more locking unit tests
    
    Took a few tests from #216.

commit 84a397ca1f1299b2fa8237ab821615702be549f7
Merge: b87e885 93e1d32
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Sep 25 10:08:32 2018 +0200

    Merge branch 'thread-safe'

commit 431dc7b1bb0ae7ad1a3ecd43ebbe0524bd69edf4
Author: Alex Eshoo <AlexEshoo@gmail.com>
Date:   Mon Sep 24 14:50:06 2018 -0400

    imported worker thread from redis-py

commit 210d360b155d4409512dd2f7a90c83622b6e944f
Author: Alex Eshoo <AlexEshoo@gmail.com>
Date:   Mon Sep 24 14:46:14 2018 -0400

    cleaned up unittests

commit 93e1d3217baa6c0830264734960e40db4c416fe8
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Sep 20 15:22:18 2018 +0200

    Fixes for Python 2
    
    - timedelta.total_seconds doesn't exist, so use the existing
      timedelta_total_seconds helper
    - threading.Condition.wait doesn't return an indication of timeout, so
      just go around the loop again regardless.

commit 52ff6a5f1191e6b47231aa59c679be67f7dc7cf4
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Sep 20 14:43:40 2018 +0200

    Rewrite _Lock based on redis.lock.Lock
    
    Unfortunately redis.lock.Lock contains bugs that prevent it being used
    as is (it doesn't handle decode_responses=True), so I've made a copy and
    fixed them. Real redis works because it uses LuaLock.

commit 1fbc29ced79017f02c4f1af58df81336a4b72c8c
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Sep 20 12:22:14 2018 +0200

    Fix handling of FakePipeline.execute when no commands queued
    
    Closes #217.

commit 6b9c43ddafab1e4596ab4e03fb0107efd12075bb
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Sep 20 11:43:28 2018 +0200

    Make blpop, brpop, brpoplpush work when blocking
    
    It now works as intended to have one thread blocked in one of these
    functions and then have another thread push an item to unblock the
    first.

commit 90b6844ec08c3dd7466f2217891685fba6f6b64e
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Sep 19 11:35:01 2018 +0200

    Added locking on commands
    
    This is not yet totally thread safe because I haven't investigated `lock`,
    `pipeline` and `transaction`. But the majority of commands are now thread
    safe. The blocking commands like blpop should still be improved to use a
    condition variable.

commit b87e885a08e537419ef4fd6405f1a29429e451a2
Merge: eb2eb27 310cfb1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Sep 11 13:23:26 2018 +0200

    Merge pull request #215 from da2018/master
    
    keep pace with redis-py for zrevrange method

commit 310cfb1b1d4eeae80ccd74fe823fc46deceda08d
Author: da2018 <da2018t@gmail.com>
Date:   Tue Sep 11 16:22:00 2018 +0800

    keep pace with redis-py for zrevrange method

commit eb2eb27ce27e935f43cc5ec8435573dcc7af13c1
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Sep 10 11:21:18 2018 +0200

    Prepare for 0.13.1 release

commit c91248b86de81d8169567b1ff9d021d030d0f63b
Author: Alex Eshoo <AlexEshoo@gmail.com>
Date:   Wed Sep 5 09:28:32 2018 -0400

    added a newline.

commit 9943e742a1e4676688bc43055cec02a9141bfc06
Author: Alex Eshoo <AlexEshoo@gmail.com>
Date:   Wed Sep 5 09:09:18 2018 -0400

    added pubsub.run_in_thread as it is implemented in redis-py

commit c729b18e6581eff43015585fb001f9d314ed7eda
Merge: 8098106 72ff3c2
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Aug 27 14:09:54 2018 +0200

    Merge pull request #212 from thedrow/patch-1
    
    Optimize _scan()

commit 72ff3c233f3f2d4ab1824175add3f0157de02417
Author: Omer Katz <omer.drow@gmail.com>
Date:   Mon Aug 27 11:50:05 2018 +0300

    Optimize `_scan()`.
    
    In case that a regular expression is specified, it is not needed to copy all the keys if some of them do not match the regular expression.
    If a regular expression is not provided, there is no need to iterate over the slice. Instead, we simply copy the entire slice.
    This is useful in cases where we're dealing with a large number of keys.

commit 8098106285d9838c4f9ebc64e8741dc2fec83849
Merge: 90564d0 9e123ef
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Aug 27 07:58:22 2018 +0200

    Merge pull request #211 from hugovk/re-enable-nightly
    
    CI: Re-enable nightly build

commit 9e123ef4ad41c6a08260622be46e149130fa8851
Author: Hugo <hugovk@users.noreply.github.com>
Date:   Sun Aug 26 21:29:41 2018 +0300

    Re-enable nightly

commit 90564d046da7aeff236e89e46ff91d504a53f2f5
Merge: 721669e 26b2738
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Aug 24 11:02:56 2018 +0200

    Merge pull request #208 from NimrodParasol/eval-keys-args-lua-objects
    
    eval's KEYS and ARGV are now lua tables

commit 721669ee0f2ed7801d3e1ee74211b722995f8a86
Merge: c3c45af b461534
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Aug 21 14:14:56 2018 +0200

    Merge pull request #209 from NimrodParasol/eval-redis-dict-results-lua-objects
    
    Redis operation that returns dict now converted to Lua table when called inside eval operation

commit b46153467b5c500ff0a12f5f2804d7505aa63ab7
Author: NimrodParasol <nimrod.parasol@gmail.com>
Date:   Tue Aug 21 15:01:23 2018 +0300

    changed number of keys from 0 to 1 in the eval command in "test_eval_hgetall_iterate"

commit 8be639fb8a2ca2db0f851b7f6141778c131926a8
Author: nimrod <nimrod@otonomo.io>
Date:   Mon Aug 20 12:53:05 2018 +0300

    added key as argument to eval function in test_eval_hgetall_iterate to keep consistency with other tests

commit 2aa8439ae29c1607c636c58979cb4fe77d249a84
Author: nimrod <nimrod@otonomo.io>
Date:   Mon Aug 20 12:34:26 2018 +0300

    During eval operation, results of redis operations returning dictionaries are now passed as lua tables instead of python lists

commit 26b27385108870e7ac19ea6785bbb401f037f54a
Author: nimrod <nimrod@otonomo.io>
Date:   Mon Aug 20 11:37:43 2018 +0300

    During eval operation, KEYS and ARGV are now passed as lua tables instead of python lists

commit c3c45af2382999264cee3b8f221336f18ee01a3a
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Aug 20 10:14:57 2018 +0200

    Fix a typo in the Trove classifiers

commit cd5c51590fd45a8e59d4fd39ed381190ca62a3af
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Aug 20 09:20:16 2018 +0200

    Update README for #207

commit cece305d8f2f31fca1631cb83c356ec6a5cca3ce
Merge: 8db6035 a5366c7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Aug 20 09:19:26 2018 +0200

    Merge pull request #207 from jamesls/travis-py37
    
    Test on Python 3.7

commit a5366c7183c43c5b4567e937eed1a044c7f4d297
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Aug 20 09:14:50 2018 +0200

    Add Python 3.7 to the trove classifiers

commit 4eabf18a4c346654c9510feaaee845fb4692d4b9
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Aug 20 08:57:24 2018 +0200

    Enable Python 3.7 in Travis

commit 8db6035c0f59e8ab2db9124571e2d8efb09d5a78
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Aug 20 08:50:13 2018 +0200

    Prepare 0.13.0 release

commit cc200e24792f5a45275d12f1f0e7aede3168affb
Merge: cb10fbe bcc1209
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Aug 19 17:22:26 2018 +0200

    Merge pull request #205 from thedrow/hstrlen
    
    Implemented hstrlen

commit bcc1209285f0294ac416b052ece6993acee80170
Author: Omer Katz <omer.drow@gmail.com>
Date:   Sun Aug 19 18:01:14 2018 +0300

    Implemented hstrlen.

commit cb10fbeeeb9db1f2788f41c5676996bccd5bd702
Merge: b354e47 2b02f98
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Aug 17 14:49:48 2018 +0200

    Merge pull request #202 from lowitea/master
    
    Function smembers returns deepcopy

commit 2b02f98e39dca314734b2d5786bb9a460813b90e
Author: Evgeniy Mitin <e.mitin@rambler-co.ru>
Date:   Fri Aug 17 12:50:26 2018 +0300

    Add test smembers copy

commit b38eeb07f72d7055953024fed4b6837ca9e74dc6
Author: Evgeniy Mitin <e.mitin@rambler-co.ru>
Date:   Thu Aug 16 14:31:42 2018 +0300

    Remove error

commit 10964ba654072771902af4b5632889b2706c971c
Author: Evgeniy Mitin <e.mitin@rambler-co.ru>
Date:   Thu Aug 16 14:07:48 2018 +0300

    Add tests

commit 720671dd24695ea3853adba6dc1c70d167b05632
Author: Evgeniy Mitin <e.mitin@rambler-co.ru>
Date:   Mon Aug 13 01:24:22 2018 +0300

    Function smembers returns deepcopy

commit b354e472f22551907deccb2bbbd25594f80b24bc
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Aug 2 10:24:03 2018 +0200

    Prepare 0.12.0 release

commit fbe6d757f058b8dab8cc8374158f16cb6876b179
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Aug 2 09:51:45 2018 +0200

    Handle future.types.newbytes
    
    It was previously being wrapped in bytes(), which ends up wrapping it in
    b'...'. Things that match isinstance(x, bytes) are now returned as-is.
    
    Fixes #199

commit 70d4910acdacb2f11a6119a5403efd734208e4c1
Merge: 5bd2f1b 28cae30
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jul 27 11:26:20 2018 +0200

    Merge pull request #197 from Amertz08/102-mock-connection-error
    
    Mock connection error

commit 28cae30883d8e2863db15eaf6c62925e972c43ba
Author: Adam Mertz <adammertz@gmail.com>
Date:   Fri Jul 27 03:14:33 2018 -0500

    Renamed test attribute redis to pubsub

commit 75dced3ee2d2b311e845ae2cf2c7ecbe0752ba70
Author: Adam Mertz <adammertz@gmail.com>
Date:   Fri Jul 27 03:14:05 2018 -0500

    Connected arg after decode arg in FakePubSub

commit 6f301b39451dbe083e027a955cbb444041880218
Author: Adam Mertz <adammertz@gmail.com>
Date:   Thu Jul 26 15:27:35 2018 -0500

    Patched connection error decorator to PubSub class. Added test cases

commit 8412e2589bb2e3565dfd98cbeac15f4801b58b02
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jul 11 16:41:36 2018 -0500

    Spacing fix on documentation

commit 71e89ba5407973113302a888f2c2f613ff294ca2
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jul 11 16:34:51 2018 -0500

    _check_conn should be patched on before decode_responses

commit 03615decff7f425a71abdf86acb1949421a64085
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jul 11 11:23:38 2018 -0500

    Proper indentation in README

commit bfe919bd76d22a4eae31b9f0b47172b51bf1c087
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jul 11 11:20:17 2018 -0500

    Updated README with documentation on mocking connection errors

commit dc3e59e71b39b615c8fc732444e3e4228f6393d6
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jul 11 11:12:59 2018 -0500

    ConnectionError message

commit ed56f4a7cafc4ce9895ba83c559799ff4758c92c
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jul 11 11:12:42 2018 -0500

    Connection error decorator should be patched to response regardless of initial state of connection

commit 0fa4e3cadd9a76c7bf20a6b5160a192fed3de1a0
Author: Adam Mertz <adammertz@gmail.com>
Date:   Tue Jul 10 14:52:09 2018 -0500

    Adjusted test cases for access to connected attribute

commit fa63151d2ac78d4f6327da581b51b11a3d2153f5
Author: Adam Mertz <adammertz@gmail.com>
Date:   Tue Jul 10 14:51:46 2018 -0500

    Adjusted patch_responses call for FakePubSub class

commit c1a80b3a076a759f97283b811928ed9f9864de0d
Author: Adam Mertz <adammertz@gmail.com>
Date:   Tue Jul 10 14:51:14 2018 -0500

    Removed decorator from methods

commit 5dccd2a359ff621ad3a1a467a0f7b6d2e27b6ce6
Author: Adam Mertz <adammertz@gmail.com>
Date:   Tue Jul 10 14:48:01 2018 -0500

    Made connection check decorator private function. Adjusted for use through _patch_responses

commit 49db0a3b44058472a6d90ceaf1cfeb6af4322da4
Author: Adam Mertz <adammertz@gmail.com>
Date:   Tue Jul 10 14:46:40 2018 -0500

    Modified _patch_responses to take the decorator as a parameter

commit 269fc1cc99c77fba458c0f61599bd2d8a1ae61d6
Author: Adam Mertz <adammertz@gmail.com>
Date:   Sat Jul 7 11:09:48 2018 -0500

    Fixed issue with decorator not playing well with _lua_reply

commit ef97612e95f40b1900022afd51e03fccac826909
Author: Adam Mertz <adammertz@gmail.com>
Date:   Sat Jul 7 10:48:04 2018 -0500

    flake8

commit cbaba988508e2e05aae0f40b2ae7361273b14f46
Author: Adam Mertz <adammertz@gmail.com>
Date:   Sat Jul 7 10:38:32 2018 -0500

    finished remaining tests

commit 2164cb68d5011cd1f344e26c84ff88cf8b6a235b
Author: Adam Mertz <adammertz@gmail.com>
Date:   Fri Jul 6 22:12:05 2018 -0500

    Updated tests and added check decorator as needed

commit 4263daa04eb04e1750d991bcbdcb7d92123bd70d
Author: Adam Mertz <adammertz@gmail.com>
Date:   Fri Jul 6 21:13:23 2018 -0500

    Added missing check_conn so tests work

commit ffb62052cadad37eb36a47f234738d2a00b6244b
Author: Adam Mertz <adammertz@gmail.com>
Date:   Fri Jul 6 21:12:58 2018 -0500

    Added venv to ignore file

commit 17a98ddcc9fa73f7449d9c93bc5aa50e54405426
Merge: f940176 5bd2f1b
Author: Adam Mertz <adammertz@gmail.com>
Date:   Fri Jul 6 21:05:50 2018 -0500

    Merge branch 'master' into 102-mock-connection-error
    
    # Conflicts:
    #       fakeredis.py

commit 5bd2f1b1498633c73fd99762be78e6ebf02a728e
Merge: 1e43347 ea813d7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Jun 26 12:37:36 2018 +0200

    Merge pull request #195 from skion/fix-pipeline-len
    
    Align bool/len behaviour of pipeline

commit ea813d77de814e5f80806cd3f41f15220991f624
Author: Pieter Ennes <pieter.ennes@just-eat.com>
Date:   Tue Jun 26 10:54:09 2018 +0100

    Align bool/len behaviour of pipeline.

commit 1e43347ff3a5bcfa5241d902bde213460007b055
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu Jun 21 09:15:08 2018 +0200

    Prepare for 0.11.0 release

commit a80c02abc2b2f447926918466ef12b8aa99573bb
Merge: d69718a aa6ff54
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jun 15 10:39:01 2018 +0200

    Merge pull request #194 from fferrara/zrangebyscore-new-argument
    
    Supports argument score_cast_func in zrangebyscore()

commit aa6ff5426a3f63bed896c0435a8a06534d41462b
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Jun 15 10:26:45 2018 +0200

    Handle decode_responses correctly for score_cast_func
    
    When decode_responses is true, the score_cast_func is passed text, not
    bytes. To handle this, the score_cast_func handling code was unified in
    one helper function which deals with the different cases. It also has a
    cut-through path for the default score_cast_func to avoid a lot of
    unnecessarily float -> bytes -> text -> float casting.
    
    The unit test is made stricted to check the type exactly.

commit 777e25e4d49d2682e677434cd360c70bf97f01ce
Author: Flavio Ferrara <femferrara@gmail.com>
Date:   Tue Jun 12 16:11:12 2018 +0100

    Scores are converted to bytes in Fakeredis. Tests fixed

commit b0eea8dbeac2aa03901d1c73a45f32fbb8f0cab4
Author: Flavio Ferrara <femferrara@gmail.com>
Date:   Mon Jun 11 13:41:41 2018 +0100

    Supports argument score_cast_func in zrange(), zrevrange()

commit d69718a3d8c1f287a2d282d3e5be43b44920adf3
Merge: ebb36c1 ff73587
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Jun 11 08:36:27 2018 +0200

    Merge tag '0.10.3'
    
    The release was made from a local master that never got pushed to
    origin/master, so merging those changes in now.

commit fdff224f2df62c3885349296f8a833b9c67fbdf9
Author: Flavio Ferrara <femferrara@gmail.com>
Date:   Fri Jun 8 16:03:06 2018 +0100

    Supports argument score_cast_func in zrangebyscore()

commit ebb36c144fb7b4b48ebe7ff08632a64e67c04a1b
Merge: 8216b16 56b1367
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue May 22 18:27:11 2018 +0200

    Merge pull request #192 from dnoetzel/make-getitem-raise-keyerror
    
    Make __getitem__ raise a KeyError for missing keys

commit 56b1367c966823e2a9a3db0a987d0e5c279e7b14
Author: David Noetzel <dnoetzel@shipt.com>
Date:   Tue May 22 10:36:16 2018 -0500

    Make __getitem__ raise a KeyError for missing keys
    
    In redis-py, attempting to use __getitem__ with a non-existent key
    causes a KeyError to be raised, while fakeredis returns None. This
    change makes it so that __getitem__ in fakeredis works the same way as
    in redis-py.

commit ff7358799d1fd538bfa82049c5460c37c1e647eb
Author: Bruce Merry <bmerry@gmail.com>
Date:   Thu May 10 10:53:14 2018 +0200

    Prepare 0.10.3 release

commit 8216b16d9bf4eef0f2b4cbfbe1a6cf1f94a6322d
Merge: bb1ce28 d16cefb
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Apr 25 20:44:05 2018 +0200

    Merge pull request #189 from jamesls/osx-load-System
    
    Add 'System' to the list of libc equivalents

commit d16cefbc21c733b9bfffdd07401700c073ad6218
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Apr 25 20:08:22 2018 +0200

    Add 'System' to the list of libc equivalents
    
    This is apparently needed on some OSX systems. Closes #188.

commit bb1ce28a23a4b62c097c3e548e2df18eb2a83547
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Apr 3 16:59:06 2018 +0200

    Fix a broken link in the changelog

commit 8a0fb707327b631a6c7db8ba17f4238111e77063
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Apr 3 16:43:43 2018 +0200

    Prepare 0.10.2 release

commit 1954ac481f4675c70757598c5072d5de4ed1d472
Merge: de23dbc f0a6796
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Apr 3 16:27:49 2018 +0200

    Merge pull request #186 from jamesls/psubscribe-handler
    
    Fix psubscribe with handlers

commit f0a67968a251c873e99f76d9cc26bcfd51c3965f
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Apr 3 15:27:52 2018 +0200

    Fix psubscribe with handlers
    
    There was a missed call to 'subscriber'. The message was also being
    encoded to bytes unconditionally rather than being passed through
    _normalize; which didn't matter when returning a message (because
    responses were patched), but did matter when passing it to a handler.

commit de23dbc5f4d99a902c4d78828dbfca8c7c32e979
Merge: 39553dc 96e6dcf
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Apr 3 14:17:24 2018 +0200

    Merge pull request #184 from jamesls/fix-pattern
    
    Replace fnmatch with hand-coded pattern compiler

commit 39553dc7e653724109e3220c0807b97909b4287a
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Apr 3 14:08:11 2018 +0200

    Handle key expiry in _ExpiringDict.__iter__
    
    Fixes #135 and #185.

commit 96e6dcf8cec6589c13392aa9f0af2dd756293419
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Apr 3 10:17:24 2018 +0200

    Change pubsub matching to use _compile_pattern
    
    This corrects the previous pattern -> regex generation, which was badly
    broken (didn't escape regex special chars, didn't anchor at the end,
    for some reason made [] groups optional matches etc).
    
    In order to make this work, it was also necessary to redo some of the
    pubsub code to treat channel names as bytes when decode_responses=False
    and strings when it is True. That fixes a whole class of bugs where
    channel names with non-UTF-8 in them would go wrong.

commit 0cf62b502989f3aa6e87aa0a0312db89486e7839
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Apr 2 19:42:12 2018 +0200

    Fix coverage measurement

commit f768c6dbee4ab244f4187e67ee1e913e1a0dcab5
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Apr 2 17:37:44 2018 +0200

    Fix Python 3

commit 3ebaa63059da5650a93517e8a382f208a82f12c5
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Apr 2 17:08:54 2018 +0200

    Replace fnmatch with hand-coded pattern compiler
    
    This matches the quirks in the redis pattern matching, which has some
    differences from fnmatch. It also applies all the logic in bytes, rather
    than the native character encoding.
    
    Fixes #182.

commit 5bfa56a7d20557cea7b8f777fcde1b3baaa6e177
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Mar 23 10:40:37 2018 +0200

    Fix flake8 on Python 3 objecting to Py2 code

commit ccec029b3b95bb42738ece75ac683d4b25f509a4
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Mar 23 10:14:15 2018 +0200

    Accept long in places that expect int
    
    Fixes #145.

commit 3840b3c12a12b33ce93d31b7ca8706f7c5c63ff2
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Mar 23 09:45:17 2018 +0200

    Remove some unimplemented commands
    
    The move and randomkey commands were present but had no implementation.
    This caused them not to appear in the list of unimplemented commands,
    and could also lead to surprises when code using them didn't crash but
    didn't have the desired behaviour.
    
    Fixes #106.

commit 6e914ebe9466a908c2811773630f94525c770cbc
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Mar 23 09:42:17 2018 +0200

    Update the support commands list
    
    The script is updated to use OrderedDict, which should make the output
    reasonably consistent over time and match the ordering used in the
    upstream list.

commit e4ef13da59ed481038d24f5299758b24c3669f3c
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Mar 23 09:25:50 2018 +0200

    Correctly handle zadd with no member-score pairs
    
    Fixes #180.

commit f189df285a4415ddcd5c616e4542064623b328da
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Mar 23 09:01:24 2018 +0200

    readthedocs.org -> readthedocs.io

commit bd3c2a02def698da7b8c7ac8d20cbb29443648a9
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Mar 22 16:44:02 2018 +0200

    Test on pypy

commit ecc4c37e9755fac3bc3ed96747d4d1b72c5b5791
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Mar 22 16:41:24 2018 +0200

    Bump version numbers in requirements-dev.txt
    
    Closes #181.

commit aa2862fb56f6598e59c757d16b2e25b9b0c6f426
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Mar 21 20:19:55 2018 +0200

    Disable testing against Python nightly
    
    PyYAML is failing to build against the nightly, so disabling it for now.

commit 8b8b965f8951ba210adb4357976ddddfba275a2d
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Mar 21 19:28:35 2018 +0200

    Add my email address to notifications

commit ebcfaa4a6356d3ff487e0cf3456ae020c4b65b83
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Mar 21 19:26:47 2018 +0200

    Update changelog to reflect merge of fakenewsredis

commit 9702d56a2a514f07d75c30bc57a08ea90ae199e2
Merge: 2589290 f5f8220
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Mar 21 19:10:39 2018 +0200

    Merge remote-tracking branch 'fakenewsredis/master' into fakenewsredis-merge
    
    This merges fakenewsredis back into fakeredis. I've excluded from the
    merge most of the name changes, so that it is still fakeredis. The
    version is bumped to 0.10.1 to be separate from any fakenewsredis
    version.
    
    The changelog will still need some rework to call out which issue
    numbers are from fakenewsredis.

commit 258929094b51d4861a8c1adc4b1d6580b66c7e39
Merge: 0e0cf4c 582b432
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Mar 9 13:26:16 2018 -0800

    Merge pull request #169 from cosven/fix-setbit
    
    fix setbit

commit f5f82201c018a7a0c8078557f16142acfe431d7c
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Feb 20 15:49:27 2018 +0200

    Prepare for 0.10.0 release

commit 35f8948bb7aa0d630e6f8b3877326f35230f87c3
Merge: cc44e71 2788f83
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Feb 20 15:27:37 2018 +0200

    Merge pull request #13 from ska-sa/lua-return-types
    
    Improve emulation of redis -> Lua returns

commit cc44e7112bd202985d2a1c473ca3308e74e5f626
Merge: 1246627 3c8e38a
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Feb 20 14:59:30 2018 +0200

    Merge pull request #14 from ska-sa/singleton
    
    Add option to create an instance with non-shared data

commit 2788f83f7e3944aac3d9f6c83067df10d6e7fcf4
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Feb 19 13:30:24 2018 +0200

    Sort sets when returned into Lua
    
    This is to match redis's documented behaviour of sorting some arrays
    when Lua fetches them, to make scripts deterministic.

commit c44ae5e7dec5cb8fe0347740c3b1e4c015f7c719
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Feb 19 13:07:18 2018 +0200

    Flake8 fixups

commit 3c8e38aaca874aa0c115167db0edd78e8b7ff984
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Feb 19 12:26:58 2018 +0200

    Add option to create an instance with non-shared data
    
    If `single=False` is given to the FakeStrictRedis constructor, it
    creates its own set of databases instead of using the global one.

commit 46ac71ac288ac3ccfdc42c3381413dd099428951
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Feb 19 12:05:55 2018 +0200

    Improve emulation of redis -> Lua returns
    
    There were some cases omitted from _convert_redis_result e.g.
    recursively converting lists. A more serious problem is that
    fakenewsredis follows the types returned by redis-py, which in many
    cases have a command-specific conversion applied e.g. EXISTS returns
    bool instead of 0/1. Since in real redis the Lua script is not subject
    to these conversions, we need to "undo" them.
    
    In some cases this can be done generically e.g. bool -> int or float ->
    str, but in others we need command-specific conversions. This is done
    with the `@_lua_reply` decorator.
    
    There is probably more work needed to handle all the commands: redis-py
    has a large table of conversions, and I've only handled some of the
    common cases.
    
    Also fixed flushall to return True (independently of Lua).

commit 1246627a74144a371e6db9eec17bb86ea622d869
Merge: 17a359e dd516a2
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sat Feb 17 12:42:39 2018 +0200

    Merge pull request #12 from blueyed/update-toxini
    
    Update tox.ini: py35/py36 and extras for eval tests

commit 17a359ef2dc32b1211fc57688ecbda8b091fba04
Merge: 3d57be4 e21b585
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Feb 16 21:50:00 2018 +0200

    Merge pull request #11 from blueyed/fix-typo
    
    Fix typo in private method name

commit dd516a23299c43bf28625b6e10bacdffcb6c7f8e
Author: Daniel Hahler <git@thequod.de>
Date:   Fri Feb 16 20:37:11 2018 +0100

    Update tox.ini: py35/py36 and extras for eval tests

commit e21b5855a375d56287648eb7eb7c006f4c8538cf
Author: Daniel Hahler <git@thequod.de>
Date:   Fri Feb 16 20:36:25 2018 +0100

    Fix typo in private method name

commit 3d57be45c189e449dcec950212f0b01dbbff1cfe
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Feb 16 08:40:29 2018 +0200

    Bump version number to 0.9.5

commit 093ee55c9fe76ccf48d952bc62b3178e9f37152f
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Tue Feb 13 11:39:04 2018 +0200

    Fix RST formatting of a section header

commit 4bfcda20f417076a9f34c79e3f788bef62c36555
Merge: 9f881a8 9f4d910
Author: Bruce Merry <bmerry@gmail.com>
Date:   Tue Feb 13 11:38:22 2018 +0200

    Merge pull request #9 from amplifylitco/master
    
    Support StrictRedis.eval for Lua scripts

commit 9f4d9105936e754763a9fb73b4ff9d99e19d6c57
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 10:20:13 2018 -0500

    to_bytes

commit a6a7cd67228cfe1d0ddc7fa2e55a9b425b2f4908
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 10:09:57 2018 -0500

    flake8

commit fdf9ecb75df125e48545e90bd32460ce5873e3bc
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 10:07:19 2018 -0500

    Remove braces

commit 82e7e65d1855c1c1d6e666f215a3a513f7493fbd
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 10:04:06 2018 -0500

    More edge cases for numkeys

commit f917498621d4b000ef8974f4192055f5e8f5445e
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 09:41:01 2018 -0500

    More fallout

commit fa252bc543728db43d86b638eb3b497e42ae9292
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 09:37:01 2018 -0500

    Check number of keys

commit b2b67867c4b1cb231ddf29a17e40bc7bcf981d15
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 09:24:59 2018 -0500

    Catch LuaError

commit 8f869b4f9970ccf6e7c8098238873c5d9c5861b3
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 09:18:10 2018 -0500

    More fallout

commit 244056bc8e63edbd563466a69b331263fe8866cc
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 09:12:44 2018 -0500

    Remove docstring

commit 6377669c463ce4f8be5368a6cc5249ae60661e21
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 12 09:11:41 2018 -0500

    WIP: fallout

commit 267e33805e5955af7bebddb6c41334d870a26eef
Author: Blake Foster <bfoster@amplify.com>
Date:   Fri Feb 9 14:36:37 2018 -0500

    Remove unnecessary exception handler

commit 525a29b5088aebfe1411b5818717603ac813e73a
Author: Blake Foster <bfoster@amplify.com>
Date:   Fri Feb 9 10:28:48 2018 -0500

    Fix test

commit 23a43af168122d2bc9a4c2cde1401017b2517c87
Author: Blake Foster <bfoster@amplify.com>
Date:   Fri Feb 9 10:06:04 2018 -0500

    More tests

commit acc44b109292012915daca0cb1f403a7a6fe0a50
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 17:20:16 2018 -0500

    Test for nil in table

commit 856a031b8c0ebbfc5743a587990c9678bd3ade3e
Merge: 773f0f4 b1a0402
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:36:16 2018 -0500

    Merge branch 'master' of ../fakeredis

commit b1a0402ecc0115a4dde9cad07ee48e5d69f1a600
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:36:09 2018 -0500

    Fix test

commit 773f0f4983598bf9e76462bec44bd780f700baaf
Merge: 95762e2 fde2b75
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:25:06 2018 -0500

    Merge branch 'master' of ../fakeredis

commit fde2b75c0ed2ef2da9d9b36a254c17beda690b3b
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:24:27 2018 -0500

    Mess with string types some more

commit 95762e27343959e9a839facd1a076d9ea30f00b1
Merge: d5e4ce2 296c2ff
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:19:23 2018 -0500

    Merge branch 'master' of ../fakeredis

commit 296c2ff90819f913fb8c013db385c116de922502
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:18:30 2018 -0500

    Fix decoding

commit fe9065d4dd524b4bbbc0c66a5f8f86f936792807
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:14:58 2018 -0500

    Fix type

commit d5e4ce22a524978e32cd3648aff9257cb3b9f33a
Merge: 49cf337 392206c
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:04:30 2018 -0500

    Merge branch 'master' of ../fakeredis

commit 392206c0482380cd148a0704e926a9fbf147f2ab
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:04:23 2018 -0500

    Remove extra braces

commit 49cf337d84f855f51ef682497e3e7574f1bc2bd9
Merge: dd23fb1 7fb69f4
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 13:00:25 2018 -0500

    Merge branch 'master' of ../fakeredis

commit 7fb69f4212ca64f7c9021f7c49ad5badde8ffb85
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:29:12 2018 -0500

    pep8

commit 6153787024b56c8b98c09b60e7200eb6a2de828d
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:24:01 2018 -0500

    Test nested ok response

commit b426f0fe0516a33fd84b1fb506b12c337456d910
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:21:43 2018 -0500

    pcall

commit a30fdeffa3642f1df45370b7dcd617e1cf321050
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:00:34 2018 -0500

    More tests

commit ee53358ea96acc4ac0ce9d2a8b98c68d63a66b1e
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 11:52:57 2018 -0500

    Remove lua from .travis.yml

commit c91f0b142248252110b0dd686739bbf89bd7ccb3
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 11:52:18 2018 -0500

    More fallout

commit dd23fb10559f5443eb9eff0da051b7774782cffb
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:52:07 2018 -0500

    Fix broken tst

commit 1def833c7e9ce9b591a4ad841695e748f76f7db9
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:29:12 2018 -0500

    pep8

commit 71a2c1e14f9960e15070a8fd05a708a7a8ddcb8a
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:24:01 2018 -0500

    Test nested ok response

commit 975f88c0eaf4b48e9ab92eadfafee40d2a550873
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:21:43 2018 -0500

    pcall

commit 63949bad5ba3799146fc6e5d13688261cfdb9c39
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 12:00:34 2018 -0500

    More tests

commit bfa38c9aee4b02433cc75b4b12681cd60ab0a4e5
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 11:52:57 2018 -0500

    Remove lua from .travis.yml

commit 9bf417340749ccee830428c11d667c7de5e118cf
Author: Blake Foster <bfoster@amplify.com>
Date:   Thu Feb 8 11:52:18 2018 -0500

    More fallout

commit 15232faa6fe535bfa574bac9997102ee91ee1173
Merge: e0e7718 9e6b32f
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:46:25 2018 -0500

    Merge branch 'master' of ../fakeredis

commit 9e6b32f29fbe6f6a16ec2a327c14b53c38e96a2f
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:32:10 2018 -0500

    Install lupa for CI

commit 9de875482e01f75b72895a5ee35999c2745cf8ae
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:22:31 2018 -0500

    pep8:

commit 121de8cfbc36b9b5f5b173b56b66a1dd19c54561
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:10:50 2018 -0500

    Code review fallout

commit e0e77180e0739f0ae7c1a3248b9f58e49466249a
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:32:10 2018 -0500

    Install lupa for CI

commit 87c2686c51b0eec6ed4da73fe6afb8d6868f9984
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:22:31 2018 -0500

    pep8:

commit 73cc1d7c4ab1fcbdf41eea5880756bfa4ce84c1c
Author: Blake Foster <bfoster@amplify.com>
Date:   Wed Feb 7 11:10:50 2018 -0500

    Code review fallout

commit 6e0c1b33a27599b5d42769b7749f52672a047a30
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 16:43:05 2018 -0500

    Remove eval from unimplemented functions

commit f2086fdcf0663c83ce300d127ca9779302e7b6d3
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 16:40:42 2018 -0500

    Update readme

commit 0fd83e6472d20e593a3c4b5310c9b5ec46a8568e
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 16:32:02 2018 -0500

    Revert "Restore nightly build"
    
    This reverts commit 06e02b5d40e7b17ae69a4d850c3b64aab5b1144b.

commit 06e02b5d40e7b17ae69a4d850c3b64aab5b1144b
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 16:24:42 2018 -0500

    Restore nightly build

commit 507a1254345a516c1010976c6dd2b64a17b46380
Merge: 9f881a8 0dd661f
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 16:16:21 2018 -0500

    Add eval

commit 0dd661f52f37cf2f1799f636fc0f00c7c9e4cb28
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 14:01:32 2018 -0500

    Decode non-byte strings

commit 77685dc311e4dbb38900b1b134e314f4c9ae85b3
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 13:01:10 2018 -0500

    Fix test

commit 58d076384a7a787207788030143d80d86b73ad2e
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 12:55:45 2018 -0500

    Fix unit tests

commit 74389b745f9ac6dc31aab8940b90203589b59faa
Author: Blake Foster <bfoster@amplify.com>
Date:   Tue Feb 6 12:25:29 2018 -0500

    Fix table handling

commit 7ea39cde838f60859cbb0678b5d48ba4b89b100f
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 5 17:49:42 2018 -0500

    Return result from Lua

commit 084548494e981e4cecff0f08c5d51207277f42c0
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 5 14:31:14 2018 -0500

    Remove nightly Python build

commit da8a82035a61c69e16c67f06bb00b73926bf17ba
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 5 14:16:26 2018 -0500

    Bump patch version

commit b8d997d551abf4eb628dca32dd201662ee106886
Author: Blake Foster <bfoster@amplify.com>
Date:   Mon Feb 5 12:54:20 2018 -0500

    Limited Lua support

commit 9f881a86d39c99631c7e4600ddabd6014765d107
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Jan 24 16:12:47 2018 +0200

    Bump version to 0.9.4

commit b3140de04b4322d97fe2f665c41988cf6711db11
Merge: 0472a6e 4bd92c7
Author: Bruce Merry <bmerry@gmail.com>
Date:   Wed Jan 24 16:07:37 2018 +0200

    Merge pull request #8 from ska-sa/redis2.10.6
    
    Fix handling of invalid expiry times

commit 4bd92c71db031509b7eb39a34c5f470f2efaeec6
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Jan 24 15:56:20 2018 +0200

    Fix handling of invalid expiry times
    
    This fixes #5 (zero expiry time should be treated as invalid) and #7
    (key should not be set when expiry time is invalid).

commit 0472a6e928d9502f7549b6c829dd86570ec00c0e
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Jan 24 15:25:15 2018 +0200

    Split _ExpiringDict out of _StrKeyDict
    
    The ordered set and hash types were using _StrKeyDict which stored
    expiry times, which amongst other things could make queries quite slow.
    I've split _StrKeyDict out as a base class which just handles passing
    all keys through to_bytes, with _ExpiringDict being a subclass that
    stores expiry times and expires keys.
    
    Also arranged for datetime.now() to be called only when the key actually
    has an expiry time, which will reduce the number of kernel calls when
    not using expirations.

commit 39e4a804cc0d1bc61aa29648c8c6e61e1be90a09
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Jan 24 14:43:46 2018 +0200

    Optimize counting in zadd
    
    Instead of checking if each individual item is in the dictionary, just
    take the length before and after. This makes bulk zadd a *lot* faster,
    possible because _ZSet inherits all the expiry stuff from _StrKeyDict
    and hence __contains__ checks time-of-day.

commit b23c0e1ccdf94b8691ba7381ba15a665fca7930a
Merge: 8adb040 a1cd907
Author: Bruce Merry <bmerry@gmail.com>
Date:   Mon Jan 22 16:02:29 2018 +0200

    Merge pull request #4 from ska-sa/remove-empty
    
    Make empty sets/lists/hashes disappear

commit 8adb0403e95486b09e38583c18434352d7b8e2e9
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Mon Jan 22 10:28:54 2018 +0200

    Bump version to 0.9.3 and update changelog

commit fdf8aa34d226fe97ca3b5d1240fbfd44c12eea28
Merge: b09b021 0263ea8
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Jan 19 17:21:31 2018 +0200

    Merge pull request #6 from ska-sa/pubsub-mutation-bug
    
    Fix iteration over pubsub list

commit 0263ea8324f4b8888c6964694e2e7ad5117dd8ca
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Jan 19 17:05:59 2018 +0200

    Fix iteration over pubsub list
    
    The iteration deleted from the list as it iterated, causing an item to
    be skipped over (and potentially other undefined behaviour).

commit a1cd907b18a6de5be5dcd48cadc62d78ee2475b9
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Jan 19 15:04:01 2018 +0200

    Make empty sets/lists/hashes disappear
    
    This fixes jamesls/fakeredis#155.

commit f94017669cd66805cf89109398df6e541c08f3be
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jan 10 16:39:02 2018 -0600

    Updated test case to actually fail when decorator does not exist instead of throwing an error

commit 5359bdf608f17331f4a0914c13298a4a7d20e510
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jan 10 15:50:37 2018 -0600

    Updated ConnectionError test cases

commit 6aea29c6d4125c61c2626e8f258054fefe1d019f
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jan 10 15:12:06 2018 -0600

    updated test cases

commit bb70bcd2492e01cfa57ffe32961820fb53e4ab27
Author: Adam Mertz <adammertz@gmail.com>
Date:   Wed Jan 10 14:39:49 2018 -0600

    Started implementing connection error throws

commit 582b432ac944d7b5d4b50f168409edee2c7bdb04
Author: ysw <yinshaowen241@gmail.com>
Date:   Mon Nov 20 20:48:39 2017 +0800

    fix setbit
    
    1. setbit SHOULD return old_value instead of None
    2. there exists bug when setbit to 0

commit b09b0214d39e45fcc0ccb50d1c64e14ec6acbd6a
Merge: 771b41c 2ee662f
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Nov 12 21:55:20 2017 +0200

    Merge pull request #3 from ska-sa/mutate-preserve-expiry
    
    Preserve expiry time when mutating keys

commit 2ee662f5da31e21c64d1aaed64ef34e45f29a0db
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Nov 12 21:12:31 2017 +0200

    Preserve expiry time when mutating keys
    
    A new setx function is added to _StrKeyDict that updates the value but
    preserves the existing expiry time. This is used by mutating operations
    that replace the value rather than mutating it in-place (which is
    impossible for strings, and happens not to be done in some other
    cases).
    
    Fixes #2.

commit 771b41c2fb00ae84508e5a5df8f8b578b6650ac1
Author: Bruce Merry <bmerry@gmail.com>
Date:   Sun Nov 12 20:36:24 2017 +0200

    Fix links to bug fixes

commit 69114d4f49e09282e629d93a1918c334994117c5
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 16:58:31 2017 +0200

    Add a revision history

commit abd358b23d7779505aaa41baa2ea5815ec483106
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 15:15:39 2017 +0200

    Fix URL in setup.py

commit ca4539e3a5106de93aba8e1dbdfa6d6f103c2913
Merge: 0d63514 25f9a72
Author: Bruce Merry <bmerry@gmail.com>
Date:   Fri Nov 10 16:41:29 2017 +0200

    Merge pull request #1 from AlainPilon/patch-1
    
    fix typo FakeNewRedis -> FakeNewsRedis

commit 25f9a72fed44ed5390f3039fd0925a34bec13569
Author: Alain Pilon <alain.pilon@gmail.com>
Date:   Fri Nov 10 09:19:47 2017 -0500

    fix typo FakeNewRedis -> FakeNewsRedis

commit 0d63514c7cf7ece678e4df20d4a8fd671dedb425
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 15:10:42 2017 +0200

    Bump version number to 0.9.2
    
    This is exactly the same as 0.9.1, but there was an uploading accident
    with PyPI and it won't allow the release to be replaced.

commit e502a0cedf2b2aededa5413040eabc1e2111530c
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 14:47:29 2017 +0200

    Update fakeredis -> fakenewsredis in .gitignore

commit 0b93dc26ce6f9a43e77b7ce0726970ab0087818d
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 14:46:49 2017 +0200

    Put jamesls back as author, myself as maintainer
    
    In setup.py.

commit d38a851b98cb95b982c8e8a8e2a24ca42c258bcf
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 14:42:04 2017 +0200

    Bump version number to 0.9.1

commit 436422a6f157d31b91cb4c2399eeaf1f699ffbb4
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 14:27:31 2017 +0200

    Attempt to fix up coverage invocation for coveralls

commit 10ff116c7fb5f5ad335de7d13f7d5f6a70262104
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 13:56:56 2017 +0200

    Apply fakeredis -> fakenewsredis in .travis.yml

commit 89f2fdb357e875e690137ea6c70ef127d3cc149b
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 13:55:12 2017 +0200

    Rewrap docstring line to keep flake8 happy

commit be6199ed8371b71f18d275064087f4e27e6eba8e
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 13:52:51 2017 +0200

    Fix URLs from bmerry to ska-sa on github

commit 2c8767e29af63b580e163aa8731dae8a4545c183
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 13:19:20 2017 +0200

    Rename to fakenewsredis
    
    Bumped version to 0.9.1, following on from the fakeredis 0.9.0 from
    which it was forked.

commit 80d82dc1cf837b04cbe3ecaf84bde86b60856d26
Merge: 48cc8c0 39d99eb
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 12:02:29 2017 +0200

    Merge remote-tracking branch 'nfvs/transaction_compatibility'

commit 48cc8c02004f87317b67d5280a612227029fa3ae
Merge: 61b8b79 1efa3f6
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 12:02:23 2017 +0200

    Merge remote-tracking branch 'jdufresne/unused'

commit 61b8b79eaaee7a5978aa167ca0d42373ed85273e
Merge: 8238b46 030794d
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 11:57:28 2017 +0200

    Merge remote-tracking branch 'jdufresne/lock'

commit 8238b46609e11cf4af2c9ca0429ccd20d54629d2
Merge: b795dd7 e37577d
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 11:57:23 2017 +0200

    Merge remote-tracking branch 'ticosax/py3-fix'

commit b795dd7ac3230d0be4fd480db24954bab76724ce
Merge: ee9f5d1 865f5d4
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 11:57:11 2017 +0200

    Merge remote-tracking branch 'bmerry/repr-float'

commit ee9f5d159a237539f8e43767d189d2ee0b795a04
Merge: 1157dca bd92d6d
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 11:56:56 2017 +0200

    Merge remote-tracking branch 'bmerry/publish-binary'

commit 1157dcab6feb960466bcc2c54a6e431cb3be07cb
Merge: 0e0cf4c 9a70011
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 11:56:51 2017 +0200

    Merge remote-tracking branch 'bmerry/check-types'

commit bd92d6dd24e2e0eb895ddc20052d0cda4d098f18
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 08:18:52 2017 +0200

    Use to_bytes to encode publish message
    
    It used to call `.encode()` lower down if the type was `str`, which
    - if not desirable on Python 2, since bytes == str and the message may
      already have been encoded
    - does not specify the encoding
    - ignores all the other things handled by to_bytes
    
    This partially addresses #146. It does not try to address binary channel
    names, but looking at the code for redis-py it's not clear that it fully
    supports them either.

commit 9a70011fc6e5db73cf098f8d30f29a071dabc09f
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Nov 9 16:09:55 2017 +0200

    Add type checking to hash operations
    
    Also fixed a bug where HINCRBY and HINCRBYFLOAT wrote the integer/float
    value back into the Python dict rather than the string form.

commit 2cc4d3e19150d760bee9b0dc3b8ec84fa9cbe231
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Nov 9 15:56:57 2017 +0200

    Add type checking to list operations.
    
    Also fixed up the linsert implementation (with tests). It only handled
    "before", not "after", and it did not handle the case where the pivot is
    missing.
    
    The brpoplpush implementation was simplified to just call rpoplpush,
    since the implementations were identical.

commit ba48de3f038355c3db8f30bf34805d9e93ebb95e
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Nov 9 14:29:42 2017 +0200

    Add type checking to string operations
    
    This also fixes a bug in `decr`: it would set the internal value to
    the integer value, without wrapping it in to_bytes.

commit c7e9fe855dc7eda70189746656d1badf75320c95
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Thu Nov 9 12:52:19 2017 +0200

    Add type checks for sets
    
    This extends the previous commit to also raise a ResponseError when
    running a set operation on a non-set.

commit adb554796ece89abbeb03003377271aea71dff7f
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Wed Nov 8 21:07:11 2017 +0200

    Add type checks on ZSET operations
    
    Any operation that queries or mutates a ZSET will raise an appropriate
    redis.ResponseError if the key is already present with a different type.
    New tests are included to test this. ZINTERSTORE and ZUNIONSTORE have
    special treatment to allow SET types as well (undocumented feature of
    redis).
    
    The goal is to later extend this to other types as well.

commit 865f5d4bb8f8ebcca4f3141d64ef7118181f7f00
Author: Bruce Merry <bmerry@ska.ac.za>
Date:   Fri Nov 10 10:06:30 2017 +0200

    Use repr to encode floats in to_bytes
    
    This ensures that no precision is lost when encoding 64-bit floats. This
    matches the encoding logic in redis-py. Tests are added for `set`,
    `incrbyfloat` and `hincrbyfloat`.

commit 0e0cf4c1bb84328dd389127ea7d74fe1785c6b62
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Oct 13 08:09:11 2017 -0700

    Bumping version to 0.9.0

commit 53c9642102f9a76d2b4b44f08d0eb3b1e461f45f
Merge: 993a69a ec8b2bb
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 12 08:22:52 2017 -0700

    Merge pull request #156 from Tinche/master
    
    srandmember number argument and tests.

commit 993a69a77c772aca2e1b990b65023d54809dbbf8
Merge: f8c3921 0aa2709
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 12 08:20:40 2017 -0700

    Merge pull request #161 from Matoking/setrange
    
    Implement SETRANGE command

commit f8c39216347d4cc3ba8bb4137fd1dc6697e448c9
Merge: 827f1e2 e85a687
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 12 08:13:05 2017 -0700

    Merge branch 'faustow-fix-issue-91'
    
    Closes #160
    Fixes #91
    
    * faustow-fix-issue-91:
      Incorporate review feedback
      Forcing encoding to UTF8 when using Python 2.x

commit e85a687712a68f0fc0ec3122ab40cbeafa9c8fe6
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 12 08:02:26 2017 -0700

    Incorporate review feedback
    
    * Check for unicode first in to_bytes.  That way we don't need the
      try/except clause.  A unicode type was triggering the
      hasattr(x, '__str__') check.
    * Remove py2 conditional out of function body of _decode().
    * Define DEFAULT_ENCODING for both py2 and py3.
    * Add tests for unicode types for keys/values.

commit de40ff3805269d6865daee5e9822009c5ed0bbb7
Author: Fausto Woelflin <faustow@gmail.com>
Date:   Mon Oct 2 19:25:30 2017 -0300

    Forcing encoding to UTF8 when using Python 2.x

commit 0aa270923cfba823ef7bca66c5a5ebef0a237bfc
Author: Janne Pulkkinen <jannepulk@gmail.com>
Date:   Sat Oct 7 17:04:49 2017 +0300

    Implement SETRANGE Redis command

commit ec8b2bbf440d4a4f4a944b09543be669b41bdbc0
Author: Tin Tvrtkovic <tin.tvrtkovic@nanobit.co>
Date:   Tue Jul 11 13:32:52 2017 +0200

    srandmember number argument and tests.

commit e37577dfc881f18af85be3df6d264808fcdc386f
Author: Nicolas Delaby <nicolas@noa.one>
Date:   Tue Jun 27 10:49:45 2017 +0200

    Remove _ex_keys mapping
    
    Because they can get out of sync under python3 since
    `_dict` entries are converted into bytes while `_ex_keys` aren't
    and ```b'foo' != 'foo'``` under python 3.
    
    Instead of trying to convert back and forth between `bytes` and `str`
    in different places, this new implementation stores everything
    in `_dict` and makes sure values and timestamp are always stored together.

commit 1efa3f616d75929894041ad0468facaf6d6b0d9e
Author: Jon Dufresne <jon.dufresne@gmail.com>
Date:   Sat Jan 28 09:48:25 2017 -0800

    Fixed all flake8 errors and added flake8 to Travis CI

commit 030794d3d8e0e8b73735e912856967e3a1cea5f3
Author: Jon Dufresne <jon.dufresne@gmail.com>
Date:   Sat Jan 28 10:26:18 2017 -0800

    Add basic lock functionality
    
    Fixes #79

commit 827f1e2f8cd73bdf89302b9c838be867702f26d3
Merge: 1b25f38 ef7ab8a
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu May 25 21:28:24 2017 -0700

    Merge pull request #137 from jdufresne/persist
    
    Add persist functionality

commit 1b25f38604a682378f168af15d8342eaec1ac8fc
Merge: 1bc3111 c8dd5c0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu May 25 21:27:11 2017 -0700

    Merge pull request #138 from jdufresne/py36
    
    Add Python 3.6 to Travis CI and document in setup.py

commit 1bc3111b6e1d0ac8470b50da66bd2af7c77f9049
Merge: 24e97b2 619143d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu May 25 21:26:23 2017 -0700

    Merge pull request #149 from catwell/pr-fix-none-type
    
    type('a_bad_key') returns the string 'none', not None

commit 24e97b23a6f09674bae5b7d4ffefefd647245c34
Merge: ba80ecd 55e0039
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu May 25 21:26:01 2017 -0700

    Merge pull request #150 from amw/some-support-for-bytes-keys
    
    Support b'bytes' keys in `sinter` and similar.

commit c8dd5c0c9e64a8fd6a2af41a580ec79eacc91679
Author: Jon Dufresne <jon.dufresne@gmail.com>
Date:   Sat Jan 28 09:39:39 2017 -0800

    Add Python 3.6 to Travis CI and document in setup.py
    
    Alphabetized classifiers list.

commit 55e00396801e02730b3ce6a5ad62d76ba7cba34f
Author: Adam Wróbel <adam@adamwrobel.com>
Date:   Tue May 23 17:49:41 2017 +0200

    Support b'bytes' keys in `sinter` and similar.

commit ba80ecd6364d10489cf6a89626eb1ce834a1f3a0
Merge: 7090c09 f3b9e7a
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat May 20 17:36:32 2017 -0700

    Merge pull request #148 from robodan/speed_up_listen
    
    Speed up listen loop

commit 7090c0900e150960e1e836fc98cb4e8823921be5
Merge: b4b1f1e ec74091
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat May 20 17:35:41 2017 -0700

    Merge pull request #147 from sobolevn/patch-1
    
    Updates README.rst with svg badges

commit 619143d740cc4accabe6764ce28d402ae5d44dfa
Author: Pierre Chapuis <catwell@archlinux.us>
Date:   Mon May 15 20:27:07 2017 +0200

    type('a_bad_key') returns the string 'none', not None

commit b4b1f1eb72e8fba348701192d6334b3dd17e3b7f
Merge: 5f33b66 dec5133
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon May 15 09:19:42 2017 -0700

    Merge pull request #144 from ch3pjw/float_expiry
    
    Make setex fail if passed an unacceptable expiry time type

commit f3b9e7a6be47ba6c81d5f41642440ae143ec2ca4
Author: Dan Christian <dchristian@arthrex.com>
Date:   Tue Apr 25 08:43:14 2017 -0700

    Speed up listen loop
    
    Read queued messages as fast as possible (no delay)
    When the queue is empty, delay by 0.1 sec (was 1 sec)

commit ec74091368d388b80904661da7f87cc08bcedf94
Author: Sobolev Nikita <mail@sobolevn.me>
Date:   Sat Apr 8 12:52:05 2017 +0300

    Updates README.rst with svg badges

commit dec513390ca9e2347baafe19252ee97254e26836
Author: Paul Weaver <paul.weaver@osirium.com>
Date:   Tue Feb 14 15:36:20 2017 +0000

    Fix response message
    
    to make it a) identical to actual Redis, which I now see is tested on travis! and b)
    compatible with old Python versions.

commit 422c16b33c5df2116ba43beb8c93f567c8b7c6ec
Author: Paul Weaver <paul.weaver@osirium.com>
Date:   Tue Feb 14 15:23:55 2017 +0000

    Make setex fail if passed an unacceptable expiry time type
    
    Real RedisStrict raises ResponseError if you pass it a float; FakeRedis
    currently does not.

commit ef7ab8ac75712af35349a717383c3d9f380709e2
Author: Jon Dufresne <jon.dufresne@gmail.com>
Date:   Sat Jan 28 08:39:11 2017 -0800

    Add persist functionality

commit 5f33b662457310093c97abad76950dba02c0ef5b
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Dec 6 21:08:28 2016 -0800

    Bump version to 0.8.2

commit ac30ed801c52d85091791c343e14207a410e79c1
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Dec 6 21:04:47 2016 -0800

    Fix test on python3.x

commit 67cebf69a86275155e9ce7adfb286ab3f02d2593
Merge: df7d991 d4a4106
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Dec 6 20:53:19 2016 -0800

    Merge branch 'nfvs-from_url'
    
    * nfvs-from_url:
      Add test for passing through extra args
      Pass through additional kwargs from `from_url` to the class initializer.

commit d4a4106cef2b7e0158c9ec5cd8ba31d91b5571f0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Dec 6 20:53:09 2016 -0800

    Add test for passing through extra args

commit df7d9912a56d6e9e43cbc767009f399684f1b4ae
Merge: b48dc03 bbeb86e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Dec 6 20:47:15 2016 -0800

    Merge pull request #134 from gazoon/issue#119-ttl_bag
    
    Fix issue #119

commit bbeb86ecbba64a1e91b037acb377f1e1884b3bbe
Author: g89250741413 <g8925074143@yandex.ru>
Date:   Wed Nov 16 17:02:08 2016 +0300

    Now FakeStrictRedis ttl and pttl return -1 and -2 for non-expiring key and non-existent key, respectively. Add FakeRedis appropriate wrappers. Add tests

commit 1fc0dbff7156e1e0800f4cc553a68faffee073d0
Author: Nuno Santos <nunofvsantos@gmail.com>
Date:   Fri Nov 11 15:39:47 2016 +0100

    Pass through additional kwargs from `from_url` to the class initializer.

commit b48dc03f2b11cadc1a5f8bd1919663624271dd8a
Merge: 1c91de6 7ba9312
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 20 21:01:32 2016 -0700

    Merge pull request #130 from matt-snider/fix-inconsistent-byte-storage
    
    Fix bugs related to inconsistent storage of bytes/strings

commit 1c91de6c93bd976edcd060d8f14aff238064038d
Merge: 4bfc7a2 b74eadc
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 20 20:59:29 2016 -0700

    Merge pull request #131 from mdawar/master
    
    Fixed setting a None value, it should be set as a string and it was being set as None

commit b74eadc4b7a73abda8b181305249bfc6ec6e6d90
Author: Pierre Mdawar <p.mdawar@hotmail.com>
Date:   Tue Oct 11 16:08:45 2016 +0300

    fixed setting a None value, should be set as a string

commit 7ba9312514c4c26ea1d9523a215037ae97f2db0d
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sun Oct 2 21:54:52 2016 +0200

    Ensure sub-results that have been patched to decode responses are stored as bytes

commit 752363042b8f23e8f8de81bd60a34c771a4d5d25
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sun Oct 2 21:50:41 2016 +0200

    Add tests to cover inconsistent storage of bytes/strings

commit 4bfc7a2793aa93723c79512f8be4df2c497498ef
Merge: 913d987 291b5dc
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Sep 6 09:39:01 2016 -0700

    Merge pull request #126 from onovy/32b_fix
    
    Fix unit tests failing on 32 bits CPU archs

commit 291b5dc3fcbf9ec6cdd66b89e8bc397d3c3375a3
Author: Ondřej Nový <ondrej.novy@firma.seznam.cz>
Date:   Fri Sep 2 22:57:33 2016 +0200

    Fix unit tests failing on 32 bits CPU archs

commit 913d98715c76e52826ec4282b20838afef5e4428
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Aug 16 20:55:00 2016 -0700

    Remove pypip.in badges
    
    Service is no longer operational.

commit 96524bd1d2aa6449ed58ed1e5e8c4d4938f1116e
Merge: 6985108 16faccd
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Aug 16 20:53:36 2016 -0700

    Merge branch 'fix-test-bug'
    
    * fix-test-bug:
      Update test to not hide errors

commit 16faccd71a21250f7ba943a44331b1b5ac2df758
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Aug 16 20:42:04 2016 -0700

    Update test to not hide errors
    
    The way I previously fixed the py3 test failures resulted
    in tests that could hide errors where redis returns binary objects
    and we expect a decoded response.
    
    I've updated the test based on @matt-snider's suggestions on how
    he has handled this in other tests.

commit 6985108d54930fd797ba8ab5912e4e0a6675d097
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 15 23:59:16 2016 -0700

    Bump version to 0.8.1

commit 0aa1cb353be848318bddc47971f92d162279d7b2
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 15 23:55:35 2016 -0700

    Decode container as well in assertIn override
    
    Fixes failing test.

commit 95549de648892490ca7abf299936605a86b81123
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 15 23:35:56 2016 -0700

    Add note about new HelpWanted label on issues

commit 95e9179885fc38ec633a3ef80ef557ab80f9c856
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 15 22:56:53 2016 -0700

    Bump version to 0.8.0

commit 5b6932673ca1c256f9c255540cb36dd435a83be9
Merge: e8f6d59 5aa60cb
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 15 22:52:33 2016 -0700

    Merge branch 'lburg-ignore_pubsub'
    
    Closes #114.
    
    * lburg-ignore_pubsub:
      Add possibility to ignore subscribe messages when using pubsub

commit 5aa60cb40449506f29adcce5474e2400f83c87d1
Author: lburg <burg.lois@gmail.com>
Date:   Wed May 18 17:39:15 2016 +0200

    Add possibility to ignore subscribe messages when using pubsub

commit e8f6d59a73f7fb5a8e368fbc923bae8f7347b3bc
Merge: c71157c faac5a9
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Aug 13 16:17:58 2016 -0700

    Merge branch 'matt-snider-decode-responses-patch'
    
    * matt-snider-decode-responses-patch:
      Fixes for python 2.6 compatibility
      Fix remaining tests failing due to encoding issues
      Ensure assertEqual() method order is: redis expression, literal
      Add decode_responses tests by inheriting from existing test classes
      Add decode_responses support to FakePubSub
      Update methods for decode_responses compatibility
      Implement decode_responses support via method-patching

commit faac5a96a9724ee90fe08a1ebf3fca5c7d559976
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 21:41:24 2016 +0200

    Fixes for python 2.6 compatibility

commit 905201521e32e6f92a25df9e82bdf8e9d6072dc6
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 20:09:00 2016 +0200

    Fix remaining tests failing due to encoding issues

commit 1fd76417b2780c1a2abe3adf529711e4abd1adcf
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 20:08:32 2016 +0200

    Ensure assertEqual() method order is: redis expression, literal

commit 3ea70521bb8bdd5a6df0a73a6ab1ea73d95771b8
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 20:07:33 2016 +0200

    Add decode_responses tests by inheriting from existing test classes

commit c57b470d21048c6277eed3c2352d70a65e3013c7
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 20:05:32 2016 +0200

    Add decode_responses support to FakePubSub

commit 4d633a79cc41afaa5053720fba8cd3db0cdec5fb
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 20:05:13 2016 +0200

    Update methods for decode_responses compatibility

commit 15cc7543a3aa6d3dad9c691a3fcb0ac9f1c4cf88
Author: Matt Snider <matt.snider@alum.utoronto.ca>
Date:   Sat Aug 13 20:04:31 2016 +0200

    Implement decode_responses support via method-patching

commit c71157c6791a89f312794fba227e278e53e941bf
Merge: fd9bc80 0d5fb92
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu May 26 11:52:17 2016 -0700

    Merge pull request #115 from aviddiviner/master
    
    Implement PEXPIREAT w/tests, update docs, bump version

commit 0d5fb927a5f8ca5eac738e903e19f043bddc6002
Author: David Irvine <aviddiviner@gmail.com>
Date:   Thu May 26 13:44:05 2016 -0500

    Revert version bump

commit f8f17325b0670dca41cfb7b32943941eeb504446
Author: David Irvine <aviddiviner@gmail.com>
Date:   Tue May 24 21:11:14 2016 -0500

    Add test and fix for rounding error

commit e1f3bc339afde1c3c1a15e8e6d047e84d876b786
Author: David Irvine <aviddiviner@gmail.com>
Date:   Tue May 24 14:29:36 2016 -0500

    Implement PEXPIREAT w/tests, update docs, bump version

commit fd9bc8084e5ef5ba1cb0cb4d35e0d1457a5385d4
Merge: 8de9cff 40caab7
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon May 23 09:26:39 2016 -0700

    Merge pull request #113 from aviddiviner/master
    
    Fix TTL/EXPIRE, implement PEXPIRE and add tests.

commit 40caab7c91f8ccdbea8cd96ce90db6379504b6a8
Author: David Irvine <aviddiviner@gmail.com>
Date:   Thu May 12 17:14:59 2016 -0500

    Raise error on float EXPIRE values and return long TTL values

commit afb592db50ba92040923408e75bc7c6652b90312
Author: David Irvine <aviddiviner@gmail.com>
Date:   Thu May 12 17:04:09 2016 -0500

    Add failing TTL/EXPIRE tests which succeed on real redis

commit e320b3a5bb0a48dc7760fbc88b2e8b3d29d52cfb
Author: David Irvine <aviddiviner@gmail.com>
Date:   Tue May 10 18:17:00 2016 -0500

    Fixed tests; assert same behaviour as real redis

commit fd310cbfa6f9540067e1883e6b9178d37934235b
Author: David Irvine <aviddiviner@gmail.com>
Date:   Tue May 10 17:48:35 2016 -0500

    Tidy formatting, remove duplicate (unused) test

commit 37cc3ca6772a274ddb4c9a1cb8ebf247039f9ab9
Author: David Irvine <aviddiviner@gmail.com>
Date:   Tue May 10 17:55:32 2016 -0500

    Implement pexpire, add tests

commit 8de9cff1d4b15bde573c73478596287fd7621427
Merge: 343002a f9993b9
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Apr 25 15:44:56 2016 -0700

    Merge pull request #111 from fyndiq/set_accepts_timedelta
    
    set() ex and px parameters accept timedelta

commit f9993b9c499141f8fea9b50489df0798b5182127
Author: Sergei Beilin <sergei.beilin@fyndiq.com>
Date:   Mon Apr 11 13:24:43 2016 +0200

    Add test for negative px parameter in set()

commit b3dd1e90ff7fdd75e4c43f4eba01f4707fcb7544
Author: Sergei Beilin <sergei.beilin@fyndiq.com>
Date:   Mon Apr 11 13:17:33 2016 +0200

    Add test for px parameter in set()

commit 8061ec1c2c0922ad8179e48b2b8c2fcb54d7e6b6
Author: Sergei Beilin <sergei.beilin@fyndiq.com>
Date:   Mon Apr 11 11:24:58 2016 +0200

    Add tests

commit 78c1f15086271005511d79fe7d03a1ab75c6ed55
Author: Sergei Beilin <sergei.beilin@fyndiq.com>
Date:   Mon Apr 11 11:24:44 2016 +0200

    Fix set() to properly handle timedelta as official redis-py does

commit 343002ab2df71c6423512377d997c56885171986
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 16 18:34:19 2016 -0700

    Test 3.5 on travis

commit feb839a4719ccdd62611a5993596c44fc66f1b83
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 16 18:32:11 2016 -0700

    Bumping version to 0.7.0

commit ee3ffe7709881ba45b072169b375b65806c164f5
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 16 18:30:00 2016 -0700

    Regen set of supported commands

commit e836a8262c392d80ad4417d07a33193ea912d159
Merge: 14570f9 555a03e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Mar 12 20:56:49 2016 -0800

    Merge pull request #108 from krakip/FixWindows
    
    Look for strtod in msvcrt.lib on Windows; test strtod search behavior

commit 14570f9991bda8daf85bb011161409785f2ea980
Merge: 3d069fd cf512d0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Mar 12 20:55:41 2016 -0800

    Merge pull request #110 from ikreymer/zset-lex-ops
    
    Add zset lexicographical ordering functions

commit cf512d0af51ebe8af6d5007fbb7f7fc6a1a1c80f
Author: Ilya Kreymer <ikreymer@gmail.com>
Date:   Thu Feb 25 10:21:30 2016 -0800

    add ZRANGEBYLEX, ZREVRANGEBYLEX, ZREMRANGEBYLEX and ZLEXCOUNT support, closes #109

commit 555a03e1b839fbe4a5ba3b45a90ffa20036c82db
Author: Kent Rakip <krakip@Kents-MacBook-Pro.local>
Date:   Fri Feb 19 16:52:21 2016 -0800

    Fix tests for 2.6 and 3.3

commit 2cd6d7586a3ad092a1d9d1dbfa247556656bd1ff
Author: Kent Rakip <krakip@gmail.com>
Date:   Fri Feb 19 01:05:43 2016 -0800

    Look for strtod in msvcrt.lib on Windows; test strtod search behavior

commit 3d069fd621df8ffeb3233aea16968bfb7759d731
Merge: f5da14a 946b143
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Feb 8 23:11:33 2016 -0800

    Merge pull request #104 from gmlexx/master
    
    Fix GETSET command

commit 946b143676f5b921f05e5d496e03e7f5f188f4d5
Author: Alexey Larkov <gmlexx@gmail.com>
Date:   Tue Feb 2 16:33:37 2016 +0500

    Fix GETSET command

commit f5da14ae74b82caa9acb9d1a32684f74e75c9fe7
Merge: c16f633 ee498b9
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jan 16 18:23:52 2016 -0800

    Merge pull request #100 from bluemoo/fix_incr
    
    Emulate some subtle redis behavior in incr

commit ee498b91e66813c0a4b8ddb6b9ea613e09f0268f
Author: Noah Jacobson <ncj102@gmail.com>
Date:   Fri Dec 18 22:03:12 2015 +0100

    Prefix expected test output correctly for python 3

commit c16f633606b79153475037f23ea46850d385a3d6
Merge: bcfb656 22f81b0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Dec 18 12:51:56 2015 -0800

    Merge pull request #98 from OnBeep/scans
    
    Implement hscan and sscan methods

commit 2deafd8d442abcefcdca9c17b9cd776b4148c05d
Author: Noah Jacobson <ncj102@gmail.com>
Date:   Fri Dec 18 09:32:18 2015 +0100

    Store values as strings after incr deals with them

commit 8a07c689e2518fcfe81b88443e89028f136c0362
Author: Noah Jacobson <ncj102@gmail.com>
Date:   Fri Dec 18 08:42:11 2015 +0100

    Raise exception if non-integer amounts passed to incr

commit 22f81b0a7f91cf9d5316285f7f81b42b34ff9821
Author: Nelz <nelz@onbeep.com>
Date:   Thu Dec 17 15:16:43 2015 -0800

    More Py3 compat

commit f029a0a1ad101168ff5c9dca1088df135a2d4d92
Author: Nelz <nelz@onbeep.com>
Date:   Thu Dec 17 15:10:33 2015 -0800

    Clean out a bad import

commit 12c1475cb1a29d733e4cab14b04521ad8db13965
Author: Nelz <nelz@onbeep.com>
Date:   Thu Dec 17 15:07:00 2015 -0800

    More Py3 compatible

commit c4d136cba986e0ed71fd0715282f025bd9b8805b
Author: Nelz <nelz@onbeep.com>
Date:   Thu Dec 17 13:40:22 2015 -0800

    Implement hscan and sscan methods

commit bcfb656121df46a877f272e780d53ab586868cff
Merge: 4529deb 5af4e92
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Dec 16 23:14:14 2015 -0800

    Merge pull request #96 from nfvs/travis_container_infrastructure
    
    Migrate to Travis-CI container infrastructure, add PIP caching.

commit 4529debd81d7c43461573fc42c9a6ff50b5cead8
Merge: bb6d5df af4a2f0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Dec 16 23:13:51 2015 -0800

    Merge pull request #92 from OnBeep/hyperloglog
    
    Simulate HyperLogLog functionality by using SETs

commit 39d99ebb308dbb5ed6dc4c001973694910055763
Author: Nuno Santos <nunofvsantos@gmail.com>
Date:   Thu Dec 10 22:03:23 2015 +0100

    Match redis-py's transaction() and pipeline() functions.
    
    Match the function signatures, add support for `value_from_callable`
    and `watch_delay` kwargs. Add test for `value_from_callable`.
    
    Fixes #78.

commit 5af4e925f2b5b9f22c5d59b1977c5a12c163c4a1
Author: Nuno Santos <nunofvsantos@gmail.com>
Date:   Wed Dec 9 20:17:45 2015 +0100

    Migrate to Travis-CI container infrastructure, add PIP caching.

commit af4a2f0068074666e0fd8db466fd342ce351bb6a
Author: Nelz <nelz@onbeep.com>
Date:   Mon Nov 2 19:14:44 2015 -0800

    A-ha, found a bug in my implementation

commit ff58667ee5994f91c6a473e3efbd65c20fbd36c8
Merge: cbebcc3 bb6d5df
Author: Nelz <nelz@onbeep.com>
Date:   Mon Nov 2 18:51:43 2015 -0800

    Merged master

commit cbebcc3984256069fc58c0fee639f92837378417
Author: Nelz <nelz@onbeep.com>
Date:   Mon Nov 2 18:43:28 2015 -0800

    Use newly released 2.10.5 version of redis-py

commit bb6d5df5a3fb190b3d4225d292928bbafad38ddf
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Sep 30 21:30:56 2015 -0700

    Add note about flushall
    
    Fixes #89.

commit 7e68c2aedbd49cf86a15e1ad2da67350435b3e27
Merge: fff0029 eb57803
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Sep 30 21:27:32 2015 -0700

    Merge pull request #81 from pitrho/master
    
    Implementation of pubsub methods

commit fff0029916419dad928552d639b4d82380d3fd00
Merge: 8061fff 1e26059
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Sep 30 21:22:24 2015 -0700

    Merge pull request #94 from Tinche/master
    
    Pipeline.execute raise_on_error implementation and tests.

commit 1e26059cf6fc0529bc588f83ea6a06cd67f1fefb
Author: Tin Tvrtkovic <tinchester@gmail.com>
Date:   Wed Sep 30 21:59:25 2015 +0200

    Pipeline.execute raise_on_error implementation and tests.

commit c3c8a89e34d4c822af7f3de2d5e9111f69b36a0f
Author: Nelz <nelz@onbeep.com>
Date:   Thu Sep 24 17:13:17 2015 -0700

    Undo my editors auto-formatting

commit 292da2abeb80ad8adb404eaf0bcdf083ba63d6f2
Author: Nelz <nelz@onbeep.com>
Date:   Thu Sep 24 16:52:33 2015 -0700

    Backport to match 2.10.3 of redis-py (rather than master)

commit d34eaadc90440259f1af6cfc891b6e718898b789
Author: Nelz <nelz@onbeep.com>
Date:   Thu Sep 24 15:47:58 2015 -0700

    Simulate HyperLogLog functionality by using SETs

commit 8061fffb4844d6cc8d92cf48ef497b1f195c8894
Merge: 4af79f6 d7058ff
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Aug 18 07:56:53 2015 -0700

    Merge pull request #86 from fatelei/master
    
    [Fix bug & fix code style] TypeError: zadd() keywords must be strings when using FakeRedis.

commit d7058ffd93cf248083d13c2b734f38e553cf9f0d
Author: wanglei <fatelei@gmail.com>
Date:   Sat Aug 15 00:03:14 2015 +0800

    Add test for testing the `zadd("foo", 1, 1)` work right.

commit 4af79f636cf109edba9f8623a19c40c6ab83082b
Merge: 10e7b67 51966f5
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Aug 6 22:16:38 2015 -0700

    Merge pull request #87 from yoloseem/append
    
    Support APPEND to not preexisting key

commit 51966f56b793ad8ddf6be46e2109fe81aebfd687
Author: Hyunjun Kim <khj@linecorp.com>
Date:   Wed Aug 5 15:49:35 2015 +0900

    Support APPEND to not preexisting key

commit caf56bd3abe089ed7f3de5a177879fe4973dd564
Author: fate <lei@zhihu.com>
Date:   Fri Jul 10 19:47:12 2015 +0800

    remove debug code

commit 02856521bf20d4d6727c384b00787683d470f15b
Author: fate <lei@zhihu.com>
Date:   Fri Jul 10 19:43:49 2015 +0800

    Fix test

commit 04f5f197239984ca39a115df37d051765ee65e42
Author: fate <lei@zhihu.com>
Date:   Fri Jul 10 19:19:12 2015 +0800

    Fix bug: When call method `zadd(name, value, score)` and value is integer, it will lead to raise TypeError zadd() keywords must be strings.

commit 10e7b67dfa62f656795923c8cf36d507619147ec
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jul 6 06:14:37 2015 -0700

    Bump version to 0.6.2

commit b25b4402ac528db158ca0395eafc048a890dd3e1
Merge: e7e0069 d902ea3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 27 14:43:18 2015 -0700

    Merge branch 'rcrdclub-master'
    
    Fixes #83.
    
    * rcrdclub-master:
      Add test when neither args nor kwargs are added
      Proper ZADD support - fixes #83

commit d902ea3c19511be4ddc696826b24b7c78d86837e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 27 14:42:54 2015 -0700

    Add test when neither args nor kwargs are added

commit 22f5e8b7f224c379e345b8f99a59e0728e915d55
Author: Sam Sandberg <sam.sandberg@gmail.com>
Date:   Tue Jun 23 15:08:28 2015 -0400

    Proper ZADD support - fixes #83
    
    Complete with tests
    https://github.com/jamesls/fakeredis/issues/83

commit eb5780368e4140e0ebc74b7322602d97f588cb6e
Author: Alejandro Mesa <alejom99@gmail.com>
Date:   Mon Jun 15 19:38:55 2015 -0700

    Support for bytes encoding in python 3.

commit e7877fd1e27ef82afac7bb5132cda0de823cea07
Author: Alejandro Mesa <alejom99@gmail.com>
Date:   Mon Jun 15 16:37:31 2015 -0700

    Fixed imports in unit tests for Queue.

commit f0da1d39e41e82336f0d9ce6a12fcbe3b0cca8fc
Author: Alejandro Mesa <alejom99@gmail.com>
Date:   Mon Jun 15 16:31:09 2015 -0700

    Changed imports of Queue and Empty to support python 2.6, 2.7 and 3.

commit ead9a8de7721c765caa0e9307b5c8ace6b1f2671
Author: Alejandro Mesa <alejom99@gmail.com>
Date:   Mon Jun 15 15:56:29 2015 -0700

    Refactored code to support python 2.6, 2.7, 3.3 and 3.4

commit b402a792e2615b056013c138ecc028490890803b
Author: Alejandro Mesa <alejom99@gmail.com>
Date:   Mon Jun 15 13:30:34 2015 -0700

    Implemented psubscribe and punsubscribe methods.

commit 552bffcafe10b0809b6a978ee3dd3a5e80d295f7
Author: Alejandro Mesa <alejom99@gmail.com>
Date:   Mon Jun 15 10:12:04 2015 -0700

    Implemented subscribe, publish, pubsub and unsubscribe methods.

commit e7e0069914e0edcfc37eed6a3a7e64a00371a440
Merge: da69539 d481070
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Jun 3 21:57:57 2015 -0700

    Merge pull request #80 from lfyzjck/master
    
    add method `incrby` for fakeredis

commit d4810700e1404ecd5baeb8e8552866e2aeed333f
Author: Jia Chengkun <ck@zhihu.com>
Date:   Wed May 13 16:25:11 2015 +0800

    add method `incrby` for fakeredis

commit da69539c4e83b0cd1941287c410f56b91f1d4114
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Apr 4 00:01:13 2015 -0700

    Add support for echo command

commit 771b3537439f873cfede7f3718e27303528f2ad8
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Apr 3 23:55:59 2015 -0700

    Add incrbyfloat
    
    Closes #26.

commit 39490591708e3d413d32eed4a4c13741d9fca8c0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Apr 3 23:36:56 2015 -0700

    Fix linting issues in test

commit cbe0fcc1409f2431a833aa6ecb8218ea0f730151
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Apr 3 23:26:26 2015 -0700

    Fix linting issues

commit 257c7441e1a302cf034323e303b2ab69da23f2c9
Merge: 739b1d0 aa69cd2
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Apr 3 23:15:29 2015 -0700

    Merge branch 'mothsART-master'
    
    * mothsART-master:
      Simplify redis types detections
      add a type() instruction with unit tests

commit aa69cd287b88a1e1c872caf781432006c66930de
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Apr 3 23:14:30 2015 -0700

    Simplify redis types detections

commit 6de107274fa635281805703deb9b0b82a9b98d8f
Author: Ferry Jérémie <ferryjeremie@free.fr>
Date:   Sat Mar 21 17:58:12 2015 +0100

    add a type() instruction with unit tests

commit 739b1d006ece77b51ba34cb6c88609b73f6c4403
Merge: ddd9381 0e9d4f5
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Mar 19 19:43:05 2015 -0700

    Merge pull request #75 from msabramo/patch-1
    
    README.rst: Syntax highlighting

commit 0e9d4f55847b54a11148c676c693c60edd2f4ef0
Author: Marc Abramowitz <marc@marc-abramowitz.com>
Date:   Thu Mar 12 00:20:14 2015 -0700

    README.rst: Syntax highlighting

commit ddd9381f9271dec1f1a17587545acf2d776c41e5
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 11 20:17:37 2015 -0700

    Bumping version to 0.6.1

commit 2860ae08c4e8ea44403d858367513254b0b629df
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 11 20:14:43 2015 -0700

    Split out dev requirements into a separate file
    
    requirements.txt is only what's required to run the tests.

commit 804375127d9b80766968e3331e2caf9ee16a0a84
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 11 19:52:01 2015 -0700

    Do not mutate input mapping for hmset
    
    Fixes #74.

commit 8195ecaed48ae2f8d65b4250c4d921f2933731f1
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Mar 11 12:42:32 2015 -0700

    Fix py3 tests

commit 7381668023432f4ed89c9b5a1e89da54ae0b7e7e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 10 21:04:43 2015 -0700

    Support kwargs for mset
    
    This is supported in redis-py so should be supported in fakeredis.
    
    Fixes #48

commit b9ae04c63d2a41e89c8d6fbcf04d87d64db4e498
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 10 20:59:02 2015 -0700

    Raise error when no keys are provided to mget
    
    Fixes #69.

commit f598141e42bcf19512c380f2b3e11e7e97a4a5c2
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 10 20:51:28 2015 -0700

    Remove scan from unimplemented list

commit f6f6a2f08647405a6ac756952d4ac1523c8a5830
Merge: 8413f99 bd4d622
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 10 20:51:04 2015 -0700

    Merge branch 'btashton-patch-1'
    
    * btashton-patch-1:
      Fix empty key and multi page responses in scan method
      Add scan_iter support
      Support scan command

commit bd4d62216fa685c3ad6d33409fe62983d77f9a11
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 10 20:50:25 2015 -0700

    Fix empty key and multi page responses in scan method
    
    I also added a few additional test cases for this as well
    that were previously failing.

commit 003d0c367b46e9da034f53ee753a7de93818ca98
Author: Brennan Ashton <bashton@brennanashton.com>
Date:   Wed Mar 4 11:13:40 2015 -0800

    Add scan_iter support

commit bbc98d1bfab11f6c2d15134694fc1ba5740933fe
Author: liamchzh <liamchzh@gmail.com>
Date:   Wed Jan 14 15:30:47 2015 +0800

    Support scan command

commit 8413f9939580e5f71c648e3807f58a308bc7198f
Merge: efcbc1f 61d8797
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 3 07:30:31 2015 -0800

    Merge branch 'dairiki-bug.expire-return-value'
    
    * dairiki-bug.expire-return-value:
      Fix return value from expire and expireat

commit 61d87977c756396d4332592e7543ecdf76cc7c39
Author: Jeff Dairiki <dairiki@dairiki.org>
Date:   Wed Feb 25 15:34:13 2015 -0800

    Fix return value from expire and expireat
    
    Expire and expireat should return a boolean indicating whether the
    timeout could be set.  (In general, this means they should return true
    if the key exists, false otherwise.)

commit efcbc1fbdfd7656abae820cd01a29828a36220fe
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 19 21:03:20 2015 -0800

    Bump version to 0.6.0

commit 45f41ad87b2dd563e313093166b5a8c2fa120200
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 19 21:01:17 2015 -0800

    Update README with latest missing commands
    
    From scripts/unsupported.  Looks like I have some commands
    to implement.

commit 30528958ec46c6e6b28ce1d7960341fc11232e46
Merge: bf10559 f1e14f1
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 19 20:48:59 2015 -0800

    Merge branch 'sgammon-fix/issue-62'
    
    * sgammon-fix/issue-62:
      Change TypeError to ResponseError
      Throw a TypeError if a 'GET' is attempted against a hash-type. Fixes issue jamesls/fakeredis#62.

commit f1e14f15cc11f33336d9640f6f3391d83df30fcb
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 19 20:48:20 2015 -0800

    Change TypeError to ResponseError
    
    Also added a unit test. We want to match the types
    that redis-py gives us.

commit bf10559dc4c245c1c9a12a7da450361d3aa89fe3
Merge: b427214 1ea85e1
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 19 20:39:27 2015 -0800

    Merge branch 'plain-vanilla-games-master'
    
    Closes #70.
    
    * plain-vanilla-games-master:
      Add hincbryfloat operation.

commit 1ea85e1bb06052f7d3c2dbb6c52a7e7740b9ee5a
Author: Friðrik Már Jónsson <fridrik@pyth.net>
Date:   Thu Feb 19 11:33:06 2015 -0800

    Add hincbryfloat operation.

commit b4272145e0e248358ecc6c2f35262390f379000a
Merge: 3bfdc53 db31877
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Sep 23 21:34:14 2014 -0700

    Merge branch 'allanino-exclusive-sets-interval'
    
    * allanino-exclusive-sets-interval:
      Refactor zrange filter code to use comparator functions
      Cover more tests
      Added missing testing case
      Added tests for exclusive sets intervals
      Handle exclusive intervals in _get_zelement_range and related functions

commit db31877cd274aeba6c0a06005c0fc5c52975ca18
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Sep 22 06:58:28 2014 -0700

    Refactor zrange filter code to use comparator functions
    
    This removes the code duplication in having to check for
    inclusive/exclusive ranges for the various sorted set functions.

commit 0d00f71ea04162e62358dd3a107fdaaa8ddfe17c
Author: Sam Gammon <sam@momentum.io>
Date:   Fri Sep 12 22:05:36 2014 -0700

    Throw a TypeError if a 'GET' is attempted against a hash-type. Fixes issue jamesls/fakeredis#62.

commit 5ad945309c477caf78cf4c02857c0156f6b8563c
Author: allanino <allaninocencio@yahoo.com.br>
Date:   Tue Sep 9 15:09:16 2014 -0300

    Cover more tests

commit 707456f9f759b89b0b2a7fb684d05677d5de882a
Author: allanino <allaninocencio@yahoo.com.br>
Date:   Tue Sep 9 14:32:29 2014 -0300

    Added missing testing case

commit 015859e8dcd1f1aa928e4c028e382be5efbcf5a4
Author: allanino <allaninocencio@yahoo.com.br>
Date:   Tue Sep 9 10:57:57 2014 -0300

    Added tests for exclusive sets intervals

commit 6d3ba9a763d9cbf10139c724ba7d5ce30b604da2
Author: allanino <allaninocencio@yahoo.com.br>
Date:   Tue Sep 9 10:57:43 2014 -0300

    Handle exclusive intervals in _get_zelement_range and related functions

commit 3bfdc539cc2b3543cb888b283157e1fc9f192507
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:49:35 2014 -0700

    Add setup.cfg for universal wheels

commit 3f392acb9766f7be4a54f4e1734c9243b8fb452d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:48:04 2014 -0700

    Bump version to 0.5.1

commit fb372f829366e2aa0e5a74f70703301a88a7dd52
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:45:24 2014 -0700

    Don't use --use-mirrors when installing deps

commit 784a4867709adfee27b010db7cf5691d8b572525
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:44:24 2014 -0700

    Upgrade test requirements deps

commit 8a09f43f007008fd2b4970ecee1e0767958f3e9f
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:44:16 2014 -0700

    Fix formatting in setup.py

commit ad5578f8e6b2f5200ae49c4636e9e8f8d9ce0c09
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:32:35 2014 -0700

    Add more badges

commit 3d0258b48ac09df534722ba6b46cd0684bf099ac
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:14:05 2014 -0700

    Bump version to 0.5.0

commit 46d1ce78d2e66a1eeae717f14479319b8296385d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 22:11:48 2014 -0700

    Rearrange imports

commit c30984a8190301b1d6b310b8a430d9b35fead8be
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 21:29:15 2014 -0700

    Add py33 and py34 to travis

commit 1721d4aab3843bff5377ead0b07a3241fca721e1
Merge: 9ed4351 2b27cc3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 21:26:46 2014 -0700

    Merge branch 'clee704-py33'
    
    * clee704-py33:
      Update trove classifiers
      Make python2.6 the special case
      Support Python 3.3

commit 2b27cc34b6dd3b5765aaddc98c16b0df8a753be3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 21:26:19 2014 -0700

    Update trove classifiers

commit 21ad45010edb81155c4054bcdf5b45911162d3c4
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Aug 27 21:23:07 2014 -0700

    Make python2.6 the special case
    
    unittest2 is only needed for python2.6, for 2.7 and
    onwards we can just use unittest.

commit bb6c4d38c1ad27d3294c4a62e35fba59b4fcb52f
Author: Choongmin Lee <choongmin@me.com>
Date:   Tue Feb 4 00:28:31 2014 +0900

    Support Python 3.3
    
    Closes #23

commit 9ed4351240d35f5069488f74cc24d2900e930ee6
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Jul 31 19:48:54 2014 -0700

    Bump version to 0.4.3

commit 3095de708eeb2ace692f4e4190740b4e5d1f91dd
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Jul 31 19:46:47 2014 -0700

    Update README with latest supported commands

commit 299ba8bd36ed08f910960cb3305690f65d0ca468
Merge: 27d2a5f 853f729
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Jul 31 19:41:40 2014 -0700

    Merge branch 'aivus-fix_expire_delete'
    
    * aivus-fix_expire_delete:
      Fix #57. Remove deleted key from _ex_keys

commit 27d2a5f29af1e0b603708fa2d3d1726a4513886e
Merge: 1b0e48e eef6608
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Jul 31 19:38:44 2014 -0700

    Merge branch 'Grokzen-master'
    
    * Grokzen-master:
      When sorting desc should be done before slizing the result. Added new test to ensure functionality.

commit 853f72919d23dce001149a62fff6c69b09b74f64
Author: Ilya Antipenko <i.antipenko@smcs.com.ua>
Date:   Wed Jul 30 14:30:46 2014 +0300

    Fix #57. Remove deleted key from _ex_keys

commit eef6608a2f64c8038b52b35eabbc4d0e33708f95
Author: Johan Andersson <Grokzen@gmail.com>
Date:   Tue Jun 17 02:07:08 2014 +0200

    When sorting desc should be done before slizing the result. Added new test to ensure functionality.

commit 1b0e48e728245ef046fb6517e7b811f1b0c19a73
Merge: 7d94419 8addfa5
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 7 09:53:45 2014 -0700

    Merge branch 'clee704-pttl'
    
    * clee704-pttl:
      Implement pttl

commit 7d94419b06c4e5a3c888c8b6be95264553900415
Merge: 9d8b658 a82d78a
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 7 09:27:01 2014 -0700

    Merge branch 'bwu-patch-1'
    
    * bwu-patch-1:
      Add test for #52
      Update sadd to write values as strings

commit a82d78aba3610a56afd3a4a7bf5353ab0c38039e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 7 09:26:50 2014 -0700

    Add test for #52

commit 9d8b658390f85c8998966139ee5704e8becf6ec7
Merge: 1b50aa9 48a1d7b
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 7 09:23:30 2014 -0700

    Merge branch 'oyiptong-master'
    
    * oyiptong-master:
      Use builtin python +inf/-inf values for zrange
      add +inf and -inf to sorted set min/max queries

commit 48a1d7b4f9b0e1990b450ee08ad68842fd535369
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 7 09:19:23 2014 -0700

    Use builtin python +inf/-inf values for zrange
    
    Simplifies the code a bit.

commit 1b50aa93cda300bf8079fbdb3d8c871497a28377
Merge: 278ef85 8426e7c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Jun 7 09:04:31 2014 -0700

    Merge branch 'danielsoneg-hmset-strings'
    
    * danielsoneg-hmset-strings:
      Add test for stringly-typed hmset values
      Stringify values on hmset

commit 8426e7c858a5c65ce84d2f86a6c9c3f2bc7efc73
Author: Eric Danielson <edanielson@twitter.com>
Date:   Thu Jun 5 14:01:41 2014 -0700

    Add test for stringly-typed hmset values

commit a683890f67680ed5a4c4cc8afa2e9ebc8852d2ea
Author: Eric Danielson <edanielson@twitter.com>
Date:   Thu Jun 5 14:01:08 2014 -0700

    Stringify values on hmset

commit f27e90b06e63ccec3f8ac4918b7653da3de245bb
Author: Olivier Yiptong <olivier@olivieryiptong.com>
Date:   Wed Jun 4 02:24:50 2014 -0400

    add +inf and -inf to sorted set min/max queries

commit e26eb031a03b32f9b48c2b5fff7b924bb4753043
Author: bwu <brian.george.wu@gmail.com>
Date:   Mon May 12 18:27:21 2014 -0400

    Update sadd to write values as strings
    
    Pyredis writes values as strings for most things, including sadd. This change writes sets as strings:
    
    In [2]: redis.sadd('test_set', *range(3))
    Out[2]: 3
    In [3]: redis.smembers('test_set')
    Out[3]: set(['1', '0', '2'])

commit 8addfa52cd0125b8c38fc97f09e2e0a9920d2416
Author: Choongmin Lee <choongmin@me.com>
Date:   Thu Apr 24 16:37:41 2014 +0900

    Implement pttl

commit 278ef85db2e57d0a3e53d9dca852e4dd3438dc2e
Merge: 9b4383c 6e6465f
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Mar 27 19:39:30 2014 -0700

    Merge branch 'tellybug-revrange_key_sorting'
    
    * tellybug-revrange_key_sorting:
      zrevrange results should be sorted by score and keys in reverse order

commit 9b4383c8f2419e3fb47b5c413b12bc1ecc7284cf
Merge: 869bbd9 58dd1c1
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Mar 27 19:37:14 2014 -0700

    Merge branch 'pdc-zrem'
    
    * pdc-zrem:
      Add unit test for removing a numeric key from a zset

commit 6e6465f11cf510e7d3736581fd757a0b1a887ef8
Author: Malcolm Box <malcolm@tellybug.com>
Date:   Thu Mar 27 00:11:31 2014 +0000

    zrevrange results should be sorted by score and keys in reverse order
    
    ZREVRANGE sorts tied scores in reverse alphabetical order by key

commit 869bbd9e9fcf381d77d9b2d1a35469099936915f
Merge: 0e1a60a d734ec0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Mar 18 22:02:45 2014 -0700

    Merge branch 'heckj-sortset'
    
    * heckj-sortset:
      force a possible set into a list

commit d734ec02feb551921e8dd8b6f89ee588a51956db
Author: Joe Heck <heckj@mac.com>
Date:   Mon Mar 17 22:17:31 2014 -0700

    force a possible set into a list
    
     * resolves issue #42
     * test from issue included in PR

commit 58dd1c1e437fad5c4ab877ae83f5f4cb026ebfce
Author: Damian Cugley <damian@photocrowd.com>
Date:   Tue Mar 11 13:07:42 2014 +0000

    Add unit test for removing a numeric key from a zset

commit 0e1a60a88889bf08b5025c77acd42bb475d18378
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 20 07:18:35 2014 -0800

    Bump version to 0.4.2

commit d12eea5e445bbdce34f7c5555cd9703f3701ccea
Merge: 1b702fa d754020
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Feb 20 07:16:20 2014 -0800

    Merge branch 'ghaering-master'
    
    * ghaering-master:
      Added tests for expiry using timedeltas.
      Removed call to datetime's total_seconds() in favour of a utility function for compatibility with Python 2.6.
      Allow timedelta parameters for expire, setex and psetex calls.

commit d754020d65f4be5940781372cb1380b5ce905820
Author: Gerhard Haering <gerhard.haering@antevorte.org>
Date:   Thu Feb 13 10:06:39 2014 +0100

    Added tests for expiry using timedeltas.

commit 5593cae3fa047aefef926055adf63105d0b41794
Author: Gerhard Haering <gerhard.haering@antevorte.org>
Date:   Thu Feb 13 10:05:09 2014 +0100

    Removed call to datetime's total_seconds() in favour of a utility
    function for compatibility with Python 2.6.

commit 1b702fa3b7f7b57ed77396590d7668e5cdab500d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Feb 12 08:18:21 2014 -0800

    Fix line lengths on tests

commit d6fb0324f8648c57153ba642d2f83a724247f6e5
Author: Jason Ledbetter <jasonbrent@gmail.com>
Date:   Sun Feb 9 02:49:10 2014 -0500

    Corrected issue in rpush/lrange interactions with nested lists.

commit 78642cafbb731b5af9f1c9e1772c1d2cf768bd2e
Author: Gerhard Haering <gerhard.haering@antevorte.org>
Date:   Wed Feb 12 13:30:12 2014 +0100

    Allow timedelta parameters for expire, setex and psetex calls.

commit 628c208431bffdc0ba1927d872720918fc4cf58c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jan 13 21:56:44 2014 -0800

    Ahh, use the services key to start redis-server
    
    Apparently this is the new way of doing things:
    http://about.travis-ci.org/docs/user/database-setup/

commit 56e4cebf5af6c4f717adda57663d27b9c121fa6a
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jan 13 21:37:24 2014 -0800

    Use init.d script instead of service to start redis

commit c6845e7bdfaa9ef2f68d38bd24a0dcb8306b1b69
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jan 13 21:04:23 2014 -0800

    Now need to explicitly start redis-server
    
    I believe ubuntu doesn't start redis-server after install.

commit 5226c185c701bc9dcafa3a7ffe0b50b8fbeabdd3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jan 13 21:04:03 2014 -0800

    Add wheel to requirements file

commit 5cd4b182c880ec8427c605ffdf3594b1285d171b
Merge: 74cd0cf e927b98
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jan 13 20:41:19 2014 -0800

    Merge branch 'issue-32'
    
    * issue-32:
      Convert values to str() where appropriate

commit e927b98e24016c7d0acb66384b120046313491f2
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Jan 13 20:40:04 2014 -0800

    Convert values to str() where appropriate

commit 74cd0cf6082e35f4d473fba2248c56084cbdfec4
Merge: 71a344e 893cc0b
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Oct 19 14:30:46 2013 -0700

    Merge branch 'bazz-master'
    
    * bazz-master:
      zunionstore and zinterstore now uses aggregate='SUM' by default (fixes #30)

commit 71a344ea85ecfbed866748d1d4dad9d9fadbdd26
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Oct 19 14:20:48 2013 -0700

    Bump version to 0.4.1

commit 893cc0bf2bc69be3ca8dec99bdf41b8ec78cbe0f
Author: Anton Solovyh <bazz@kanobu.ru>
Date:   Tue Oct 8 19:24:46 2013 +0400

    zunionstore and zinterstore now uses aggregate='SUM' by default (fixes #30)

commit eb156b35385a10397b8bd9aadb672854cf27e4f7
Merge: a8b4eb4 ff1cf65
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Sep 29 17:36:43 2013 -0700

    Merge branch 'doismellburning-from_url'
    
    * doismellburning-from_url:
      Add tests for from_url
      Added `FakeStrictRedis.from_url` from 2.4.13

commit ff1cf659c34280e1c493a532a9a75734cf89c8f5
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Sep 29 17:35:50 2013 -0700

    Add tests for from_url
    
    Also parse the db arg from the url to support
    specifying the db from the url.

commit a8b4eb42124819a5f4ec5eb84fc967d23d3b3c4e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 5 21:41:21 2013 -0700

    Bump version to 0.4.1

commit 8c2d5ed18dbb6758ec8a2054bb0eef23543052cf
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 5 21:40:21 2013 -0700

    Bump trove classifier

commit c5a036ac7995dcb648a66ed260fb51771cdb7b6f
Merge: d7c53b5 4f8a3da
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 5 19:53:42 2013 -0700

    Merge branch 'list-or-args'
    
    Fixes #28.
    
    * list-or-args:
      Support list_or_args for hmget

commit 4f8a3da1b20231e5dcdbaa04adcbfecfe3d9290e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Aug 5 19:52:38 2013 -0700

    Support list_or_args for hmget
    
    Looks like this was an oversight on my part.
    Went through all the existing commands and verified
    that fakeredis supports anything that redis-py for
    list_or_args.  Fixes #28.

commit 7f6631347fef9f89ee3b17ea9560de12a62aa1c6
Author: Kristian Glass <git@doismellburning.co.uk>
Date:   Tue Jul 30 15:39:01 2013 +0100

    Added `FakeStrictRedis.from_url` from 2.4.13

commit d7c53b50926a0d8943c5dc46fdcff012a711cda6
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Jul 17 21:12:17 2013 -0700

    Remove executable mod for test_fakeredis

commit 9262676693608cd315dcb657e2eebb98422f65be
Merge: 2536efc 1a53e8f
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Jul 17 21:05:10 2013 -0700

    Merge branch 'vladignatyev-master'
    
    * vladignatyev-master:
      Small pep8 fixes
      Tag tests that sleep as slow
      Pep8 formatting
      implemented ttl
      implemented expireat
      implemented expire
      refactorings, integrating expiration feature into setex, implemented psetex
      implemented set xx
      set px implementation
      expiring keys support
      renamed test method
      setnx implementation complying with test_set_should_accept_nx
      wake up tests: redis 2.7.6 compatibility
      updated tests for TestRealRedis test-case
      updated requirements

commit 1a53e8fdc9f060a5a52666c1d82a93d2ff44184a
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Jul 17 21:00:12 2013 -0700

    Small pep8 fixes

commit 76cf6dc38cd0e2c16172ecb54b7b09e719bc1ab4
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Jul 17 20:51:38 2013 -0700

    Tag tests that sleep as slow

commit 86a9ddd73e7918fcb1d31fa98987a7931a65b5e4
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Jul 17 20:51:21 2013 -0700

    Pep8 formatting

commit d39744c8579da4bdb8d7d78be9d4de2d637335b5
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 18:17:13 2013 +0200

    implemented ttl

commit 06ab92864f508eae05a7517c3b116d8fb68fe214
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 17:38:19 2013 +0200

    implemented expireat

commit 4938bc41d2143411d2a8b5d17e79568261603e55
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 17:26:33 2013 +0200

    implemented expire

commit adc84ff97816c606f33cf12e33201ebcd73dc286
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 17:09:49 2013 +0200

    refactorings, integrating expiration feature into setex, implemented psetex

commit 50f069ffcd212b49e81b72a37b7f1de650ec456e
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 16:50:49 2013 +0200

    implemented set xx

commit b6967ea7abb61d312480c6e98762d8cd2298ba8f
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 16:47:03 2013 +0200

    set px implementation

commit 0842fcecc3711c2875419de3964c4a5acf3fe7dd
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 16:43:32 2013 +0200

    expiring keys support

commit 9c12d43708552fc3d74647d085e44c6c7b6b80e0
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 15:59:56 2013 +0200

    renamed test method

commit 7e2c1ca3ddfbac42a2dc65d2141ab16cff5e8ab1
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 15:54:17 2013 +0200

    setnx implementation complying with test_set_should_accept_nx

commit 0901d32b8aa4ade61545f7f97c7e528bb64704df
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 15:49:29 2013 +0200

    wake up tests: redis 2.7.6 compatibility

commit 4fad0b31d3c004e3fcdd9ea4f03e5c901d3ec88f
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 15:45:57 2013 +0200

    updated tests for TestRealRedis test-case

commit a91b9eb52b6e775177f1d1de7b41c0cc00e7b68d
Author: Vladimir Ignatyev <vignatyev@flexis.ru>
Date:   Tue Jul 16 15:45:33 2013 +0200

    updated requirements

commit 2536efc5d7fc08fbdad3ddbf1441d0221fe2e87d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed May 29 23:08:34 2013 -0700

    Bump version number
    
    Next version will be 0.4.0.

commit e6b05c11fa0ebbb7c3b69fdb2ed94f8c1bec305e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Apr 14 17:14:48 2013 -0700

    Add contributing guide

commit c4e6320a74d4f4eb9c532c8132fe13408ead27e0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 23:45:41 2013 -0700

    Update email address

commit f016e563fe7210d35d11c9d6f7329bea5e6af47a
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 23:33:38 2013 -0700

    Remove unused variable in test

commit 3f218c7f87c78b3b3875c4e654ba11bcfd259cff
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 23:28:43 2013 -0700

    Last attempt for coveralls, use coverage directly

commit aa13c16141f461fd5b57b391421838d3d4b605e8
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 23:11:35 2013 -0700

    Use triple quote for docstring
    
    For consistency and pep257.

commit 03db3fee08e6ee878325546b716f70f673f7462f
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 23:01:02 2013 -0700

    Use other python coveralls package
    
    Maybe it's the package, but I'm getting a lot
    of irrelevant data that's polluting coverage.

commit 3254295d0607cbe748221f76bceec45849c15f01
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 22:51:16 2013 -0700

    Add coveralls badge to README

commit 4165bf20524a4349122034e9c1c2cda5be50f2d8
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 22:41:57 2013 -0700

    Explicitly add test_fakeredis to travis config

commit 8ad8eae61aa64400a6b4b9bd83d6928de7db99b7
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 22:34:49 2013 -0700

    Uhg typo, it's --use-mirrors

commit f869fc992bc7487f5476ae4638a2bc49755506d0
Author: James Saryerwinnie <js@jamesls.com>
Date:   Wed Apr 10 22:31:54 2013 -0700

    Add coveralls.io config to .travis.yml

commit e9c63c92d3a27d493260ef86eb9d60a0246a947d
Merge: 5aeaa94 04d94e3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Mar 23 17:01:27 2013 -0700

    Merge branch 'seatgeek-master'
    
    Closes #24.
    
    * seatgeek-master:
      Update redis version in requirements.txt
      add bitcount command

commit 04d94e3536f9406096ff92176851bc8403afd8c2
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Mar 23 17:00:21 2013 -0700

    Update redis version in requirements.txt

commit 87b64d4b35abf231b12332afefe429dbe1a2641c
Author: Eric Waller <erwaller@gmail.com>
Date:   Mon Mar 18 21:23:06 2013 -0400

    add bitcount command
    
    Note: I had to bump the redis-py requirement to the most recent version. For whatever reason, 2.6.2 didn't seem to have bitcount.

commit 5aeaa9496b74dbdb6f2577c8e6cc6650b8799362
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Mar 10 13:45:54 2013 -0700

    Bump version number
    
    Added __version__ to module.

commit 14a32ba38e1481f41520b8ca101d488bcee0ed81
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Mar 10 13:42:44 2013 -0700

    Fix ping() bug, should return True not PONG
    
    Verified this passes on the latest version of redis (2.6.10).

commit bf1ae2019799f4ae06ebc91125f31b7a134f3229
Merge: 4b21a21 6e4cb7c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Mar 10 13:39:12 2013 -0700

    Merge branch 'non-string-keys'
    
    Closes #10 and #11.
    
    * non-string-keys:
      Add support for nonstr keys

commit 6e4cb7c2bac6b0627cd1494dc58d2e7714b5c694
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Mar 10 13:35:04 2013 -0700

    Add support for nonstr keys
    
    I've updated setup.py to be explicit that
    we're requiring python2.6 and greater, because
    I'm using collections.MutableMapping.

commit 4b21a210179a16491e79c853a85055339834c7c5
Merge: 6f9999f f3ee913
Author: James Saryerwinnie <js@jamesls.com>
Date:   Mon Feb 11 07:36:17 2013 -0800

    Merge remote-tracking branch 'anentropic/ping_fix'
    
    Closes #22.
    
    * anentropic/ping_fix:
      update readme to reflect implemented ping
      add missing ping method
    
    Conflicts:
            README.rst

commit f3ee9135f31db61460fd500f00cae346b0f26607
Author: Paul Garner <ego@anentropic.com>
Date:   Mon Feb 4 18:54:00 2013 +0000

    update readme to reflect implemented ping

commit c6090a44eb920bf8e87672daf3f6031a434aac5b
Author: Paul Garner <ego@anentropic.com>
Date:   Thu Jan 31 14:50:05 2013 +0000

    add missing ping method

commit 6f9999f21918883fe676e139af23fce58a1d4f84
Merge: 7d20a5d d4fa9bb
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Jan 3 21:28:31 2013 -0800

    Merge branch 'ckrybus-fix-zaggregate'
    
    * ckrybus-fix-zaggregate:
      Fix `zunionstore` and `zinterstore` commands to work with normal sets

commit 7d20a5d08f2f580fc7662f2fa9af231c1a82b51b
Merge: 5583785 239300b
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Jan 3 21:22:32 2013 -0800

    Merge branch 'ckrybus-fix-sdiff'
    
    * ckrybus-fix-sdiff:
      Fix `sdiff` removing elements from the source set

commit d4fa9bb655d77272f5a4fcece6a653db6bd47a25
Author: Christoph Krybus <ckrybus@googlemail.com>
Date:   Tue Jan 1 23:56:08 2013 +0100

    Fix `zunionstore` and `zinterstore` commands to work with normal sets
    
    The native redis zunionstore and zinterstore commands can handle normal sets besides
    sorted sets as input.

commit 239300b324fcdb5f5a54fd2a3f9e0393ccb19ddf
Author: Christoph Krybus <ckrybus@googlemail.com>
Date:   Tue Jan 1 23:21:38 2013 +0100

    Fix `sdiff` removing elements from the source set
    
    The redis sdiff operation doesn't modify the first set or all the successive sets.

commit 5583785e0c7d8231360be0a11fbb00dcccacb003
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Dec 15 17:09:45 2012 -0800

    Update unsupported commands for redis 2.6.0
    
    Looks like I have some work to do ;)
    Scripting is going to be interesting...

commit 31efb64876c4680b479cc1ada145d9e54f82a94f
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Dec 15 17:01:56 2012 -0800

    Test pipeline proxies to redis object

commit 7541f04937e1f5019de3fd27f9141291cbd4aeb4
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Dec 15 16:54:06 2012 -0800

    Add missing tests for old style zadd args

commit 29dca5b05f820f226e089c80e63dd5dbb9d7636e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Dec 15 16:39:36 2012 -0800

    Update README to mention tests

commit 69b3f8efe622644a5a77b46c75ccf6ff848042c3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sat Dec 15 16:28:50 2012 -0800

    Move blocking tests to separate test
    
    So you can skip with with a nose attr during
    normal development (they're fairly slow).

commit 2dc84c32c0830763d75203be6047bcb3e3e33088
Author: Paul Garner <paul@potatolondon.com>
Date:   Fri Dec 7 15:09:00 2012 +0000

    Add tests for rpop{lpush} consistency

commit c27e49a74fb6e9233d432332d53a35395d757283
Author: anentropic <ego@anentropic.com>
Date:   Wed Nov 28 18:24:45 2012 +0000

    don't lpush None from `rpoplpush` where src list was empty
    
    and same for `brpoplpush`
    
    according to Redis docs, if src list was empty nothing should get pushed and method returns `nil`/`None`

commit caaf067ecf1b64ccd5d519e0fa343903e9796317
Author: anentropic <ego@anentropic.com>
Date:   Wed Nov 28 16:45:24 2012 +0000

    fix it properly, making use of existing `rpop`
    
    and noting that `brpoplpush` behaves more like `rpop` than `brpop`...

commit 5ce069b1996906c51e8bcb5b4948f45600aeb5ba
Author: anentropic <ego@anentropic.com>
Date:   Wed Nov 28 16:26:56 2012 +0000

    Fix inconsistency between `rpoplpush` and `rpop`
    
    `rpoplpush` (also `brpoplpush`) did not have the default empty list behaviour, causing "IndexError: pop from empty list" errors.
    
    Pretty sure they should behave the same as `rpop` and `brpop` in this regard.

commit a1a87214b60665150715feb54f89abbe4a878cd6
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 17:04:15 2012 -0800

    Update readme with supporte commands
    
    Fakeredis supports exec/multi

commit 9cbfe59d5d7cd05b1e295a8b28fa408f4c7f329c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 13:42:49 2012 -0800

    Bump version to 0.3.0

commit d0f7207dac10c620fe4f70f63663c173826a9350
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 13:31:55 2012 -0800

    Fix pep8 issues

commit c2bc6aa7881c2b9c1b69cbd6c28f78b5601f0344
Merge: 5b769f1 48bd757
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 13:28:04 2012 -0800

    Merge branch 'pipeline-execute-bug'
    
    Fixes #9

commit 48bd75747607fba26920f5afaadb33cddd4e45b2
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 13:27:33 2012 -0800

    Refactor repeated watch call test into separate test

commit 5c3f59fbd052941dac7cdbe62b53a7e50bb8c679
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 13:05:47 2012 -0800

    Use addCleanup instead of try/finally block

commit 2e8382d95cc29648b3f303891f5fd30a22a59621
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 13:04:20 2012 -0800

    Fix repeated watch calls in a single pipeline
    
    The watching dict was not being reset which would
    cause previously watched keys to still be watched in
    subsequent watch calls.

commit 623d77a7b192c59beebc6221ed7f3f420b5fbacc
Author: Lere Williams <lere@inkling.com>
Date:   Sun Aug 5 00:45:26 2012 -0700

    Empty command and watching buffers after execute()
    
    Conflicts:
            fakeredis.py

commit 4753d125dd045367c3ce6de569e4370ec0eecbef
Author: Lere Williams <lere@inkling.com>
Date:   Sun Aug 5 00:43:52 2012 -0700

    Support watch() on non-existent key

commit 5b769f1d86e41e8d24a5f627e8ebe215154e712b
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 12:04:04 2012 -0800

    Remove unused TypeError check
    
    If someone can come up with a realistic situation
    where the TypeError is necessary, feel free to
    add this back.

commit 60cca1a3e2b8ef43c81cf3a377010136dd16ba14
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 12:03:51 2012 -0800

    Add proper return value for ltrim

commit 560df338e0d1b9ceb1ec1027e7466ad570dc1979
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Nov 18 11:46:18 2012 -0800

    Fix typo in test

commit 66532882cc26c684b58cddb94376f6110c2bf07e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:52:18 2012 -0800

    Add note about supporting redis 2.6

commit 807b1a6ffb41f7f92be6498b8a74c2897475cb6c
Merge: 7d18caa 1944253
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:48:02 2012 -0800

    Merge branch 'variadic-support', fixes #8

commit 194425303aebec7afaa7e73aa38c0f3085a72e2b
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:47:30 2012 -0800

    Add response errors for zset with nonfloat scores

commit 9acd4b648abf3f4259fe7d77baa1c25c93db5970
Author: Lere Williams <lere@inkling.com>
Date:   Sat Aug 4 23:23:57 2012 -0700

    Add support for variadic commands
    
    The variadic commands introduced in Redis 2.4
    are sadd, hdel, srem, zrem, zadd, lpush and rpush.
    
    Conflicts:
            fakeredis.py
    
    Based on 38829bae65240fdf4c4d03293e2fb5b3d1629f15.

commit 7d18caae6d8501590d88ccecb1d7d7d1b7997a9d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:19:11 2012 -0800

    Remove unused import

commit 01445003d6ed7d285a980c724754775c61b8cc2c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:15:54 2012 -0800

    Update readme with info on how to run tests
    
    Since the strict class splits, you now need to specify
    both classes to run the unittests/integration tests.

commit 19ccf2f9acc35011be30be965ec625e86700ac1d
Merge: 66afb21 51939f9
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:06:12 2012 -0800

    Merge branch 'msabramo-tox'

commit 51939f985f390423ec057b5e1bcf1f255708785c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:04:24 2012 -0800

    Allow args to be passed through to tox
    
    This allow just the unittests to be run with tox, e.g:
    
        tox test_fakeredis.py:TestFakeRedis

commit 686c6e97549161e5621ba22ad92041f3f9f5da49
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 21:02:52 2012 -0800

    Remove pypy tests
    
    Would love to support pypy, but the tests
    don't currently pass.  I suspect I'll need
    to avoid ctypes and use a pure python strtod
    implementation.

commit 42d8f0fb683aa0db58aac7dbe65b692fdbb95b6e
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 20:15:44 2012 -0800

    Add tox to requirements files

commit 8cc7999fe1e1a6642dd1ee318371dae5381afdb2
Author: Marc Abramowitz <marc@marc-abramowitz.com>
Date:   Wed Nov 14 23:37:35 2012 -0800

    Add tox.ini for tox (http://tox.testrun.org/)

commit 66afb21688c1309eb4151b92f66ff65ac4175466
Merge: 7a73ba5 cfb619c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 20:02:52 2012 -0800

    Merge branch 'msabramo-hset_existing_key_return_0'

commit 7a73ba59910fa45be3609c29cbd94b4c1c8644ff
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Nov 15 19:57:07 2012 -0800

    Update sorting behavior for redis 2.6
    
    Fixes #12.  I think to be complete I'll need a
    isnan check and an errno check.

commit cfb619cc402583b70012b9e18273e9d752ed92a3
Author: Marc Abramowitz <marc@marc-abramowitz.com>
Date:   Wed Nov 14 23:51:12 2012 -0800

    Modify hset to return 0 when updating an existing key.

commit b1ee7faf3e9cabf23883934c671fbd0f49e7f38d
Author: Marc Abramowitz <marc@marc-abramowitz.com>
Date:   Wed Nov 14 23:49:49 2012 -0800

    Add test_hset_update, which tests that HSET returns 0 when updating an existing key.

commit 5efe23ca7ae2cd86c933225d267f9f32da6185dd
Author: James Saryerwinnie <js@jamesls.com>
Date:   Tue Oct 16 19:49:28 2012 -0700

    Bug fix: Return empty set if set does not exist
    
    smembers sometimes returns None, which is not
    consistent with what redis returns.

commit c05dcaacf78349d89b1c5f083fe3936883989b93
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Oct 7 16:55:06 2012 -0700

    Only run tests for differences in non strict redis
    
    I did this because almost every failure in StrictRedis
    will generate an error in Redis as well.  This makes it
    hard to track down how many independent errors there actually
    are.

commit 89192822e8165a6816a994fcace2694e30e4815c
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Oct 7 16:43:35 2012 -0700

    Upgrade redis-py to 2.6.2

commit aeb7b4b28acb6cf598203969bd8f50eb1bc4e1e3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Oct 7 16:07:09 2012 -0700

    Add a gitignore file

commit e34b2a72bdeae31ec1d2c07f66a84471c0c87db1
Author: James Saryerwinnie <js@jamesls.com>
Date:   Sun Oct 7 15:59:59 2012 -0700

    Close connection to redis after test finishes
    
    Previously, connections were being kept open
    until all the tests were finished running.  Now
    that the number of tests is big enough (awesome!)
    this would cause an error after a certain number
    of tests (on my dev laptop this was at about 500
    connections).  I couldn't find a way to close the
    conection to redis other than del'ing the
    redis connection in the teardown method.  Now
    I'm able to run all the integration tests without
    any issues.

commit a94696b4e2b4cea866600eb54301a8c7c76c8399
Author: James Saryerwinnie <js@jamesls.com>
Date:   Fri Oct 5 19:03:46 2012 -0700

    Add a link to redis-py in the README

commit 0ab900fa44a4ffbffb1678523e56b23af25ac8f1
Merge: f486315 f8641a3
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 4 21:09:27 2012 -0700

    Merge remote-tracking branch 'mjallday/master'

commit f4863153d556fafb3106bbe6e7b958b1edc3ca98
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 4 21:04:03 2012 -0700

    Allow redis to accept any kwargs
    
    To make it easier to swap for a real
    redis client.

commit 6b0f05305a6a608b9069c9815dc21ba5f9aa398d
Author: James Saryerwinnie <js@jamesls.com>
Date:   Thu Oct 4 21:00:42 2012 -0700

    Pep8 cleanup to fakeredis

commit f8641a31b3eddadbb34b5ac5cff8ea5cde5752d8
Author: Balanced Marshall <marshall@poundpay.com>
Date:   Wed Aug 8 17:48:38 2012 -0700

    key can be None which breaks fnmatch

commit b5692453eef10bad8bc71afece9cf99e5e733bc5
Author: Balanced Marshall <marshall@poundpay.com>
Date:   Wed Aug 8 17:38:26 2012 -0700

    Implement pattern matching on keys
    See http://redis.io/commands/keys

commit 36ad73ee1ad2e34fcbbcf5616bba954850f01554
Author: Pindi Albert <pindi.albert@gmail.com>
Date:   Sun Jun 3 01:18:39 2012 -0700

    Fix zadd order for StrictRedis, add unit test

commit c3fde323ad8a647bbee46734714fc2da81e72ce6
Author: Pindi Albert <pindi.albert@gmail.com>
Date:   Sun Jun 3 01:12:47 2012 -0700

    Split test case to test both FakeRedis and FakeStrictRedis

commit 6fd38d14401af91c2bd4d3b1f4cdaa62f05ecd04
Author: Pindi Albert <pindi.albert@gmail.com>
Date:   Sun Jun 3 01:00:03 2012 -0700

    Start rewrite to use StrictRedis

commit 55a44b8c37a15b2a78443e095be8021ddfe3db77
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun May 20 14:07:59 2012 -0700

    Update travis cfg to install redis-server
    
    This will allow for running the integration tests.

commit 3d8d355cab61b8d6a5c47bebd311f6aa9201a494
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun May 20 13:50:21 2012 -0700

    Add explicit email address for CI notifications

commit 86f608c79410d87b8fd8d909428449feb86dcfc9
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun May 20 13:42:40 2012 -0700

    Add the travis CI icon to the README

commit 4f2fa9f23eb1ffadf001e1bbea2b5dce89ffaab4
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun May 20 13:38:16 2012 -0700

    Add a .travis.yml config file for CI testing

commit 8daad8944029b7e02b352faee35c1bc9522547a1
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Apr 18 08:11:13 2012 -0700

    Bump version to 0.2.0

commit 8503d10de83952c003c7eeb9b3db6e7d74540ff7
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Apr 18 08:10:02 2012 -0700

    Add manifest.in file
    
    Needed so fakeredis can pip install cleanly
    from pypi.

commit 55e4859cfa308f0db5f4e831fce23333ebfdb2ec
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun Apr 15 14:13:01 2012 -0700

    Implement ltrim method

commit 592c1cd6eebd358b4b6c11c0094c84fcba9162e0
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Apr 7 11:30:27 2012 -0700

    Fix formatting/pep8 issues
    
    Also removed debug print statements, fix
    various typos.

commit 40d15949dc181f159defb1f0d0074641986c44a5
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Apr 7 11:19:43 2012 -0700

    Replace non-ascii characters

commit ed70c61579b875b868427924584e3bd8f7e4dc03
Author: pdc <pdc@alleged.org.uk>
Date:   Sat Apr 7 10:42:33 2012 +0100

    Add transaction shortcut method

commit 375f3672430cd905e5e2e2bece05dd63598c614b
Author: pdc <pdc@alleged.org.uk>
Date:   Sat Apr 7 10:14:17 2012 +0100

    Allow pipeline to be used as a context manager

commit fd9ce605ca79916f319d406f273386cdfae48f0d
Author: pdc <pdc@alleged.org.uk>
Date:   Sat Apr 7 09:26:19 2012 +0100

    Add watch & multi commands to pipeline

commit b974a3440931261dfdcd95c9f9fec874b167efe5
Author: pdc <pdc@alleged.org.uk>
Date:   Sat Apr 7 08:45:29 2012 +0100

    Allow transaction=False argument to FakeRedis.pipeline

commit 24416c105804b27b073d8820107ea5fa3cfa220e
Author: pdc <pdc@alleged.org.uk>
Date:   Fri Apr 6 19:36:57 2012 +0100

    Add pipeline method to FakeRedis

commit 79f07dbccc043b6f4790f0c36bf131ad266d4b5b
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Mar 24 13:15:23 2012 -0700

    Update README regarding where state is stored

commit e9da048502136d8bb0fd0eaf470cc066861338ff
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:12:51 2012 -0700

    Bump version to 0.1.1

commit a942064ffc49a1d6ee29d667391e123baeef21df
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:12:30 2012 -0700

    Import os module

commit e1e34233b9a91666ac3abd29dadb7235e5ea7dd3
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:12:03 2012 -0700

    Add a long description based on README.rst

commit 196babb885428f3710a92e80fd570d045f9a49ad
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:10:01 2012 -0700

    Update README to reflect unsupported commands
    
    The *real* list that is.

commit 6cfc3343b9763cfe94869af7245f5c5e0fb0aa8c
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:09:36 2012 -0700

    Special case incr/decr
    
    redis-py puts them all in the incr/decr commands.

commit 54c70e11982adb0dbe3f58d1755ac989648f2a7f
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:09:23 2012 -0700

    Fix bug in setup.py so I can upload to pypi

commit c0e090102c6e5b063c05868fb743511b413db55d
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 15:09:09 2012 -0700

    Alias getrange to substr

commit 8af72be049d3f355526f718b55e1da3958740231
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 14:51:42 2012 -0700

    chmod +x scripts/supported

commit bb537a24062d62c82cba3d1a30afe34329976e9f
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 14:51:16 2012 -0700

    Update README with the output of scripts/supported

commit 87137d51a64b33aad40a03446b8103a8a1901b17
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 14:50:44 2012 -0700

    Add script to automatically figure out implemented commands

commit 9c7f99280a614bb3ea959d151ef1d5e5b432c08c
Merge: ec3ef9b 2abd7ae
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 13:01:42 2012 -0700

    Merge branch 'sort'

commit 2abd7ae2947cb8476bf9e94753c84177fa566efe
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 13:00:16 2012 -0700

    Implement by/get arg of sort being hashes
    
    I.e. support the '->' syntax.
    
    Also refactored the crazy long method.

commit 59dd96154bab4bcbd7461991ebb90b531971d610
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 14 12:43:07 2012 -0700

    Support multi get arg and '#' in sort command

commit 89d993179a2f61372be6c52dac66d143933d16af
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Mon Mar 12 17:24:00 2012 -0700

    Initial implementation of sort
    
    Missing a few things that I'm aware of:
    
    - Only a single value of get is supported, but get
      can be be an iterable.
    - get/by can also work with hashes, but there's no support
      for this.

commit ec3ef9bdf687e305420674aa4587685e7ec7336d
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Mar 10 17:29:54 2012 -0800

    Add support for multidbs
    
    This also means that the DB is stored outside
    of the client instance, so multiple instances share
    the same data.

commit 04ae27088cc2d4714d6644855eb391bfc5deaf82
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Mar 8 20:28:47 2012 -0800

    Skip real redis tests if redis is not running
    
    Rather than getting errors when trying, the default
    'nosetests' output should be reasonable.

commit f46d92f9fe6b6925a5beca3a8442b349425eb6a9
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 7 21:07:27 2012 -0800

    Implement delete
    
    I think this is the last of the commands that make sense
    to implement from a fakeredis standpoint.  Will probably
    try to release something "official" shortly.

commit 1c05ed7edcdf3eb89ddd364882a0c802247706cf
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 7 20:50:25 2012 -0800

    Implement substr command

commit 0401988b3e5ffdbaaf950a3250aa4100a81d5f20
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 7 20:46:50 2012 -0800

    Implement strlen command

commit 621f933c15acb086c4084c2175652f44578d1aba
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Mar 7 20:36:40 2012 -0800

    Use the latest 2.4.11 version of redis-py
    
    All tests pass.

commit f47d0ded69476957f8ef6577157d4b2dfb559c9e
Author: Łukasz Rekucki <lrekucki@gmail.com>
Date:   Wed Mar 7 14:38:17 2012 +0100

    Fixed setup.py

commit 2ecbb4c7ad1970d30765ac88bcefc7486e1402f4
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Feb 8 22:49:20 2012 -0800

    Implement setnx

commit a57c0717a0ff091931bdcc5359d228733229b5d1
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Feb 8 22:25:43 2012 -0800

    Implement msetnx

commit 484488d25a5821c29d3be3373087e9d42d021a42
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Feb 8 21:37:27 2012 -0800

    Implement mset

commit eb3e8f74bcbffad83de3f3d71ea62c8f9f30df36
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Feb 8 21:31:27 2012 -0800

    Implement mget

commit b7ea57e5e5afc50b95d7adb54c9a652f1f71f285
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Tue Feb 7 21:30:46 2012 -0800

    Add getset implementation

commit f20fd17c3cdebf9c970fdef853b3776815ee42d3
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Dec 29 22:22:33 2011 -0800

    Proper implementation of getbit/setbit
    
    While getbit/setbit worked fine together,
    they did not work well when using get().
    This is because the implementation of bits
    leaks into how get() is implemented.  The
    basic problem was that I was treating setting
    bits as a number when redis actually treats
    the bits as char[].  Also the bit numbering
    goes left to right so something like::
    
      setbit foo 3 1
    
    actually means::
    
      00100000
    
    and not::
    
      00000100
    
    I was previously assuming that setting a bit
    was basically (1 << offset), but that's a right
    to left ordering.

commit f4b369dff58480c3ab46826d24d2614963452ba2
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun Dec 25 11:12:43 2011 -0800

    Add getbit/setbit methods
    
    I'm not sure exactly how the setbit/getbit
    works with subsequently getting() a key.
    It doesn't seem to be consistent with what
    the real redis is giving so there might be
    a fix related to that in the near future.

commit db0389a4323999ce4bbdb7fa73a9f862c9ee68f2
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Dec 22 20:03:07 2011 -0800

    Add stubs for remaining basic commands
    
    This makes it easier for me to track what's left.

commit 500b6c31c30d0b111c9978d1ecfefc5bd87cd865
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Dec 22 19:26:51 2011 -0800

    Add append and decr commands

commit cea3af78487ce2252bd89eeab5e0d9e20bd405a0
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Tue Dec 6 21:25:07 2011 -0800

    Fix grammar in README

commit 4d4ff87685843e29377e914a3437855b6531c3b6
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Tue Dec 6 21:18:59 2011 -0800

    Remove attributes from unittests
    
    It never actually worked as I wanted (being able
    to run the unittests and integration tests separately)
    so now you just have to specify which class you want to
    run.  I've update the README with instructions on how
    to run the test so this is clear.

commit 497f56c5c7ce49aea28df8e7efd33849293ec5db
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Mon Nov 21 20:10:19 2011 -0800

    Add renamenx command

commit 4f1b1f466ce6a5c78d6c466b90db5afb76499e65
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun Nov 13 13:22:18 2011 -0800

    Update to latest version of redis-py
    
    Tests pass with latest version of redis-py
    and redis 2.4.2.

commit d7951569c8300beb12d628c87350249d055d281e
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Sep 29 21:19:55 2011 -0700

    Add exists and rename commands

commit ccb3a3615ca0cea8d3ef894f2fd765eb76e9a3d4
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun Sep 25 23:58:46 2011 -0700

    Update requirements to test against redis-py 2.4.9
    
    Tests still pass, everything still works.

commit edfc573ce86c49952e134771c2e7af58b7dc3553
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sun Sep 25 23:51:58 2011 -0700

    Add incrby command
    
    In redis-py there's an incr method that internally calls
    incrby.  There is no support in redis-py for the actual
    "INCR" command.  It seems like the idea is to just use
    "INCRBY key 1" to get the same effect as "INCR key".

commit e1008b4adcdc7ab54bcc7a090691a6514b892057
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Jul 21 20:41:19 2011 -0700

    Add README file

commit 41344061b333170b043ee6e597b06eaf3eedcd48
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Jul 21 19:43:16 2011 -0700

    Add tests for proper error conditions for z*stores

commit a74efbca54260ab74301600e483f7e1c71500b1f
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Jul 21 19:38:06 2011 -0700

    Implement zunionstore and zinterstore

commit 5915a8a09afbdaa8d91406e9d656945457d7dd54
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Jul 21 17:05:22 2011 -0700

    Implement zremrangebyscore
    
    Now all that's left are the store commands.

commit 5fc922ba34c7ae2a1512899793ffd77509c9c5c1
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Jul 20 23:00:24 2011 -0700

    Implement zrevrangebyscore

commit 64081b663a120e4413e05acc1930f7ffcb5b04bf
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Jul 20 22:43:59 2011 -0700

    Implement more of the z* commands
    
    I've left the store commands for last, that is,
    the ones that result in additional zsets being
    created.

commit 475d48447fab8e992e1a9515d767fb0b8d98f810
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Tue Jul 19 19:35:53 2011 -0700

    Use unittest2 for < python2.7 compatibility

commit 75779e2cdeddeea9ecfb196e1f04d86be8963198
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Jul 13 09:07:33 2011 -0700

    Start of the zset commands
    
    There's a commented out unittest to mark
    my current progress.

commit 4c7f6e42a6160a3419543da45675746fa49dfbf5
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Thu Jul 7 00:18:06 2011 -0700

    Remove entry_points arg in setup.py
    
    Copy/paste error from a different project.

commit 5a3e2113c0e3668367e2cfd0f7e2394e04720196
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Jun 25 10:27:52 2011 -0700

    Add flushdb and keys command

commit 6616eec36955449f0267a07ced43b22325f6cc9f
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Jun 25 10:22:50 2011 -0700

    Add set operations to fake redis

commit c8ddebf176cf4b15f3457c9d93e54dbaf42b1fb2
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Jun 18 22:08:28 2011 -0700

    Add all the hash commands

commit 7f4fa0a2e0a7f7e1aa8ac048988a88d730e23de3
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Jun 18 18:18:31 2011 -0700

    Correct various return values
    
    Most of the redis commands return things, and
    several of the commands weren't.

commit f31aa4eb3dee90b0129a1f82ccba04df67681f66
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Sat Jun 18 17:50:45 2011 -0700

    Implement the b* list operations
    
    Simulating the blocking operations by just not blocking
    if the data is not available then just pretend the timeout
    has expired.

commit 2b8a2e050b59e6464e9b30227ce75221182bb165
Author: James Saryerwinnie <jls.npi@gmail.com>
Date:   Wed Jun 15 00:11:27 2011 -0700

    Initial commit of fakeredis
    
    This is a very rough initial commit.
    It only supports the list commands, and omits
    a lot of error conditions.  I eventually plan to
    add all the types, and handle all the various error
    conditions.
    
    I've also added unittests that can optionally
    run with the real redis module (and a real redis
    server) to ensure parity between the real redis
    client and fake redis.
