Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-kombu for openSUSE:Factory checked in at 2024-04-03 17:20:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-kombu (Old) and /work/SRC/openSUSE:Factory/.python-kombu.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-kombu" Wed Apr 3 17:20:51 2024 rev:82 rq:1164300 version:5.3.6 Changes: -------- --- /work/SRC/openSUSE:Factory/python-kombu/python-kombu.changes 2024-02-08 19:03:32.538084869 +0100 +++ /work/SRC/openSUSE:Factory/.python-kombu.new.1905/python-kombu.changes 2024-04-03 17:22:06.993259416 +0200 @@ -1,0 +2,20 @@ +Wed Apr 3 07:21:44 UTC 2024 - Dirk Müller <[email protected]> + +- update to 5.3.6: + * boto3>=1.26.143 + * Always convert azureservicebus namespace to fully qualified + * Pin pytest-sugar to latest version 1.0.0 + * Upgrade to pytest v8 that removed nose compatibility + * fix warning for usage of utcfromtimestamp + * Update pytest to 8.0.2 + * Hotfix: Fix CI failures (limit redis to <5.0.2 instead of + * Expose cancel callback from py-amqp channel.basic_consume + * Update mypy to 1.9.0 + * Update pytest to 8.1.1 + * Pin hypothesis to hypothesis<7 + * redis>=4.5.2,<5.0.2,!=4.5.5 -> redis>=4.5.2,!=5.0.2,!=4.5.5 + * add escape hatch for custom JSON serialization + * Pin pytest-cov to latest version 5.0.0 + * Added Changelog for v5.3.6 + +------------------------------------------------------------------- Old: ---- kombu-5.3.5.tar.gz New: ---- kombu-5.3.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-kombu.spec ++++++ --- /var/tmp/diff_new_pack.dUSNYj/_old 2024-04-03 17:22:07.793288932 +0200 +++ /var/tmp/diff_new_pack.dUSNYj/_new 2024-04-03 17:22:07.797289080 +0200 @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-kombu -Version: 5.3.5 +Version: 5.3.6 Release: 0 Summary: AMQP Messaging Framework for Python License: BSD-3-Clause @@ -33,7 +33,7 @@ BuildRequires: %{python_module SQLAlchemy} BuildRequires: %{python_module amqp >= 5.1.1} BuildRequires: %{python_module azure-identity >= 1.12.0} -BuildRequires: %{python_module boto3 >= 1.9.12} +BuildRequires: %{python_module boto3 >= 1.26.143} BuildRequires: %{python_module hypothesis} BuildRequires: %{python_module msgpack} BuildRequires: %{python_module pycurl >= 7.43.0.2} ++++++ kombu-5.3.5.tar.gz -> kombu-5.3.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/PKG-INFO new/kombu-5.3.6/PKG-INFO --- old/kombu-5.3.5/PKG-INFO 2024-01-12 20:55:36.071878000 +0100 +++ new/kombu-5.3.6/PKG-INFO 2024-03-27 14:06:01.328128000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kombu -Version: 5.3.5 +Version: 5.3.6 Summary: Messaging library for Python. Home-page: https://kombu.readthedocs.io Author: Ask Solem @@ -38,7 +38,7 @@ Provides-Extra: yaml Requires-Dist: PyYAML>=3.10; extra == "yaml" Provides-Extra: redis -Requires-Dist: redis!=4.5.5,<6.0.0,>=4.5.2; extra == "redis" +Requires-Dist: redis!=4.5.5,!=5.0.2,>=4.5.2; extra == "redis" Provides-Extra: mongodb Requires-Dist: pymongo>=4.1.1; extra == "mongodb" Provides-Extra: sqs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/README.rst new/kombu-5.3.6/README.rst --- old/kombu-5.3.5/README.rst 2024-01-12 20:53:46.000000000 +0100 +++ new/kombu-5.3.6/README.rst 2024-03-27 14:05:32.000000000 +0100 @@ -4,7 +4,7 @@ |build-status| |coverage| |license| |wheel| |pyversion| |pyimp| |downloads| -:Version: 5.3.5 +:Version: 5.3.6 :Documentation: https://kombu.readthedocs.io/ :Download: https://pypi.org/project/kombu/ :Source: https://github.com/celery/kombu/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/docs/includes/introduction.txt new/kombu-5.3.6/docs/includes/introduction.txt --- old/kombu-5.3.5/docs/includes/introduction.txt 2024-01-12 20:53:46.000000000 +0100 +++ new/kombu-5.3.6/docs/includes/introduction.txt 2024-03-27 14:05:32.000000000 +0100 @@ -1,4 +1,4 @@ -:Version: 5.3.5 +:Version: 5.3.6 :Web: https://kombu.readthedocs.io/ :Download: https://pypi.org/project/kombu/ :Source: https://github.com/celery/kombu/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu/__init__.py new/kombu-5.3.6/kombu/__init__.py --- old/kombu-5.3.5/kombu/__init__.py 2024-01-12 20:53:46.000000000 +0100 +++ new/kombu-5.3.6/kombu/__init__.py 2024-03-27 14:05:32.000000000 +0100 @@ -8,7 +8,7 @@ from collections import namedtuple from typing import Any, cast -__version__ = '5.3.5' +__version__ = '5.3.6' __author__ = 'Ask Solem' __contact__ = '[email protected]' __homepage__ = 'https://kombu.readthedocs.io' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu/asynchronous/timer.py new/kombu-5.3.6/kombu/asynchronous/timer.py --- old/kombu-5.3.5/kombu/asynchronous/timer.py 2023-05-15 05:09:16.000000000 +0200 +++ new/kombu-5.3.6/kombu/asynchronous/timer.py 2024-03-05 11:08:52.000000000 +0100 @@ -29,7 +29,7 @@ logger = get_logger(__name__) DEFAULT_MAX_INTERVAL = 2 -EPOCH = datetime.utcfromtimestamp(0).replace(tzinfo=ZoneInfo("UTC")) +EPOCH = datetime.fromtimestamp(0, ZoneInfo("UTC")) IS_PYPY = hasattr(sys, 'pypy_version_info') scheduled = namedtuple('scheduled', ('eta', 'priority', 'entry')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu/entity.py new/kombu-5.3.6/kombu/entity.py --- old/kombu-5.3.5/kombu/entity.py 2023-05-15 05:09:16.000000000 +0200 +++ new/kombu-5.3.6/kombu/entity.py 2024-03-09 09:49:45.000000000 +0100 @@ -722,7 +722,7 @@ nowait=nowait) or 0 def consume(self, consumer_tag='', callback=None, - no_ack=None, nowait=False): + no_ack=None, nowait=False, on_cancel=None): """Start a queue consumer. Consumers last as long as the channel they were created on, or @@ -741,6 +741,9 @@ nowait (bool): Do not wait for a reply. callback (Callable): callback called for each delivered message. + + on_cancel (Callable): callback called on cancel notify received + from broker. """ if no_ack is None: no_ack = self.no_ack @@ -750,7 +753,9 @@ consumer_tag=consumer_tag or '', callback=callback, nowait=nowait, - arguments=self.consumer_arguments) + arguments=self.consumer_arguments, + on_cancel=on_cancel, + ) def cancel(self, consumer_tag): """Cancel a consumer by consumer tag.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu/transport/azureservicebus.py new/kombu-5.3.6/kombu/transport/azureservicebus.py --- old/kombu-5.3.5/kombu/transport/azureservicebus.py 2024-01-08 16:56:44.000000000 +0100 +++ new/kombu-5.3.6/kombu/transport/azureservicebus.py 2024-03-05 11:08:52.000000000 +0100 @@ -148,13 +148,8 @@ if ":" in self._credential: self._policy, self._sas_key = self._credential.split(':', 1) - # Convert - endpoint = 'sb://' + self._namespace - if not endpoint.endswith('.net'): - endpoint += '.servicebus.windows.net' - conn_dict = { - 'Endpoint': endpoint, + 'Endpoint': 'sb://' + self._namespace, 'SharedAccessKeyName': self._policy, 'SharedAccessKey': self._sas_key, } @@ -451,6 +446,9 @@ # > 'rootpolicy:some/key', 'somenamespace' credential, namespace = uri.rsplit('@', 1) + if not namespace.endswith('.net'): + namespace += '.servicebus.windows.net' + if "DefaultAzureCredential".lower() == credential.lower(): if DefaultAzureCredential is None: raise ImportError('Azure Service Bus transport with a ' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu/utils/json.py new/kombu-5.3.6/kombu/utils/json.py --- old/kombu-5.3.5/kombu/utils/json.py 2023-06-18 22:37:05.000000000 +0200 +++ new/kombu-5.3.6/kombu/utils/json.py 2024-03-27 13:05:07.000000000 +0100 @@ -32,7 +32,9 @@ for t, (marker, encoder) in _encoders.items(): if isinstance(o, t): - return _as(marker, encoder(o)) + return ( + encoder(o) if marker is None else _as(marker, encoder(o)) + ) # Bytes is slightly trickier, so we cannot put them directly # into _encoders, because we use two formats: bytes, and base64. @@ -50,7 +52,11 @@ def dumps( - s, _dumps=json.dumps, cls=JSONEncoder, default_kwargs=None, **kwargs + s, + _dumps=json.dumps, + cls=JSONEncoder, + default_kwargs=None, + **kwargs ): """Serialize object to json string.""" default_kwargs = default_kwargs or {} @@ -94,35 +100,47 @@ def register_type( t: type[T], - marker: str, + marker: str | None, encoder: Callable[[T], EncodedT], - decoder: Callable[[EncodedT], T], + decoder: Callable[[EncodedT], T] = lambda d: d, ): - """Add support for serializing/deserializing native python type.""" + """Add support for serializing/deserializing native python type. + + If marker is `None`, the encoding is a pure transformation and the result + is not placed in an envelope, so `decoder` is unnecessary. Decoding must + instead be handled outside this library. + """ _encoders[t] = (marker, encoder) - _decoders[marker] = decoder + if marker is not None: + _decoders[marker] = decoder -_encoders: dict[type, tuple[str, EncoderT]] = {} +_encoders: dict[type, tuple[str | None, EncoderT]] = {} _decoders: dict[str, DecoderT] = { "bytes": lambda o: o.encode("utf-8"), "base64": lambda o: base64.b64decode(o.encode("utf-8")), } -# NOTE: datetime should be registered before date, -# because datetime is also instance of date. -register_type(datetime, "datetime", datetime.isoformat, datetime.fromisoformat) -register_type( - date, - "date", - lambda o: o.isoformat(), - lambda o: datetime.fromisoformat(o).date(), -) -register_type(time, "time", lambda o: o.isoformat(), time.fromisoformat) -register_type(Decimal, "decimal", str, Decimal) -register_type( - uuid.UUID, - "uuid", - lambda o: {"hex": o.hex}, - lambda o: uuid.UUID(**o), -) + +def _register_default_types(): + # NOTE: datetime should be registered before date, + # because datetime is also instance of date. + register_type(datetime, "datetime", datetime.isoformat, + datetime.fromisoformat) + register_type( + date, + "date", + lambda o: o.isoformat(), + lambda o: datetime.fromisoformat(o).date(), + ) + register_type(time, "time", lambda o: o.isoformat(), time.fromisoformat) + register_type(Decimal, "decimal", str, Decimal) + register_type( + uuid.UUID, + "uuid", + lambda o: {"hex": o.hex}, + lambda o: uuid.UUID(**o), + ) + + +_register_default_types() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu.egg-info/PKG-INFO new/kombu-5.3.6/kombu.egg-info/PKG-INFO --- old/kombu-5.3.5/kombu.egg-info/PKG-INFO 2024-01-12 20:55:35.000000000 +0100 +++ new/kombu-5.3.6/kombu.egg-info/PKG-INFO 2024-03-27 14:06:01.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: kombu -Version: 5.3.5 +Version: 5.3.6 Summary: Messaging library for Python. Home-page: https://kombu.readthedocs.io Author: Ask Solem @@ -38,7 +38,7 @@ Provides-Extra: yaml Requires-Dist: PyYAML>=3.10; extra == "yaml" Provides-Extra: redis -Requires-Dist: redis!=4.5.5,<6.0.0,>=4.5.2; extra == "redis" +Requires-Dist: redis!=4.5.5,!=5.0.2,>=4.5.2; extra == "redis" Provides-Extra: mongodb Requires-Dist: pymongo>=4.1.1; extra == "mongodb" Provides-Extra: sqs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/kombu.egg-info/requires.txt new/kombu-5.3.6/kombu.egg-info/requires.txt --- old/kombu-5.3.5/kombu.egg-info/requires.txt 2024-01-12 20:55:35.000000000 +0100 +++ new/kombu-5.3.6/kombu.egg-info/requires.txt 2024-03-27 14:06:01.000000000 +0100 @@ -39,7 +39,7 @@ qpid-tools>=0.26 [redis] -redis!=4.5.5,<6.0.0,>=4.5.2 +redis!=4.5.5,!=5.0.2,>=4.5.2 [slmq] softlayer_messaging>=1.0.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/requirements/extras/redis.txt new/kombu-5.3.6/requirements/extras/redis.txt --- old/kombu-5.3.5/requirements/extras/redis.txt 2023-09-17 20:37:33.000000000 +0200 +++ new/kombu-5.3.6/requirements/extras/redis.txt 2024-03-11 10:58:36.000000000 +0100 @@ -1 +1 @@ -redis>=4.5.2,<6.0.0,!=4.5.5 +redis>=4.5.2,!=5.0.2,!=4.5.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/requirements/funtest.txt new/kombu-5.3.6/requirements/funtest.txt --- old/kombu-5.3.5/requirements/funtest.txt 2022-09-28 17:48:06.000000000 +0200 +++ new/kombu-5.3.6/requirements/funtest.txt 2024-03-11 10:58:36.000000000 +0100 @@ -1,5 +1,5 @@ # redis transport -redis +redis>=4.5.2,!=5.0.2,!=4.5.5 # MongoDB transport pymongo @@ -8,7 +8,7 @@ kazoo # SQS transport -boto3 +boto3>=1.26.143 # Qpid transport qpid-python>=0.26 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/requirements/pkgutils.txt new/kombu-5.3.6/requirements/pkgutils.txt --- old/kombu-5.3.5/requirements/pkgutils.txt 2024-01-08 19:06:37.000000000 +0100 +++ new/kombu-5.3.6/requirements/pkgutils.txt 2024-03-09 09:54:36.000000000 +0100 @@ -5,4 +5,4 @@ sphinx2rst>=1.0 bumpversion pydocstyle==6.3.0 -mypy==1.8.0 +mypy==1.9.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/requirements/test-ci.txt new/kombu-5.3.6/requirements/test-ci.txt --- old/kombu-5.3.5/requirements/test-ci.txt 2023-06-18 22:37:05.000000000 +0200 +++ new/kombu-5.3.6/requirements/test-ci.txt 2024-03-27 13:05:07.000000000 +0100 @@ -1,4 +1,4 @@ -pytest-cov +pytest-cov==5.0.0 codecov; sys_platform == 'win32' librabbitmq>=2.0.0; sys_platform == 'win32' -r extras/redis.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/requirements/test.txt new/kombu-5.3.6/requirements/test.txt --- old/kombu-5.3.5/requirements/test.txt 2024-01-08 18:12:55.000000000 +0100 +++ new/kombu-5.3.6/requirements/test.txt 2024-03-11 10:37:32.000000000 +0100 @@ -1,5 +1,5 @@ -pytest==7.4.4 -pytest-sugar +hypothesis<7 Pyro4 -hypothesis pytest-freezer +pytest-sugar==1.0.0 +pytest==8.1.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/asynchronous/aws/sqs/test_connection.py new/kombu-5.3.6/t/unit/asynchronous/aws/sqs/test_connection.py --- old/kombu-5.3.5/t/unit/asynchronous/aws/sqs/test_connection.py 2023-11-28 13:45:32.000000000 +0100 +++ new/kombu-5.3.6/t/unit/asynchronous/aws/sqs/test_connection.py 2024-03-05 11:08:52.000000000 +0100 @@ -17,7 +17,7 @@ class test_AsyncSQSConnection(AWSCase): - def setup(self): + def setup_method(self): session = boto3.session.Session( aws_access_key_id='AAA', aws_secret_access_key='AAAA', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/asynchronous/aws/sqs/test_queue.py new/kombu-5.3.6/t/unit/asynchronous/aws/sqs/test_queue.py --- old/kombu-5.3.5/t/unit/asynchronous/aws/sqs/test_queue.py 2023-10-13 19:12:35.000000000 +0200 +++ new/kombu-5.3.6/t/unit/asynchronous/aws/sqs/test_queue.py 2024-03-05 11:08:52.000000000 +0100 @@ -13,7 +13,7 @@ class test_AsyncQueue(AWSCase): - def setup(self): + def setup_method(self): self.conn = Mock(name='connection') self.x = AsyncQueue(self.conn, '/url') self.callback = PromiseMock(name='callback') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/asynchronous/aws/test_connection.py new/kombu-5.3.6/t/unit/asynchronous/aws/test_connection.py --- old/kombu-5.3.5/t/unit/asynchronous/aws/test_connection.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/asynchronous/aws/test_connection.py 2024-03-05 11:08:52.000000000 +0100 @@ -199,7 +199,7 @@ class test_AsyncAWSQueryConnection(AWSCase): - def setup(self): + def setup_method(self): session = boto3.session.Session( aws_access_key_id='AAA', aws_secret_access_key='AAAA', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/asynchronous/test_hub.py new/kombu-5.3.6/t/unit/asynchronous/test_hub.py --- old/kombu-5.3.5/t/unit/asynchronous/test_hub.py 2024-01-08 16:56:44.000000000 +0100 +++ new/kombu-5.3.6/t/unit/asynchronous/test_hub.py 2024-03-05 11:08:52.000000000 +0100 @@ -127,10 +127,10 @@ class test_Utils: - def setup(self): + def setup_method(self): self._prev_loop = get_event_loop() - def teardown(self): + def teardown_method(self): set_event_loop(self._prev_loop) def test_get_set_event_loop(self): @@ -153,10 +153,10 @@ class test_Hub: - def setup(self): + def setup_method(self): self.hub = Hub() - def teardown(self): + def teardown_method(self): self.hub.close() def test_reset(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_compat.py new/kombu-5.3.6/t/unit/test_compat.py --- old/kombu-5.3.5/t/unit/test_compat.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_compat.py 2024-03-05 11:08:52.000000000 +0100 @@ -77,7 +77,7 @@ class test_Publisher: - def setup(self): + def setup_method(self): self.connection = Connection(transport=Transport) def test_constructor(self): @@ -130,7 +130,7 @@ class test_Consumer: - def setup(self): + def setup_method(self): self.connection = Connection(transport=Transport) @patch('kombu.compat._iterconsume') @@ -266,7 +266,7 @@ class test_ConsumerSet: - def setup(self): + def setup_method(self): self.connection = Connection(transport=Transport) def test_providing_channel(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_connection.py new/kombu-5.3.6/t/unit/test_connection.py --- old/kombu-5.3.5/t/unit/test_connection.py 2023-06-19 17:18:18.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_connection.py 2024-03-05 11:08:52.000000000 +0100 @@ -16,7 +16,7 @@ class test_connection_utils: - def setup(self): + def setup_method(self): self.url = 'amqp://user:pass@localhost:5672/my/vhost' self.nopass = 'amqp://user:**@localhost:5672/my/vhost' self.expected = { @@ -136,7 +136,7 @@ class test_Connection: - def setup(self): + def setup_method(self): self.conn = Connection(port=5672, transport=Transport) def test_establish_connection(self): @@ -757,7 +757,7 @@ transport_options = {'pool_recycler': 3600, 'echo': True} - def setup(self): + def setup_method(self): self.conn = Connection(port=5672, transport=Transport, transport_options=self.transport_options) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_entity.py new/kombu-5.3.6/t/unit/test_entity.py --- old/kombu-5.3.5/t/unit/test_entity.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_entity.py 2024-03-09 09:49:45.000000000 +0100 @@ -210,7 +210,7 @@ class test_Queue: - def setup(self) -> None: + def setup_method(self) -> None: self.exchange = Exchange('foo', 'direct') def test_constructor_with_actual_exchange(self) -> None: @@ -387,6 +387,22 @@ b.consume('fifafo', None) assert 'basic_consume' in b.channel + def test_consume_with_callbacks(self) -> None: + chan = Mock() + b = Queue('foo', self.exchange, 'foo', channel=chan) + callback = Mock() + on_cancel = Mock() + b.consume('fifafo', callback=callback, on_cancel=on_cancel) + chan.basic_consume.assert_called_with( + queue='foo', + no_ack=False, + consumer_tag='fifafo', + callback=callback, + nowait=False, + arguments=None, + on_cancel=on_cancel + ) + def test_cancel(self) -> None: b = Queue('foo', self.exchange, 'foo', channel=get_conn().channel()) b.cancel('fifafo') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_log.py new/kombu-5.3.6/t/unit/test_log.py --- old/kombu-5.3.5/t/unit/test_log.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_log.py 2024-03-05 11:08:52.000000000 +0100 @@ -46,7 +46,7 @@ class test_LogMixin: - def setup(self): + def setup_method(self): self.log = Log('Log', Mock()) self.logger = self.log.logger diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_messaging.py new/kombu-5.3.6/t/unit/test_messaging.py --- old/kombu-5.3.5/t/unit/test_messaging.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_messaging.py 2024-03-05 11:08:52.000000000 +0100 @@ -16,7 +16,7 @@ class test_Producer: - def setup(self): + def setup_method(self): self.exchange = Exchange('foo', 'direct') self.connection = Connection(transport=Transport) self.connection.connect() @@ -243,7 +243,7 @@ class test_Consumer: - def setup(self): + def setup_method(self): self.connection = Connection(transport=Transport) self.connection.connect() assert self.connection.connection.connected diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_mixins.py new/kombu-5.3.6/t/unit/test_mixins.py --- old/kombu-5.3.5/t/unit/test_mixins.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_mixins.py 2024-03-05 11:08:52.000000000 +0100 @@ -110,7 +110,7 @@ class test_ConsumerMixin_interface: - def setup(self): + def setup_method(self): self.c = ConsumerMixin() def test_get_consumers(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_pidbox.py new/kombu-5.3.6/t/unit/test_pidbox.py --- old/kombu-5.3.5/t/unit/test_pidbox.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_pidbox.py 2024-03-05 11:08:52.000000000 +0100 @@ -27,7 +27,7 @@ def _collect(self, *args, **kwargs): return 'COLLECTED' - def setup(self): + def setup_method(self): self.mailbox = self.Mailbox('test_pidbox') self.connection = Connection(transport='memory') self.state = {'var': 1} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_pools.py new/kombu-5.3.6/t/unit/test_pools.py --- old/kombu-5.3.5/t/unit/test_pools.py 2023-12-05 13:59:16.000000000 +0100 +++ new/kombu-5.3.6/t/unit/test_pools.py 2024-03-05 11:08:52.000000000 +0100 @@ -21,7 +21,7 @@ def Producer(self, connection): return self.instance - def setup(self): + def setup_method(self): self.connections = Mock() self.pool = self.Pool(self.connections, limit=10) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/test_simple.py new/kombu-5.3.6/t/unit/test_simple.py --- old/kombu-5.3.5/t/unit/test_simple.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/test_simple.py 2024-03-05 11:08:52.000000000 +0100 @@ -21,11 +21,11 @@ def _Queue(self, *args, **kwargs): raise NotImplementedError() - def setup(self): + def setup_method(self): self.connection = Connection(transport='memory') self.connection.default_channel.exchange_declare('amq.direct') - def teardown(self): + def teardown_method(self): self.connection.close() self.connection = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_SQS.py new/kombu-5.3.6/t/unit/transport/test_SQS.py --- old/kombu-5.3.5/t/unit/transport/test_SQS.py 2023-10-13 19:12:35.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_SQS.py 2024-03-05 11:08:52.000000000 +0100 @@ -141,7 +141,7 @@ def handleMessageCallback(self, message): self.callback_message = message - def setup(self): + def setup_method(self): """Mock the back-end SQS classes""" # Sanity check... if SQS is None, then it did not import and we # cannot execute our tests. @@ -195,7 +195,7 @@ callback=self.handleMessageCallback, consumer_tag='unittest') - def teardown(self): + def teardown_method(self): # Removes QoS reserved messages so we don't restore msgs on shutdown. try: qos = self.channel._qos diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_azureservicebus.py new/kombu-5.3.6/t/unit/transport/test_azureservicebus.py --- old/kombu-5.3.5/t/unit/transport/test_azureservicebus.py 2024-01-08 16:56:44.000000000 +0100 +++ new/kombu-5.3.6/t/unit/transport/test_azureservicebus.py 2024-03-05 11:08:52.000000000 +0100 @@ -103,8 +103,11 @@ URL_NOCREDS = 'azureservicebus://' URL_CREDS_SAS = 'azureservicebus://policyname:ke/y@hostname' +URL_CREDS_SAS_FQ = 'azureservicebus://policyname:ke/[email protected]' # noqa URL_CREDS_DA = 'azureservicebus://DefaultAzureCredential@hostname' +URL_CREDS_DA_FQ = 'azureservicebus://[email protected]' # noqa URL_CREDS_MI = 'azureservicebus://ManagedIdentityCredential@hostname' +URL_CREDS_MI_FQ = 'azureservicebus://[email protected]' # noqa def test_queue_service_nocredentials(): @@ -133,6 +136,7 @@ # Ensure that queue_service is cached assert channel.queue_service == 'test' assert m.from_connection_string.call_count == 1 + assert channel._namespace == 'hostname.servicebus.windows.net' def test_queue_service_da(): @@ -142,6 +146,7 @@ # Check the DefaultAzureCredential has been parsed from the url correctly # and the credential is a ManagedIdentityCredential assert isinstance(channel._credential, DefaultAzureCredential) + assert channel._namespace == 'hostname.servicebus.windows.net' def test_queue_service_mi(): @@ -151,6 +156,7 @@ # Check the ManagedIdentityCredential has been parsed from the url # correctly and the credential is a ManagedIdentityCredential assert isinstance(channel._credential, ManagedIdentityCredential) + assert channel._namespace == 'hostname.servicebus.windows.net' def test_conninfo(): @@ -450,14 +456,14 @@ def test_returning_sas(): conn = Connection(URL_CREDS_SAS, transport=azureservicebus.Transport) - assert conn.as_uri(True) == URL_CREDS_SAS + assert conn.as_uri(True) == URL_CREDS_SAS_FQ def test_returning_da(): conn = Connection(URL_CREDS_DA, transport=azureservicebus.Transport) - assert conn.as_uri(True) == URL_CREDS_DA + assert conn.as_uri(True) == URL_CREDS_DA_FQ def test_returning_mi(): conn = Connection(URL_CREDS_MI, transport=azureservicebus.Transport) - assert conn.as_uri(True) == URL_CREDS_MI + assert conn.as_uri(True) == URL_CREDS_MI_FQ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_base.py new/kombu-5.3.6/t/unit/transport/test_base.py --- old/kombu-5.3.5/t/unit/transport/test_base.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_base.py 2024-03-05 11:08:52.000000000 +0100 @@ -25,7 +25,7 @@ class test_StdChannel: - def setup(self): + def setup_method(self): self.conn = Connection('memory://') self.channel = self.conn.channel() self.channel.queues.clear() @@ -52,7 +52,7 @@ class test_Message: - def setup(self): + def setup_method(self): self.conn = Connection('memory://') self.channel = self.conn.channel() self.message = Message(channel=self.channel, delivery_tag=313) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_consul.py new/kombu-5.3.6/t/unit/transport/test_consul.py --- old/kombu-5.3.5/t/unit/transport/test_consul.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_consul.py 2024-03-05 11:08:52.000000000 +0100 @@ -13,7 +13,7 @@ class test_Consul: - def setup(self): + def setup_method(self): self.connection = Mock() self.connection._used_channel_ids = array('H') self.connection.channel_max = 65535 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_etcd.py new/kombu-5.3.6/t/unit/transport/test_etcd.py --- old/kombu-5.3.5/t/unit/transport/test_etcd.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_etcd.py 2024-03-05 11:08:52.000000000 +0100 @@ -12,7 +12,7 @@ class test_Etcd: - def setup(self): + def setup_method(self): self.connection = Mock() self.connection.client.transport_options = {} self.connection.client.port = 2739 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_filesystem.py new/kombu-5.3.6/t/unit/transport/test_filesystem.py --- old/kombu-5.3.5/t/unit/transport/test_filesystem.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_filesystem.py 2024-03-05 11:08:52.000000000 +0100 @@ -14,7 +14,7 @@ @t.skip.if_win32 class test_FilesystemTransport: - def setup(self): + def setup_method(self): self.channels = set() try: data_folder_in = tempfile.mkdtemp() @@ -41,7 +41,7 @@ exchange=self.e, routing_key='test_transport_filesystem2') - def teardown(self): + def teardown_method(self): # make sure we don't attempt to restore messages at shutdown. for channel in self.channels: try: @@ -147,7 +147,7 @@ @t.skip.if_win32 class test_FilesystemFanout: - def setup(self): + def setup_method(self): try: data_folder_in = tempfile.mkdtemp() data_folder_out = tempfile.mkdtemp() @@ -177,7 +177,7 @@ self.q1 = Queue("queue1", exchange=self.exchange) self.q2 = Queue("queue2", exchange=self.exchange) - def teardown(self): + def teardown_method(self): # make sure we don't attempt to restore messages at shutdown. for channel in [self.producer_channel, self.consumer_connection]: try: @@ -240,7 +240,7 @@ @t.skip.if_win32 class test_FilesystemLock: - def setup(self): + def setup_method(self): try: data_folder_in = tempfile.mkdtemp() data_folder_out = tempfile.mkdtemp() @@ -269,7 +269,7 @@ self.exchange = Exchange("filesystem_exchange_lock", type="fanout") self.q = Queue("queue1", exchange=self.exchange) - def teardown(self): + def teardown_method(self): # make sure we don't attempt to restore messages at shutdown. for channel in [self.producer_channel, self.consumer_connection]: try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_librabbitmq.py new/kombu-5.3.6/t/unit/transport/test_librabbitmq.py --- old/kombu-5.3.5/t/unit/transport/test_librabbitmq.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_librabbitmq.py 2024-03-05 11:08:52.000000000 +0100 @@ -53,7 +53,7 @@ class test_Transport: - def setup(self): + def setup_method(self): self.client = Mock(name='client') self.T = librabbitmq.Transport(self.client) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_memory.py new/kombu-5.3.6/t/unit/transport/test_memory.py --- old/kombu-5.3.5/t/unit/transport/test_memory.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_memory.py 2024-03-05 11:08:52.000000000 +0100 @@ -9,7 +9,7 @@ class test_MemoryTransport: - def setup(self): + def setup_method(self): self.c = Connection(transport='memory') self.e = Exchange('test_transport_memory') self.q = Queue('test_transport_memory', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_mongodb.py new/kombu-5.3.6/t/unit/transport/test_mongodb.py --- old/kombu-5.3.5/t/unit/transport/test_mongodb.py 2023-10-13 19:12:35.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_mongodb.py 2024-03-05 11:08:52.000000000 +0100 @@ -169,7 +169,7 @@ class test_mongodb_channel(BaseMongoDBChannelCase): - def setup(self): + def setup_method(self): self.connection = _create_mock_connection() self.channel = self.connection.default_channel @@ -421,7 +421,7 @@ class test_mongodb_channel_ttl(BaseMongoDBChannelCase): - def setup(self): + def setup_method(self): self.connection = _create_mock_connection( transport_options={'ttl': True}, ) @@ -563,7 +563,7 @@ class test_mongodb_channel_calc_queue_size(BaseMongoDBChannelCase): - def setup(self): + def setup_method(self): self.connection = _create_mock_connection( transport_options={'calc_queue_size': False}) self.channel = self.connection.default_channel @@ -584,7 +584,7 @@ class test_mongodb_transport(BaseMongoDBChannelCase): - def setup(self): + def setup_method(self): self.connection = _create_mock_connection() def test_driver_version(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_pyamqp.py new/kombu-5.3.6/t/unit/transport/test_pyamqp.py --- old/kombu-5.3.5/t/unit/transport/test_pyamqp.py 2022-12-20 17:10:39.000000000 +0100 +++ new/kombu-5.3.6/t/unit/transport/test_pyamqp.py 2024-03-09 09:49:45.000000000 +0100 @@ -27,7 +27,7 @@ class test_Channel: - def setup(self): + def setup_method(self): class Channel(pyamqp.Channel): wait_returns = [] @@ -78,10 +78,16 @@ self.channel.basic_cancel('my-consumer-tag') assert 'my-consumer-tag' not in self.channel.no_ack_consumers + def test_consume_registers_cancel_callback(self): + on_cancel = Mock() + self.channel.wait_returns = ['my-consumer-tag'] + self.channel.basic_consume('foo', on_cancel=on_cancel) + assert self.channel.cancel_callbacks['my-consumer-tag'] == on_cancel + class test_Transport: - def setup(self): + def setup_method(self): self.connection = Connection('pyamqp://') self.transport = self.connection.transport diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_pyro.py new/kombu-5.3.6/t/unit/transport/test_pyro.py --- old/kombu-5.3.5/t/unit/transport/test_pyro.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_pyro.py 2024-03-05 11:08:52.000000000 +0100 @@ -9,7 +9,7 @@ class test_PyroTransport: - def setup(self): + def setup_method(self): self.c = Connection(transport='pyro', virtual_host="kombu.broker") self.e = Exchange('test_transport_pyro') self.q = Queue('test_transport_pyro', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_qpid.py new/kombu-5.3.6/t/unit/transport/test_qpid.py --- old/kombu-5.3.5/t/unit/transport/test_qpid.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_qpid.py 2024-03-05 11:08:52.000000000 +0100 @@ -46,7 +46,7 @@ @pytest.mark.skip(reason='Not supported in Python3') class test_QoS__init__: - def setup(self): + def setup_method(self): self.mock_session = Mock() self.qos = QoS(self.mock_session) @@ -64,7 +64,7 @@ @pytest.mark.skip(reason='Not supported in Python3') class test_QoS_can_consume: - def setup(self): + def setup_method(self): session = Mock() self.qos = QoS(session) @@ -87,7 +87,7 @@ @pytest.mark.skip(reason='Not supported in Python3') class test_QoS_can_consume_max_estimate: - def setup(self): + def setup_method(self): self.mock_session = Mock() self.qos = QoS(self.mock_session) @@ -104,7 +104,7 @@ @pytest.mark.skip(reason='Not supported in Python3') class test_QoS_ack: - def setup(self): + def setup_method(self): self.mock_session = Mock() self.qos = QoS(self.mock_session) @@ -132,7 +132,7 @@ self.mock_RELEASED = self.mock_qpid.messaging.RELEASED self.mock_REJECTED = self.mock_qpid.messaging.REJECTED - def setup(self): + def setup_method(self): self.mock_session = Mock() self.mock_message = Mock() self.qos = QoS(self.mock_session) @@ -185,7 +185,7 @@ m, m_delivery_tag = self.mock_message_factory() qos.append(m, m_delivery_tag) - def setup(self): + def setup_method(self): self.mock_session = Mock() self.qos_no_limit = QoS(self.mock_session) self.qos_limit_2 = QoS(self.mock_session, prefetch_count=2) @@ -226,7 +226,7 @@ class ConnectionTestBase: @patch(QPID_MODULE + '.qpid') - def setup(self, mock_qpid): + def setup_method(self, mock_qpid): self.connection_options = { 'host': 'localhost', 'port': 5672, @@ -389,8 +389,8 @@ @pytest.mark.skip(reason='Not supported in Python3') class test_Connection_close_channel(ConnectionTestBase): - def setup(self): - super().setup() + def setup_method(self): + super().setup_method() self.conn.channels = Mock() def test_connection_close_channel_removes_channel_from_channel_list(self): @@ -425,7 +425,7 @@ @pytest.mark.skip(reason='Not supported in Python3') class test_Channel_purge(ChannelTestBase): - def setup(self): + def setup_method(self): self.mock_queue = Mock() def test_gets_queue(self): @@ -815,7 +815,7 @@ class test_Channel: @patch(QPID_MODULE + '.qpidtoollibs') - def setup(self, mock_qpidtoollibs): + def setup_method(self, mock_qpidtoollibs): self.mock_connection = Mock() self.mock_qpid_connection = Mock() self.mock_qpid_session = Mock() @@ -1690,7 +1690,7 @@ class test_Transport_Qpid_callback_handlers_sync: @pytest.fixture(autouse=True) - def setup(self, patching, disable_runtime_dependency_check): + def setup_method(self, patching, disable_runtime_dependency_check): self.mock_os_write = patching(QPID_MODULE + '.os.write') self.transport = Transport(Mock()) @@ -1775,7 +1775,7 @@ @pytest.mark.usefixtures('disable_runtime_dependency_check') class test_Transport: - def setup(self): + def setup_method(self): """Creates a mock_client to be used in testing.""" self.mock_client = Mock() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_redis.py new/kombu-5.3.6/t/unit/transport/test_redis.py --- old/kombu-5.3.5/t/unit/transport/test_redis.py 2024-01-12 20:11:22.000000000 +0100 +++ new/kombu-5.3.6/t/unit/transport/test_redis.py 2024-03-05 11:08:52.000000000 +0100 @@ -288,7 +288,7 @@ class test_Channel: - def setup(self): + def setup_method(self): self.connection = self.create_connection() self.channel = self.connection.default_channel @@ -1179,12 +1179,12 @@ class test_Redis: - def setup(self): + def setup_method(self): self.connection = Connection(transport=Transport) self.exchange = Exchange('test_Redis', type='direct') self.queue = Queue('test_Redis', self.exchange, 'test_Redis') - def teardown(self): + def teardown_method(self): self.connection.close() @pytest.mark.replace_module_value(redis.redis, 'VERSION', [3, 0, 0]) @@ -1326,7 +1326,7 @@ class test_MultiChannelPoller: - def setup(self): + def setup_method(self): self.Poller = redis.MultiChannelPoller def test_on_poll_start(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/test_zookeeper.py new/kombu-5.3.6/t/unit/transport/test_zookeeper.py --- old/kombu-5.3.5/t/unit/transport/test_zookeeper.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/test_zookeeper.py 2024-03-05 11:08:52.000000000 +0100 @@ -9,14 +9,14 @@ class test_Channel: - def setup(self): + def setup_method(self): self.connection = self.create_connection() self.channel = self.connection.default_channel def create_connection(self, **kwargs): return Connection(transport=zookeeper.Transport, **kwargs) - def teardown(self): + def teardown_method(self): self.connection.close() def test_put_puts_bytes_to_queue(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/virtual/test_base.py new/kombu-5.3.6/t/unit/transport/virtual/test_base.py --- old/kombu-5.3.5/t/unit/transport/virtual/test_base.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/virtual/test_base.py 2024-03-05 11:08:52.000000000 +0100 @@ -36,10 +36,10 @@ class test_QoS: - def setup(self): + def setup_method(self): self.q = virtual.QoS(client().channel(), prefetch_count=10) - def teardown(self): + def teardown_method(self): self.q._on_collect.cancel() def test_constructor(self): @@ -174,10 +174,10 @@ class test_Channel: - def setup(self): + def setup_method(self): self.channel = client().channel() - def teardown(self): + def teardown_method(self): if self.channel._qos is not None: self.channel._qos._on_collect.cancel() @@ -555,7 +555,7 @@ class test_Transport: - def setup(self): + def setup_method(self): self.transport = client().transport def test_state_is_transport_specific(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/transport/virtual/test_exchange.py new/kombu-5.3.6/t/unit/transport/virtual/test_exchange.py --- old/kombu-5.3.5/t/unit/transport/virtual/test_exchange.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/transport/virtual/test_exchange.py 2024-03-05 11:08:52.000000000 +0100 @@ -12,7 +12,7 @@ class ExchangeCase: type = None - def setup(self): + def setup_method(self): if self.type: self.e = self.type(Connection(transport=Transport).channel()) @@ -70,8 +70,8 @@ ('stock.us.*', None, 'rBar'), ] - def setup(self): - super().setup() + def setup_method(self): + super().setup_method() self.table = [(rkey, self.e.key_to_pattern(rkey), queue) for rkey, _, queue in self.table] @@ -115,8 +115,8 @@ ('#', None, 'rFoo'), ] - def setup(self): - super().setup() + def setup_method(self): + super().setup_method() self.table = [(rkey, self.e.key_to_pattern(rkey), queue) for rkey, _, queue in self.table] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/utils/test_encoding.py new/kombu-5.3.6/t/unit/utils/test_encoding.py --- old/kombu-5.3.5/t/unit/utils/test_encoding.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/utils/test_encoding.py 2024-03-05 11:08:52.000000000 +0100 @@ -60,7 +60,7 @@ class test_safe_str: - def setup(self): + def setup_method(self): self._encoding = self.patching('sys.getfilesystemencoding') self._encoding.return_value = 'ascii' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/utils/test_functional.py new/kombu-5.3.6/t/unit/utils/test_functional.py --- old/kombu-5.3.5/t/unit/utils/test_functional.py 2022-10-19 12:47:33.000000000 +0200 +++ new/kombu-5.3.6/t/unit/utils/test_functional.py 2024-03-05 11:08:52.000000000 +0100 @@ -168,7 +168,7 @@ class Predicate(Exception): pass - def setup(self): + def setup_method(self): self.index = 0 def myfun(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kombu-5.3.5/t/unit/utils/test_json.py new/kombu-5.3.6/t/unit/utils/test_json.py --- old/kombu-5.3.5/t/unit/utils/test_json.py 2023-06-18 22:37:05.000000000 +0200 +++ new/kombu-5.3.6/t/unit/utils/test_json.py 2024-03-27 13:05:07.000000000 +0100 @@ -3,6 +3,7 @@ import sys import uuid from collections import namedtuple +from dataclasses import dataclass from datetime import datetime from decimal import Decimal @@ -11,7 +12,8 @@ from hypothesis import strategies as st from kombu.utils.encoding import str_to_bytes -from kombu.utils.json import dumps, loads +from kombu.utils.json import (_register_default_types, dumps, loads, + register_type) if sys.version_info >= (3, 9): from zoneinfo import ZoneInfo @@ -28,6 +30,10 @@ class test_JSONEncoder: + @pytest.fixture(autouse=True) + def reset_registered_types(self): + _register_default_types() + @pytest.mark.freeze_time("2015-10-21") def test_datetime(self): now = datetime.utcnow() @@ -82,6 +88,41 @@ assert loaded_value == {'u': id} assert loaded_value["u"].version == id.version + def test_register_type_overrides_defaults(self): + # This type is already registered by default, let's override it + register_type(uuid.UUID, "uuid", lambda o: "custom", lambda o: o) + value = uuid.uuid4() + loaded_value = loads(dumps({'u': value})) + assert loaded_value == {'u': "custom"} + + def test_register_type_with_new_type(self): + # Guaranteed never before seen type + @dataclass() + class SomeType: + a: int + + register_type(SomeType, "some_type", lambda o: "custom", lambda o: o) + value = SomeType(42) + loaded_value = loads(dumps({'u': value})) + assert loaded_value == {'u': "custom"} + + def test_register_type_with_empty_marker(self): + register_type( + datetime, + None, + lambda o: o.isoformat(), + lambda o: "should never be used" + ) + now = datetime.utcnow() + serialized_str = dumps({'now': now}) + deserialized_value = loads(serialized_str) + + assert "__type__" not in serialized_str + assert "__value__" not in serialized_str + + # Check that there is no extra deserialization happening + assert deserialized_value == {'now': now.isoformat()} + def test_default(self): with pytest.raises(TypeError): dumps({'o': object()})
