Hello community, here is the log from the commit of package python3-kombu for openSUSE:Factory checked in at 2015-11-02 12:55:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-kombu (Old) and /work/SRC/openSUSE:Factory/.python3-kombu.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-kombu" Changes: -------- --- /work/SRC/openSUSE:Factory/python3-kombu/python3-kombu.changes 2015-10-20 00:06:53.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python3-kombu.new/python3-kombu.changes 2015-11-02 12:55:05.000000000 +0100 @@ -1,0 +2,13 @@ +Thu Oct 29 15:34:13 UTC 2015 - a...@gmx.de + +- update to version 3.0.29: + * Fixed serialization issue for "bindings.as_dict()" (Issue #453). + Fix contributed by Sergey Tikhonov. + * Json serializer wrongly treated bytes as "ascii", not "utf-8" + (Issue #532). + * MongoDB: Now supports pymongo 3.x. + Contributed by Len Buckens. + * SQS: Tests passing on Python 3. + Fix contributed by Felix Yan + +------------------------------------------------------------------- Old: ---- kombu-3.0.28.tar.gz New: ---- kombu-3.0.29.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-kombu.spec ++++++ --- /var/tmp/diff_new_pack.bMOpZv/_old 2015-11-02 12:55:06.000000000 +0100 +++ /var/tmp/diff_new_pack.bMOpZv/_new 2015-11-02 12:55:06.000000000 +0100 @@ -17,7 +17,7 @@ Name: python3-kombu -Version: 3.0.28 +Version: 3.0.29 Release: 0 Summary: AMQP Messaging Framework for Python License: BSD-3-Clause ++++++ kombu-3.0.28.tar.gz -> kombu-3.0.29.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/AUTHORS new/kombu-3.0.29/AUTHORS --- old/kombu-3.0.28/AUTHORS 2015-10-09 23:52:37.000000000 +0200 +++ new/kombu-3.0.29/AUTHORS 2015-10-26 18:58:25.000000000 +0100 @@ -42,6 +42,7 @@ Eric Wang <eric1...@gmail.com> Fabrice Rabaute <fabr...@expa.com> Felix Schwarz <felix.schw...@oss.schwarz.eu> +Felix Yan <felixonm...@archlinux.org> Fernando Jorge Mota <f.j.mot...@gmail.com> Flavio [FlaPer87] Percoco Premoli <flape...@flaper87.org> Florian Munz <s...@theflow.de> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/Changelog new/kombu-3.0.29/Changelog --- old/kombu-3.0.28/Changelog 2015-10-12 20:57:52.000000000 +0200 +++ new/kombu-3.0.29/Changelog 2015-10-26 19:10:33.000000000 +0100 @@ -4,11 +4,43 @@ Change history ================ +.. _version-3.0.29: + +3.0.29 +====== +:release-date: 2015-10-26 11:10 A.M PDT +:release-by: Ask Solem + +- Fixed serialization issue for ``bindings.as_dict()`` (Issue #453). + + Fix contributed by Sergey Tikhonov. + +- Json serializer wrongly treated bytes as ``ascii``, not ``utf-8`` + (Issue #532). + +- MongoDB: Now supports pymongo 3.x. + + Contributed by Len Buckens. + +- SQS: Tests passing on Python 3. + + Fix contributed by Felix Yan + .. _version-3.0.28: 3.0.28 ====== -:release-date: 2015-10-12 12:00 PM PDT +:release-date: 2015-10-12 12:00 P.M PDT +:release-by: Ask Solem + +:.. admonition:: Django transport migrations. + + If you're using Django 1.8 and have already created the + kombu_transport_django tables, you have to run a fake initial migration: + + .. code-block:: pycon + + python manage.py migrate kombu_transport_django --fake-initial - No longer compatible with South by default. @@ -30,7 +62,7 @@ 3.0.27 ====== -:release-date: 2015-10-09 3:10 PM PDT +:release-date: 2015-10-09 3:10 P.M PDT :release-by: Ask Solem - Now depends on :mod:`amqp` 1.4.7. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/PKG-INFO new/kombu-3.0.29/PKG-INFO --- old/kombu-3.0.28/PKG-INFO 2015-10-12 21:38:35.000000000 +0200 +++ new/kombu-3.0.29/PKG-INFO 2015-10-26 19:13:16.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: kombu -Version: 3.0.28 +Version: 3.0.29 Summary: Messaging library for Python Home-page: http://kombu.readthedocs.org Author: Ask Solem @@ -12,7 +12,7 @@ kombu - Messaging library for Python ======================================== - :Version: 3.0.28 + :Version: 3.0.29 `Kombu` is a messaging library for Python. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/README.rst new/kombu-3.0.29/README.rst --- old/kombu-3.0.28/README.rst 2015-10-12 21:37:59.000000000 +0200 +++ new/kombu-3.0.29/README.rst 2015-10-26 19:10:16.000000000 +0100 @@ -4,7 +4,7 @@ kombu - Messaging library for Python ======================================== -:Version: 3.0.28 +:Version: 3.0.29 `Kombu` is a messaging library for Python. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/docs/changelog.rst new/kombu-3.0.29/docs/changelog.rst --- old/kombu-3.0.28/docs/changelog.rst 2015-10-12 20:57:52.000000000 +0200 +++ new/kombu-3.0.29/docs/changelog.rst 2015-10-26 19:10:33.000000000 +0100 @@ -4,11 +4,43 @@ Change history ================ +.. _version-3.0.29: + +3.0.29 +====== +:release-date: 2015-10-26 11:10 A.M PDT +:release-by: Ask Solem + +- Fixed serialization issue for ``bindings.as_dict()`` (Issue #453). + + Fix contributed by Sergey Tikhonov. + +- Json serializer wrongly treated bytes as ``ascii``, not ``utf-8`` + (Issue #532). + +- MongoDB: Now supports pymongo 3.x. + + Contributed by Len Buckens. + +- SQS: Tests passing on Python 3. + + Fix contributed by Felix Yan + .. _version-3.0.28: 3.0.28 ====== -:release-date: 2015-10-12 12:00 PM PDT +:release-date: 2015-10-12 12:00 P.M PDT +:release-by: Ask Solem + +:.. admonition:: Django transport migrations. + + If you're using Django 1.8 and have already created the + kombu_transport_django tables, you have to run a fake initial migration: + + .. code-block:: pycon + + python manage.py migrate kombu_transport_django --fake-initial - No longer compatible with South by default. @@ -30,7 +62,7 @@ 3.0.27 ====== -:release-date: 2015-10-09 3:10 PM PDT +:release-date: 2015-10-09 3:10 P.M PDT :release-by: Ask Solem - Now depends on :mod:`amqp` 1.4.7. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/docs/introduction.rst new/kombu-3.0.29/docs/introduction.rst --- old/kombu-3.0.28/docs/introduction.rst 2015-10-12 21:37:59.000000000 +0200 +++ new/kombu-3.0.29/docs/introduction.rst 2015-10-26 19:10:16.000000000 +0100 @@ -4,7 +4,7 @@ kombu - Messaging library for Python ======================================== -:Version: 3.0.28 +:Version: 3.0.29 `Kombu` is a messaging library for Python. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/__init__.py new/kombu-3.0.29/kombu/__init__.py --- old/kombu-3.0.28/kombu/__init__.py 2015-10-12 21:37:54.000000000 +0200 +++ new/kombu-3.0.29/kombu/__init__.py 2015-10-26 19:10:12.000000000 +0100 @@ -11,7 +11,7 @@ 'version_info_t', ('major', 'minor', 'micro', 'releaselevel', 'serial'), ) -VERSION = version_info_t(3, 0, 28, '', '') +VERSION = version_info_t(3, 0, 29, '', '') __version__ = '{0.major}.{0.minor}.{0.micro}{0.releaselevel}'.format(VERSION) __author__ = 'Ask Solem' __contact__ = 'a...@celeryproject.org' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/entity.py new/kombu-3.0.29/kombu/entity.py --- old/kombu-3.0.28/kombu/entity.py 2015-10-09 23:52:37.000000000 +0200 +++ new/kombu-3.0.29/kombu/entity.py 2015-10-26 18:43:46.000000000 +0100 @@ -7,7 +7,7 @@ """ from __future__ import absolute_import -from .abstract import MaybeChannelBound +from .abstract import MaybeChannelBound, Object from .exceptions import ContentDisallowed from .five import string_t from .serialization import prepare_accept_content @@ -299,7 +299,7 @@ return not self.auto_delete -class binding(object): +class binding(Object): """Represents a queue or exchange binding. :keyword exchange: Exchange to bind to. @@ -309,6 +309,13 @@ """ + attrs = ( + ('exchange', None), + ('routing_key', None), + ('arguments', None), + ('unbind_arguments', None) + ) + def __init__(self, exchange=None, routing_key='', arguments=None, unbind_arguments=None): self.exchange = exchange diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/serialization.py new/kombu-3.0.29/kombu/serialization.py --- old/kombu-3.0.28/kombu/serialization.py 2015-10-09 23:52:37.000000000 +0200 +++ new/kombu-3.0.29/kombu/serialization.py 2015-10-26 18:43:47.000000000 +0100 @@ -311,7 +311,7 @@ def _loads(obj): if isinstance(obj, bytes_t): - obj = obj.decode() + obj = obj.decode('utf-8') return json_loads(obj) registry.register('json', json_dumps, _loads, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/tests/case.py new/kombu-3.0.29/kombu/tests/case.py --- old/kombu-3.0.28/kombu/tests/case.py 2015-10-09 23:52:37.000000000 +0200 +++ new/kombu-3.0.29/kombu/tests/case.py 2015-10-26 18:43:47.000000000 +0100 @@ -24,6 +24,7 @@ PY3 = sys.version_info[0] == 3 +MagicMock = mock.MagicMock patch = mock.patch call = mock.call @@ -50,7 +51,7 @@ in the class, not just the instance.""" def __enter__(self): - pass + return self def __exit__(self, *exc_info): pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/tests/test_entities.py new/kombu-3.0.29/kombu/tests/test_entities.py --- old/kombu-3.0.28/kombu/tests/test_entities.py 2015-10-09 23:52:37.000000000 +0200 +++ new/kombu-3.0.29/kombu/tests/test_entities.py 2015-10-26 18:43:47.000000000 +0100 @@ -4,6 +4,7 @@ from kombu import Connection, Exchange, Producer, Queue, binding from kombu.exceptions import NotBoundError +from kombu.serialization import registry from .case import Case, Mock, call from .mocks import Transport @@ -360,6 +361,13 @@ d = q.as_dict(recurse=True) self.assertEqual(d['exchange']['name'], self.exchange.name) + def test_queue_dump(self): + b = binding(self.exchange, 'rk') + q = Queue('foo', self.exchange, 'rk', bindings=[b]) + d = q.as_dict(recurse=True) + self.assertEqual(d['bindings'][0]['routing_key'], 'rk') + registry.dumps(d) + def test__repr__(self): b = Queue('foo', self.exchange, 'foo') self.assertIn('foo', repr(b)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/tests/transport/test_SQS.py new/kombu-3.0.29/kombu/tests/transport/test_SQS.py --- old/kombu-3.0.28/kombu/tests/transport/test_SQS.py 2015-10-10 00:07:16.000000000 +0200 +++ new/kombu-3.0.29/kombu/tests/transport/test_SQS.py 2015-10-26 18:43:47.000000000 +0100 @@ -164,7 +164,7 @@ self.assertEqual(len(results), 1) # Now test getting many messages - for i in xrange(3): + for i in range(3): message = 'message: {0}'.format(i) self.producer.publish(message) @@ -210,11 +210,11 @@ self.assertEqual(message, results) def test_puts_and_gets(self): - for i in xrange(3): + for i in range(3): message = 'message: %s' % i self.producer.publish(message) - for i in xrange(3): + for i in range(3): self.assertEqual('message: %s' % i, self.queue(self.channel).get().payload) @@ -233,7 +233,7 @@ self.channel.qos.prefetch_count = 5 # Now, generate all the messages - for i in xrange(message_count): + for i in range(message_count): message = 'message: %s' % i self.producer.publish(message) @@ -262,11 +262,11 @@ self.channel.qos.prefetch_count = 5 # Now, generate all the messages - for i in xrange(message_count): + for i in range(message_count): self.producer.publish('message: %s' % i) # Now drain all the events - for i in xrange(message_count): + for i in range(message_count): self.channel.drain_events() # How many times was the SQSConnectionMock get_message method called? @@ -283,11 +283,11 @@ self.channel.qos.prefetch_count = None # Now, generate all the messages - for i in xrange(message_count): + for i in range(message_count): self.producer.publish('message: %s' % i) # Now drain all the events - for i in xrange(message_count): + for i in range(message_count): self.channel.drain_events() # How many times was the SQSConnectionMock get_message method called? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/tests/transport/test_redis.py new/kombu-3.0.29/kombu/tests/transport/test_redis.py --- old/kombu-3.0.28/kombu/tests/transport/test_redis.py 2015-10-10 00:02:48.000000000 +0200 +++ new/kombu-3.0.29/kombu/tests/transport/test_redis.py 2015-10-26 18:43:47.000000000 +0100 @@ -14,7 +14,7 @@ from kombu.utils import eventio # patch poll from kombu.tests.case import ( - Case, Mock, call, module_exists, skip_if_not_module, patch, + Case, ContextMock, Mock, call, module_exists, skip_if_not_module, patch, ) @@ -178,6 +178,12 @@ self.client = client self.stack = [] + def __enter__(self): + return self + + def __exit__(self, *exc_info): + pass + def __getattr__(self, key): if key not in self.__dict__: @@ -342,11 +348,11 @@ with patch('kombu.transport.redis.loads') as loads: loads.return_value = 'M', 'EX', 'RK' client = self.channel.client = Mock(name='client') + client.pipeline = ContextMock() restore = self.channel._do_restore_message = Mock( name='_do_restore_message', ) - pipe = Mock(name='pipe') - client.pipeline.return_value = pipe + pipe = client.pipeline.return_value pipe_hget = Mock(name='pipe.hget') pipe.hget.return_value = pipe_hget pipe_hget_hdel = Mock(name='pipe.hget.hdel') @@ -371,6 +377,10 @@ def test_qos_restore_visible(self): client = self.channel.client = Mock(name='client') + + def pipe(*args, **kwargs): + return Pipeline(client) + client.pipeline = pipe client.zrevrangebyscore.return_value = [ (1, 10), (2, 20), @@ -1202,7 +1212,8 @@ # Won uuid.return_value = lock_id client.setnx.return_value = True - pipe = client.pipeline.return_value = Mock(name='pipe') + client.pipeline = ContextMock() + pipe = client.pipeline.return_value pipe.get.return_value = lock_id held = False with redis.Mutex(client, 'foo1', 100): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/transport/mongodb.py new/kombu-3.0.29/kombu/transport/mongodb.py --- old/kombu-3.0.28/kombu/transport/mongodb.py 2015-10-09 23:52:37.000000000 +0200 +++ new/kombu-3.0.29/kombu/transport/mongodb.py 2015-10-26 18:49:31.000000000 +0100 @@ -22,6 +22,12 @@ from . import virtual +try: + from pymongo.cursor import CursorType +except ImportError: + class CursorType(object): # noqa + pass + DEFAULT_HOST = '127.0.0.1' DEFAULT_PORT = 27017 @@ -172,15 +178,26 @@ return hostname, dbname, options + def _prepare_client_options(self, options): + if pymongo.version_tuple >= (3, ): + options.pop('auto_start_request', None) + return options + def _open(self, scheme='mongodb://'): hostname, dbname, options = self._parse_uri(scheme=scheme) - mongoconn = MongoClient( - host=hostname, ssl=options['ssl'], - auto_start_request=options['auto_start_request'], - connectTimeoutMS=options['connectTimeoutMS'], - use_greenlets=_detect_environment() != 'default', - ) + conf = self._prepare_client_options(options) + conf['host'] = hostname + + env = _detect_environment() + if env == 'gevent': + from gevent import monkey + monkey.patch_all() + elif env == 'eventlet': + from eventlet import monkey_patch + monkey_patch() + + mongoconn = MongoClient(**conf) database = mongoconn[dbname] version = mongoconn.server_info()['version'] @@ -284,11 +301,18 @@ ) def create_broadcast_cursor(self, exchange, routing_key, pattern, queue): - cursor = self.get_broadcast().find( - query={'queue': exchange}, - sort=[('$natural', 1)], - tailable=True, - ) + if pymongo.version_tuple >= (3, ): + query = dict(filter={'queue': exchange}, + sort=[('$natural', 1)], + cursor_type=CursorType.TAILABLE + ) + else: + query = dict(query={'queue': exchange}, + sort=[('$natural', 1)], + tailable=True + ) + + cursor = self.get_broadcast().find(**query) ret = self._broadcast_cursors[queue] = BroadcastCursor(cursor) return ret diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu/transport/redis.py new/kombu-3.0.29/kombu/transport/redis.py --- old/kombu-3.0.28/kombu/transport/redis.py 2015-10-12 20:57:12.000000000 +0200 +++ new/kombu-3.0.29/kombu/transport/redis.py 2015-10-26 18:43:47.000000000 +0100 @@ -115,14 +115,14 @@ raise MutexHeld() finally: if i_won: - pipe = client.pipeline(True) try: - pipe.watch(name) - if pipe.get(name) == lock_id: - pipe.multi() - pipe.delete(name) - pipe.execute() - pipe.unwatch() + with client.pipeline(True) as pipe: + pipe.watch(name) + if pipe.get(name) == lock_id: + pipe.multi() + pipe.delete(name) + pipe.execute() + pipe.unwatch() except redis.WatchError: pass @@ -160,11 +160,11 @@ self.ack(delivery_tag) @contextmanager - def pipe_or_acquire(self, pipe=None): + def pipe_or_acquire(self, pipe=None, client=None): if pipe: yield pipe else: - with self.channel.conn_or_acquire() as client: + with self.channel.conn_or_acquire(client) as client: yield client.pipeline() def _remove_from_indices(self, delivery_tag, pipe=None): @@ -191,8 +191,9 @@ def restore_by_tag(self, tag, client=None, leftmost=False): with self.channel.conn_or_acquire(client) as client: - p, _, _ = self._remove_from_indices( - tag, client.pipeline().hget(self.unacked_key, tag)).execute() + with client.pipeline() as pipe: + p, _, _ = self._remove_from_indices( + tag, pipe.hget(self.unacked_key, tag)).execute() if p: M, EX, RK = loads(bytes_to_str(p)) # json is unicode self.channel._do_restore_message(M, EX, RK, client, leftmost) @@ -484,10 +485,10 @@ return super(Channel, self)._restore(message) tag = message.delivery_tag with self.conn_or_acquire() as client: - P, _ = client.pipeline() \ - .hget(self.unacked_key, tag) \ - .hdel(self.unacked_key, tag) \ - .execute() + with client.pipeline() as pipe: + P, _ = pipe.hget(self.unacked_key, tag) \ + .hdel(self.unacked_key, tag) \ + .execute() if P: M, EX, RK = loads(bytes_to_str(P)) # json is unicode self._do_restore_message(M, EX, RK, client, leftmost) @@ -651,12 +652,12 @@ def _size(self, queue): with self.conn_or_acquire() as client: - cmds = client.pipeline() - for pri in PRIORITY_STEPS: - cmds = cmds.llen(self._q_for_pri(queue, pri)) - sizes = cmds.execute() - return sum(size for size in sizes - if isinstance(size, numbers.Integral)) + with client.pipeline() as pipe: + for pri in PRIORITY_STEPS: + pipe = pipe.llen(self._q_for_pri(queue, pri)) + sizes = pipe.execute() + return sum(size for size in sizes + if isinstance(size, numbers.Integral)) def _q_for_pri(self, queue, pri): pri = self.priority(pri) @@ -707,17 +708,17 @@ self.sep.join([routing_key or '', pattern or '', queue or ''])) - cmds = client.pipeline() - for pri in PRIORITY_STEPS: - cmds = cmds.delete(self._q_for_pri(queue, pri)) - cmds.execute() + with client.pipeline() as pipe: + for pri in PRIORITY_STEPS: + pipe = pipe.delete(self._q_for_pri(queue, pri)) + pipe.execute() def _has_queue(self, queue, **kwargs): with self.conn_or_acquire() as client: - cmds = client.pipeline() - for pri in PRIORITY_STEPS: - cmds = cmds.exists(self._q_for_pri(queue, pri)) - return any(cmds.execute()) + with client.pipeline() as pipe: + for pri in PRIORITY_STEPS: + pipe = pipe.exists(self._q_for_pri(queue, pri)) + return any(pipe.execute()) def get_table(self, exchange): key = self.keyprefix_queue % exchange @@ -729,12 +730,12 @@ def _purge(self, queue): with self.conn_or_acquire() as client: - cmds = client.pipeline() - for pri in PRIORITY_STEPS: - priq = self._q_for_pri(queue, pri) - cmds = cmds.llen(priq).delete(priq) - sizes = cmds.execute() - return sum(sizes[::2]) + with client.pipeline() as pipe: + for pri in PRIORITY_STEPS: + priq = self._q_for_pri(queue, pri) + pipe = pipe.llen(priq).delete(priq) + sizes = pipe.execute() + return sum(sizes[::2]) def close(self): if self._pool: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/kombu.egg-info/PKG-INFO new/kombu-3.0.29/kombu.egg-info/PKG-INFO --- old/kombu-3.0.28/kombu.egg-info/PKG-INFO 2015-10-12 21:38:31.000000000 +0200 +++ new/kombu-3.0.29/kombu.egg-info/PKG-INFO 2015-10-26 19:13:11.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: kombu -Version: 3.0.28 +Version: 3.0.29 Summary: Messaging library for Python Home-page: http://kombu.readthedocs.org Author: Ask Solem @@ -12,7 +12,7 @@ kombu - Messaging library for Python ======================================== - :Version: 3.0.28 + :Version: 3.0.29 `Kombu` is a messaging library for Python. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-3.0.28/requirements/test-ci3.txt new/kombu-3.0.29/requirements/test-ci3.txt --- old/kombu-3.0.28/requirements/test-ci3.txt 2015-09-29 23:47:57.000000000 +0200 +++ new/kombu-3.0.29/requirements/test-ci3.txt 2015-10-26 18:43:47.000000000 +0100 @@ -3,3 +3,4 @@ redis PyYAML msgpack-python>0.2.0 # 0.2.0 dropped 2.5 support +boto