From 7516daf7a774dd9671d16c475c6ac266de977a0a Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Thu, 14 Apr 2022 13:02:52 +0200 Subject: [PATCH] Bump pyupgrade version and add __future__.annotations import --- .pre-commit-config.yaml | 2 +- conftest.py | 2 ++ docs/conf.py | 2 ++ examples/complete_receive.py | 2 ++ examples/complete_send.py | 2 ++ examples/experimental/async_consume.py | 2 ++ examples/hello_consumer.py | 2 ++ examples/hello_publisher.py | 2 ++ examples/memory_transport.py | 2 ++ examples/rpc-tut6/rpc_client.py | 2 ++ examples/rpc-tut6/rpc_server.py | 2 ++ examples/simple_eventlet_receive.py | 2 ++ examples/simple_eventlet_send.py | 2 ++ examples/simple_receive.py | 2 ++ examples/simple_send.py | 2 ++ examples/simple_task_queue/client.py | 2 ++ examples/simple_task_queue/queues.py | 2 ++ examples/simple_task_queue/tasks.py | 3 +++ examples/simple_task_queue/worker.py | 2 ++ kombu/__init__.py | 6 +++-- kombu/abstract.py | 2 ++ kombu/asynchronous/__init__.py | 2 ++ kombu/asynchronous/aws/__init__.py | 8 ++++--- kombu/asynchronous/aws/connection.py | 2 ++ kombu/asynchronous/aws/ext.py | 2 ++ kombu/asynchronous/aws/sqs/connection.py | 2 ++ kombu/asynchronous/aws/sqs/ext.py | 2 ++ kombu/asynchronous/aws/sqs/message.py | 2 ++ kombu/asynchronous/aws/sqs/queue.py | 2 ++ kombu/asynchronous/debug.py | 2 ++ kombu/asynchronous/http/__init__.py | 8 ++++--- kombu/asynchronous/http/base.py | 10 +++++---- kombu/asynchronous/http/curl.py | 5 +++-- kombu/asynchronous/hub.py | 9 ++++---- kombu/asynchronous/semaphore.py | 14 +++++++----- kombu/asynchronous/timer.py | 10 +++++---- kombu/clocks.py | 2 ++ kombu/common.py | 2 ++ kombu/compat.py | 16 ++++++++------ kombu/compression.py | 2 ++ kombu/connection.py | 10 +++++---- kombu/entity.py | 2 ++ kombu/exceptions.py | 2 ++ kombu/log.py | 2 ++ kombu/matcher.py | 2 ++ kombu/message.py | 2 ++ kombu/messaging.py | 16 ++++++++------ kombu/mixins.py | 2 ++ kombu/pidbox.py | 2 ++ kombu/pools.py | 2 ++ kombu/resource.py | 4 +++- kombu/serialization.py | 2 ++ kombu/simple.py | 10 +++++---- kombu/transport/SLMQ.py | 2 ++ kombu/transport/SQS.py | 2 ++ kombu/transport/__init__.py | 8 +++---- kombu/transport/azureservicebus.py | 22 ++++++++++--------- kombu/transport/azurestoragequeues.py | 2 ++ kombu/transport/base.py | 10 +++++---- kombu/transport/consul.py | 2 ++ kombu/transport/etcd.py | 2 ++ kombu/transport/filesystem.py | 2 ++ kombu/transport/librabbitmq.py | 2 ++ kombu/transport/memory.py | 2 ++ kombu/transport/mongodb.py | 2 ++ kombu/transport/pyamqp.py | 2 ++ kombu/transport/pyro.py | 2 ++ kombu/transport/qpid.py | 2 ++ kombu/transport/redis.py | 2 ++ kombu/transport/sqlalchemy/__init__.py | 11 +++++++--- kombu/transport/sqlalchemy/models.py | 2 ++ kombu/transport/virtual/__init__.py | 2 ++ kombu/transport/virtual/base.py | 10 +++++---- kombu/transport/virtual/exchange.py | 2 ++ kombu/transport/zookeeper.py | 2 ++ kombu/utils/__init__.py | 2 ++ kombu/utils/amq_manager.py | 3 +++ kombu/utils/collections.py | 3 +++ kombu/utils/compat.py | 2 ++ kombu/utils/debug.py | 2 ++ kombu/utils/div.py | 2 ++ kombu/utils/encoding.py | 2 ++ kombu/utils/eventio.py | 2 ++ kombu/utils/functional.py | 2 ++ kombu/utils/imports.py | 2 ++ kombu/utils/json.py | 2 ++ kombu/utils/limits.py | 2 ++ kombu/utils/objects.py | 2 ++ kombu/utils/scheduling.py | 2 ++ kombu/utils/text.py | 12 +++++----- kombu/utils/time.py | 4 ++-- kombu/utils/url.py | 2 ++ kombu/utils/uuid.py | 2 ++ setup.cfg | 4 ++++ setup.py | 2 ++ t/integration/__init__.py | 2 ++ t/integration/common.py | 2 ++ t/integration/test_py_amqp.py | 2 ++ t/integration/test_redis.py | 2 ++ t/mocks.py | 10 +++++---- t/skip.py | 2 ++ t/unit/asynchronous/aws/case.py | 2 ++ .../asynchronous/aws/sqs/test_connection.py | 2 ++ t/unit/asynchronous/aws/sqs/test_queue.py | 2 ++ t/unit/asynchronous/aws/test_aws.py | 2 ++ t/unit/asynchronous/aws/test_connection.py | 2 ++ t/unit/asynchronous/http/test_curl.py | 2 ++ t/unit/asynchronous/http/test_http.py | 2 ++ t/unit/asynchronous/test_hub.py | 2 ++ t/unit/asynchronous/test_semaphore.py | 4 ++-- t/unit/asynchronous/test_timer.py | 2 ++ t/unit/conftest.py | 2 ++ t/unit/test_clocks.py | 2 ++ t/unit/test_common.py | 10 +++++---- t/unit/test_compat.py | 2 ++ t/unit/test_compression.py | 2 ++ t/unit/test_connection.py | 2 ++ t/unit/test_entity.py | 2 ++ t/unit/test_exceptions.py | 2 ++ t/unit/test_log.py | 2 ++ t/unit/test_matcher.py | 2 ++ t/unit/test_message.py | 2 ++ t/unit/test_messaging.py | 2 ++ t/unit/test_mixins.py | 2 ++ t/unit/test_pidbox.py | 2 ++ t/unit/test_pools.py | 2 ++ t/unit/test_serialization.py | 2 ++ t/unit/test_simple.py | 2 ++ t/unit/transport/test_SQS.py | 2 ++ t/unit/transport/test_azureservicebus.py | 2 ++ t/unit/transport/test_base.py | 2 ++ t/unit/transport/test_consul.py | 2 ++ t/unit/transport/test_etcd.py | 2 ++ t/unit/transport/test_filesystem.py | 2 ++ t/unit/transport/test_librabbitmq.py | 2 ++ t/unit/transport/test_memory.py | 2 ++ t/unit/transport/test_mongodb.py | 2 ++ t/unit/transport/test_pyamqp.py | 2 ++ t/unit/transport/test_pyro.py | 2 ++ t/unit/transport/test_qpid.py | 2 ++ t/unit/transport/test_redis.py | 10 +++++---- t/unit/transport/test_sqlalchemy.py | 2 ++ t/unit/transport/test_transport.py | 2 ++ t/unit/transport/test_zookeeper.py | 2 ++ t/unit/transport/virtual/test_base.py | 2 ++ t/unit/transport/virtual/test_exchange.py | 2 ++ t/unit/utils/test_amq_manager.py | 2 ++ t/unit/utils/test_compat.py | 2 ++ t/unit/utils/test_debug.py | 2 ++ t/unit/utils/test_div.py | 2 ++ t/unit/utils/test_encoding.py | 2 ++ t/unit/utils/test_functional.py | 2 ++ t/unit/utils/test_imports.py | 2 ++ t/unit/utils/test_json.py | 2 ++ t/unit/utils/test_objects.py | 2 ++ t/unit/utils/test_scheduling.py | 2 ++ t/unit/utils/test_time.py | 2 ++ t/unit/utils/test_url.py | 2 ++ t/unit/utils/test_utils.py | 2 ++ t/unit/utils/test_uuid.py | 2 ++ 160 files changed, 416 insertions(+), 98 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a9a276d8d..f667ad0f2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ repos: rev: v2.32.0 hooks: - id: pyupgrade - args: ["--py36-plus"] + args: ["--py37-plus"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 diff --git a/conftest.py b/conftest.py index 3fc0a687f..842d39a21 100644 --- a/conftest.py +++ b/conftest.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest diff --git a/docs/conf.py b/docs/conf.py index 1f781486e..0163fe39d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from sphinx_celery import conf globals().update(conf.build_config( diff --git a/examples/complete_receive.py b/examples/complete_receive.py index 21903c59f..1f1fb5e26 100644 --- a/examples/complete_receive.py +++ b/examples/complete_receive.py @@ -4,6 +4,8 @@ """ +from __future__ import annotations + from pprint import pformat from kombu import Connection, Consumer, Exchange, Queue, eventloop diff --git a/examples/complete_send.py b/examples/complete_send.py index d4643e590..ea7ab65c5 100644 --- a/examples/complete_send.py +++ b/examples/complete_send.py @@ -6,6 +6,8 @@ """ +from __future__ import annotations + from kombu import Connection, Exchange, Producer, Queue #: By default messages sent to exchanges are persistent (delivery_mode=2), diff --git a/examples/experimental/async_consume.py b/examples/experimental/async_consume.py index 5f70b4ed6..55126bda6 100644 --- a/examples/experimental/async_consume.py +++ b/examples/experimental/async_consume.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import annotations + from kombu import Connection, Consumer, Exchange, Producer, Queue from kombu.asynchronous import Hub diff --git a/examples/hello_consumer.py b/examples/hello_consumer.py index 3a0d9f061..38b2b61d1 100644 --- a/examples/hello_consumer.py +++ b/examples/hello_consumer.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from kombu import Connection with Connection('amqp://guest:guest@localhost:5672//') as conn: diff --git a/examples/hello_publisher.py b/examples/hello_publisher.py index 483428005..dfb2df8e0 100644 --- a/examples/hello_publisher.py +++ b/examples/hello_publisher.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import datetime from kombu import Connection diff --git a/examples/memory_transport.py b/examples/memory_transport.py index 8d667b818..e25cc8983 100644 --- a/examples/memory_transport.py +++ b/examples/memory_transport.py @@ -1,6 +1,8 @@ """ Example that use memory transport for message produce. """ +from __future__ import annotations + import time from kombu import Connection, Consumer, Exchange, Queue diff --git a/examples/rpc-tut6/rpc_client.py b/examples/rpc-tut6/rpc_client.py index 6b1d509b4..a899bd5c8 100644 --- a/examples/rpc-tut6/rpc_client.py +++ b/examples/rpc-tut6/rpc_client.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import annotations + from kombu import Connection, Consumer, Producer, Queue, uuid diff --git a/examples/rpc-tut6/rpc_server.py b/examples/rpc-tut6/rpc_server.py index 761630ca7..ce13ea835 100644 --- a/examples/rpc-tut6/rpc_server.py +++ b/examples/rpc-tut6/rpc_server.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import annotations + from kombu import Connection, Queue from kombu.mixins import ConsumerProducerMixin diff --git a/examples/simple_eventlet_receive.py b/examples/simple_eventlet_receive.py index 33f09d805..703203ad1 100644 --- a/examples/simple_eventlet_receive.py +++ b/examples/simple_eventlet_receive.py @@ -7,6 +7,8 @@ """ +from __future__ import annotations + import eventlet from kombu import Connection diff --git a/examples/simple_eventlet_send.py b/examples/simple_eventlet_send.py index 9a753e7a5..ad0c1f2b6 100644 --- a/examples/simple_eventlet_send.py +++ b/examples/simple_eventlet_send.py @@ -7,6 +7,8 @@ """ +from __future__ import annotations + import eventlet from kombu import Connection diff --git a/examples/simple_receive.py b/examples/simple_receive.py index 90c2d0ae2..c2512cca0 100644 --- a/examples/simple_receive.py +++ b/examples/simple_receive.py @@ -3,6 +3,8 @@ """ +from __future__ import annotations + from kombu import Connection #: Create connection diff --git a/examples/simple_send.py b/examples/simple_send.py index d2eacea4a..194fb8104 100644 --- a/examples/simple_send.py +++ b/examples/simple_send.py @@ -7,6 +7,8 @@ """ +from __future__ import annotations + from kombu import Connection #: Create connection diff --git a/examples/simple_task_queue/client.py b/examples/simple_task_queue/client.py index bc2d180f2..aaa18f5ca 100644 --- a/examples/simple_task_queue/client.py +++ b/examples/simple_task_queue/client.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from kombu.pools import producers from .queues import task_exchange diff --git a/examples/simple_task_queue/queues.py b/examples/simple_task_queue/queues.py index 602c2b0e2..a545b4c2d 100644 --- a/examples/simple_task_queue/queues.py +++ b/examples/simple_task_queue/queues.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from kombu import Exchange, Queue task_exchange = Exchange('tasks', type='direct') diff --git a/examples/simple_task_queue/tasks.py b/examples/simple_task_queue/tasks.py index 2810f7a89..02edda074 100644 --- a/examples/simple_task_queue/tasks.py +++ b/examples/simple_task_queue/tasks.py @@ -1,2 +1,5 @@ +from __future__ import annotations + + def hello_task(who='world'): print(f'Hello {who}') diff --git a/examples/simple_task_queue/worker.py b/examples/simple_task_queue/worker.py index 66ad9c30e..4d16e309a 100644 --- a/examples/simple_task_queue/worker.py +++ b/examples/simple_task_queue/worker.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from kombu.log import get_logger from kombu.mixins import ConsumerMixin from kombu.utils.functional import reprcall diff --git a/kombu/__init__.py b/kombu/__init__.py index d3ba15eac..830e6dda7 100644 --- a/kombu/__init__.py +++ b/kombu/__init__.py @@ -1,10 +1,12 @@ """Messaging library for Python.""" +from __future__ import annotations + import os import re import sys from collections import namedtuple -from typing import Any, List, cast +from typing import Any, cast __version__ = '5.2.4' __author__ = 'Ask Solem' @@ -78,7 +80,7 @@ def __getattr__(self, name: str) -> Any: return getattr(module, name) return ModuleType.__getattribute__(self, name) - def __dir__(self) -> List[str]: + def __dir__(self) -> list[str]: result = list(new_module.__all__) result.extend(('__file__', '__path__', '__doc__', '__all__', '__docformat__', '__name__', '__path__', 'VERSION', diff --git a/kombu/abstract.py b/kombu/abstract.py index 38cff0103..3e3483dc1 100644 --- a/kombu/abstract.py +++ b/kombu/abstract.py @@ -1,5 +1,7 @@ """Object utilities.""" +from __future__ import annotations + from copy import copy from .connection import maybe_channel diff --git a/kombu/asynchronous/__init__.py b/kombu/asynchronous/__init__.py index fb264aa58..530607535 100644 --- a/kombu/asynchronous/__init__.py +++ b/kombu/asynchronous/__init__.py @@ -1,5 +1,7 @@ """Event loop.""" +from __future__ import annotations + from kombu.utils.eventio import ERR, READ, WRITE from .hub import Hub, get_event_loop, set_event_loop diff --git a/kombu/asynchronous/aws/__init__.py b/kombu/asynchronous/aws/__init__.py index a105cca23..cbeb050fa 100644 --- a/kombu/asynchronous/aws/__init__.py +++ b/kombu/asynchronous/aws/__init__.py @@ -1,11 +1,13 @@ -from typing import Any, Optional +from __future__ import annotations + +from typing import Any from kombu.asynchronous.aws.sqs.connection import AsyncSQSConnection def connect_sqs( - aws_access_key_id: Optional[str] = None, - aws_secret_access_key: Optional[str] = None, + aws_access_key_id: str | None = None, + aws_secret_access_key: str | None = None, **kwargs: Any ) -> AsyncSQSConnection: """Return async connection to Amazon SQS.""" diff --git a/kombu/asynchronous/aws/connection.py b/kombu/asynchronous/aws/connection.py index f39263886..887ab40cb 100644 --- a/kombu/asynchronous/aws/connection.py +++ b/kombu/asynchronous/aws/connection.py @@ -1,5 +1,7 @@ """Amazon AWS Connection.""" +from __future__ import annotations + from email import message_from_bytes from email.mime.message import MIMEMessage diff --git a/kombu/asynchronous/aws/ext.py b/kombu/asynchronous/aws/ext.py index 2dedc8122..1fa4a57e8 100644 --- a/kombu/asynchronous/aws/ext.py +++ b/kombu/asynchronous/aws/ext.py @@ -1,5 +1,7 @@ """Amazon boto3 interface.""" +from __future__ import annotations + try: import boto3 from botocore import exceptions diff --git a/kombu/asynchronous/aws/sqs/connection.py b/kombu/asynchronous/aws/sqs/connection.py index 9db2523ba..20b56344b 100644 --- a/kombu/asynchronous/aws/sqs/connection.py +++ b/kombu/asynchronous/aws/sqs/connection.py @@ -1,5 +1,7 @@ """Amazon SQS Connection.""" +from __future__ import annotations + from vine import transform from kombu.asynchronous.aws.connection import AsyncAWSQueryConnection diff --git a/kombu/asynchronous/aws/sqs/ext.py b/kombu/asynchronous/aws/sqs/ext.py index f6630936f..72268b5db 100644 --- a/kombu/asynchronous/aws/sqs/ext.py +++ b/kombu/asynchronous/aws/sqs/ext.py @@ -1,6 +1,8 @@ """Amazon SQS boto3 interface.""" +from __future__ import annotations + try: import boto3 except ImportError: diff --git a/kombu/asynchronous/aws/sqs/message.py b/kombu/asynchronous/aws/sqs/message.py index 9425ff2d8..52727bb74 100644 --- a/kombu/asynchronous/aws/sqs/message.py +++ b/kombu/asynchronous/aws/sqs/message.py @@ -1,5 +1,7 @@ """Amazon SQS message implementation.""" +from __future__ import annotations + import base64 from kombu.message import Message diff --git a/kombu/asynchronous/aws/sqs/queue.py b/kombu/asynchronous/aws/sqs/queue.py index facd95881..7ca78f753 100644 --- a/kombu/asynchronous/aws/sqs/queue.py +++ b/kombu/asynchronous/aws/sqs/queue.py @@ -1,5 +1,7 @@ """Amazon SQS queue implementation.""" +from __future__ import annotations + from vine import transform from .message import AsyncMessage diff --git a/kombu/asynchronous/debug.py b/kombu/asynchronous/debug.py index 4fabb4528..7c1e45c76 100644 --- a/kombu/asynchronous/debug.py +++ b/kombu/asynchronous/debug.py @@ -1,5 +1,7 @@ """Event-loop debugging tools.""" +from __future__ import annotations + from kombu.utils.eventio import ERR, READ, WRITE from kombu.utils.functional import reprcall diff --git a/kombu/asynchronous/http/__init__.py b/kombu/asynchronous/http/__init__.py index 0dc4247d0..67d8b2197 100644 --- a/kombu/asynchronous/http/__init__.py +++ b/kombu/asynchronous/http/__init__.py @@ -1,4 +1,6 @@ -from typing import TYPE_CHECKING, Optional +from __future__ import annotations + +from typing import TYPE_CHECKING from kombu.asynchronous import get_event_loop from kombu.asynchronous.http.base import Headers, Request, Response @@ -10,13 +12,13 @@ __all__ = ('Client', 'Headers', 'Response', 'Request') -def Client(hub: Optional[Hub] = None, **kwargs: int) -> "CurlClient": +def Client(hub: Hub | None = None, **kwargs: int) -> CurlClient: """Create new HTTP client.""" from .curl import CurlClient return CurlClient(hub, **kwargs) -def get_client(hub: Optional[Hub] = None, **kwargs: int) -> "CurlClient": +def get_client(hub: Hub | None = None, **kwargs: int) -> CurlClient: """Get or create HTTP client bound to the current event loop.""" hub = hub or get_event_loop() try: diff --git a/kombu/asynchronous/http/base.py b/kombu/asynchronous/http/base.py index 5feb8f3a6..89be531fc 100644 --- a/kombu/asynchronous/http/base.py +++ b/kombu/asynchronous/http/base.py @@ -1,8 +1,10 @@ """Base async HTTP client implementation.""" +from __future__ import annotations + import sys from http.client import responses -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from vine import Thenable, maybe_promise, promise @@ -259,8 +261,8 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.close() diff --git a/kombu/asynchronous/http/curl.py b/kombu/asynchronous/http/curl.py index 8c6019566..11f20c913 100644 --- a/kombu/asynchronous/http/curl.py +++ b/kombu/asynchronous/http/curl.py @@ -1,10 +1,11 @@ """HTTP Client using pyCurl.""" +from __future__ import annotations + from collections import deque from functools import partial from io import BytesIO from time import time -from typing import Optional from kombu.asynchronous.hub import READ, WRITE, Hub, get_event_loop from kombu.exceptions import HttpError @@ -37,7 +38,7 @@ class CurlClient(BaseClient): Curl = Curl - def __init__(self, hub: Optional[Hub] = None, max_clients: int = 10): + def __init__(self, hub: Hub | None = None, max_clients: int = 10): if pycurl is None: raise ImportError('The curl client requires the pycurl library.') hub = hub or get_event_loop() diff --git a/kombu/asynchronous/hub.py b/kombu/asynchronous/hub.py index 73c4a7ff6..14d25b932 100644 --- a/kombu/asynchronous/hub.py +++ b/kombu/asynchronous/hub.py @@ -1,12 +1,13 @@ """Event loop implementation.""" +from __future__ import annotations + import errno import threading from contextlib import contextmanager from queue import Empty from time import sleep from types import GeneratorType as generator -from typing import Optional from vine import Thenable, promise @@ -20,7 +21,7 @@ __all__ = ('Hub', 'get_event_loop', 'set_event_loop') logger = get_logger(__name__) -_current_loop: Optional["Hub"] = None +_current_loop: Hub | None = None W_UNKNOWN_EVENT = """\ Received unknown event %r for fd %r, please contact support!\ @@ -40,12 +41,12 @@ def _dummy_context(*args, **kwargs): yield -def get_event_loop() -> Optional["Hub"]: +def get_event_loop() -> Hub | None: """Get current event loop object.""" return _current_loop -def set_event_loop(loop: Optional["Hub"]) -> Optional["Hub"]: +def set_event_loop(loop: Hub | None) -> Hub | None: """Set the current event loop object.""" global _current_loop _current_loop = loop diff --git a/kombu/asynchronous/semaphore.py b/kombu/asynchronous/semaphore.py index 843fe9828..07fb8a093 100644 --- a/kombu/asynchronous/semaphore.py +++ b/kombu/asynchronous/semaphore.py @@ -1,7 +1,9 @@ """Semaphores and concurrency primitives.""" +from __future__ import annotations + import sys from collections import deque -from typing import TYPE_CHECKING, Callable, Deque, Optional, Tuple, Type +from typing import TYPE_CHECKING, Callable, Deque if sys.version_info < (3, 10): from typing_extensions import ParamSpec @@ -42,7 +44,7 @@ class LaxBoundedSemaphore: def __init__(self, value: int) -> None: self.initial_value = self.value = value - self._waiting: Deque[Tuple] = deque() + self._waiting: Deque[tuple] = deque() self._add_waiter = self._waiting.append self._pop_waiter = self._waiting.popleft @@ -111,13 +113,13 @@ def __repr__(self) -> str: class DummyLock: """Pretending to be a lock.""" - def __enter__(self) -> 'DummyLock': + def __enter__(self) -> DummyLock: return self def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: pass diff --git a/kombu/asynchronous/timer.py b/kombu/asynchronous/timer.py index 2ee26c61f..f6be13469 100644 --- a/kombu/asynchronous/timer.py +++ b/kombu/asynchronous/timer.py @@ -1,5 +1,7 @@ """Timer scheduling Python callbacks.""" +from __future__ import annotations + import heapq import sys from collections import namedtuple @@ -7,7 +9,7 @@ from functools import total_ordering from time import monotonic from time import time as _time -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from weakref import proxy as weakrefproxy from vine.utils import wraps @@ -107,9 +109,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.stop() diff --git a/kombu/clocks.py b/kombu/clocks.py index 3c1527208..0affdd3cc 100644 --- a/kombu/clocks.py +++ b/kombu/clocks.py @@ -1,5 +1,7 @@ """Logical Clocks and Synchronization.""" +from __future__ import annotations + from itertools import islice from operator import itemgetter from threading import Lock diff --git a/kombu/common.py b/kombu/common.py index 08bc1affa..c7b2d50a1 100644 --- a/kombu/common.py +++ b/kombu/common.py @@ -1,5 +1,7 @@ """Common Utilities.""" +from __future__ import annotations + import os import socket import threading diff --git a/kombu/compat.py b/kombu/compat.py index df37c3b1f..d90aec757 100644 --- a/kombu/compat.py +++ b/kombu/compat.py @@ -3,8 +3,10 @@ See https://pypi.org/project/carrot/ for documentation. """ +from __future__ import annotations + from itertools import count -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from . import messaging from .entity import Exchange, Queue @@ -71,9 +73,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.close() @@ -138,9 +140,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.close() diff --git a/kombu/compression.py b/kombu/compression.py index d94385399..f98c971b0 100644 --- a/kombu/compression.py +++ b/kombu/compression.py @@ -1,5 +1,7 @@ """Compression utilities.""" +from __future__ import annotations + import zlib from kombu.utils.encoding import ensure_bytes diff --git a/kombu/connection.py b/kombu/connection.py index 7cdef5053..8246db977 100644 --- a/kombu/connection.py +++ b/kombu/connection.py @@ -1,11 +1,13 @@ """Client (Connection).""" +from __future__ import annotations + import os import socket from contextlib import contextmanager from itertools import count, cycle from operator import itemgetter -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING try: from ssl import CERT_NONE @@ -835,9 +837,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.release() diff --git a/kombu/entity.py b/kombu/entity.py index a89fabb95..2329e7487 100644 --- a/kombu/entity.py +++ b/kombu/entity.py @@ -1,5 +1,7 @@ """Exchange and Queue declarations.""" +from __future__ import annotations + import numbers from .abstract import MaybeChannelBound, Object diff --git a/kombu/exceptions.py b/kombu/exceptions.py index f2501437c..fed478179 100644 --- a/kombu/exceptions.py +++ b/kombu/exceptions.py @@ -1,5 +1,7 @@ """Exceptions.""" +from __future__ import annotations + from socket import timeout as TimeoutError from amqp import ChannelError, ConnectionError, ResourceError diff --git a/kombu/log.py b/kombu/log.py index de77e7f36..ed8d0a509 100644 --- a/kombu/log.py +++ b/kombu/log.py @@ -1,5 +1,7 @@ """Logging Utilities.""" +from __future__ import annotations + import logging import numbers import os diff --git a/kombu/matcher.py b/kombu/matcher.py index 7dcab8cd9..583fdc4dd 100644 --- a/kombu/matcher.py +++ b/kombu/matcher.py @@ -1,5 +1,7 @@ """Pattern matching registry.""" +from __future__ import annotations + from fnmatch import fnmatch from re import match as rematch diff --git a/kombu/message.py b/kombu/message.py index bcc90d1a1..f2af16863 100644 --- a/kombu/message.py +++ b/kombu/message.py @@ -1,5 +1,7 @@ """Message class.""" +from __future__ import annotations + import sys from .compression import decompress diff --git a/kombu/messaging.py b/kombu/messaging.py index ebba43eef..2b6002242 100644 --- a/kombu/messaging.py +++ b/kombu/messaging.py @@ -1,7 +1,9 @@ """Sending and receiving messages.""" +from __future__ import annotations + from itertools import count -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from .common import maybe_declare from .compression import compress @@ -242,9 +244,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.release() @@ -446,9 +448,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: if self.channel and self.channel.connection: conn_errors = self.channel.connection.client.connection_errors diff --git a/kombu/mixins.py b/kombu/mixins.py index b87e4b921..f1b3c1c97 100644 --- a/kombu/mixins.py +++ b/kombu/mixins.py @@ -1,5 +1,7 @@ """Mixins.""" +from __future__ import annotations + import socket from contextlib import contextmanager from functools import partial diff --git a/kombu/pidbox.py b/kombu/pidbox.py index 7649736a8..ee639b3c9 100644 --- a/kombu/pidbox.py +++ b/kombu/pidbox.py @@ -1,5 +1,7 @@ """Generic process mailbox.""" +from __future__ import annotations + import socket import warnings from collections import defaultdict, deque diff --git a/kombu/pools.py b/kombu/pools.py index 373bc06ce..106be1838 100644 --- a/kombu/pools.py +++ b/kombu/pools.py @@ -1,5 +1,7 @@ """Public resource pools.""" +from __future__ import annotations + import os from itertools import chain diff --git a/kombu/resource.py b/kombu/resource.py index 004eb7a9e..53ba11450 100644 --- a/kombu/resource.py +++ b/kombu/resource.py @@ -1,5 +1,7 @@ """Generic resource pool implementation.""" +from __future__ import annotations + import os from collections import deque from queue import Empty @@ -199,7 +201,7 @@ def __exit__( self, exc_type: type, exc_val: Exception, - exc_tb: 'TracebackType' + exc_tb: TracebackType ) -> None: pass diff --git a/kombu/serialization.py b/kombu/serialization.py index 58c28717f..f807b2bda 100644 --- a/kombu/serialization.py +++ b/kombu/serialization.py @@ -1,5 +1,7 @@ """Serialization utilities.""" +from __future__ import annotations + import codecs import os import pickle diff --git a/kombu/simple.py b/kombu/simple.py index 5925ceec7..a33e5f9e1 100644 --- a/kombu/simple.py +++ b/kombu/simple.py @@ -1,10 +1,12 @@ """Simple messaging interface.""" +from __future__ import annotations + import socket from collections import deque from queue import Empty from time import monotonic -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from . import entity, messaging from .connection import maybe_channel @@ -24,9 +26,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.close() diff --git a/kombu/transport/SLMQ.py b/kombu/transport/SLMQ.py index 750f67bd6..50efca72c 100644 --- a/kombu/transport/SLMQ.py +++ b/kombu/transport/SLMQ.py @@ -18,6 +18,8 @@ *Unreviewed* """ +from __future__ import annotations + import os import socket import string diff --git a/kombu/transport/SQS.py b/kombu/transport/SQS.py index d5e328eaf..fa953e8c1 100644 --- a/kombu/transport/SQS.py +++ b/kombu/transport/SQS.py @@ -122,6 +122,8 @@ """ # noqa: E501 +from __future__ import annotations + import base64 import socket import string diff --git a/kombu/transport/__init__.py b/kombu/transport/__init__.py index f51b5bbc5..e5631b48c 100644 --- a/kombu/transport/__init__.py +++ b/kombu/transport/__init__.py @@ -1,12 +1,12 @@ """Built-in transports.""" -from typing import Optional +from __future__ import annotations from kombu.utils.compat import _detect_environment from kombu.utils.imports import symbol_by_name -def supports_librabbitmq() -> Optional[bool]: +def supports_librabbitmq() -> bool | None: """Return true if :pypi:`librabbitmq` can be used.""" if _detect_environment() == 'default': try: @@ -47,7 +47,7 @@ def supports_librabbitmq() -> Optional[bool]: _transport_cache = {} -def resolve_transport(transport: Optional[str] = None) -> Optional[str]: +def resolve_transport(transport: str | None = None) -> str | None: """Get transport by name. Arguments: @@ -74,7 +74,7 @@ def resolve_transport(transport: Optional[str] = None) -> Optional[str]: return transport -def get_transport_cls(transport: Optional[str] = None) -> Optional[str]: +def get_transport_cls(transport: str | None = None) -> str | None: """Get transport class by name. The transport string is the full path to a transport class, e.g.:: diff --git a/kombu/transport/azureservicebus.py b/kombu/transport/azureservicebus.py index 83237424b..3c6c3d36c 100644 --- a/kombu/transport/azureservicebus.py +++ b/kombu/transport/azureservicebus.py @@ -53,9 +53,11 @@ * ``retry_backoff_max`` - Azure SDK retry total time. Default ``120`` """ +from __future__ import annotations + import string from queue import Empty -from typing import Any, Dict, Optional, Set, Tuple, Union +from typing import Any, Dict, Set import azure.core.exceptions import azure.servicebus.exceptions @@ -83,8 +85,8 @@ class SendReceive: """Container for Sender and Receiver.""" def __init__(self, - receiver: Optional[ServiceBusReceiver] = None, - sender: Optional[ServiceBusSender] = None): + receiver: ServiceBusReceiver | None = None, + sender: ServiceBusSender | None = None): self.receiver = receiver # type: ServiceBusReceiver self.sender = sender # type: ServiceBusSender @@ -160,8 +162,8 @@ def basic_cancel(self, consumer_tag): def _add_queue_to_cache( self, name: str, - receiver: Optional[ServiceBusReceiver] = None, - sender: Optional[ServiceBusSender] = None + receiver: ServiceBusReceiver | None = None, + sender: ServiceBusSender | None = None ) -> SendReceive: if name in self._queue_cache: obj = self._queue_cache[name] @@ -183,7 +185,7 @@ def _get_asb_sender(self, queue: str) -> SendReceive: def _get_asb_receiver( self, queue: str, recv_mode: ServiceBusReceiveMode = ServiceBusReceiveMode.PEEK_LOCK, - queue_cache_key: Optional[str] = None) -> SendReceive: + queue_cache_key: str | None = None) -> SendReceive: cache_key = queue_cache_key or queue queue_obj = self._queue_cache.get(cache_key, None) if queue_obj is None or queue_obj.receiver is None: @@ -194,7 +196,7 @@ def _get_asb_receiver( return queue_obj def entity_name( - self, name: str, table: Optional[Dict[int, int]] = None) -> str: + self, name: str, table: dict[int, int] | None = None) -> str: """Format AMQP queue name into a valid ServiceBus queue name.""" return str(safe_str(name)).translate(table or CHARS_REPLACE_TABLE) @@ -242,8 +244,8 @@ def _put(self, queue: str, message, **kwargs) -> None: def _get( self, queue: str, - timeout: Optional[Union[float, int]] = None - ) -> Dict[str, Any]: + timeout: float | int | None = None + ) -> dict[str, Any]: """Try to retrieve a single message off ``queue``.""" # If we're not ack'ing for this queue, just change receive_mode recv_mode = ServiceBusReceiveMode.RECEIVE_AND_DELETE \ @@ -412,7 +414,7 @@ class Transport(virtual.Transport): can_parse_url = True @staticmethod - def parse_uri(uri: str) -> Tuple[str, str, str]: + def parse_uri(uri: str) -> tuple[str, str, str]: # URL like: # azureservicebus://{SAS policy name}:{SAS key}@{ServiceBus Namespace} # urllib parse does not work as the sas key could contain a slash diff --git a/kombu/transport/azurestoragequeues.py b/kombu/transport/azurestoragequeues.py index e83a20d39..ed651d9c9 100644 --- a/kombu/transport/azurestoragequeues.py +++ b/kombu/transport/azurestoragequeues.py @@ -30,6 +30,8 @@ * ``queue_name_prefix`` """ +from __future__ import annotations + import string from queue import Empty diff --git a/kombu/transport/base.py b/kombu/transport/base.py index 62a84fda6..ec4c0aca8 100644 --- a/kombu/transport/base.py +++ b/kombu/transport/base.py @@ -2,9 +2,11 @@ # flake8: noqa +from __future__ import annotations + import errno import socket -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from amqp.exceptions import RecoverableConnectionError @@ -106,9 +108,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.close() diff --git a/kombu/transport/consul.py b/kombu/transport/consul.py index 4369b1f8e..7ace52f6b 100644 --- a/kombu/transport/consul.py +++ b/kombu/transport/consul.py @@ -27,6 +27,8 @@ """ +from __future__ import annotations + import socket import uuid from collections import defaultdict diff --git a/kombu/transport/etcd.py b/kombu/transport/etcd.py index ba9e4150c..2ab858417 100644 --- a/kombu/transport/etcd.py +++ b/kombu/transport/etcd.py @@ -24,6 +24,8 @@ """ +from __future__ import annotations + import os import socket from collections import defaultdict diff --git a/kombu/transport/filesystem.py b/kombu/transport/filesystem.py index d29d06b84..92d8c4e43 100644 --- a/kombu/transport/filesystem.py +++ b/kombu/transport/filesystem.py @@ -89,6 +89,8 @@ def callback(body, message): * ``control_folder`` - directory where are exchange-queue table stored. """ +from __future__ import annotations + import os import shutil import tempfile diff --git a/kombu/transport/librabbitmq.py b/kombu/transport/librabbitmq.py index dec50ccf7..37015b184 100644 --- a/kombu/transport/librabbitmq.py +++ b/kombu/transport/librabbitmq.py @@ -3,6 +3,8 @@ .. _`librabbitmq`: https://pypi.org/project/librabbitmq/ """ +from __future__ import annotations + import os import socket import warnings diff --git a/kombu/transport/memory.py b/kombu/transport/memory.py index 3073d1cf3..9bfaff8d2 100644 --- a/kombu/transport/memory.py +++ b/kombu/transport/memory.py @@ -22,6 +22,8 @@ """ +from __future__ import annotations + from collections import defaultdict from queue import Queue diff --git a/kombu/transport/mongodb.py b/kombu/transport/mongodb.py index db758c181..8285b70f9 100644 --- a/kombu/transport/mongodb.py +++ b/kombu/transport/mongodb.py @@ -33,6 +33,8 @@ * ``calc_queue_size``, """ +from __future__ import annotations + import datetime from queue import Empty diff --git a/kombu/transport/pyamqp.py b/kombu/transport/pyamqp.py index f230f9113..c8fd3c86b 100644 --- a/kombu/transport/pyamqp.py +++ b/kombu/transport/pyamqp.py @@ -68,6 +68,8 @@ """ +from __future__ import annotations + import amqp from kombu.utils.amq_manager import get_manager diff --git a/kombu/transport/pyro.py b/kombu/transport/pyro.py index 833d97925..7b27cb613 100644 --- a/kombu/transport/pyro.py +++ b/kombu/transport/pyro.py @@ -32,6 +32,8 @@ """ +from __future__ import annotations + import sys from queue import Empty, Queue diff --git a/kombu/transport/qpid.py b/kombu/transport/qpid.py index 2b2d1b18a..cfd864d8a 100644 --- a/kombu/transport/qpid.py +++ b/kombu/transport/qpid.py @@ -86,6 +86,8 @@ *BROKER_TRANSPORT_OPTIONS* Celery option. """ +from __future__ import annotations + import os import select import socket diff --git a/kombu/transport/redis.py b/kombu/transport/redis.py index cc8619956..b5cca5e54 100644 --- a/kombu/transport/redis.py +++ b/kombu/transport/redis.py @@ -51,6 +51,8 @@ * ``priority_steps`` """ +from __future__ import annotations + import functools import numbers import socket diff --git a/kombu/transport/sqlalchemy/__init__.py b/kombu/transport/sqlalchemy/__init__.py index 91f87a863..2b779485f 100644 --- a/kombu/transport/sqlalchemy/__init__.py +++ b/kombu/transport/sqlalchemy/__init__.py @@ -50,9 +50,7 @@ Moreover parameters of :func:`sqlalchemy.create_engine()` function can be passed as transport options. """ -# SQLAlchemy overrides != False to have special meaning and pep8 complains -# flake8: noqa - +from __future__ import annotations import threading from json import dumps, loads @@ -71,6 +69,13 @@ from .models import Queue as QueueBase from .models import class_registry, metadata +# SQLAlchemy overrides != False to have special meaning and pep8 complains +# flake8: noqa + + + + + VERSION = (1, 4, 1) __version__ = '.'.join(map(str, VERSION)) diff --git a/kombu/transport/sqlalchemy/models.py b/kombu/transport/sqlalchemy/models.py index 458638526..be3fcfa0c 100644 --- a/kombu/transport/sqlalchemy/models.py +++ b/kombu/transport/sqlalchemy/models.py @@ -1,5 +1,7 @@ """Kombu transport using SQLAlchemy as the message store.""" +from __future__ import annotations + import datetime from sqlalchemy import (Boolean, Column, DateTime, ForeignKey, Index, Integer, diff --git a/kombu/transport/virtual/__init__.py b/kombu/transport/virtual/__init__.py index 7ab117724..54e846654 100644 --- a/kombu/transport/virtual/__init__.py +++ b/kombu/transport/virtual/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from .base import (AbstractChannel, Base64, BrokerState, Channel, Empty, Management, Message, NotEquivalentError, QoS, Transport, UndeliverableWarning, binding_key_t, queue_binding_t) diff --git a/kombu/transport/virtual/base.py b/kombu/transport/virtual/base.py index 6aef17da5..552ebec75 100644 --- a/kombu/transport/virtual/base.py +++ b/kombu/transport/virtual/base.py @@ -3,6 +3,8 @@ Emulates the AMQ API for non-AMQ transports. """ +from __future__ import annotations + import base64 import socket import sys @@ -13,7 +15,7 @@ from multiprocessing.util import Finalize from queue import Empty from time import monotonic, sleep -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from amqp.protocol import queue_declare_ok_t @@ -806,9 +808,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.close() diff --git a/kombu/transport/virtual/exchange.py b/kombu/transport/virtual/exchange.py index c6b6161c4..b70544cd2 100644 --- a/kombu/transport/virtual/exchange.py +++ b/kombu/transport/virtual/exchange.py @@ -4,6 +4,8 @@ by the AMQ protocol (excluding the `headers` exchange). """ +from __future__ import annotations + import re from kombu.utils.text import escape_regex diff --git a/kombu/transport/zookeeper.py b/kombu/transport/zookeeper.py index 1a2ab63c2..c72ce2f51 100644 --- a/kombu/transport/zookeeper.py +++ b/kombu/transport/zookeeper.py @@ -42,6 +42,8 @@ """ +from __future__ import annotations + import os import socket from queue import Empty diff --git a/kombu/utils/__init__.py b/kombu/utils/__init__.py index 304e2dfa8..94bb3cdf3 100644 --- a/kombu/utils/__init__.py +++ b/kombu/utils/__init__.py @@ -1,5 +1,7 @@ """DEPRECATED - Import from modules below.""" +from __future__ import annotations + from .collections import EqualityDict from .compat import fileno, maybe_fileno, nested, register_after_fork from .div import emergency_dump_state diff --git a/kombu/utils/amq_manager.py b/kombu/utils/amq_manager.py index 7491bb25f..f3e429fd5 100644 --- a/kombu/utils/amq_manager.py +++ b/kombu/utils/amq_manager.py @@ -1,6 +1,9 @@ """AMQP Management API utilities.""" +from __future__ import annotations + + def get_manager(client, hostname=None, port=None, userid=None, password=None): """Get pyrabbit manager.""" diff --git a/kombu/utils/collections.py b/kombu/utils/collections.py index 77781047b..1a0a6d0d1 100644 --- a/kombu/utils/collections.py +++ b/kombu/utils/collections.py @@ -1,6 +1,9 @@ """Custom maps, sequences, etc.""" +from __future__ import annotations + + class HashedSeq(list): """Hashed Sequence. diff --git a/kombu/utils/compat.py b/kombu/utils/compat.py index a0c1b337d..791c00388 100644 --- a/kombu/utils/compat.py +++ b/kombu/utils/compat.py @@ -1,5 +1,7 @@ """Python Compatibility Utilities.""" +from __future__ import annotations + import numbers import sys from contextlib import contextmanager diff --git a/kombu/utils/debug.py b/kombu/utils/debug.py index acc2d60b7..bd20948fc 100644 --- a/kombu/utils/debug.py +++ b/kombu/utils/debug.py @@ -1,5 +1,7 @@ """Debugging support.""" +from __future__ import annotations + import logging from vine.utils import wraps diff --git a/kombu/utils/div.py b/kombu/utils/div.py index 45be7f94f..439b66394 100644 --- a/kombu/utils/div.py +++ b/kombu/utils/div.py @@ -1,5 +1,7 @@ """Div. Utilities.""" +from __future__ import annotations + import sys from .encoding import default_encode diff --git a/kombu/utils/encoding.py b/kombu/utils/encoding.py index 5f58f0fad..42bf2ce9f 100644 --- a/kombu/utils/encoding.py +++ b/kombu/utils/encoding.py @@ -5,6 +5,8 @@ :exc:`UnicodeDecodeError` exception. """ +from __future__ import annotations + import sys import traceback diff --git a/kombu/utils/eventio.py b/kombu/utils/eventio.py index 48260a488..f8d89d457 100644 --- a/kombu/utils/eventio.py +++ b/kombu/utils/eventio.py @@ -1,5 +1,7 @@ """Selector Utilities.""" +from __future__ import annotations + import errno import math import select as __select__ diff --git a/kombu/utils/functional.py b/kombu/utils/functional.py index 366a0b99c..6beb17d7f 100644 --- a/kombu/utils/functional.py +++ b/kombu/utils/functional.py @@ -1,5 +1,7 @@ """Functional Utilities.""" +from __future__ import annotations + import inspect import random import threading diff --git a/kombu/utils/imports.py b/kombu/utils/imports.py index fd4482a8e..8752fa1a8 100644 --- a/kombu/utils/imports.py +++ b/kombu/utils/imports.py @@ -1,5 +1,7 @@ """Import related utilities.""" +from __future__ import annotations + import importlib import sys diff --git a/kombu/utils/json.py b/kombu/utils/json.py index 6b8e4d469..2fb8d03df 100644 --- a/kombu/utils/json.py +++ b/kombu/utils/json.py @@ -1,5 +1,7 @@ """JSON Serialization Utilities.""" +from __future__ import annotations + import base64 import datetime import decimal diff --git a/kombu/utils/limits.py b/kombu/utils/limits.py index d82884f5c..36d11f1f5 100644 --- a/kombu/utils/limits.py +++ b/kombu/utils/limits.py @@ -1,5 +1,7 @@ """Token bucket implementation for rate limiting.""" +from __future__ import annotations + from collections import deque from time import monotonic diff --git a/kombu/utils/objects.py b/kombu/utils/objects.py index 7fef4a2f6..eb4dfc2a1 100644 --- a/kombu/utils/objects.py +++ b/kombu/utils/objects.py @@ -1,5 +1,7 @@ """Object Utilities.""" +from __future__ import annotations + __all__ = ('cached_property',) try: diff --git a/kombu/utils/scheduling.py b/kombu/utils/scheduling.py index 1875fce44..94286be8f 100644 --- a/kombu/utils/scheduling.py +++ b/kombu/utils/scheduling.py @@ -1,5 +1,7 @@ """Scheduling Utilities.""" +from __future__ import annotations + from itertools import count from .imports import symbol_by_name diff --git a/kombu/utils/text.py b/kombu/utils/text.py index 8cc11f34b..db260b524 100644 --- a/kombu/utils/text.py +++ b/kombu/utils/text.py @@ -2,6 +2,8 @@ # flake8: noqa +from __future__ import annotations + from difflib import SequenceMatcher from typing import Iterable, Iterator, Optional, Tuple, Union @@ -17,7 +19,7 @@ def escape_regex(p, white=''): for c in p) -def fmatch_iter(needle: str, haystack: Iterable[str], min_ratio: float = 0.6) -> Iterator[Tuple[float, str]]: +def fmatch_iter(needle: str, haystack: Iterable[str], min_ratio: float = 0.6) -> Iterator[tuple[float, str]]: """Fuzzy match: iteratively. Yields: @@ -29,7 +31,7 @@ def fmatch_iter(needle: str, haystack: Iterable[str], min_ratio: float = 0.6) -> yield ratio, key -def fmatch_best(needle: str, haystack: Iterable[str], min_ratio: float = 0.6) -> Optional[str]: +def fmatch_best(needle: str, haystack: Iterable[str], min_ratio: float = 0.6) -> str | None: """Fuzzy match - Find best match (scalar).""" try: return sorted( @@ -53,15 +55,15 @@ def version_string_as_tuple(s: str) -> version_info_t: def _unpack_version( major: str, - minor: Union[str, int] = 0, - micro: Union[str, int] = 0, + minor: str | int = 0, + micro: str | int = 0, releaselevel: str = '', serial: str = '' ) -> version_info_t: return version_info_t(int(major), int(minor), micro, releaselevel, serial) -def _splitmicro(micro: str, releaselevel: str = '', serial: str = '') -> Tuple[int, str, str]: +def _splitmicro(micro: str, releaselevel: str = '', serial: str = '') -> tuple[int, str, str]: for index, char in enumerate(micro): if not char.isdigit(): break diff --git a/kombu/utils/time.py b/kombu/utils/time.py index a563657fb..8228d2be6 100644 --- a/kombu/utils/time.py +++ b/kombu/utils/time.py @@ -1,9 +1,9 @@ """Time Utilities.""" -from typing import Optional, Union +from __future__ import annotations __all__ = ('maybe_s_to_ms',) -def maybe_s_to_ms(v: Optional[Union[int, float]]) -> Optional[int]: +def maybe_s_to_ms(v: int | float | None) -> int | None: """Convert seconds to milliseconds, but return None for None.""" return int(float(v) * 1000.0) if v is not None else v diff --git a/kombu/utils/url.py b/kombu/utils/url.py index de3a91396..f5f477019 100644 --- a/kombu/utils/url.py +++ b/kombu/utils/url.py @@ -2,6 +2,8 @@ # flake8: noqa +from __future__ import annotations + from collections.abc import Mapping from functools import partial from typing import NamedTuple diff --git a/kombu/utils/uuid.py b/kombu/utils/uuid.py index b7a5bf486..9f77dad96 100644 --- a/kombu/utils/uuid.py +++ b/kombu/utils/uuid.py @@ -1,4 +1,6 @@ """UUID utilities.""" +from __future__ import annotations + from typing import Callable from uuid import UUID, uuid4 diff --git a/setup.cfg b/setup.cfg index ff9492154..71b271f1f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -12,6 +12,10 @@ all_files = 1 # whenever it makes the code more readable. extend-ignore = W504, N806, N802, N801, N803 +[isort] +add_imports = + from __future__ import annotations + [mypy] warn_unused_configs = True strict = False diff --git a/setup.py b/setup.py index cc8c3231d..a8c57b0bc 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,6 @@ #!/usr/bin/env python3 +from __future__ import annotations + import os import re import sys diff --git a/t/integration/__init__.py b/t/integration/__init__.py index 1bea48807..cfce4f85e 100644 --- a/t/integration/__init__.py +++ b/t/integration/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import os import sys diff --git a/t/integration/common.py b/t/integration/common.py index 945e357a8..0c40b6e95 100644 --- a/t/integration/common.py +++ b/t/integration/common.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import socket from contextlib import closing from time import sleep diff --git a/t/integration/test_py_amqp.py b/t/integration/test_py_amqp.py index 6f80bc535..260f164d8 100644 --- a/t/integration/test_py_amqp.py +++ b/t/integration/test_py_amqp.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import os import pytest diff --git a/t/integration/test_redis.py b/t/integration/test_redis.py index 522adf8eb..169a32dc3 100644 --- a/t/integration/test_redis.py +++ b/t/integration/test_redis.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import os from time import sleep diff --git a/t/mocks.py b/t/mocks.py index 51ef32fb6..e4cfa3f76 100644 --- a/t/mocks.py +++ b/t/mocks.py @@ -1,5 +1,7 @@ +from __future__ import annotations + from itertools import count -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from unittest.mock import Mock from kombu.transport import base @@ -19,9 +21,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: pass diff --git a/t/skip.py b/t/skip.py index d2c59caa6..966398ec6 100644 --- a/t/skip.py +++ b/t/skip.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import sys import pytest diff --git a/t/unit/asynchronous/aws/case.py b/t/unit/asynchronous/aws/case.py index 56c708124..220cd700d 100644 --- a/t/unit/asynchronous/aws/case.py +++ b/t/unit/asynchronous/aws/case.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest import t.skip diff --git a/t/unit/asynchronous/aws/sqs/test_connection.py b/t/unit/asynchronous/aws/sqs/test_connection.py index c3dd184be..0c5d2ac93 100644 --- a/t/unit/asynchronous/aws/sqs/test_connection.py +++ b/t/unit/asynchronous/aws/sqs/test_connection.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import MagicMock, Mock from kombu.asynchronous.aws.ext import boto3 diff --git a/t/unit/asynchronous/aws/sqs/test_queue.py b/t/unit/asynchronous/aws/sqs/test_queue.py index 56812831d..70f10a758 100644 --- a/t/unit/asynchronous/aws/sqs/test_queue.py +++ b/t/unit/asynchronous/aws/sqs/test_queue.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/asynchronous/aws/test_aws.py b/t/unit/asynchronous/aws/test_aws.py index 93d92e4bd..736fdf8ae 100644 --- a/t/unit/asynchronous/aws/test_aws.py +++ b/t/unit/asynchronous/aws/test_aws.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock from kombu.asynchronous.aws import connect_sqs diff --git a/t/unit/asynchronous/aws/test_connection.py b/t/unit/asynchronous/aws/test_connection.py index 68e3c746b..03fc54124 100644 --- a/t/unit/asynchronous/aws/test_connection.py +++ b/t/unit/asynchronous/aws/test_connection.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from contextlib import contextmanager from io import StringIO from unittest.mock import Mock diff --git a/t/unit/asynchronous/http/test_curl.py b/t/unit/asynchronous/http/test_curl.py index 2e52f7d42..51f9128e8 100644 --- a/t/unit/asynchronous/http/test_curl.py +++ b/t/unit/asynchronous/http/test_curl.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from io import BytesIO from unittest.mock import ANY, Mock, call, patch diff --git a/t/unit/asynchronous/http/test_http.py b/t/unit/asynchronous/http/test_http.py index 6e6abdcb2..816bf89da 100644 --- a/t/unit/asynchronous/http/test_http.py +++ b/t/unit/asynchronous/http/test_http.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from io import BytesIO from unittest.mock import Mock diff --git a/t/unit/asynchronous/test_hub.py b/t/unit/asynchronous/test_hub.py index 0cf14194d..bcbbb260c 100644 --- a/t/unit/asynchronous/test_hub.py +++ b/t/unit/asynchronous/test_hub.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import errno from unittest.mock import Mock, call, patch diff --git a/t/unit/asynchronous/test_semaphore.py b/t/unit/asynchronous/test_semaphore.py index 485d0800d..5c41a6d86 100644 --- a/t/unit/asynchronous/test_semaphore.py +++ b/t/unit/asynchronous/test_semaphore.py @@ -1,4 +1,4 @@ -from typing import List +from __future__ import annotations from kombu.asynchronous.semaphore import LaxBoundedSemaphore @@ -7,7 +7,7 @@ class test_LaxBoundedSemaphore: def test_over_release(self) -> None: x = LaxBoundedSemaphore(2) - calls: List[int] = [] + calls: list[int] = [] for i in range(1, 21): x.acquire(calls.append, i) x.release() diff --git a/t/unit/asynchronous/test_timer.py b/t/unit/asynchronous/test_timer.py index 204117843..531b3d2ed 100644 --- a/t/unit/asynchronous/test_timer.py +++ b/t/unit/asynchronous/test_timer.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from datetime import datetime from unittest.mock import Mock, patch diff --git a/t/unit/conftest.py b/t/unit/conftest.py index b798e3e59..15e313666 100644 --- a/t/unit/conftest.py +++ b/t/unit/conftest.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import atexit import builtins import io diff --git a/t/unit/test_clocks.py b/t/unit/test_clocks.py index b4392440e..af391ba96 100644 --- a/t/unit/test_clocks.py +++ b/t/unit/test_clocks.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pickle from heapq import heappush from time import time diff --git a/t/unit/test_common.py b/t/unit/test_common.py index 4780c0a40..fd20243f6 100644 --- a/t/unit/test_common.py +++ b/t/unit/test_common.py @@ -1,5 +1,7 @@ +from __future__ import annotations + import socket -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from unittest.mock import Mock, patch import pytest @@ -344,9 +346,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: self.consumers.discard(self) diff --git a/t/unit/test_compat.py b/t/unit/test_compat.py index 31eb97ead..837d6f226 100644 --- a/t/unit/test_compat.py +++ b/t/unit/test_compat.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock, patch import pytest diff --git a/t/unit/test_compression.py b/t/unit/test_compression.py index f1f426b74..951398119 100644 --- a/t/unit/test_compression.py +++ b/t/unit/test_compression.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import sys import pytest diff --git a/t/unit/test_connection.py b/t/unit/test_connection.py index 703e237d8..b1413b7e2 100644 --- a/t/unit/test_connection.py +++ b/t/unit/test_connection.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pickle import socket from copy import copy, deepcopy diff --git a/t/unit/test_entity.py b/t/unit/test_entity.py index 52c42b2b4..a98f889d6 100644 --- a/t/unit/test_entity.py +++ b/t/unit/test_entity.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pickle from unittest.mock import Mock, call diff --git a/t/unit/test_exceptions.py b/t/unit/test_exceptions.py index bba72a83d..becac86cc 100644 --- a/t/unit/test_exceptions.py +++ b/t/unit/test_exceptions.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock from kombu.exceptions import HttpError diff --git a/t/unit/test_log.py b/t/unit/test_log.py index 4a8cd94cd..30c6796f8 100644 --- a/t/unit/test_log.py +++ b/t/unit/test_log.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging import sys from unittest.mock import ANY, Mock, patch diff --git a/t/unit/test_matcher.py b/t/unit/test_matcher.py index 2100fa747..37ae5207a 100644 --- a/t/unit/test_matcher.py +++ b/t/unit/test_matcher.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from kombu.matcher import (MatcherNotInstalled, fnmatch, match, register, diff --git a/t/unit/test_message.py b/t/unit/test_message.py index 5b0833ddd..4c53cac2c 100644 --- a/t/unit/test_message.py +++ b/t/unit/test_message.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import sys from unittest.mock import Mock, patch diff --git a/t/unit/test_messaging.py b/t/unit/test_messaging.py index 68c85b5f8..4bd467c29 100644 --- a/t/unit/test_messaging.py +++ b/t/unit/test_messaging.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pickle import sys from collections import defaultdict diff --git a/t/unit/test_mixins.py b/t/unit/test_mixins.py index 04a56a6c0..39b7370f2 100644 --- a/t/unit/test_mixins.py +++ b/t/unit/test_mixins.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import socket from unittest.mock import Mock, patch diff --git a/t/unit/test_pidbox.py b/t/unit/test_pidbox.py index fac461398..cf8a748ab 100644 --- a/t/unit/test_pidbox.py +++ b/t/unit/test_pidbox.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import socket import warnings from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor diff --git a/t/unit/test_pools.py b/t/unit/test_pools.py index eb2a556ed..12c045ac2 100644 --- a/t/unit/test_pools.py +++ b/t/unit/test_pools.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/test_serialization.py b/t/unit/test_serialization.py index 14952e5e9..d3fd5c209 100644 --- a/t/unit/test_serialization.py +++ b/t/unit/test_serialization.py @@ -1,5 +1,7 @@ #!/usr/bin/python +from __future__ import annotations + from base64 import b64decode from unittest.mock import call, patch diff --git a/t/unit/test_simple.py b/t/unit/test_simple.py index 6a9a9b09b..50ea880b9 100644 --- a/t/unit/test_simple.py +++ b/t/unit/test_simple.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/transport/test_SQS.py b/t/unit/transport/test_SQS.py index ea261659a..ecf32e10b 100644 --- a/t/unit/transport/test_SQS.py +++ b/t/unit/transport/test_SQS.py @@ -4,6 +4,8 @@ http://github.com/pcsforeducation/sqs-mock-python. They have been patched slightly. """ +from __future__ import annotations + import base64 import os import random diff --git a/t/unit/transport/test_azureservicebus.py b/t/unit/transport/test_azureservicebus.py index 97775d068..f2280fe49 100644 --- a/t/unit/transport/test_azureservicebus.py +++ b/t/unit/transport/test_azureservicebus.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import base64 import json import random diff --git a/t/unit/transport/test_base.py b/t/unit/transport/test_base.py index 7df12c9e7..5beae3c69 100644 --- a/t/unit/transport/test_base.py +++ b/t/unit/transport/test_base.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/transport/test_consul.py b/t/unit/transport/test_consul.py index d77b7a41c..ff110e118 100644 --- a/t/unit/transport/test_consul.py +++ b/t/unit/transport/test_consul.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from array import array from queue import Empty from unittest.mock import Mock diff --git a/t/unit/transport/test_etcd.py b/t/unit/transport/test_etcd.py index 6c75a033f..f3fad0358 100644 --- a/t/unit/transport/test_etcd.py +++ b/t/unit/transport/test_etcd.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from queue import Empty from unittest.mock import Mock, patch diff --git a/t/unit/transport/test_filesystem.py b/t/unit/transport/test_filesystem.py index fdf233ae4..b22e3b8de 100644 --- a/t/unit/transport/test_filesystem.py +++ b/t/unit/transport/test_filesystem.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import tempfile from queue import Empty diff --git a/t/unit/transport/test_librabbitmq.py b/t/unit/transport/test_librabbitmq.py index 58ee7e1e2..84f8691e9 100644 --- a/t/unit/transport/test_librabbitmq.py +++ b/t/unit/transport/test_librabbitmq.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock, patch import pytest diff --git a/t/unit/transport/test_memory.py b/t/unit/transport/test_memory.py index 2c1fe83f1..537ec01fd 100644 --- a/t/unit/transport/test_memory.py +++ b/t/unit/transport/test_memory.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import socket import pytest diff --git a/t/unit/transport/test_mongodb.py b/t/unit/transport/test_mongodb.py index 399769885..fe31a4771 100644 --- a/t/unit/transport/test_mongodb.py +++ b/t/unit/transport/test_mongodb.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import datetime from queue import Empty from unittest.mock import MagicMock, call, patch diff --git a/t/unit/transport/test_pyamqp.py b/t/unit/transport/test_pyamqp.py index d5f6d7e24..bd4023957 100644 --- a/t/unit/transport/test_pyamqp.py +++ b/t/unit/transport/test_pyamqp.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import sys from itertools import count from unittest.mock import MagicMock, Mock, patch diff --git a/t/unit/transport/test_pyro.py b/t/unit/transport/test_pyro.py index 325f81ce1..b0ec4be4b 100644 --- a/t/unit/transport/test_pyro.py +++ b/t/unit/transport/test_pyro.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import socket import pytest diff --git a/t/unit/transport/test_qpid.py b/t/unit/transport/test_qpid.py index 95071e971..0048fd38c 100644 --- a/t/unit/transport/test_qpid.py +++ b/t/unit/transport/test_qpid.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import select import socket import ssl diff --git a/t/unit/transport/test_redis.py b/t/unit/transport/test_redis.py index 9905f6eec..d06f29591 100644 --- a/t/unit/transport/test_redis.py +++ b/t/unit/transport/test_redis.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import base64 import copy import socket @@ -6,7 +8,7 @@ from itertools import count from queue import Empty from queue import Queue as _Queue -from typing import TYPE_CHECKING, Optional, Type +from typing import TYPE_CHECKING from unittest.mock import ANY, Mock, call, patch import pytest @@ -237,9 +239,9 @@ def __enter__(self): def __exit__( self, - exc_type: Optional[Type[BaseException]], - exc_val: Optional[BaseException], - exc_tb: Optional['TracebackType'] + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None ) -> None: pass diff --git a/t/unit/transport/test_sqlalchemy.py b/t/unit/transport/test_sqlalchemy.py index 5ddca5ac0..aa0907f7c 100644 --- a/t/unit/transport/test_sqlalchemy.py +++ b/t/unit/transport/test_sqlalchemy.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import patch import pytest diff --git a/t/unit/transport/test_transport.py b/t/unit/transport/test_transport.py index ca84dd80a..b5b5e6eb1 100644 --- a/t/unit/transport/test_transport.py +++ b/t/unit/transport/test_transport.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock, patch from kombu import transport diff --git a/t/unit/transport/test_zookeeper.py b/t/unit/transport/test_zookeeper.py index 21fcac42d..8b6d159c2 100644 --- a/t/unit/transport/test_zookeeper.py +++ b/t/unit/transport/test_zookeeper.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from kombu import Connection diff --git a/t/unit/transport/virtual/test_base.py b/t/unit/transport/virtual/test_base.py index 97df370af..04972ccea 100644 --- a/t/unit/transport/virtual/test_base.py +++ b/t/unit/transport/virtual/test_base.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import io import socket import warnings diff --git a/t/unit/transport/virtual/test_exchange.py b/t/unit/transport/virtual/test_exchange.py index 557414456..5e5a61d7a 100644 --- a/t/unit/transport/virtual/test_exchange.py +++ b/t/unit/transport/virtual/test_exchange.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/utils/test_amq_manager.py b/t/unit/utils/test_amq_manager.py index ca6adb6e7..22fb93554 100644 --- a/t/unit/utils/test_amq_manager.py +++ b/t/unit/utils/test_amq_manager.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import patch import pytest diff --git a/t/unit/utils/test_compat.py b/t/unit/utils/test_compat.py index d3159b766..462db1432 100644 --- a/t/unit/utils/test_compat.py +++ b/t/unit/utils/test_compat.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import socket import sys import types diff --git a/t/unit/utils/test_debug.py b/t/unit/utils/test_debug.py index 020bc849b..a49555073 100644 --- a/t/unit/utils/test_debug.py +++ b/t/unit/utils/test_debug.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging from unittest.mock import Mock, patch diff --git a/t/unit/utils/test_div.py b/t/unit/utils/test_div.py index b29b61190..a6e988e87 100644 --- a/t/unit/utils/test_div.py +++ b/t/unit/utils/test_div.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pickle from io import BytesIO, StringIO diff --git a/t/unit/utils/test_encoding.py b/t/unit/utils/test_encoding.py index 26e3ef36b..81358a7af 100644 --- a/t/unit/utils/test_encoding.py +++ b/t/unit/utils/test_encoding.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import sys from contextlib import contextmanager from unittest.mock import patch diff --git a/t/unit/utils/test_functional.py b/t/unit/utils/test_functional.py index 73a98e520..26f287330 100644 --- a/t/unit/utils/test_functional.py +++ b/t/unit/utils/test_functional.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pickle from itertools import count from unittest.mock import Mock diff --git a/t/unit/utils/test_imports.py b/t/unit/utils/test_imports.py index 8a4873df9..8f515bd80 100644 --- a/t/unit/utils/test_imports.py +++ b/t/unit/utils/test_imports.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/utils/test_json.py b/t/unit/utils/test_json.py index d6a9c0b01..c263b4f92 100644 --- a/t/unit/utils/test_json.py +++ b/t/unit/utils/test_json.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from collections import namedtuple from datetime import datetime from decimal import Decimal diff --git a/t/unit/utils/test_objects.py b/t/unit/utils/test_objects.py index 93a88b4ff..b9f1484a5 100644 --- a/t/unit/utils/test_objects.py +++ b/t/unit/utils/test_objects.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from kombu.utils.objects import cached_property diff --git a/t/unit/utils/test_scheduling.py b/t/unit/utils/test_scheduling.py index 44cf01a28..7bc76b96c 100644 --- a/t/unit/utils/test_scheduling.py +++ b/t/unit/utils/test_scheduling.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from unittest.mock import Mock import pytest diff --git a/t/unit/utils/test_time.py b/t/unit/utils/test_time.py index 660ae8ece..a8f7de0f3 100644 --- a/t/unit/utils/test_time.py +++ b/t/unit/utils/test_time.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from kombu.utils.time import maybe_s_to_ms diff --git a/t/unit/utils/test_url.py b/t/unit/utils/test_url.py index 71ea0f9ba..f219002bf 100644 --- a/t/unit/utils/test_url.py +++ b/t/unit/utils/test_url.py @@ -1,3 +1,5 @@ +from __future__ import annotations + try: from urllib.parse import urlencode except ImportError: diff --git a/t/unit/utils/test_utils.py b/t/unit/utils/test_utils.py index d118d46e7..08f950836 100644 --- a/t/unit/utils/test_utils.py +++ b/t/unit/utils/test_utils.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from kombu import version_info_t diff --git a/t/unit/utils/test_uuid.py b/t/unit/utils/test_uuid.py index 521d652b4..bc69474a7 100644 --- a/t/unit/utils/test_uuid.py +++ b/t/unit/utils/test_uuid.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from kombu.utils.uuid import uuid