[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#926375: marked as done ((pre-approve) unblock: python-fakeredis/1.0.3-1)



Your message dated Sat, 06 Apr 2019 10:46:35 +0000
with message-id <E1hCiqJ-0003m9-8a@respighi.debian.org>
and subject line unblock python-fakeredis
has caused the Debian Bug report #926375,
regarding (pre-approve) unblock: python-fakeredis/1.0.3-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
926375: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=926375
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package python-fakeredis

I would like to upload stable update of python-fakeredis (1.0.3) to sid which
fixes FTBFS #924851 and other minor bugs.
Actual python-fakeredis (1.0~rc1) testing version is not compatilbe with the
latest python-redis (3.2.1) because https://github.com/jamesls/fakeredis/issues/235

I think it's better to have a stable rather than RC version with some Debian
patches in buster.

Changes between RC and stable is minimal and they are all bug fixes.
python-fakeredis is leaf-package, so the risk is minimal.

Kindly asking to pre-approve this migration.

Thanks
Ondrej Koblizek

debdiff follows:


diff -Nru python-fakeredis-1.0~rc1/debian/changelog python-fakeredis-1.0.3/debian/changelog
--- python-fakeredis-1.0~rc1/debian/changelog	2019-01-22 16:31:15.000000000 +0100
+++ python-fakeredis-1.0.3/debian/changelog	2019-04-01 08:57:11.000000000 +0200
@@ -1,3 +1,10 @@
+python-fakeredis (1.0.3-1) unstable; urgency=medium
+
+  * New upstream release (Closes: #924851)
+  * update d/CHANGELOG
+
+ -- Ondřej Kobližek <koblizeko@gmail.com>  Mon, 01 Apr 2019 08:57:11 +0200
+
 python-fakeredis (1.0~rc1-1) unstable; urgency=medium
 
   * New upstream release (Closes: #915774)
diff -Nru python-fakeredis-1.0~rc1/debian/CHANGELOG python-fakeredis-1.0.3/debian/CHANGELOG
--- python-fakeredis-1.0~rc1/debian/CHANGELOG	2019-01-22 16:31:15.000000000 +0100
+++ python-fakeredis-1.0.3/debian/CHANGELOG	2019-04-01 08:43:03.000000000 +0200
@@ -1,9 +1,1330 @@
+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>
diff -Nru python-fakeredis-1.0~rc1/fakeredis/__init__.py python-fakeredis-1.0.3/fakeredis/__init__.py
--- python-fakeredis-1.0~rc1/fakeredis/__init__.py	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/fakeredis/__init__.py	2019-03-25 09:23:14.000000000 +0100
@@ -1,4 +1,4 @@
-from ._server import FakeServer, FakeRedis, FakeStrictRedis   # noqa: F401
+from ._server import FakeServer, FakeRedis, FakeStrictRedis, FakeConnection   # noqa: F401
 
 
-__version__ = '1.0rc1'
+__version__ = '1.0.3'
diff -Nru python-fakeredis-1.0~rc1/fakeredis/_server.py python-fakeredis-1.0.3/fakeredis/_server.py
--- python-fakeredis-1.0~rc1/fakeredis/_server.py	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/fakeredis/_server.py	2019-03-25 09:23:14.000000000 +0100
@@ -645,9 +645,18 @@
     def shutdown(self, flags):
         self._parser.close()
 
+    def fileno(self):
+        # Our fake socket must return an integer from `FakeSocket.fileno()` since a real selector
+        # will be created. The value does not matter since we replace the selector with our own
+        # `FakeSelector` before it is ever used.
+        return 0
+
     def close(self):
-        # TODO: unsubscribe from pub/sub
         with self._server.lock:
+            for subs in self._server.subscribers.values():
+                subs.discard(self)
+            for subs in self._server.psubscribers.values():
+                subs.discard(self)
             self._clear_watches()
         self._server = None
         self._db = None
@@ -2398,6 +2407,37 @@
         pass
 
 
+# Redis <3.2 will not have a selector
+try:
+    from redis.selector import BaseSelector
+except ImportError:
+    class BaseSelector(object):
+        def __init__(self, sock):
+            self.sock = sock
+
+
+class FakeSelector(BaseSelector):
+    def check_can_read(self, timeout):
+        if self.sock.responses.qsize():
+            return True
+        if timeout <= 0:
+            return False
+
+        # A sleep/poll loop is easier to mock out than messing with condition
+        # variables.
+        start = time.time()
+        while True:
+            if self.sock.responses.qsize():
+                return True
+            time.sleep(0.01)
+            now = time.time()
+            if now > start + timeout:
+                return False
+
+    def check_is_ready_for_command(self, timeout):
+        return True
+
+
 class FakeConnection(redis.Connection):
     description_format = "FakeConnection<db=%(db)s>"
 
@@ -2419,6 +2459,11 @@
         self._parser = _DummyParser()
         self._sock = None
 
+    def connect(self):
+        super(FakeConnection, self).connect()
+        # The selector is set in redis.Connection.connect() after _connect() is called
+        self._selector = FakeSelector(self._sock)
+
     def _connect(self):
         if not self._server.connected:
             raise redis.ConnectionError(CONNECTION_ERROR_MSG)
@@ -2429,20 +2474,12 @@
             return True
         if not self._sock:
             self.connect()
-        if self._sock.responses.qsize():
-            return True
-        while timeout <= 0:
-            return False
-
-        # A sleep/poll loop is easier to mock out than messing with condition
-        # variables.
-        start = time.time()
-        while True:
-            if self._sock.responses.qsize():
-                return True
-            now = time.time()
-            if now > start + timeout:
-                return False
+        # We use check_can_read rather than can_read, because on redis-py<3.2,
+        # FakeSelector inherits from a stub BaseSelector which doesn't
+        # implement can_read. Normally can_read provides retries on EINTR,
+        # but that's not necessary for the implementation of
+        # FakeSelector.check_can_read.
+        return self._selector.check_can_read(timeout)
 
     def _decode(self, response):
         if isinstance(response, list):
diff -Nru python-fakeredis-1.0~rc1/README.rst python-fakeredis-1.0.3/README.rst
--- python-fakeredis-1.0~rc1/README.rst	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/README.rst	2019-03-25 09:23:14.000000000 +0100
@@ -9,13 +9,18 @@
    :target: https://coveralls.io/r/jamesls/fakeredis
 
 
-fakeredis is a pure python implementation of the redis-py python client
+fakeredis is a pure-Python implementation of the redis-py python client
 that simulates talking to a redis server.  This was created for a single
 purpose: **to write unittests**.  Setting up redis is not hard, but
 many times you want to write unittests that do not talk to an external server
 (such as redis).  This module now allows tests to simply use this
 module as a reasonable substitute for redis.
 
+Although fakeredis is pure Python, you will need lupa_ if you want to run Lua
+scripts. If you install fakeredis with ``pip install fakeredis[lua]`` it will
+be automatically installed.
+
+.. _lupa: https://pypi.org/project/lupa/
 
 Alternatives
 ============
@@ -366,6 +371,42 @@
 Revision history
 ================
 
+1.0.3
+-----
+- `#235 <https://github.com/jamesls/fakeredis/issues/235>`_ Support for ``redis==3.2``
+
+1.0.2
+-----
+- `#235 <https://github.com/jamesls/fakeredis/issues/235>`_ Depend on ``redis<3.2``
+
+1.0.1
+-----
+- Fix crash when a connection closes without unsubscribing and there is a subsequent PUBLISH
+
+1.0
+---
+
+Version 1.0 is a major rewrite. It works at the redis protocol level, rather
+than at the redis-py level. This allows for many improvements and bug fixes.
+
+- `#225 <https://github.com/jamesls/fakeredis/issues/225>`_ Support redis-py 3.0
+- `#65 <https://github.com/jamesls/fakeredis/issues/65>`_ Support `execute_command` method
+- `#206 <https://github.com/jamesls/fakeredis/issues/206>`_ Drop Python 2.6 support
+- `#141 <https://github.com/jamesls/fakeredis/issues/141>`_ Support strings in integer arguments
+- `#218 <https://github.com/jamesls/fakeredis/issues/218>`_ Watches checks commands rather than final value
+- `#220 <https://github.com/jamesls/fakeredis/issues/220>`_ Better support for calling into redis from Lua
+- `#158 <https://github.com/jamesls/fakeredis/issues/158>`_ Better timestamp handling
+- Support for `register_script` function.
+- Fixes for race conditions caused by keys expiring mid-command
+- Disallow certain commands in scripts
+- Fix handling of blocking commands inside transactions
+- Fix handling of PING inside pubsub connections
+
+It also has new unit tests based on hypothesis_, which has identified many
+corner cases that are now handled correctly.
+
+.. _hypothesis: https://hypothesis.readthedocs.io/en/latest/
+
 1.0rc1
 ------
 Compared to 1.0b1:
diff -Nru python-fakeredis-1.0~rc1/requirements.txt python-fakeredis-1.0.3/requirements.txt
--- python-fakeredis-1.0~rc1/requirements.txt	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/requirements.txt	2019-03-25 09:23:14.000000000 +0100
@@ -7,7 +7,7 @@
 enum34==1.1.6; python_version<"3"
 nose==1.3.7
 hypothesis==3.86.4
-redis==2.10.6
+redis==3.2.1
 lupa==1.7
 future==0.17.1
 sortedcontainers==2.1.0
diff -Nru python-fakeredis-1.0~rc1/setup.py python-fakeredis-1.0.3/setup.py
--- python-fakeredis-1.0~rc1/setup.py	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/setup.py	2019-03-25 09:23:14.000000000 +0100
@@ -5,7 +5,7 @@
 
 setup(
     name='fakeredis',
-    version='1.0rc1',
+    version='1.0.3',
     description="Fake implementation of redis API for testing purposes.",
     long_description=open(os.path.join(os.path.dirname(__file__),
                                        'README.rst')).read(),
diff -Nru python-fakeredis-1.0~rc1/test_fakeredis.py python-fakeredis-1.0.3/test_fakeredis.py
--- python-fakeredis-1.0~rc1/test_fakeredis.py	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/test_fakeredis.py	2019-03-25 09:23:14.000000000 +0100
@@ -3285,6 +3285,10 @@
         self.assertEqual(retrieved["data"], msg)
 
         pubsub_thread.stop()
+        # Newer versions of redis wait for an unsubscribe message, which sometimes comes early
+        # https://github.com/andymccurdy/redis-py/issues/1150
+        if pubsub.channels:
+            pubsub.channels = {}
         pubsub_thread.join()
         self.assertTrue(not pubsub_thread.is_alive())
 
diff -Nru python-fakeredis-1.0~rc1/.travis.yml python-fakeredis-1.0.3/.travis.yml
--- python-fakeredis-1.0~rc1/.travis.yml	2019-01-22 16:10:37.000000000 +0100
+++ python-fakeredis-1.0.3/.travis.yml	2019-03-25 09:23:14.000000000 +0100
@@ -9,6 +9,8 @@
 env:
   - REDIS_PY=2.10.6
   - REDIS_PY=3.0.1
+  - REDIS_PY=3.1.0
+  - REDIS_PY=3.2.1
 matrix:
   include:
     - python: 3.7





unblock python-fakeredis/1.0.3-1

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to cs_CZ.UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) (ignored: LC_ALL set to cs_CZ.UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

--- End Message ---
--- Begin Message ---
Unblocked python-fakeredis.

--- End Message ---

Reply to: