Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-awscrt for openSUSE:Factory 
checked in at 2026-10-14 18:34:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-awscrt (Old)
 and      /work/SRC/openSUSE:Factory/.python-awscrt.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-awscrt"

Wed Oct 14 18:34:32 2026 rev:12 rq:1384277 version:0.37.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-awscrt/python-awscrt.changes      
2026-09-04 12:42:39.806332485 +0200
+++ /work/SRC/openSUSE:Factory/.python-awscrt.new.3698736/python-awscrt.changes 
2026-10-14 18:34:59.041524534 +0200
@@ -1,0 +2,12 @@
+Wed Oct  7 13:40:44 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to version 0.37.0
+  * Submodule update -- S3 out of order write to file in parallel
+    by @TingDaoK in (#769)
+- from version 0.36.4
+  * submodule update by @TingDaoK in (#766)
+- from version 0.36.3
+  * S3 Retry Option Bindings by @sbSteveK in (#764)
+  * latest submodules by @sbSteveK in (#765)
+
+-------------------------------------------------------------------

Old:
----
  awscrt-0.36.2.tar.gz

New:
----
  awscrt-0.37.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-awscrt.spec ++++++
--- /var/tmp/diff_new_pack.z8PwbH/_old  2026-10-14 18:34:59.818557061 +0200
+++ /var/tmp/diff_new_pack.z8PwbH/_new  2026-10-14 18:34:59.819557103 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-awscrt
-Version:        0.36.2
+Version:        0.37.0
 Release:        0
 Summary:        A common runtime for AWS Python projects
 License:        Apache-2.0

++++++ awscrt-0.36.2.tar.gz -> awscrt-0.37.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-crt-python-0.36.2/awscrt/aws_iot_metrics.py 
new/aws-crt-python-0.37.0/awscrt/aws_iot_metrics.py
--- old/aws-crt-python-0.36.2/awscrt/aws_iot_metrics.py 2026-08-11 
19:16:40.000000000 +0200
+++ new/aws-crt-python-0.37.0/awscrt/aws_iot_metrics.py 2026-09-23 
09:04:30.000000000 +0200
@@ -4,6 +4,7 @@
 from dataclasses import dataclass
 from typing import List, Optional
 from enum import Enum
+from awscrt.io import ExponentialBackoffJitterMode
 import sys
 
 
@@ -118,7 +119,6 @@
     Mapping: NONE->A, FULL->B, DECORRELATED->C.
     Returns None for DEFAULT.
     """
-    from awscrt.mqtt5 import ExponentialBackoffJitterMode
     mapping = {
         ExponentialBackoffJitterMode.NONE: "A",
         ExponentialBackoffJitterMode.FULL: "B",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-crt-python-0.36.2/awscrt/io.py 
new/aws-crt-python-0.37.0/awscrt/io.py
--- old/aws-crt-python-0.36.2/awscrt/io.py      2026-08-11 19:16:40.000000000 
+0200
+++ new/aws-crt-python-0.37.0/awscrt/io.py      2026-09-23 09:04:30.000000000 
+0200
@@ -854,3 +854,32 @@
             behavior = Pkcs11Lib.InitializeFinalizeBehavior.DEFAULT
 
         self._binding = _awscrt.pkcs11_lib_new(file, behavior)
+
+
+class ExponentialBackoffJitterMode(IntEnum):
+    """Controls how the retry/reconnect delay is modified in order to smooth 
out the distribution
+    of retry attempt timepoints for a large set of clients.
+
+    See `Exponential Backoff and Jitter 
<https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/>`_
+    """
+
+    DEFAULT = 0
+    """
+    Maps to Full
+    """
+
+    NONE = 1
+    """
+    Do not perform any randomization on the backoff delay
+    """
+
+    FULL = 2
+    """
+    Fully random between no delay and the current exponential backoff value.
+    """
+
+    DECORRELATED = 3
+    """
+    Backoff is taken randomly from the interval between the base backoff
+    interval and a scaling (greater than 1) of the current backoff value
+    """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-crt-python-0.36.2/awscrt/mqtt5.py 
new/aws-crt-python-0.37.0/awscrt/mqtt5.py
--- old/aws-crt-python-0.36.2/awscrt/mqtt5.py   2026-08-11 19:16:40.000000000 
+0200
+++ new/aws-crt-python-0.37.0/awscrt/mqtt5.py   2026-09-23 09:04:30.000000000 
+0200
@@ -11,7 +11,7 @@
 from enum import IntEnum
 from awscrt import NativeResource, exceptions
 from awscrt.http import HttpProxyOptions, HttpRequest
-from awscrt.io import ClientBootstrap, SocketOptions, ClientTlsContext
+from awscrt.io import ClientBootstrap, SocketOptions, ClientTlsContext, 
ExponentialBackoffJitterMode
 from dataclasses import dataclass
 from collections.abc import Sequence
 from inspect import signature
@@ -798,35 +798,6 @@
     """
 
 
-class ExponentialBackoffJitterMode(IntEnum):
-    """Controls how the reconnect delay is modified in order to smooth out the 
distribution of reconnection attempt
-    timepoints for a large set of reconnecting clients.
-
-    See `Exponential Backoff and Jitter 
<https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/>`_
-    """
-
-    DEFAULT = 0
-    """
-    Maps to Full
-    """
-
-    NONE = 1
-    """
-    Do not perform any randomization on the reconnect delay
-    """
-
-    FULL = 2
-    """
-    Fully random between no delay and the current exponential backoff value.
-    """
-
-    DECORRELATED = 3
-    """
-    Backoff is taken randomly from the interval between the base backoff
-    interval and a scaling (greater than 1) of the current backoff value
-    """
-
-
 @dataclass
 class UserProperty:
     """MQTT5 User Property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-crt-python-0.36.2/awscrt/s3.py 
new/aws-crt-python-0.37.0/awscrt/s3.py
--- old/aws-crt-python-0.36.2/awscrt/s3.py      2026-08-11 19:16:40.000000000 
+0200
+++ new/aws-crt-python-0.37.0/awscrt/s3.py      2026-09-23 09:04:30.000000000 
+0200
@@ -9,7 +9,7 @@
 from concurrent.futures import Future
 from awscrt import NativeResource
 from awscrt.http import HttpRequest
-from awscrt.io import ClientBootstrap, TlsConnectionOptions
+from awscrt.io import ClientBootstrap, TlsConnectionOptions, 
ExponentialBackoffJitterMode
 from awscrt.auth import AwsCredentialsProvider, AwsSignatureType, 
AwsSignedBodyHeaderType, AwsSignedBodyValue, \
     AwsSigningAlgorithm, AwsSigningConfig
 import awscrt.exceptions
@@ -197,6 +197,43 @@
     """
 
 
+@dataclass
+class S3RetryConfig:
+    """Configuration for the S3 client's retry strategy.
+
+    All fields default to 0, which means "use S3 client default."
+
+    S3 client defaults:
+        max_retries = 5, backoff_scale_factor_ms = 500, max_backoff_secs = 20,
+        jitter_mode = FULL, initial_bucket_capacity = 500
+
+    If the S3Client is constructed with a custom retry_strategy object,
+    this configuration is ignored entirely.
+
+    Args:
+        max_retries (int): Maximum number of retries per request.
+            0 means use S3 client default (5).
+
+        backoff_scale_factor_ms (int): Base delay in milliseconds,
+            multiplied by 2^attempt for exponential backoff. 0 means use 
default (500).
+
+        max_backoff_secs (int): Maximum backoff delay in seconds
+            (ceiling on any single retry delay). 0 means use default (20).
+
+        jitter_mode (int): Jitter mode for retry backoff.
+            0 means use default (FULL). See 
:class:`~awscrt.io.ExponentialBackoffJitterMode`.
+
+        initial_bucket_capacity (int): Token bucket capacity per
+            host partition (circuit breaker). Controls how many concurrent
+            failures are tolerated before retries are rejected. 0 means use 
default (500).
+    """
+    max_retries: int = 0
+    backoff_scale_factor_ms: int = 0
+    max_backoff_secs: int = 0
+    jitter_mode: int = 0
+    initial_bucket_capacity: int = 0
+
+
 class S3Client(NativeResource):
     """S3 client
 
@@ -283,6 +320,9 @@
         max_active_connections_override (Optional[int]):
             When set, this will cap the number of active connections for the 
meta request.
             When not set, the client will determine this value based on 
`throughput_target_gbps`. (Recommended)
+
+        retry_config (Optional[S3RetryConfig]): Configuration for the retry 
strategy.
+            See :class:`S3RetryConfig` for details. If not set, S3 client 
defaults are used.
     """
 
     __slots__ = ('shutdown_event', '_region')
@@ -303,7 +343,8 @@
             memory_limit=None,
             network_interface_names: Optional[Sequence[str]] = None,
             fio_options: Optional['S3FileIoOptions'] = None,
-            max_active_connections_override: Optional[int] = None):
+            max_active_connections_override: Optional[int] = None,
+            retry_config: Optional[S3RetryConfig] = None):
         assert isinstance(bootstrap, ClientBootstrap) or bootstrap is None
         assert isinstance(region, str)
         assert isinstance(signing_config, AwsSigningConfig) or signing_config 
is None
@@ -360,6 +401,11 @@
                 network_interface_names = list(network_interface_names)
         if max_active_connections_override is None:
             max_active_connections_override = 0
+
+        # Retry config: 0 means "use S3 client defaults"
+        if retry_config is None:
+            retry_config = S3RetryConfig()
+
         fio_options_set = False
         should_stream = False
         disk_throughput_gbps = 0.0
@@ -389,7 +435,12 @@
             disk_throughput_gbps,
             direct_io,
             max_active_connections_override,
-            s3_client_core)
+            s3_client_core,
+            retry_config.max_retries,
+            retry_config.backoff_scale_factor_ms,
+            retry_config.max_backoff_secs,
+            int(retry_config.jitter_mode),
+            retry_config.initial_bucket_capacity)
 
     def make_request(
             self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aws-crt-python-0.36.2/source/s3_client.c 
new/aws-crt-python-0.37.0/source/s3_client.c
--- old/aws-crt-python-0.36.2/source/s3_client.c        2026-08-11 
19:16:40.000000000 +0200
+++ new/aws-crt-python-0.37.0/source/s3_client.c        2026-09-23 
09:04:30.000000000 +0200
@@ -265,9 +265,15 @@
     uint64_t max_active_connections_override; /* K */
     PyObject *py_core;                        /* O */
 
+    uint64_t retry_max_retries;             /* K */
+    uint64_t retry_backoff_scale_factor_ms; /* K */
+    uint64_t retry_max_backoff_secs;        /* K */
+    int retry_jitter_mode;                  /* i */
+    uint64_t retry_initial_bucket_capacity; /* K */
+
     if (!PyArg_ParseTuple(
             args,
-            "OOOOOs#iKKdpKOppdpKO",
+            "OOOOOs#iKKdpKOppdpKOKKKiK",
             &bootstrap_py,
             &signing_config_py,
             &credential_provider_py,
@@ -287,7 +293,12 @@
             &disk_throughput_gbps,
             &direct_io,
             &max_active_connections_override,
-            &py_core)) {
+            &py_core,
+            &retry_max_retries,
+            &retry_backoff_scale_factor_ms,
+            &retry_max_backoff_secs,
+            &retry_jitter_mode,
+            &retry_initial_bucket_capacity)) {
         return NULL;
     }
 
@@ -414,6 +425,12 @@
         .max_active_connections_override = max_active_connections_override,
     };
 
+    s3_config.retry_config.max_retries = (size_t)retry_max_retries;
+    s3_config.retry_config.backoff_scale_factor_ms = 
(uint32_t)retry_backoff_scale_factor_ms;
+    s3_config.retry_config.max_backoff_secs = (uint32_t)retry_max_backoff_secs;
+    s3_config.retry_config.jitter_mode = (enum 
aws_exponential_backoff_jitter_mode)retry_jitter_mode;
+    s3_config.retry_config.initial_bucket_capacity = 
(size_t)retry_initial_bucket_capacity;
+
     s3_client->native = aws_s3_client_new(allocator, &s3_config);
     if (s3_client->native == NULL) {
         PyErr_SetAwsLastError();

Reply via email to