Upgrading kombu 4 to 5
Breaking4.6.11 → 5.6.2Breaking8Security3Platform5Deprecated1New46Changed180Fixed96Other216
BreakingUpgrade verdict
8 breaking changes and 5 platform requirement changes and 3 security fixes.
In plain terms
- Code that passed arguments to the Redis connection pool's get_connection method will break and must be updated.
- Removes deprecated importlib_metadata entry point interfaces.
- The separate lzma backport package is no longer supported; use the standard library lzma module.
- Removes backward compatible code that is no longer used.
Must act Top 5 of 17 that need code or config changes
Python requirement changed in 5.6.0rc2: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* → >=3.9.
Adds packaging, tzdata >=2025.2, vine ==5.1.0.
Installs 4 packages in all (was 2).
What you must change
Breaking8
Changes the redis.connection.ConnectionPool API so get_connection no longer accepts arguments.
redis.connection.ConnectionPoolget_connectionRemoves deprecated importlib_metadata entry point interfaces.
importlib_metadataDrops support for the lzma backport.
lzmaRemoves backward compatible code that is no longer used.
Drops support for the lzma backport.
lzmaDrops support for Python 2.
Reverts allowing users to disable broker heartbeats by not providing a timeout.
prepare_accept_content() now raises SerializerNotInstalled instead of KeyError.
prepare_accept_content()SerializerNotInstalledSecurity3
Hotfix in aws_ssl validates secure connections.
aws_sslValidates SQS SSL certificates by default.
Replaces mktemp to fix an improper method call.
mktempPlatform5
Removes Python 3.8 from CI as it is EOL.
Adds support for Python 3.13.
Adds support for Python 3.9.
Drops Python 3.6 from CI.
Adds support for Python 3.9.
Deprecations to plan for
Deprecated1
Deprecates pytz in favor of zoneinfo.
pytzzoneinfoAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- removed:
variable package
- removed:
property MaybeChannelBound.channel - removed:
property MaybeChannelBound.is_bound - changed:
class Object(object) → class Object - changed:
constructor Object(*args, **kwargs) → constructor Object(*args: Any, **kwargs: Any) -> None - changed:
field Object.attrs → field Object.attrs: tuple[tuple[str, Any], ...] - changed:
method MaybeChannelBound.bind(channel) → method MaybeChannelBound.bind(channel: Channel | Connection) -> _MaybeChannelBoundType - changed:
method MaybeChannelBound.maybe_bind(channel) → method MaybeChannelBound.maybe_bind(channel: Channel | Connection) -> _MaybeChannelBoundType - changed:
method MaybeChannelBound.revive(channel) → method MaybeChannelBound.revive(channel: Channel) -> None - changed:
method MaybeChannelBound.when_bound() → method MaybeChannelBound.when_bound() -> None - changed:
method Object.as_dict(recurse=…) → method Object.as_dict(recurse: bool=…) -> dict[str, Any] - added:
property MaybeChannelBound.channel -> Channel - added:
property MaybeChannelBound.is_bound -> bool
- changed:
function connect_sqs(aws_access_key_id=…, aws_secret_access_key=…, **kwargs) → function connect_sqs(aws_access_key_id: str | None=…, aws_secret_access_key: str | None=…, **kwargs: Any) -> AsyncSQSConnection - added:
export AsyncSQSConnection
- changed:
class AsyncConnection(object) → class AsyncConnection - changed:
class AsyncHTTPSConnection(object) → class AsyncHTTPSConnection
- added:
export get_cert_path - added:
function get_cert_path() -> str
- changed:
constructor AsyncSQSConnection(sqs_connection, debug=…, region=…, **kwargs) → constructor AsyncSQSConnection(sqs_connection, debug=…, region=…, message_system_attribute_names=…, message_attribute_names=…, **kwargs) - added:
method AsyncSQSConnection.make_request(operation_name, params, queue_url, verb, callback=…, protocol_params=…)
- changed:
function Client(hub=…, **kwargs) → function Client(hub: Hub | None=…, **kwargs: int) -> CurlClient
- changed:
class Request(object) → class Request - changed:
class Response(object) → class Response
- changed:
constructor CurlClient(hub=…, max_clients=…) → constructor CurlClient(hub: Hub | None=…, max_clients: int=…)
- changed:
class Hub(object) → class Hub - changed:
function get_event_loop() → function get_event_loop() -> Hub | None - changed:
function set_event_loop(loop) → function set_event_loop(loop: Hub | None) -> Hub | None
- changed:
class DummyLock(object) → class DummyLock - changed:
class LaxBoundedSemaphore(object) → class LaxBoundedSemaphore - changed:
constructor LaxBoundedSemaphore(value) → constructor LaxBoundedSemaphore(value: int) -> None - changed:
method LaxBoundedSemaphore.acquire(callback, *partial_args, **partial_kwargs) → method LaxBoundedSemaphore.acquire(callback: Callable[P, None], *partial_args: P.args, **partial_kwargs: P.kwargs) -> bool - changed:
method LaxBoundedSemaphore.clear() → method LaxBoundedSemaphore.clear() -> None - changed:
method LaxBoundedSemaphore.grow(n=…) → method LaxBoundedSemaphore.grow(n: int=…) -> None - changed:
method LaxBoundedSemaphore.release() → method LaxBoundedSemaphore.release() -> None - changed:
method LaxBoundedSemaphore.shrink(n=…) → method LaxBoundedSemaphore.shrink(n: int=…) -> None
- changed:
class Entry(object) → class Entry - changed:
class Timer(object) → class Timer
- changed:
class LamportClock(object) → class LamportClock - changed:
constructor LamportClock(initial_value=…, Lock=…) → constructor LamportClock(initial_value: int=…, Lock: type[Lock]=…) -> None - changed:
method LamportClock.adjust(other) → method LamportClock.adjust(other: int) -> int - changed:
method LamportClock.forward() → method LamportClock.forward() -> int - changed:
method LamportClock.sort_heap(h) → method LamportClock.sort_heap(h: list[tuple[int, str]]) -> tuple[int, str]
- removed:
property Connection.default_channel - changed:
class Connection(object) → class Connection - changed:
constructor Connection(hostname=…, userid=…, password=…, virtual_host=…, port=…, insist=…, ssl=…, transport=…, connect_timeout=…, transport_options=…, login_method=…, uri_prefix=…, heartbeat=…, failover_strategy=…, alternates=…, **kwargs) → constructor Connection(hostname=…, userid=…, password=…, virtual_host=…, port=…, insist=…, ssl=…, transport=…, connect_timeout=…, transport_options=…, login_method=…, uri_prefix=…, heartbeat=…, failover_strategy=…, alternates=…, credential_provider=…, **kwargs) - changed:
method Connection.as_uri(include_password=…, mask=…, getfields=…) → method Connection.as_uri(include_password=…, mask=…, getfields=…) -> str - changed:
method Connection.ensure(obj, fun, errback=…, max_retries=…, interval_start=…, interval_step=…, interval_max=…, on_revive=…) → method Connection.ensure(obj, fun, errback=…, max_retries=…, interval_start=…, interval_step=…, interval_max=…, on_revive=…, retry_errors=…) - added:
property Connection.default_channel -> Channel
- changed:
method Queue.consume(consumer_tag=…, callback=…, no_ack=…, nowait=…) → method Queue.consume(consumer_tag=…, callback=…, no_ack=…, nowait=…, on_cancel=…)
- changed:
constructor HttpError(code, message=…, response=…) → constructor HttpError(code: int, message: str | None=…, response: Response | None=…) -> None - added:
function reraise(tp: type[BaseExceptionType], value: BaseExceptionType, tb: TracebackType | None=…) -> BaseExceptionType
- changed:
class LogMixin(object) → class LogMixin
- changed:
class MatcherRegistry(object) → class MatcherRegistry - changed:
constructor MatcherRegistry() → constructor MatcherRegistry() -> None - changed:
function register_glob() → function register_glob() -> None - changed:
function register_pcre() → function register_pcre() -> None - changed:
method MatcherRegistry.match(data, pattern, matcher=…, matcher_kwargs=…) → method MatcherRegistry.match(data: bytes, pattern: bytes, matcher: str | None=…, matcher_kwargs: dict[str, str] | None=…) -> bool - changed:
method MatcherRegistry.register(name, matcher) → method MatcherRegistry.register(name: str, matcher: MatcherFunction) -> None - changed:
method MatcherRegistry.unregister(name) → method MatcherRegistry.unregister(name: str) -> None - added:
variable MatcherFunction
- changed:
class Message(object) → class Message
- changed:
class Consumer(object) → class Consumer - changed:
class Producer(object) → class Producer - changed:
method Producer.publish(body, routing_key=…, delivery_mode=…, mandatory=…, immediate=…, priority=…, content_type=…, content_encoding=…, serializer=…, headers=…, compression=…, exchange=…, retry=…, retry_policy=…, declare=…, expiration=…, **properties) → method Producer.publish(body, routing_key=…, delivery_mode=…, mandatory=…, immediate=…, priority=…, content_type=…, content_encoding=…, serializer=…, headers=…, compression=…, exchange=…, retry=…, retry_policy=…, declare=…, expiration=…, timeout=…, confirm_timeout=…, **properties)
- changed:
class ConsumerMixin(object) → class ConsumerMixin
- changed:
class Mailbox(object) → class Mailbox - changed:
class Node(object) → class Node - changed:
constructor Mailbox(namespace, type=…, connection=…, clock=…, accept=…, serializer=…, producer_pool=…, queue_ttl=…, queue_expires=…, reply_queue_ttl=…, reply_queue_expires=…) → constructor Mailbox(namespace, type=…, connection=…, clock=…, accept=…, serializer=…, producer_pool=…, queue_ttl=…, queue_expires=…, queue_durable=…, queue_exclusive=…, reply_queue_ttl=…, reply_queue_expires=…)
- removed:
class LifoQueue(_LifoQueue) - changed:
class Resource(object) → class Resource - changed:
method Resource.force_close_all() → method Resource.force_close_all(close_pool=…)
- removed:
variable pickle - added:
export pickle
- changed:
constructor SimpleQueue(channel, name, no_ack=…, queue_opts=…, queue_args=…, exchange_opts=…, serializer=…, compression=…, **kwargs) → constructor SimpleQueue(channel, name, no_ack=…, queue_opts=…, queue_args=…, exchange_opts=…, serializer=…, compression=…, accept=…)
- removed:
export string_t - changed:
function get_transport_cls(transport=…) → function get_transport_cls(transport: str | None=…) -> str | None - changed:
function resolve_transport(transport=…) → function resolve_transport(transport: str | None=…) -> str | None - changed:
function supports_librabbitmq() → function supports_librabbitmq() -> bool | None
- removed:
property Channel.wait_time_seconds - changed:
method Channel.new_sqs_client(region, access_key_id, secret_access_key) → method Channel.new_sqs_client(region, access_key_id, secret_access_key, session_token=…) - added:
class AccessDeniedQueueException(Exception) - added:
class DoesNotExistQueueException(Exception) - added:
class InvalidQueueException(Exception) - added:
class QoS(virtual.QoS) - added:
field Channel.B64_REGEX - added:
field Channel.QoS - added:
method Channel.generate_sts_session_token(role_arn, token_expiry_seconds) - added:
method Channel.generate_sts_session_token_with_buffer(role_arn, token_expiry_seconds, token_buffer_seconds=…) - added:
method QoS.apply_backoff_policy(routing_key, delivery_tag, backoff_policy, backoff_tasks) - added:
method QoS.extract_task_name_and_number_of_retries(delivery_tag) - added:
method QoS.reject(delivery_tag, requeue=…) - added:
property Channel.fetch_message_attributes - added:
property Channel.get_message_attributes -> dict[str, Any] - added:
property Channel.sqs_base64_encoding - added:
property Channel.wait_time_seconds -> int
- removed:
field Channel.default_peek_lock - removed:
field Channel.default_visibility_timeout - removed:
property Channel.peek_lock - removed:
property Channel.queue_name_prefix - removed:
property Channel.queue_service - removed:
property Channel.visibility_timeout - removed:
property Channel.wait_time_seconds - removed:
variable Message - removed:
variable Queue - removed:
variable ServiceBusService - changed:
field Channel.default_wait_time_seconds → field Channel.default_wait_time_seconds: int - changed:
field Channel.domain_format → field Channel.domain_format: str - changed:
method Channel.entity_name(name, table=…) → method Channel.entity_name(name: str, table: dict[int, int] | None=…) -> str - added:
class SendReceive - added:
constructor SendReceive(receiver: ServiceBusReceiver | None=…, sender: ServiceBusSender | None=…) - added:
field Channel.default_peek_lock_seconds: int - added:
field Channel.default_retry_backoff_factor: float - added:
field Channel.default_retry_backoff_max: int - added:
field Channel.default_retry_total: int - added:
field Channel.default_uamqp_keep_alive_interval: int - added:
field Transport.can_parse_url - added:
method Channel.basic_ack(delivery_tag: str, multiple: bool=…) -> None - added:
method Channel.basic_cancel(consumer_tag) - added:
method Channel.basic_consume(queue, no_ack, *args, **kwargs) - added:
method Channel.close() -> None - added:
method SendReceive.close() -> None - added:
property Channel.peek_lock_seconds -> int - added:
property Channel.queue_mgmt_service -> ServiceBusAdministrationClient - added:
property Channel.queue_name_prefix -> str - added:
property Channel.queue_service -> ServiceBusClient - added:
property Channel.retry_backoff_factor -> float - added:
property Channel.retry_backoff_max -> int - added:
property Channel.retry_total -> int - added:
property Channel.uamqp_keep_alive_interval -> int - added:
property Channel.wait_time_seconds -> int - added:
static method Transport.as_uri(uri: str, include_password=…, mask=…) -> str - added:
static method Transport.parse_uri(uri: str) -> tuple[str, str | DefaultAzureCredential | ManagedIdentityCredential] - added:
variable DefaultAzureCredential - added:
variable ManagedIdentityCredential - added:
variable PUNCTUATIONS_TO_REPLACE
- removed:
property Channel.queue_name_prefix - removed:
property Channel.queue_service - removed:
variable QueueService - changed:
field Channel.domain_format → field Channel.domain_format: str - changed:
field Channel.no_ack → field Channel.no_ack: bool - changed:
field Transport.default_port → field Transport.default_port: int | None - changed:
field Transport.polling_interval → field Transport.polling_interval: int - changed:
method Channel.entity_name(name, table=…) → method Channel.entity_name(name, table=…) -> str - added:
field Transport.can_parse_url: bool - added:
property Channel.queue_name_prefix -> str - added:
property Channel.queue_service -> QueueServiceClient - added:
static method Transport.as_uri(uri: str, include_password: bool=…, mask: str=…) -> str - added:
static method Transport.parse_uri(uri: str) -> tuple[str | dict, str] - added:
variable DefaultAzureCredential - added:
variable ManagedIdentityCredential - added:
variable QueueServiceClient
- changed:
class Management(object) → class Management - changed:
class StdChannel(object) → class StdChannel - changed:
class Transport(object) → class Transport - added:
method Transport.as_uri(uri: str, include_password=…, mask=…) -> str
- added:
class Channel(virtual.Channel) - added:
class Message(virtual.Message) - added:
class NoBrokersAvailable(KafkaException) - added:
class QoS(virtual.QoS) - added:
class Transport(virtual.Transport) - added:
constructor Channel(*args, **kwargs) - added:
constructor Message(payload, channel=…, **kwargs) - added:
constructor Transport(client, **kwargs) - added:
field Channel.Message - added:
field Channel.QoS - added:
field Channel.default_connection_wait_time_seconds - added:
field Channel.default_wait_time_seconds - added:
field NoBrokersAvailable.retriable - added:
field Transport.Channel - added:
field Transport.default_port - added:
field Transport.driver_name - added:
field Transport.driver_type - added:
field Transport.recoverable_connection_errors - added:
method Channel.close() - added:
method Channel.sanitize_queue_name(queue) - added:
method QoS.ack(delivery_tag) - added:
method QoS.append(message, delivery_tag) - added:
method QoS.can_consume() - added:
method QoS.can_consume_max_estimate() - added:
method QoS.get(delivery_tag) - added:
method QoS.reject(delivery_tag, requeue=…) - added:
method QoS.restore_unacked_once(stderr=…) - added:
method Transport.as_uri(uri: str, include_password=…, mask=…) -> str - added:
method Transport.close_connection(connection) - added:
method Transport.driver_version() - added:
method Transport.establish_connection() - added:
property Channel.client - added:
property Channel.common_config - added:
property Channel.connection_wait_time_seconds - added:
property Channel.conninfo - added:
property Channel.options - added:
property Channel.wait_time_seconds - added:
variable DEFAULT_PORT - added:
variable KAFKA_CHANNEL_ERRORS - added:
variable KAFKA_CONNECTION_ERRORS - added:
variable confluent_kafka - added:
variable logger
- added:
field Transport.channel_errors - added:
field Transport.connection_errors
- added:
field Transport.channel_errors - added:
field Transport.connection_errors
- added:
constructor Transport(client, **kwargs) - added:
field Channel.supports_fanout - added:
field Transport.global_state - added:
field Transport.implements - added:
method Channel.get_table(exchange) - added:
property Channel.control_folder - added:
variable exchange_queue_t
- added:
class AtomicCounter - added:
class Channel(virtual.Channel) - added:
class QueueDescriptor - added:
class Transport(virtual.Transport) - added:
class UnackedIds - added:
constructor AtomicCounter(initial=…) - added:
constructor Channel(*args, **kwargs) - added:
constructor Transport(client, **kwargs) - added:
constructor UnackedIds() - added:
field Channel.default_ack_deadline_seconds - added:
field Channel.default_bulk_max_messages - added:
field Channel.default_expiration_seconds - added:
field Channel.default_retry_timeout_seconds - added:
field Channel.default_wait_time_seconds - added:
field Channel.do_restore - added:
field Channel.supports_fanout - added:
field QueueDescriptor.name: str - added:
field QueueDescriptor.subscription_id: str - added:
field QueueDescriptor.subscription_path: str - added:
field QueueDescriptor.topic_path: str - added:
field QueueDescriptor.unacked_ids: UnackedIds - added:
field Transport.Channel - added:
field Transport.can_parse_url - added:
field Transport.channel_errors - added:
field Transport.connection_errors - added:
field Transport.driver_name - added:
field Transport.driver_type - added:
field Transport.implements - added:
field Transport.polling_interval - added:
method AtomicCounter.dec(n=…) - added:
method AtomicCounter.get() - added:
method AtomicCounter.inc(n=…) - added:
method Channel.after_reply_message_received(queue: str) - added:
method Channel.basic_ack(delivery_tag, multiple=…) - added:
method Channel.close() - added:
method Channel.entity_name(name: str, table=…) -> str - added:
method Transport.drain_events(connection, timeout=…) - added:
method Transport.driver_version() - added:
method UnackedIds.append(val) - added:
method UnackedIds.extend(vals: list) - added:
method UnackedIds.pop(index=…) - added:
method UnackedIds.remove(val) - added:
property Channel.ack_deadline_seconds - added:
property Channel.bulk_max_messages - added:
property Channel.conninfo - added:
property Channel.expiration_seconds - added:
property Channel.monitor - added:
property Channel.publisher - added:
property Channel.queue_name_prefix - added:
property Channel.retry_timeout_seconds - added:
property Channel.subscriber - added:
property Channel.transport_options - added:
property Channel.wait_time_seconds - added:
static method Transport.as_uri(uri: str, include_password=…, mask=…) -> str - added:
static method Transport.parse_uri(uri: str) -> str - added:
variable CHARS_REPLACE_TABLE - added:
variable PUNCTUATIONS_TO_REPLACE - added:
variable logger
- removed:
field Transport.state - added:
constructor Transport(client, **kwargs) - added:
field Transport.global_state
- changed:
class BroadcastCursor(object) → class BroadcastCursor - added:
method Transport.as_uri(uri: str, include_password=…, mask=…) -> str
- added:
function bind_queue_to_native_delayed_delivery_exchange(connection: Connection, queue: Queue) -> None - added:
function calculate_routing_key(countdown: int, routing_key: str) -> str - added:
function declare_native_delayed_delivery_exchanges_and_queues(connection: Connection, queue_type: str) -> None - added:
function level_name(level: int) -> str - added:
variable CELERY_DELAYED_DELIVERY_EXCHANGE - added:
variable MAX_LEVEL - added:
variable MAX_NUMBER_OF_BITS_TO_USE - added:
variable logger
- removed:
field Transport.state - changed:
class KombuBroker(object) → class KombuBroker - added:
constructor Transport(client, **kwargs) - added:
field Transport.global_state
- changed:
class Connection(object) → class Connection - changed:
class QoS(object) → class QoS - added:
variable buffer
- removed:
variable NO_ROUTE_ERROR - removed:
variable warn - changed:
class MultiChannelPoller(object) → class MultiChannelPoller - added:
class GlobalKeyPrefixMixin - added:
class PrefixedRedisPipeline(GlobalKeyPrefixMixin, redis.client.Pipeline) - added:
class PrefixedRedisPubSub(redis.client.PubSub) - added:
class PrefixedStrictRedis(GlobalKeyPrefixMixin, redis.Redis) - added:
class SentinelManagedSSLConnection(sentinel.SentinelManagedConnection, redis.SSLConnection) - added:
constructor PrefixedRedisPipeline(*args, **kwargs) - added:
constructor PrefixedRedisPubSub(*args, **kwargs) - added:
constructor PrefixedStrictRedis(*args, **kwargs) - added:
field Channel.client_name - added:
field Channel.connection_class_ssl - added:
field Channel.global_keyprefix - added:
field GlobalKeyPrefixMixin.PREFIXED_COMPLEX_COMMANDS - added:
field GlobalKeyPrefixMixin.PREFIXED_SIMPLE_COMMANDS - added:
field PrefixedRedisPubSub.PUBSUB_COMMANDS - added:
field SentinelChannel.connection_class_ssl - added:
field Transport.brpop_timeout - added:
field Transport.channel_errors - added:
field Transport.connection_errors - added:
method GlobalKeyPrefixMixin.execute_command(*args, **kwargs) - added:
method GlobalKeyPrefixMixin.parse_response(connection, command_name, **options) - added:
method GlobalKeyPrefixMixin.pipeline(transaction=…, shard_hint=…) - added:
method PrefixedRedisPubSub.execute_command(*args, **kwargs) - added:
method PrefixedRedisPubSub.parse_response(*args, **kwargs) - added:
method PrefixedStrictRedis.pubsub(**kwargs) - added:
variable CredentialProvider - added:
variable warning
- removed:
export Empty
- changed:
class Message(object) → class Message - changed:
class Queue(object) → class Queue
- removed:
field Transport.state - changed:
class AbstractChannel(object) → class AbstractChannel - changed:
class Base64(object) → class Base64 - changed:
class BrokerState(object) → class BrokerState - changed:
class QoS(object) → class QoS
- changed:
class ExchangeType(object) → class ExchangeType
- removed:
function NamedTuple(name, fields)
- changed:
class Logwrapped(object) → class Logwrapped - changed:
constructor Logwrapped(instance, logger=…, ident=…) → constructor Logwrapped(instance: Transport, logger: Logger | None=…, ident: str | None=…) - changed:
function setup_logging(loglevel=…, loggers=…) → function setup_logging(loglevel: int | None=…, loggers: list[str] | None=…) -> None
- removed:
variable bytes_t - removed:
variable ensure_bytes - removed:
variable str_t - changed:
function default_encode(obj, file=…) → function default_encode(obj)
- removed:
method LRUCache.items() - removed:
method LRUCache.keys() - removed:
method LRUCache.values() - changed:
class lazy(object) → class lazy - added:
function retry_over_time(fun, catch, args=…, kwargs=…, errback=…, max_retries=…, interval_start=…, interval_step=…, interval_max=…, callback=…, timeout=…)
- removed:
class DjangoPromise(object) - changed:
class JSONEncoder(_encoder_cls) → class JSONEncoder(json.JSONEncoder) - changed:
function loads(s, _loads=…, decode_bytes=…) → function loads(s, _loads=…, decode_bytes=…, object_hook=…) - changed:
method JSONEncoder.default(o, dates=…, times=…, textual=…, isinstance=…, datetime=…, text_t=…) → method JSONEncoder.default(o) - added:
function object_hook(o: dict) - added:
function register_type(t: type[T], marker: str | None, encoder: Callable[[T], EncodedT], decoder: Callable[[EncodedT], T]=…) - added:
variable DecoderT - added:
variable EncodedT - added:
variable EncoderT - added:
variable T - added:
variable textual_types
- changed:
class TokenBucket(object) → class TokenBucket
- changed:
class cached_property(object) → class cached_property(_cached_property) - changed:
constructor cached_property(fget=…, fset=…, fdel=…, doc=…) → constructor cached_property(fget=…, fset=…, fdel=…)
- changed:
class FairCycle(object) → class FairCycle - changed:
class round_robin_cycle(object) → class round_robin_cycle
- changed:
function fmatch_best(needle, haystack, min_ratio=…) → function fmatch_best(needle: str, haystack: Iterable[str], min_ratio: float=…) -> str | None - changed:
function fmatch_iter(needle, haystack, min_ratio=…) → function fmatch_iter(needle: str, haystack: Iterable[str], min_ratio: float=…) -> Iterator[tuple[float, str]] - changed:
function version_string_as_tuple(s) → function version_string_as_tuple(s: str) -> version_info_t
- changed:
function maybe_s_to_ms(v) → function maybe_s_to_ms(v: int | float | None) -> int | None
- removed:
variable urlparts - added:
class urlparts(NamedTuple) - added:
field urlparts.hostname: str - added:
field urlparts.password: str - added:
field urlparts.path: str - added:
field urlparts.port: int - added:
field urlparts.query: Mapping - added:
field urlparts.scheme: str - added:
field urlparts.username: str
- changed:
function uuid(_uuid=…) → function uuid(_uuid: Callable[[], UUID]=…) -> str