Hello community, here is the log from the commit of package python3-kombu for openSUSE:Factory checked in at 2017-03-03 17:46:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-kombu (Old) and /work/SRC/openSUSE:Factory/.python3-kombu.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-kombu" Fri Mar 3 17:46:33 2017 rev:17 rq:461379 version:4.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python3-kombu/python3-kombu.changes 2016-11-28 15:10:32.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.python3-kombu.new/python3-kombu.changes 2017-03-03 17:46:34.647811339 +0100 @@ -1,0 +2,18 @@ +Wed Mar 1 15:48:17 UTC 2017 - [email protected] + +- Update to 4.0.2 + - Now depends on :mod:`amqp` 2.1.4 + - Redis: Priority was reversed so, e.g. priority 0 became priority 9. +- Update to 4.0.1 + - Now depends on :mod:`amqp` 2.1.3 + - Producer: Fixed performance degradation when default exchange specified + - QPid: Switch to using getattr in qpid.Transport.__del__ (Issue #658) + - QPid: Now uses monotonic time for timeouts. + - MongoDB: Fixed compatibility with Python 3 (Issue #661). + - Consumer: ``__exit__`` now skips cancelling consumer if connection-related + error raised (Issue #670). + - MongoDB: Removes use of natural sort (Issue #638). + - Fixed wrong keyword argument ``channel`` error (Issue #652). + - Safe argument to ``urllib.quote`` must be bytes on Python 2.x (Issue #645). + +------------------------------------------------------------------- Old: ---- kombu-4.0.0.tar.gz New: ---- kombu-4.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-kombu.spec ++++++ --- /var/tmp/diff_new_pack.KX6gEv/_old 2017-03-03 17:46:35.807647428 +0100 +++ /var/tmp/diff_new_pack.KX6gEv/_new 2017-03-03 17:46:35.811646862 +0100 @@ -1,7 +1,7 @@ # # spec file for package python3-kombu # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,14 +17,14 @@ Name: python3-kombu -Version: 4.0.0 +Version: 4.0.2 Release: 0 Summary: AMQP Messaging Framework for Python License: BSD-3-Clause Group: Development/Languages/Python Url: http://github.com/celery/kombu/ Source: https://files.pythonhosted.org/packages/source/k/kombu/kombu-%{version}.tar.gz -BuildRequires: python3-amqp >= 2.0 +BuildRequires: python3-amqp >= 2.1.4 BuildRequires: python3-amqplib BuildRequires: python3-devel BuildRequires: python3-pycurl @@ -40,7 +40,7 @@ # BuildRequires: python3-mock # BuildRequires: python3-nose-cover3 # BuildRequires: python3-unittest2 >= 0.5.0 -Requires: python3-amqp >= 1.0.13 +Requires: python3-amqp >= 2.1.4 Requires: python3-pycurl Requires: python3-simplejson Recommends: couchdb @@ -66,8 +66,7 @@ # For rpmlint warning: remove shebang from python library: sed -i '/^#!/d' ./t/unit/test_serialization.py # TODO(saschpe): Stop dropping this test once upstream finalized Py3K support: -rm t/unit/transport/test_filesystem.py t/unit/utils/test_encoding.py -2to3 -wvn . +# rm t/unit/transport/test_filesystem.py t/unit/utils/test_encoding.py %build python3 setup.py build @@ -76,8 +75,8 @@ python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} # Tests are currently incompatible with latest amqp. Check in next release. -#%check -#python3 setup.py test +# %check +# python3 setup.py test %files %defattr(-,root,root,-) ++++++ kombu-4.0.0.tar.gz -> kombu-4.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/Changelog new/kombu-4.0.2/Changelog --- old/kombu-4.0.0/Changelog 2016-10-29 01:44:11.000000000 +0200 +++ new/kombu-4.0.2/Changelog 2016-12-16 00:33:36.000000000 +0100 @@ -4,6 +4,62 @@ Change history ================ +.. _version-4.0.2: + +4.0.2 +===== +:release-date: 2016-12-15 03:31 P.M PST +:release-by: Ask Solem + +- Now depends on :mod:`amqp` 2.1.4 + + This new version takes advantage of TCP Keepalive settings on Linux, + making it better at detecting closed connections, also in failover + conditions. + +- Redis: Priority was reversed so, e.g. priority 0 became priority 9. + +.. _version-4.0.1: + +4.0.1 +===== +:release-date: 2016-12-07 06:00 P.M PST +:release-by: Ask Solem + +- Now depends on :mod:`amqp` 2.1.3 + + This new version takes advantage of the new ``TCP_USER_TIMEOUT`` socket option + on Linux. + +- Producer: Fixed performance degradation when default exchange specified + (Issue #651). + +- QPid: Switch to using getattr in qpid.Transport.__del__ (Issue #658) + + Contributed by **Patrick Creech**. + +- QPid: Now uses monotonic time for timeouts. + +- MongoDB: Fixed compatibility with Python 3 (Issue #661). + +- Consumer: ``__exit__`` now skips cancelling consumer if connection-related + error raised (Issue #670). + +- MongoDB: Removes use of natural sort (Issue #638). + + Contributed by **Anton Chaporgin**. + +- Fixed wrong keyword argument ``channel`` error (Issue #652). + + Contributed by **Toomore Chiang**. + +- Safe argument to ``urllib.quote`` must be bytes on Python 2.x (Issue #645). + +- Documentation improvments by: + + - **Carlos Edo** + - **Cemre Mengu** + .. _version-4.0: 4.0 @@ -121,7 +177,7 @@ - ``Queue(max_priority=10)`` Declare queue to be a priority queue that routes messages - based on the ``priority` field of the message. + based on the ``priority`` field of the message. See :attr:`kombu.Queue.max_priority`. @@ -152,7 +208,12 @@ .. code-block:: python - consumer = Consumer(channel, consumer_arguments={'x-priority': 3}) + Queue( + 'qname', + exchange=Exchange('exchange'), + routing_key='qname', + consumer_arguments={'x-priority': 3}, + ) - Queue/Exchange: ``no_declare`` option added (also enabled for internal amq. exchanges) (Issue #565). @@ -306,6 +367,38 @@ ``detect_environment`` has been moved to kombu.utils.compat +.. _version-3.0.37: + +3.0.37 +====== +:release-date: 2016-10-06 05:00 P.M PDT +:release-by: Ask Solem + +- Connection: Return value of ``.info()`` was no longer JSON serializable, + leading to "itertools.cycle object not JSON serializable" + errors (Issue #635). + +.. _version-3.0.36: + +3.0.36 +====== +:release-date: 2016-09-30 03:06 P.M PDT +:release-by: Ask Solem + +- Connection: Fixed bug when cloning connection with alternate urls. + + Fix contributed by Emmanuel Cazenave. + +- Redis: Fixed problem with unix socket connections. + + https://github.com/celery/celery/issues/2903 + + Fix contributed by Raphael Michel. + +- Redis: Fixed compatibility with older redis-py versions (Issue #576). + +- Broadcast now retains queue name when being copied/pickled (Issue #578). + .. _version-3.0.35: 3.0.35 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/PKG-INFO new/kombu-4.0.2/PKG-INFO --- old/kombu-4.0.0/PKG-INFO 2016-10-29 01:53:59.000000000 +0200 +++ new/kombu-4.0.2/PKG-INFO 2016-12-16 00:49:32.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: kombu -Version: 4.0.0 +Version: 4.0.2 Summary: Messaging library for Python. Home-page: https://kombu.readthedocs.io Author: Ask Solem @@ -12,7 +12,7 @@ |build-status| |coverage| |license| |wheel| |pyversion| |pyimp| - :Version: 4.0.0 + :Version: 4.0.2 :Web: http://kombu.me/ :Download: http://pypi.python.org/pypi/kombu/ :Source: https://github.com/celery/kombu/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/README.rst new/kombu-4.0.2/README.rst --- old/kombu-4.0.0/README.rst 2016-10-29 01:53:42.000000000 +0200 +++ new/kombu-4.0.2/README.rst 2016-12-16 00:33:36.000000000 +0100 @@ -4,7 +4,7 @@ |build-status| |coverage| |license| |wheel| |pyversion| |pyimp| -:Version: 4.0.0 +:Version: 4.0.2 :Web: http://kombu.me/ :Download: http://pypi.python.org/pypi/kombu/ :Source: https://github.com/celery/kombu/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/docs/includes/introduction.txt new/kombu-4.0.2/docs/includes/introduction.txt --- old/kombu-4.0.0/docs/includes/introduction.txt 2016-10-29 00:50:58.000000000 +0200 +++ new/kombu-4.0.2/docs/includes/introduction.txt 2016-12-16 00:33:36.000000000 +0100 @@ -1,4 +1,4 @@ -:Version: 4.0.0 +:Version: 4.0.2 :Web: http://kombu.me/ :Download: http://pypi.python.org/pypi/kombu/ :Source: https://github.com/celery/kombu/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/docs/userguide/consumers.rst new/kombu-4.0.2/docs/userguide/consumers.rst --- old/kombu-4.0.0/docs/userguide/consumers.rst 2016-10-27 02:51:26.000000000 +0200 +++ new/kombu-4.0.2/docs/userguide/consumers.rst 2016-12-16 00:33:36.000000000 +0100 @@ -18,7 +18,7 @@ Kombu since 3.0 will only accept json/binary or text messages by default, to allow deserialization of other formats you have to specify them - in the ``accept`` argument: + in the ``accept`` argument (in addition to setting the right content type for your messages): .. code-block:: python diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/examples/rpc-tut6/rpc_client.py new/kombu-4.0.2/examples/rpc-tut6/rpc_client.py --- old/kombu-4.0.0/examples/rpc-tut6/rpc_client.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/examples/rpc-tut6/rpc_client.py 2016-12-16 00:33:36.000000000 +0100 @@ -23,7 +23,7 @@ exchange='', routing_key='rpc_queue', declare=[self.callback_queue], - reply_to=self.callback_queue, + reply_to=self.callback_queue.name, correlation_id=self.correlation_id, ) with Consumer(self.connection, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/extra/requirements/default.txt new/kombu-4.0.2/extra/requirements/default.txt --- old/kombu-4.0.0/extra/requirements/default.txt 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/extra/requirements/default.txt 2016-12-16 00:33:36.000000000 +0100 @@ -1 +1 @@ -amqp>=2.1.1,<3.0 +amqp>=2.1.4,<3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/__init__.py new/kombu-4.0.2/kombu/__init__.py --- old/kombu-4.0.0/kombu/__init__.py 2016-10-29 01:53:39.000000000 +0200 +++ new/kombu-4.0.2/kombu/__init__.py 2016-12-16 00:33:36.000000000 +0100 @@ -10,7 +10,7 @@ from collections import namedtuple # noqa -__version__ = '4.0.0' +__version__ = '4.0.2' __author__ = 'Ask Solem' __contact__ = '[email protected]' __homepage__ = 'https://kombu.readthedocs.io' @@ -92,6 +92,7 @@ '__contact__', '__homepage__', '__docformat__')) return result + # 2.5 does not define __package__ try: package = __package__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/async/http/curl.py new/kombu-4.0.2/kombu/async/http/curl.py --- old/kombu-4.0.0/kombu/async/http/curl.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/async/http/curl.py 2016-12-16 00:33:36.000000000 +0100 @@ -178,8 +178,8 @@ buffer=buffer, effective_url=effective_url, error=error, )) except Exception as exc: - raise self.hub.on_callback_error(request.on_ready, exc) + raise def _setup_request(self, curl, request, buffer, headers, _pycurl=pycurl): setopt = curl.setopt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/connection.py new/kombu-4.0.2/kombu/connection.py --- old/kombu-4.0.0/kombu/connection.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/connection.py 2016-12-16 00:33:36.000000000 +0100 @@ -891,7 +891,7 @@ @property def is_evented(self): return self.transport.implements.async -BrokerConnection = Connection +BrokerConnection = Connection # noqa: E305 class ConnectionPool(Resource): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/messaging.py new/kombu-4.0.2/kombu/messaging.py --- old/kombu-4.0.0/kombu/messaging.py 2016-10-27 22:06:14.000000000 +0200 +++ new/kombu-4.0.2/kombu/messaging.py 2016-12-16 00:33:36.000000000 +0100 @@ -118,7 +118,8 @@ mandatory=False, immediate=False, priority=0, content_type=None, content_encoding=None, serializer=None, headers=None, compression=None, exchange=None, retry=False, - retry_policy=None, declare=[], expiration=None, **properties): + retry_policy=None, declare=None, expiration=None, + **properties): """Publish message to the specified exchange. Arguments: @@ -150,6 +151,7 @@ """ _publish = self._publish + declare = [] if declare is None else declare headers = {} if headers is None else headers retry_policy = {} if retry_policy is None else retry_policy routing_key = self.routing_key if routing_key is None else routing_key @@ -167,8 +169,9 @@ compression, headers) if self.auto_declare and self.exchange.name: - declare = [] if declare is None else declare - declare.append(self.exchange) + if self.exchange not in declare: + # XXX declare should be a Set. + declare.append(self.exchange) if retry: _publish = self.connection.ensure(self, _publish, **retry_policy) @@ -430,11 +433,14 @@ self.consume() return self - def __exit__(self, *exc_info): - try: - self.cancel() - except Exception: - pass + def __exit__(self, exc_type, exc_val, exc_tb): + if self.channel: + conn_errors = self.channel.connection.client.connection_errors + if not isinstance(exc_val, conn_errors): + try: + self.cancel() + except Exception: + pass def add_queue(self, queue): """Add a queue to the list of queues to consume from. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/pools.py new/kombu-4.0.2/kombu/pools.py --- old/kombu-4.0.0/kombu/pools.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/pools.py 2016-12-16 00:33:36.000000000 +0100 @@ -107,7 +107,7 @@ def create(self, connection, limit): return connection.Pool(limit=limit) -connections = register_group(Connections(limit=use_global_limit)) +connections = register_group(Connections(limit=use_global_limit)) # noqa: E305 class Producers(PoolGroup): @@ -115,7 +115,7 @@ def create(self, connection, limit): return ProducerPool(connections[connection], limit=limit) -producers = register_group(Producers(limit=use_global_limit)) +producers = register_group(Producers(limit=use_global_limit)) # noqa: E305 def _all_pools(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/serialization.py new/kombu-4.0.2/kombu/serialization.py --- old/kombu-4.0.0/kombu/serialization.py 2016-10-28 01:17:44.000000000 +0200 +++ new/kombu-4.0.2/kombu/serialization.py 2016-12-16 00:33:36.000000000 +0100 @@ -388,6 +388,7 @@ content_encoding='binary', ) + # Register the base serialization methods. register_json() register_pickle() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/transport/SQS.py new/kombu-4.0.2/kombu/transport/SQS.py --- old/kombu-4.0.0/kombu/transport/SQS.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/transport/SQS.py 2016-12-16 00:33:36.000000000 +0100 @@ -14,7 +14,7 @@ Long polling is enabled by setting the `wait_time_seconds` transport option to a number > 1. Amazon supports up to 20 seconds. This is - disabled for now, but will be enabled by default in the near future. + enabled with 10 seconds by default. Batch API Actions: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ @@ -83,7 +83,7 @@ default_region = 'us-east-1' default_visibility_timeout = 1800 # 30 minutes. - default_wait_time_seconds = 10 # disabled see #198 + default_wait_time_seconds = 10 # up to 20 seconds max domain_format = 'kombu%(vhost)s' _asynsqs = None _sqs = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/transport/librabbitmq.py new/kombu-4.0.2/kombu/transport/librabbitmq.py --- old/kombu-4.0.0/kombu/transport/librabbitmq.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/transport/librabbitmq.py 2016-12-16 00:33:36.000000000 +0100 @@ -35,7 +35,7 @@ def __init__(self, channel, props, info, body): super(Message, self).__init__( - channel, + channel=channel, body=body, delivery_info=info, properties=props, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/transport/mongodb.py new/kombu-4.0.2/kombu/transport/mongodb.py --- old/kombu-4.0.0/kombu/transport/mongodb.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/transport/mongodb.py 2016-12-16 00:33:36.000000000 +0100 @@ -13,7 +13,7 @@ from pymongo.cursor import CursorType from kombu.exceptions import VersionMismatch -from kombu.five import Empty +from kombu.five import Empty, string_t from kombu.utils.compat import _detect_environment from kombu.utils.encoding import bytes_to_str from kombu.utils.json import loads, dumps @@ -137,8 +137,7 @@ else: msg = self.messages.find_and_modify( query={'queue': queue}, - sort=[('priority', pymongo.ASCENDING), - ('$natural', pymongo.ASCENDING)], + sort=[('priority', pymongo.ASCENDING)], remove=True, ) @@ -381,13 +380,11 @@ if pymongo.version_tuple >= (3, ): query = dict( filter={'queue': exchange}, - sort=[('$natural', pymongo.ASCENDING)], cursor_type=CursorType.TAILABLE ) else: query = dict( query={'queue': exchange}, - sort=[('$natural', pymongo.ASCENDING)], tailable=True ) @@ -401,7 +398,7 @@ Note: `queue` must be either queue name or options itself. """ - if isinstance(queue, basestring): + if isinstance(queue, string_t): doc = self.queues.find_one({'_id': queue}) if not doc: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/transport/qpid.py new/kombu-4.0.2/kombu/transport/qpid.py --- old/kombu-4.0.0/kombu/transport/qpid.py 2016-10-28 01:32:25.000000000 +0200 +++ new/kombu-4.0.2/kombu/transport/qpid.py 2016-12-16 00:33:36.000000000 +0100 @@ -84,7 +84,6 @@ import socket import ssl import sys -import time import uuid from gettext import gettext as _ @@ -117,7 +116,7 @@ qpid = None -from kombu.five import Empty, items +from kombu.five import Empty, items, monotonic from kombu.log import get_logger from kombu.transport.virtual import Base64, Message from kombu.transport import base @@ -1680,7 +1679,7 @@ :type timeout: int """ - start_time = time.time() + start_time = monotonic() elapsed_time = -1 while elapsed_time < timeout: try: @@ -1691,7 +1690,7 @@ raise socket.timeout() else: connection._callbacks[queue](message) - elapsed_time = time.time() - start_time + elapsed_time = monotonic() - start_time raise socket.timeout() def create_channel(self, connection): @@ -1731,7 +1730,7 @@ def __del__(self): """Ensure file descriptors opened in __init__() are closed.""" - if self.use_async_interface: + if getattr(self, 'use_async_interface', False): for fd in (self.r, self._w): try: os.close(fd) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/transport/redis.py new/kombu-4.0.2/kombu/transport/redis.py --- old/kombu-4.0.0/kombu/transport/redis.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/transport/redis.py 2016-12-16 00:33:36.000000000 +0100 @@ -667,8 +667,9 @@ ret.append(self._receive_one(c)) except Empty: pass - while c.connection.can_read(timeout=0): - ret.append(self._receive_one(c)) + if c.connection is not None: + while c.connection.can_read(timeout=0): + ret.append(self._receive_one(c)) return any(ret) def _receive_one(self, c): @@ -760,7 +761,7 @@ def _put(self, queue, message, **kwargs): """Deliver message.""" - pri = self._get_message_priority(message, reverse=True) + pri = self._get_message_priority(message, reverse=False) with self.conn_or_acquire() as client: client.lpush(self._q_for_pri(queue, pri), dumps(message)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/utils/functional.py new/kombu-4.0.2/kombu/utils/functional.py --- old/kombu-4.0.0/kombu/utils/functional.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/utils/functional.py 2016-12-16 00:33:36.000000000 +0100 @@ -358,6 +358,7 @@ reprkwargs(kwargs, sep), ) + # Compat names (before kombu 3.0) promise = lazy maybe_promise = maybe_evaluate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/utils/json.py new/kombu-4.0.2/kombu/utils/json.py --- old/kombu-4.0.0/kombu/utils/json.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/utils/json.py 2016-12-16 00:33:36.000000000 +0100 @@ -60,6 +60,8 @@ elif isinstance(o, textual): return text_t(o) return super(JSONEncoder, self).default(o) + + _default_encoder = JSONEncoder diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/utils/scheduling.py new/kombu-4.0.2/kombu/utils/scheduling.py --- old/kombu-4.0.0/kombu/utils/scheduling.py 2016-10-28 01:15:53.000000000 +0200 +++ new/kombu-4.0.2/kombu/utils/scheduling.py 2016-12-16 00:33:36.000000000 +0100 @@ -50,18 +50,14 @@ def get(self, callback, **kwargs): """Get from next resource.""" - succeeded = 0 for tried in count(0): # for infinity resource = self._next() try: return self.fun(resource, callback, **kwargs) except self.predicate: + # reraise when retries exchausted. if tried >= len(self.resources) - 1: - if not succeeded: - raise - break - else: - succeeded += 1 + raise def close(self): """Close cycle.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu/utils/url.py new/kombu-4.0.2/kombu/utils/url.py --- old/kombu-4.0.0/kombu/utils/url.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/kombu/utils/url.py 2016-12-16 00:33:36.000000000 +0100 @@ -10,11 +10,11 @@ from urllib import quote, unquote # noqa from urlparse import urlparse, parse_qsl # noqa -from kombu.five import string_t +from kombu.five import bytes_if_py2, string_t from .compat import NamedTuple -safequote = partial(quote, safe='') +safequote = partial(quote, safe=bytes_if_py2('')) urlparts = NamedTuple('urlparts', [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu.egg-info/PKG-INFO new/kombu-4.0.2/kombu.egg-info/PKG-INFO --- old/kombu-4.0.0/kombu.egg-info/PKG-INFO 2016-10-29 01:53:56.000000000 +0200 +++ new/kombu-4.0.2/kombu.egg-info/PKG-INFO 2016-12-16 00:49:29.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: kombu -Version: 4.0.0 +Version: 4.0.2 Summary: Messaging library for Python. Home-page: https://kombu.readthedocs.io Author: Ask Solem @@ -12,7 +12,7 @@ |build-status| |coverage| |license| |wheel| |pyversion| |pyimp| - :Version: 4.0.0 + :Version: 4.0.2 :Web: http://kombu.me/ :Download: http://pypi.python.org/pypi/kombu/ :Source: https://github.com/celery/kombu/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/kombu.egg-info/requires.txt new/kombu-4.0.2/kombu.egg-info/requires.txt --- old/kombu-4.0.0/kombu.egg-info/requires.txt 2016-10-29 01:53:56.000000000 +0200 +++ new/kombu-4.0.2/kombu.egg-info/requires.txt 2016-12-16 00:49:29.000000000 +0100 @@ -1,4 +1,4 @@ -amqp>=2.1.1,<3.0 +amqp>=2.1.4,<3.0 [consul] python-consul>=0.6.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/requirements/default.txt new/kombu-4.0.2/requirements/default.txt --- old/kombu-4.0.0/requirements/default.txt 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/requirements/default.txt 2016-12-16 00:33:36.000000000 +0100 @@ -1 +1 @@ -amqp>=2.1.1,<3.0 +amqp>=2.1.4,<3.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/t/unit/test_messaging.py new/kombu-4.0.2/t/unit/test_messaging.py --- old/kombu-4.0.0/t/unit/test_messaging.py 2016-10-27 20:04:47.000000000 +0200 +++ new/kombu-4.0.2/t/unit/test_messaging.py 2016-12-16 00:33:36.000000000 +0100 @@ -262,6 +262,15 @@ pass c.cancel.assert_called_with() + def test_enter_exit_cancel_not_called_on_connection_error(self): + c = Consumer(self.connection) + c.cancel = Mock(name='Consumer.cancel') + assert self.connection.connection_errors + with pytest.raises(self.connection.connection_errors[0]): + with c: + raise self.connection.connection_errors[0]() + c.cancel.assert_not_called() + def test_receive_callback_accept(self): message = Mock(name='Message') message.errors = [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/t/unit/transport/test_mongodb.py new/kombu-4.0.2/t/unit/transport/test_mongodb.py --- old/kombu-4.0.0/t/unit/transport/test_mongodb.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/t/unit/transport/test_mongodb.py 2016-12-16 00:33:36.000000000 +0100 @@ -160,7 +160,6 @@ remove=True, sort=[ ('priority', pymongo.ASCENDING), - ('$natural', pymongo.ASCENDING), ], ) @@ -340,7 +339,6 @@ 'broadcast', 'find', tailable=True, query={'queue': 'fanout_exchange'}, - sort=[('$natural', pymongo.ASCENDING)], ) if pymongo.version_tuple >= (3, ): @@ -353,7 +351,6 @@ 'broadcast', 'find', cursor_type=pymongo.CursorType.TAILABLE, filter={'queue': 'fanout_exchange1'}, - sort=[('$natural', pymongo.ASCENDING)], ) @@ -400,7 +397,6 @@ remove=True, sort=[ ('priority', pymongo.ASCENDING), - ('$natural', pymongo.ASCENDING), ], ) self.assert_operation_called_with( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/t/unit/transport/test_qpid.py new/kombu-4.0.2/t/unit/transport/test_qpid.py --- old/kombu-4.0.0/t/unit/transport/test_qpid.py 2016-10-29 01:22:29.000000000 +0200 +++ new/kombu-4.0.2/t/unit/transport/test_qpid.py 2016-12-16 00:33:36.000000000 +0100 @@ -311,7 +311,7 @@ except AuthenticationFailure as error: exc_info = sys.exc_info() assert not isinstance(error, QpidException) - assert exc_info[1] is 'b' + assert exc_info[1] == 'b' assert exc_info[2] is None else: self.fail('ConnectionError type was not mutated correctly') @@ -328,7 +328,7 @@ except AuthenticationFailure as error: exc_info = sys.exc_info() assert not isinstance(error, QpidException) - assert exc_info[1] is 'b' + assert exc_info[1] == 'b' assert exc_info[2] is None else: self.fail('ConnectionError type was not mutated correctly') @@ -355,7 +355,7 @@ except AuthenticationFailure as error: exc_info = sys.exc_info() assert not isinstance(error, QpidException) - assert exc_info[1] is 'b' + assert exc_info[1] == 'b' assert exc_info[2] is None else: self.fail('ConnectionError type was not mutated correctly') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/t/unit/transport/test_redis.py new/kombu-4.0.2/t/unit/transport/test_redis.py --- old/kombu-4.0.0/t/unit/transport/test_redis.py 2016-10-24 21:43:09.000000000 +0200 +++ new/kombu-4.0.2/t/unit/transport/test_redis.py 2016-12-16 00:33:36.000000000 +0100 @@ -573,19 +573,19 @@ self.channel._put('george', msg1) client().lpush.assert_called_with( - self.channel._q_for_pri('george', 6), dumps(msg1), + self.channel._q_for_pri('george', 3), dumps(msg1), ) msg2 = {'properties': {'priority': 313}} self.channel._put('george', msg2) client().lpush.assert_called_with( - self.channel._q_for_pri('george', 0), dumps(msg2), + self.channel._q_for_pri('george', 9), dumps(msg2), ) msg3 = {'properties': {}} self.channel._put('george', msg3) client().lpush.assert_called_with( - self.channel._q_for_pri('george', 9), dumps(msg3), + self.channel._q_for_pri('george', 0), dumps(msg3), ) def test_delete(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-4.0.0/t/unit/transport/virtual/test_base.py new/kombu-4.0.2/t/unit/transport/virtual/test_base.py --- old/kombu-4.0.0/t/unit/transport/virtual/test_base.py 2016-10-28 01:50:56.000000000 +0200 +++ new/kombu-4.0.2/t/unit/transport/virtual/test_base.py 2016-12-16 00:33:36.000000000 +0100 @@ -506,9 +506,9 @@ c = self.channel c.exchange_declare(exchange='unique_name') c.queue_declare(queue='q') - c.queue_bind(queue='q', exchange='foo', routing_key='rk') + c.queue_bind(queue='q', exchange='unique_name', routing_key='rk') - assert ('q', 'foo', 'rk') in list(c.list_bindings()) + assert ('q', 'unique_name', 'rk') in list(c.list_bindings()) def test_after_reply_message_received(self): c = self.channel
