Hello community, here is the log from the commit of package python-pymemcache for openSUSE:Factory checked in at 2020-03-26 23:34:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pymemcache (Old) and /work/SRC/openSUSE:Factory/.python-pymemcache.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pymemcache" Thu Mar 26 23:34:34 2020 rev:6 rq:788526 version:3.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pymemcache/python-pymemcache.changes 2020-03-21 00:03:03.853154029 +0100 +++ /work/SRC/openSUSE:Factory/.python-pymemcache.new.3160/python-pymemcache.changes 2020-03-26 23:35:12.850817071 +0100 @@ -1,0 +2,8 @@ +Mon Mar 23 14:54:06 UTC 2020 - pgaj...@suse.com + +- version update to 3.0.1 + * Make MockMemcacheClient more consistent with the real client. + * Pass ``encoding`` from HashClient to its pooled clients when ``use_pooling`` + is enabled. + +------------------------------------------------------------------- Old: ---- pymemcache-3.0.0.tar.gz New: ---- pymemcache-3.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pymemcache.spec ++++++ --- /var/tmp/diff_new_pack.BtCqG1/_old 2020-03-26 23:35:13.334817246 +0100 +++ /var/tmp/diff_new_pack.BtCqG1/_new 2020-03-26 23:35:13.334817246 +0100 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-pymemcache -Version: 3.0.0 +Version: 3.0.1 Release: 0 Summary: A pure Python memcached client License: Apache-2.0 ++++++ pymemcache-3.0.0.tar.gz -> pymemcache-3.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/ChangeLog.rst new/pymemcache-3.0.1/ChangeLog.rst --- old/pymemcache-3.0.0/ChangeLog.rst 2020-01-02 22:34:43.000000000 +0100 +++ new/pymemcache-3.0.1/ChangeLog.rst 2020-03-20 18:05:35.000000000 +0100 @@ -1,6 +1,12 @@ Changelog ========= +New in version 3.0.1 +-------------------- +* Make MockMemcacheClient more consistent with the real client. +* Pass ``encoding`` from HashClient to its pooled clients when ``use_pooling`` + is enabled. + New in version 3.0.0 -------------------- * The serialization API has been reworked. Instead of consuming a serializer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/PKG-INFO new/pymemcache-3.0.1/PKG-INFO --- old/pymemcache-3.0.0/PKG-INFO 2020-01-02 22:43:14.000000000 +0100 +++ new/pymemcache-3.0.1/PKG-INFO 2020-03-20 18:06:20.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pymemcache -Version: 3.0.0 +Version: 3.0.1 Summary: "A comprehensive, fast, pure Python memcached client" Home-page: https://github.com/pinterest/pymemcache Author: Charles Gordon @@ -132,6 +132,7 @@ * `Joe Gordon <https://github.com/jogo>`_ * `Jon Parise <https://github.com/jparise>`_ * `Stephen Rosen <https://github.com/sirosen>`_ + * `Feras Alazzeh <https://github.com/FerasAlazzeh>`_ We're Hiring! ============= @@ -141,6 +142,12 @@ Changelog ========= + New in version 3.0.1 + -------------------- + * Make MockMemcacheClient more consistent with the real client. + * Pass ``encoding`` from HashClient to its pooled clients when ``use_pooling`` + is enabled. + New in version 3.0.0 -------------------- * The serialization API has been reworked. Instead of consuming a serializer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/README.rst new/pymemcache-3.0.1/README.rst --- old/pymemcache-3.0.0/README.rst 2019-11-25 17:37:00.000000000 +0100 +++ new/pymemcache-3.0.1/README.rst 2020-01-15 23:00:22.000000000 +0100 @@ -124,6 +124,7 @@ * `Joe Gordon <https://github.com/jogo>`_ * `Jon Parise <https://github.com/jparise>`_ * `Stephen Rosen <https://github.com/sirosen>`_ +* `Feras Alazzeh <https://github.com/FerasAlazzeh>`_ We're Hiring! ============= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache/__init__.py new/pymemcache-3.0.1/pymemcache/__init__.py --- old/pymemcache-3.0.0/pymemcache/__init__.py 2020-01-02 22:33:26.000000000 +0100 +++ new/pymemcache-3.0.1/pymemcache/__init__.py 2020-03-20 18:05:35.000000000 +0100 @@ -1,4 +1,4 @@ -__version__ = '3.0.0' +__version__ = '3.0.1' from pymemcache.client.base import Client # noqa from pymemcache.client.base import PooledClient # noqa diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache/client/base.py new/pymemcache-3.0.1/pymemcache/client/base.py --- old/pymemcache-3.0.0/pymemcache/client/base.py 2019-09-11 02:03:41.000000000 +0200 +++ new/pymemcache-3.0.1/pymemcache/client/base.py 2020-03-20 16:29:34.000000000 +0100 @@ -82,7 +82,7 @@ # Common helper functions. -def _check_key(key, allow_unicode_keys, key_prefix=b''): +def check_key_helper(key, allow_unicode_keys, key_prefix=b''): """Checks key and add key_prefix.""" if allow_unicode_keys: if isinstance(key, six.text_type): @@ -272,8 +272,8 @@ def check_key(self, key): """Checks key and add key_prefix.""" - return _check_key(key, allow_unicode_keys=self.allow_unicode_keys, - key_prefix=self.key_prefix) + return check_key_helper(key, allow_unicode_keys=self.allow_unicode_keys, + key_prefix=self.key_prefix) def _connect(self): self.close() @@ -1040,8 +1040,8 @@ def check_key(self, key): """Checks key and add key_prefix.""" - return _check_key(key, allow_unicode_keys=self.allow_unicode_keys, - key_prefix=self.key_prefix) + return check_key_helper(key, allow_unicode_keys=self.allow_unicode_keys, + key_prefix=self.key_prefix) def _create_client(self): client = Client(self.server, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache/client/hash.py new/pymemcache-3.0.1/pymemcache/client/hash.py --- old/pymemcache-3.0.0/pymemcache/client/hash.py 2020-01-02 22:28:28.000000000 +0100 +++ new/pymemcache-3.0.1/pymemcache/client/hash.py 2020-03-20 16:29:34.000000000 +0100 @@ -3,7 +3,7 @@ import logging import six -from pymemcache.client.base import Client, PooledClient, _check_key +from pymemcache.client.base import Client, PooledClient, check_key_helper from pymemcache.client.rendezvous import RendezvousHash from pymemcache.exceptions import MemcacheError @@ -87,6 +87,7 @@ 'deserializer': deserializer, 'allow_unicode_keys': allow_unicode_keys, 'default_noreply': default_noreply, + 'encoding': encoding } if use_pooling is True: @@ -121,7 +122,7 @@ self.hasher.remove_node(key) def _get_client(self, key): - _check_key(key, self.allow_unicode_keys, self.key_prefix) + check_key_helper(key, self.allow_unicode_keys, self.key_prefix) if len(self._dead_clients) > 0: current_time = time.time() ldc = self._last_dead_check_time diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache/test/test_client.py new/pymemcache-3.0.1/pymemcache/test/test_client.py --- old/pymemcache-3.0.0/pymemcache/test/test_client.py 2019-09-03 20:54:27.000000000 +0200 +++ new/pymemcache-3.0.1/pymemcache/test/test_client.py 2020-03-20 16:29:34.000000000 +0100 @@ -296,6 +296,14 @@ result = client.get(b'key') assert result is None + def test_space_key(self): + client = self.make_client([b'']) + with pytest.raises(MemcacheIllegalInputError): + client.get(b'space key') + + with pytest.raises(MemcacheIllegalInputError): + client.set(b'space key', b'value') + def test_get_not_found_default(self): client = self.make_client([b'END\r\n']) result = client.get(b'key', default='foobar') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache/test/test_client_hash.py new/pymemcache-3.0.1/pymemcache/test/test_client_hash.py --- old/pymemcache-3.0.0/pymemcache/test/test_client_hash.py 2020-01-02 22:28:28.000000000 +0100 +++ new/pymemcache-3.0.1/pymemcache/test/test_client_hash.py 2020-03-20 16:29:34.000000000 +0100 @@ -268,4 +268,31 @@ result = client.set_many(values, noreply=True) assert result == [] + def test_server_encoding_pooled(self): + """ + test passed encoding from hash client to pooled clients + """ + encoding = 'utf8' + from pymemcache.client.hash import HashClient + hash_client = HashClient( + [('example.com', 11211)], use_pooling=True, + encoding=encoding + ) + + for client in hash_client.clients.values(): + assert client.encoding == encoding + + def test_server_encoding_client(self): + """ + test passed encoding from hash client to clients + """ + encoding = 'utf8' + from pymemcache.client.hash import HashClient + hash_client = HashClient( + [('example.com', 11211)], encoding=encoding + ) + + for client in hash_client.clients.values(): + assert client.encoding == encoding + # TODO: Test failover logic diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache/test/utils.py new/pymemcache-3.0.1/pymemcache/test/utils.py --- old/pymemcache-3.0.0/pymemcache/test/utils.py 2019-12-22 03:35:18.000000000 +0100 +++ new/pymemcache-3.0.1/pymemcache/test/utils.py 2020-03-20 16:29:34.000000000 +0100 @@ -11,6 +11,7 @@ from pymemcache.exceptions import MemcacheIllegalInputError from pymemcache.serde import LegacyWrappingSerde +from pymemcache.client.base import check_key_helper class MockMemcacheClient(object): @@ -22,6 +23,8 @@ def __init__(self, server=None, serde=None, + serializer=None, + deserializer=None, connect_timeout=None, timeout=None, no_delay=False, @@ -32,7 +35,7 @@ self._contents = {} - self.serde = serde or LegacyWrappingSerde(None, None) + self.serde = serde or LegacyWrappingSerde(serializer, deserializer) self.allow_unicode_keys = allow_unicode_keys # Unused, but present for interface compatibility @@ -43,16 +46,16 @@ self.ignore_exc = ignore_exc self.encoding = encoding + def check_key(self, key): + """Checks key and add key_prefix.""" + return check_key_helper(key, allow_unicode_keys=self.allow_unicode_keys) + + def clear(self): + """Method used to clear/reset mock cache""" + self._contents.clear() + def get(self, key, default=None): - if not self.allow_unicode_keys: - if isinstance(key, six.string_types): - try: - if isinstance(key, bytes): - key = key.decode().encode('ascii') - else: - key = key.encode('ascii') - except (UnicodeEncodeError, UnicodeDecodeError): - raise MemcacheIllegalInputError + key = self.check_key(key) if key not in self._contents: return default @@ -75,15 +78,7 @@ get_multi = get_many def set(self, key, value, expire=0, noreply=True, flags=0): - if not self.allow_unicode_keys: - if isinstance(key, six.string_types): - try: - if isinstance(key, bytes): - key = key.decode().encode() - else: - key = key.encode(self.encoding) - except (UnicodeEncodeError, UnicodeDecodeError): - raise MemcacheIllegalInputError + key = self.check_key(key) if (isinstance(value, six.string_types) and not isinstance(value, six.binary_type)): try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymemcache-3.0.0/pymemcache.egg-info/PKG-INFO new/pymemcache-3.0.1/pymemcache.egg-info/PKG-INFO --- old/pymemcache-3.0.0/pymemcache.egg-info/PKG-INFO 2020-01-02 22:43:14.000000000 +0100 +++ new/pymemcache-3.0.1/pymemcache.egg-info/PKG-INFO 2020-03-20 18:06:20.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pymemcache -Version: 3.0.0 +Version: 3.0.1 Summary: "A comprehensive, fast, pure Python memcached client" Home-page: https://github.com/pinterest/pymemcache Author: Charles Gordon @@ -132,6 +132,7 @@ * `Joe Gordon <https://github.com/jogo>`_ * `Jon Parise <https://github.com/jparise>`_ * `Stephen Rosen <https://github.com/sirosen>`_ + * `Feras Alazzeh <https://github.com/FerasAlazzeh>`_ We're Hiring! ============= @@ -141,6 +142,12 @@ Changelog ========= + New in version 3.0.1 + -------------------- + * Make MockMemcacheClient more consistent with the real client. + * Pass ``encoding`` from HashClient to its pooled clients when ``use_pooling`` + is enabled. + New in version 3.0.0 -------------------- * The serialization API has been reworked. Instead of consuming a serializer