Hello community,

here is the log from the commit of package python-pymemcache for 
openSUSE:Factory checked in at 2020-10-13 15:45:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pymemcache (Old)
 and      /work/SRC/openSUSE:Factory/.python-pymemcache.new.3486 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pymemcache"

Tue Oct 13 15:45:29 2020 rev:10 rq:841415 version:3.3.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pymemcache/python-pymemcache.changes      
2020-06-15 20:29:04.926077409 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pymemcache.new.3486/python-pymemcache.changes
    2020-10-13 15:46:06.881461854 +0200
@@ -1,0 +2,10 @@
+Tue Oct 13 07:29:30 UTC 2020 - Dirk Mueller <[email protected]>
+
+- update to 3.3.0:
+  * ``HashClient`` can now be imported from the top-level ``pymemcache`` 
package
+    (e.g. ``pymemcache.HashClient``).
+  * ``HashClient.get_many()`` now longer stores ``False`` for missing keys from
+    unavailable clients. Instead, the result won't contain the key at all.
+  * Added missing ``HashClient.close()`` and ``HashClient.quit()``.
+
+-------------------------------------------------------------------

Old:
----
  pymemcache-3.2.0.tar.gz

New:
----
  pymemcache-3.3.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pymemcache.spec ++++++
--- /var/tmp/diff_new_pack.NIMspu/_old  2020-10-13 15:46:07.401462078 +0200
+++ /var/tmp/diff_new_pack.NIMspu/_new  2020-10-13 15:46:07.417462085 +0200
@@ -20,7 +20,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %bcond_without python2
 Name:           python-pymemcache
-Version:        3.2.0
+Version:        3.3.0
 Release:        0
 Summary:        A pure Python memcached client
 License:        Apache-2.0

++++++ pymemcache-3.2.0.tar.gz -> pymemcache-3.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/ChangeLog.rst 
new/pymemcache-3.3.0/ChangeLog.rst
--- old/pymemcache-3.2.0/ChangeLog.rst  2020-05-20 00:51:04.000000000 +0200
+++ new/pymemcache-3.3.0/ChangeLog.rst  2020-08-18 01:20:42.000000000 +0200
@@ -1,6 +1,14 @@
 Changelog
 =========
 
+New in version 3.3.0
+--------------------
+* ``HashClient`` can now be imported from the top-level ``pymemcache`` package
+  (e.g. ``pymemcache.HashClient``).
+* ``HashClient.get_many()`` now longer stores ``False`` for missing keys from
+  unavailable clients. Instead, the result won't contain the key at all.
+* Added missing ``HashClient.close()`` and ``HashClient.quit()``.
+
 New in version 3.2.0
 --------------------
 * ``PooledClient`` and ``HashClient`` now support custom ``Client`` classes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/PKG-INFO 
new/pymemcache-3.3.0/PKG-INFO
--- old/pymemcache-3.2.0/PKG-INFO       2020-05-20 00:52:16.000000000 +0200
+++ new/pymemcache-3.3.0/PKG-INFO       2020-08-19 22:07:45.773500400 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pymemcache
-Version: 3.2.0
+Version: 3.3.0
 Summary: "A comprehensive, fast, pure Python memcached client"
 Home-page: https://github.com/pinterest/pymemcache
 Author: Jon Parise
@@ -143,6 +143,14 @@
         Changelog
         =========
         
+        New in version 3.3.0
+        --------------------
+        * ``HashClient`` can now be imported from the top-level ``pymemcache`` 
package
+          (e.g. ``pymemcache.HashClient``).
+        * ``HashClient.get_many()`` now longer stores ``False`` for missing 
keys from
+          unavailable clients. Instead, the result won't contain the key at 
all.
+        * Added missing ``HashClient.close()`` and ``HashClient.quit()``.
+        
         New in version 3.2.0
         --------------------
         * ``PooledClient`` and ``HashClient`` now support custom ``Client`` 
classes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache/__init__.py 
new/pymemcache-3.3.0/pymemcache/__init__.py
--- old/pymemcache-3.2.0/pymemcache/__init__.py 2020-05-20 00:51:04.000000000 
+0200
+++ new/pymemcache-3.3.0/pymemcache/__init__.py 2020-08-18 01:20:42.000000000 
+0200
@@ -1,7 +1,8 @@
-__version__ = '3.2.0'
+__version__ = '3.3.0'
 
 from pymemcache.client.base import Client  # noqa
 from pymemcache.client.base import PooledClient  # noqa
+from pymemcache.client.hash import HashClient  # noqa
 
 from pymemcache.exceptions import MemcacheError  # noqa
 from pymemcache.exceptions import MemcacheClientError  # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache/client/__init__.py 
new/pymemcache-3.3.0/pymemcache/client/__init__.py
--- old/pymemcache-3.2.0/pymemcache/client/__init__.py  2020-04-28 
17:07:16.000000000 +0200
+++ new/pymemcache-3.3.0/pymemcache/client/__init__.py  2020-08-18 
01:10:28.000000000 +0200
@@ -2,6 +2,7 @@
 
 from pymemcache.client.base import Client  # noqa
 from pymemcache.client.base import PooledClient  # noqa
+from pymemcache.client.hash import HashClient  # noqa
 
 from pymemcache.exceptions import MemcacheError  # noqa
 from pymemcache.exceptions import MemcacheClientError  # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache/client/base.py 
new/pymemcache-3.3.0/pymemcache/client/base.py
--- old/pymemcache-3.2.0/pymemcache/client/base.py      2020-04-29 
01:54:59.000000000 +0200
+++ new/pymemcache-3.3.0/pymemcache/client/base.py      2020-08-18 
01:10:28.000000000 +0200
@@ -316,6 +316,8 @@
             finally:
                 self.sock = None
 
+    disconnect_all = close
+
     def set(self, key, value, expire=0, noreply=None, flags=None):
         """
         The memcached "set" command.
@@ -636,7 +638,7 @@
 
         Args:
           key: str, see class docs for details.
-          value: int, the amount by which to increment the value.
+          value: int, the amount by which to decrement the value.
           noreply: optional bool, False to wait for the reply (the default).
 
         Returns:
@@ -1075,6 +1077,8 @@
     def close(self):
         self.client_pool.clear()
 
+    disconnect_all = close
+
     def set(self, key, value, expire=0, noreply=None, flags=None):
         with self.client_pool.get_and_release(destroy_on_fail=True) as client:
             return client.set(key, value, expire=expire, noreply=noreply,
@@ -1082,9 +1086,8 @@
 
     def set_many(self, values, expire=0, noreply=None, flags=None):
         with self.client_pool.get_and_release(destroy_on_fail=True) as client:
-            failed = client.set_many(values, expire=expire, noreply=noreply,
-                                     flags=flags)
-            return failed
+            return client.set_many(values, expire=expire, noreply=noreply,
+                                   flags=flags)
 
     set_multi = set_many
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache/client/hash.py 
new/pymemcache-3.3.0/pymemcache/client/hash.py
--- old/pymemcache-3.2.0/pymemcache/client/hash.py      2020-04-29 
01:54:59.000000000 +0200
+++ new/pymemcache-3.3.0/pymemcache/client/hash.py      2020-08-18 
01:10:28.000000000 +0200
@@ -1,3 +1,4 @@
+import collections
 import socket
 import time
 import logging
@@ -326,6 +327,12 @@
 
         return succeeded, failed, None
 
+    def close(self):
+        for client in self.clients.values():
+            self._safely_run_func(client, client.close, False)
+
+    disconnect_all = close
+
     def set(self, key, *args, **kwargs):
         return self._run_cmd('set', key, False, *args, **kwargs)
 
@@ -339,7 +346,7 @@
         return self._run_cmd('decr', key, False, *args, **kwargs)
 
     def set_many(self, values, *args, **kwargs):
-        client_batches = {}
+        client_batches = collections.defaultdict(dict)
         failed = []
 
         for key, value in six.iteritems(values):
@@ -349,9 +356,6 @@
                 failed.append(key)
                 continue
 
-            if client.server not in client_batches:
-                client_batches[client.server] = {}
-
             client_batches[client.server][key] = value
 
         for server, values in client_batches.items():
@@ -366,19 +370,15 @@
     set_multi = set_many
 
     def get_many(self, keys, gets=False, *args, **kwargs):
-        client_batches = {}
+        client_batches = collections.defaultdict(list)
         end = {}
 
         for key in keys:
             client = self._get_client(key)
 
             if client is None:
-                end[key] = False
                 continue
 
-            if client.server not in client_batches:
-                client_batches[client.server] = []
-
             client_batches[client.server].append(key)
 
         for server, keys in client_batches.items():
@@ -438,5 +438,9 @@
         return self._run_cmd('touch', key, False, *args, **kwargs)
 
     def flush_all(self):
-        for _, client in self.clients.items():
+        for client in self.clients.values():
             self._safely_run_func(client, client.flush_all, False)
+
+    def quit(self):
+        for client in self.clients.values():
+            self._safely_run_func(client, client.quit, False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache/test/test_client_hash.py 
new/pymemcache-3.3.0/pymemcache/test/test_client_hash.py
--- old/pymemcache-3.2.0/pymemcache/test/test_client_hash.py    2020-04-29 
01:54:59.000000000 +0200
+++ new/pymemcache-3.3.0/pymemcache/test/test_client_hash.py    2020-08-18 
01:10:28.000000000 +0200
@@ -159,6 +159,20 @@
         result = client.touch(b'key', 1, noreply=False)
         assert result is True
 
+    def test_close(self):
+        client = self.make_client([])
+        assert all(c.sock is not None for c in client.clients.values())
+        result = client.close()
+        assert result is None
+        assert all(c.sock is None for c in client.clients.values())
+
+    def test_quit(self):
+        client = self.make_client([])
+        assert all(c.sock is not None for c in client.clients.values())
+        result = client.quit()
+        assert result is None
+        assert all(c.sock is None for c in client.clients.values())
+
     def test_no_servers_left(self):
         from pymemcache.client.hash import HashClient
         client = HashClient(
@@ -227,7 +241,7 @@
         )
 
         result = client.get_many(['foo', 'bar'])
-        assert result == {'foo': False, 'bar': False}
+        assert result == {}
 
     def test_ignore_exec_set_many(self):
         values = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache/test/test_integration.py 
new/pymemcache-3.3.0/pymemcache/test/test_integration.py
--- old/pymemcache-3.2.0/pymemcache/test/test_integration.py    2020-04-28 
17:07:16.000000000 +0200
+++ new/pymemcache-3.3.0/pymemcache/test/test_integration.py    2020-08-17 
18:03:24.000000000 +0200
@@ -183,7 +183,7 @@
     assert result[0] == b'value'
 
 
[email protected]()
[email protected]()
 def test_delete(client_class, host, port, socket_module):
     client = client_class((host, port), socket_module=socket_module)
     client.flush_all()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pymemcache-3.2.0/pymemcache.egg-info/PKG-INFO 
new/pymemcache-3.3.0/pymemcache.egg-info/PKG-INFO
--- old/pymemcache-3.2.0/pymemcache.egg-info/PKG-INFO   2020-05-20 
00:52:16.000000000 +0200
+++ new/pymemcache-3.3.0/pymemcache.egg-info/PKG-INFO   2020-08-19 
22:07:45.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pymemcache
-Version: 3.2.0
+Version: 3.3.0
 Summary: "A comprehensive, fast, pure Python memcached client"
 Home-page: https://github.com/pinterest/pymemcache
 Author: Jon Parise
@@ -143,6 +143,14 @@
         Changelog
         =========
         
+        New in version 3.3.0
+        --------------------
+        * ``HashClient`` can now be imported from the top-level ``pymemcache`` 
package
+          (e.g. ``pymemcache.HashClient``).
+        * ``HashClient.get_many()`` now longer stores ``False`` for missing 
keys from
+          unavailable clients. Instead, the result won't contain the key at 
all.
+        * Added missing ``HashClient.close()`` and ``HashClient.quit()``.
+        
         New in version 3.2.0
         --------------------
         * ``PooledClient`` and ``HashClient`` now support custom ``Client`` 
classes


Reply via email to