boto3 1.41.4__tar.gz → 1.42.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. {boto3-1.41.4 → boto3-1.42.0}/PKG-INFO +3 -3
  2. {boto3-1.41.4 → boto3-1.42.0}/boto3/__init__.py +1 -1
  3. {boto3-1.41.4 → boto3-1.42.0}/boto3/compat.py +5 -0
  4. {boto3-1.41.4 → boto3-1.42.0}/boto3/crt.py +53 -3
  5. {boto3-1.41.4 → boto3-1.42.0}/boto3/exceptions.py +4 -0
  6. {boto3-1.41.4 → boto3-1.42.0}/boto3/s3/constants.py +1 -0
  7. {boto3-1.41.4 → boto3-1.42.0}/boto3/s3/transfer.py +101 -28
  8. {boto3-1.41.4 → boto3-1.42.0}/boto3.egg-info/PKG-INFO +3 -3
  9. {boto3-1.41.4 → boto3-1.42.0}/boto3.egg-info/requires.txt +2 -2
  10. {boto3-1.41.4 → boto3-1.42.0}/setup.cfg +2 -2
  11. {boto3-1.41.4 → boto3-1.42.0}/setup.py +2 -2
  12. {boto3-1.41.4 → boto3-1.42.0}/CONTRIBUTING.rst +0 -0
  13. {boto3-1.41.4 → boto3-1.42.0}/LICENSE +0 -0
  14. {boto3-1.41.4 → boto3-1.42.0}/MANIFEST.in +0 -0
  15. {boto3-1.41.4 → boto3-1.42.0}/NOTICE +0 -0
  16. {boto3-1.41.4 → boto3-1.42.0}/README.rst +0 -0
  17. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/cloudformation/2010-05-15/resources-1.json +0 -0
  18. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/cloudwatch/2010-08-01/resources-1.json +0 -0
  19. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/dynamodb/2012-08-10/resources-1.json +0 -0
  20. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2014-10-01/resources-1.json +0 -0
  21. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2015-03-01/resources-1.json +0 -0
  22. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2015-04-15/resources-1.json +0 -0
  23. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2015-10-01/resources-1.json +0 -0
  24. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2016-04-01/resources-1.json +0 -0
  25. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2016-09-15/resources-1.json +0 -0
  26. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/ec2/2016-11-15/resources-1.json +0 -0
  27. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/glacier/2012-06-01/resources-1.json +0 -0
  28. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/iam/2010-05-08/resources-1.json +0 -0
  29. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/s3/2006-03-01/resources-1.json +0 -0
  30. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/sns/2010-03-31/resources-1.json +0 -0
  31. {boto3-1.41.4 → boto3-1.42.0}/boto3/data/sqs/2012-11-05/resources-1.json +0 -0
  32. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/__init__.py +0 -0
  33. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/action.py +0 -0
  34. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/attr.py +0 -0
  35. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/base.py +0 -0
  36. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/client.py +0 -0
  37. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/collection.py +0 -0
  38. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/docstring.py +0 -0
  39. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/method.py +0 -0
  40. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/resource.py +0 -0
  41. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/service.py +0 -0
  42. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/subresource.py +0 -0
  43. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/utils.py +0 -0
  44. {boto3-1.41.4 → boto3-1.42.0}/boto3/docs/waiter.py +0 -0
  45. {boto3-1.41.4 → boto3-1.42.0}/boto3/dynamodb/__init__.py +0 -0
  46. {boto3-1.41.4 → boto3-1.42.0}/boto3/dynamodb/conditions.py +0 -0
  47. {boto3-1.41.4 → boto3-1.42.0}/boto3/dynamodb/table.py +0 -0
  48. {boto3-1.41.4 → boto3-1.42.0}/boto3/dynamodb/transform.py +0 -0
  49. {boto3-1.41.4 → boto3-1.42.0}/boto3/dynamodb/types.py +0 -0
  50. {boto3-1.41.4 → boto3-1.42.0}/boto3/ec2/__init__.py +0 -0
  51. {boto3-1.41.4 → boto3-1.42.0}/boto3/ec2/createtags.py +0 -0
  52. {boto3-1.41.4 → boto3-1.42.0}/boto3/ec2/deletetags.py +0 -0
  53. {boto3-1.41.4 → boto3-1.42.0}/boto3/examples/cloudfront.rst +0 -0
  54. {boto3-1.41.4 → boto3-1.42.0}/boto3/examples/s3.rst +0 -0
  55. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/__init__.py +0 -0
  56. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/action.py +0 -0
  57. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/base.py +0 -0
  58. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/collection.py +0 -0
  59. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/factory.py +0 -0
  60. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/model.py +0 -0
  61. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/params.py +0 -0
  62. {boto3-1.41.4 → boto3-1.42.0}/boto3/resources/response.py +0 -0
  63. {boto3-1.41.4 → boto3-1.42.0}/boto3/s3/__init__.py +0 -0
  64. {boto3-1.41.4 → boto3-1.42.0}/boto3/s3/inject.py +0 -0
  65. {boto3-1.41.4 → boto3-1.42.0}/boto3/session.py +0 -0
  66. {boto3-1.41.4 → boto3-1.42.0}/boto3/utils.py +0 -0
  67. {boto3-1.41.4 → boto3-1.42.0}/boto3.egg-info/SOURCES.txt +0 -0
  68. {boto3-1.41.4 → boto3-1.42.0}/boto3.egg-info/dependency_links.txt +0 -0
  69. {boto3-1.41.4 → boto3-1.42.0}/boto3.egg-info/top_level.txt +0 -0
  70. {boto3-1.41.4 → boto3-1.42.0}/pyproject.toml +0 -0
  71. {boto3-1.41.4 → boto3-1.42.0}/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: boto3
3
- Version: 1.41.4
3
+ Version: 1.42.0
4
4
  Summary: The AWS SDK for Python
5
5
  Home-page: https://github.com/boto/boto3
6
6
  Author: Amazon Web Services
@@ -22,9 +22,9 @@ Classifier: Programming Language :: Python :: 3.14
22
22
  Requires-Python: >= 3.9
23
23
  License-File: LICENSE
24
24
  License-File: NOTICE
25
- Requires-Dist: botocore<1.42.0,>=1.41.4
25
+ Requires-Dist: botocore<1.42.0,>=1.41.6
26
26
  Requires-Dist: jmespath<2.0.0,>=0.7.1
27
- Requires-Dist: s3transfer<0.16.0,>=0.15.0
27
+ Requires-Dist: s3transfer<0.17.0,>=0.16.0
28
28
  Provides-Extra: crt
29
29
  Requires-Dist: botocore[crt]<2.0a0,>=1.21.0; extra == "crt"
30
30
 
@@ -18,7 +18,7 @@ from boto3.compat import _warn_deprecated_python
18
18
  from boto3.session import Session
19
19
 
20
20
  __author__ = 'Amazon Web Services'
21
- __version__ = '1.41.4'
21
+ __version__ = '1.42.0'
22
22
 
23
23
 
24
24
  # The default Boto3 session; autoloaded when needed.
@@ -18,6 +18,8 @@ import warnings
18
18
 
19
19
  from boto3.exceptions import PythonDeprecationWarning
20
20
 
21
+ from s3transfer.manager import TransferConfig
22
+
21
23
  # In python3, socket.error is OSError, which is too general
22
24
  # for what we want (i.e FileNotFoundError is a subclass of OSError).
23
25
  # In py3 all the socket related errors are in a newly created
@@ -29,6 +31,9 @@ _APPEND_MODE_CHAR = 'a'
29
31
  import collections.abc as collections_abc
30
32
 
31
33
 
34
+ TRANSFER_CONFIG_SUPPORTS_CRT = hasattr(TransferConfig, 'UNSET_DEFAULT')
35
+
36
+
32
37
  if sys.platform.startswith('win'):
33
38
  def rename_file(current_filename, new_filename):
34
39
  try:
@@ -19,6 +19,7 @@ project and is not intended for external consumption. All interfaces
19
19
  contained within are subject to abrupt breaking changes.
20
20
  """
21
21
 
22
+ import logging
22
23
  import threading
23
24
 
24
25
  import botocore.exceptions
@@ -31,6 +32,12 @@ from s3transfer.crt import (
31
32
  create_s3_crt_client,
32
33
  )
33
34
 
35
+ from boto3.compat import TRANSFER_CONFIG_SUPPORTS_CRT
36
+ from boto3.exceptions import InvalidCrtTransferConfigError
37
+ from boto3.s3.constants import CRT_TRANSFER_CLIENT
38
+
39
+ logger = logging.getLogger(__name__)
40
+
34
41
  # Singletons for CRT-backed transfers
35
42
  CRT_S3_CLIENT = None
36
43
  BOTOCORE_CRT_SERIALIZER = None
@@ -39,6 +46,15 @@ CLIENT_CREATION_LOCK = threading.Lock()
39
46
  PROCESS_LOCK_NAME = 'boto3'
40
47
 
41
48
 
49
+ _ALLOWED_CRT_TRANSFER_CONFIG_OPTIONS = {
50
+ 'multipart_threshold',
51
+ 'max_concurrency',
52
+ 'max_request_concurrency',
53
+ 'multipart_chunksize',
54
+ 'preferred_transfer_client',
55
+ }
56
+
57
+
42
58
  def _create_crt_client(session, config, region_name, cred_provider):
43
59
  """Create a CRT S3 Client for file transfer.
44
60
 
@@ -157,11 +173,45 @@ def compare_identity(boto3_creds, crt_s3_creds):
157
173
  return is_matching_identity
158
174
 
159
175
 
176
+ def _validate_crt_transfer_config(config):
177
+ if config is None:
178
+ return
179
+ # CRT client can also be configured via `AUTO_RESOLVE_TRANSFER_CLIENT`
180
+ # but it predates this validation. We only validate against CRT client
181
+ # configured via `CRT_TRANSFER_CLIENT` to preserve compatibility.
182
+ if config.preferred_transfer_client != CRT_TRANSFER_CLIENT:
183
+ return
184
+ invalid_crt_args = []
185
+ for param in config.DEFAULTS.keys():
186
+ val = config.get_deep_attr(param)
187
+ if (
188
+ param not in _ALLOWED_CRT_TRANSFER_CONFIG_OPTIONS
189
+ and val is not config.UNSET_DEFAULT
190
+ ):
191
+ invalid_crt_args.append(param)
192
+ if len(invalid_crt_args) > 0:
193
+ raise InvalidCrtTransferConfigError(
194
+ "The following transfer config options are invalid "
195
+ "when preferred_transfer_client is set to crt: "
196
+ f"{', '.join(invalid_crt_args)}`"
197
+ )
198
+
199
+
160
200
  def create_crt_transfer_manager(client, config):
161
201
  """Create a CRTTransferManager for optimized data transfer."""
162
202
  crt_s3_client = get_crt_s3_client(client, config)
163
203
  if is_crt_compatible_request(client, crt_s3_client):
164
- return CRTTransferManager(
165
- crt_s3_client.crt_client, BOTOCORE_CRT_SERIALIZER
166
- )
204
+ crt_transfer_manager_kwargs = {
205
+ 'crt_s3_client': crt_s3_client.crt_client,
206
+ 'crt_request_serializer': BOTOCORE_CRT_SERIALIZER,
207
+ }
208
+ if TRANSFER_CONFIG_SUPPORTS_CRT:
209
+ _validate_crt_transfer_config(config)
210
+ crt_transfer_manager_kwargs['config'] = config
211
+ if not TRANSFER_CONFIG_SUPPORTS_CRT and config:
212
+ logger.warning(
213
+ 'Using TransferConfig with CRT client requires '
214
+ 's3transfer >= 0.16.0, configured values will be ignored.'
215
+ )
216
+ return CRTTransferManager(**crt_transfer_manager_kwargs)
167
217
  return None
@@ -124,3 +124,7 @@ class PythonDeprecationWarning(Warning):
124
124
  """
125
125
 
126
126
  pass
127
+
128
+
129
+ class InvalidCrtTransferConfigError(Boto3Error):
130
+ pass
@@ -14,4 +14,5 @@
14
14
 
15
15
  # TransferConfig preferred_transfer_client settings
16
16
  CLASSIC_TRANSFER_CLIENT = "classic"
17
+ CRT_TRANSFER_CLIENT = "crt"
17
18
  AUTO_RESOLVE_TRANSFER_CLIENT = "auto"
@@ -128,7 +128,7 @@ import threading
128
128
  from os import PathLike, fspath, getpid
129
129
 
130
130
  from botocore.compat import HAS_CRT
131
- from botocore.exceptions import ClientError
131
+ from botocore.exceptions import ClientError, MissingDependencyException
132
132
  from s3transfer.exceptions import (
133
133
  RetriesExceededError as S3TransferRetriesExceededError,
134
134
  )
@@ -139,7 +139,11 @@ from s3transfer.subscribers import BaseSubscriber
139
139
  from s3transfer.utils import OSUtils
140
140
 
141
141
  import boto3.s3.constants as constants
142
- from boto3.exceptions import RetriesExceededError, S3UploadFailedError
142
+ from boto3.compat import TRANSFER_CONFIG_SUPPORTS_CRT
143
+ from boto3.exceptions import (
144
+ RetriesExceededError,
145
+ S3UploadFailedError,
146
+ )
143
147
 
144
148
  if HAS_CRT:
145
149
  import awscrt.s3
@@ -184,16 +188,26 @@ def create_transfer_manager(client, config, osutil=None):
184
188
 
185
189
  def _should_use_crt(config):
186
190
  # This feature requires awscrt>=0.19.18
187
- if HAS_CRT and has_minimum_crt_version((0, 19, 18)):
188
- is_optimized_instance = awscrt.s3.is_optimized_for_system()
189
- else:
190
- is_optimized_instance = False
191
+ has_min_crt = HAS_CRT and has_minimum_crt_version((0, 19, 18))
192
+ is_optimized_instance = has_min_crt and awscrt.s3.is_optimized_for_system()
191
193
  pref_transfer_client = config.preferred_transfer_client.lower()
192
194
 
195
+ if (
196
+ pref_transfer_client == constants.CRT_TRANSFER_CLIENT
197
+ and not has_min_crt
198
+ ):
199
+ msg = (
200
+ "CRT transfer client is configured but is missing minimum CRT "
201
+ f"version. CRT installed: {HAS_CRT}"
202
+ )
203
+ if HAS_CRT:
204
+ msg += f", with version: {awscrt.__version__}"
205
+ raise MissingDependencyException(msg=msg)
206
+
193
207
  if (
194
208
  is_optimized_instance
195
209
  and pref_transfer_client == constants.AUTO_RESOLVE_TRANSFER_CLIENT
196
- ):
210
+ ) or pref_transfer_client == constants.CRT_TRANSFER_CLIENT:
197
211
  logger.debug(
198
212
  "Attempting to use CRTTransferManager. Config settings may be ignored."
199
213
  )
@@ -235,18 +249,31 @@ class TransferConfig(S3TransferConfig):
235
249
  'max_concurrency': 'max_request_concurrency',
236
250
  'max_io_queue': 'max_io_queue_size',
237
251
  }
252
+ DEFAULTS = {
253
+ 'multipart_threshold': 8 * MB,
254
+ 'max_concurrency': 10,
255
+ 'max_request_concurrency': 10,
256
+ 'multipart_chunksize': 8 * MB,
257
+ 'num_download_attempts': 5,
258
+ 'max_io_queue': 100,
259
+ 'max_io_queue_size': 100,
260
+ 'io_chunksize': 256 * KB,
261
+ 'use_threads': True,
262
+ 'max_bandwidth': None,
263
+ 'preferred_transfer_client': constants.AUTO_RESOLVE_TRANSFER_CLIENT,
264
+ }
238
265
 
239
266
  def __init__(
240
267
  self,
241
- multipart_threshold=8 * MB,
242
- max_concurrency=10,
243
- multipart_chunksize=8 * MB,
244
- num_download_attempts=5,
245
- max_io_queue=100,
246
- io_chunksize=256 * KB,
247
- use_threads=True,
268
+ multipart_threshold=None,
269
+ max_concurrency=None,
270
+ multipart_chunksize=None,
271
+ num_download_attempts=None,
272
+ max_io_queue=None,
273
+ io_chunksize=None,
274
+ use_threads=None,
248
275
  max_bandwidth=None,
249
- preferred_transfer_client=constants.AUTO_RESOLVE_TRANSFER_CLIENT,
276
+ preferred_transfer_client=None,
250
277
  ):
251
278
  """Configuration object for managed S3 transfers
252
279
 
@@ -270,23 +297,30 @@ class TransferConfig(S3TransferConfig):
270
297
  Other retryable exceptions such as throttling errors and 5xx
271
298
  errors are already retried by botocore (this default is 5). This
272
299
  does not take into account the number of exceptions retried by
273
- botocore.
300
+ botocore. Note: This value is ignored when resolved transfer
301
+ manager type is CRTTransferManager.
274
302
 
275
303
  :param max_io_queue: The maximum amount of read parts that can be
276
304
  queued in memory to be written for a download. The size of each
277
305
  of these read parts is at most the size of ``io_chunksize``.
306
+ Note: This value is ignored when resolved transfer manager type
307
+ is CRTTransferManager.
278
308
 
279
309
  :param io_chunksize: The max size of each chunk in the io queue.
280
310
  Currently, this is size used when ``read`` is called on the
281
- downloaded stream as well.
311
+ downloaded stream as well. Note: This value is ignored when
312
+ resolved transfer manager type is CRTTransferManager.
282
313
 
283
314
  :param use_threads: If True, threads will be used when performing
284
315
  S3 transfers. If False, no threads will be used in
285
316
  performing transfers; all logic will be run in the current thread.
317
+ Note: This value is ignored when resolved transfer manager type is
318
+ CRTTransferManager.
286
319
 
287
320
  :param max_bandwidth: The maximum bandwidth that will be consumed
288
321
  in uploading and downloading file content. The value is an integer
289
- in terms of bytes per second.
322
+ in terms of bytes per second. Note: This value is ignored when
323
+ resolved transfer manager type is CRTTransferManager.
290
324
 
291
325
  :param preferred_transfer_client: String specifying preferred transfer
292
326
  client for transfer operations.
@@ -296,23 +330,40 @@ class TransferConfig(S3TransferConfig):
296
330
  are made with supported environment and settings.
297
331
  * classic - Only use the origin S3TransferManager with
298
332
  requests. Disables possible CRT upgrade on requests.
333
+ * crt - Only use the CRTTransferManager with requests.
299
334
  """
335
+ init_args = {
336
+ 'multipart_threshold': multipart_threshold,
337
+ 'max_concurrency': max_concurrency,
338
+ 'multipart_chunksize': multipart_chunksize,
339
+ 'num_download_attempts': num_download_attempts,
340
+ 'max_io_queue': max_io_queue,
341
+ 'io_chunksize': io_chunksize,
342
+ 'use_threads': use_threads,
343
+ 'max_bandwidth': max_bandwidth,
344
+ 'preferred_transfer_client': preferred_transfer_client,
345
+ }
346
+ resolved = self._resolve_init_args(init_args)
300
347
  super().__init__(
301
- multipart_threshold=multipart_threshold,
302
- max_request_concurrency=max_concurrency,
303
- multipart_chunksize=multipart_chunksize,
304
- num_download_attempts=num_download_attempts,
305
- max_io_queue_size=max_io_queue,
306
- io_chunksize=io_chunksize,
307
- max_bandwidth=max_bandwidth,
348
+ multipart_threshold=resolved['multipart_threshold'],
349
+ max_request_concurrency=resolved['max_concurrency'],
350
+ multipart_chunksize=resolved['multipart_chunksize'],
351
+ num_download_attempts=resolved['num_download_attempts'],
352
+ max_io_queue_size=resolved['max_io_queue'],
353
+ io_chunksize=resolved['io_chunksize'],
354
+ max_bandwidth=resolved['max_bandwidth'],
308
355
  )
309
356
  # Some of the argument names are not the same as the inherited
310
357
  # S3TransferConfig so we add aliases so you can still access the
311
358
  # old version of the names.
312
359
  for alias in self.ALIAS:
313
- setattr(self, alias, getattr(self, self.ALIAS[alias]))
314
- self.use_threads = use_threads
315
- self.preferred_transfer_client = preferred_transfer_client
360
+ setattr(
361
+ self,
362
+ alias,
363
+ object.__getattribute__(self, self.ALIAS[alias]),
364
+ )
365
+ self.use_threads = resolved['use_threads']
366
+ self.preferred_transfer_client = resolved['preferred_transfer_client']
316
367
 
317
368
  def __setattr__(self, name, value):
318
369
  # If the alias name is used, make sure we set the name that it points
@@ -322,6 +373,28 @@ class TransferConfig(S3TransferConfig):
322
373
  # Always set the value of the actual name provided.
323
374
  super().__setattr__(name, value)
324
375
 
376
+ def __getattribute__(self, item):
377
+ value = object.__getattribute__(self, item)
378
+ if not TRANSFER_CONFIG_SUPPORTS_CRT:
379
+ return value
380
+ defaults = object.__getattribute__(self, 'DEFAULTS')
381
+ if item not in defaults:
382
+ return value
383
+ if value is self.UNSET_DEFAULT:
384
+ return defaults[item]
385
+ return value
386
+
387
+ def _resolve_init_args(self, init_args):
388
+ resolved = {}
389
+ for init_arg, val in init_args.items():
390
+ if val is not None:
391
+ resolved[init_arg] = val
392
+ elif TRANSFER_CONFIG_SUPPORTS_CRT:
393
+ resolved[init_arg] = self.UNSET_DEFAULT
394
+ else:
395
+ resolved[init_arg] = self.DEFAULTS[init_arg]
396
+ return resolved
397
+
325
398
 
326
399
  class S3Transfer:
327
400
  ALLOWED_DOWNLOAD_ARGS = TransferManager.ALLOWED_DOWNLOAD_ARGS
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: boto3
3
- Version: 1.41.4
3
+ Version: 1.42.0
4
4
  Summary: The AWS SDK for Python
5
5
  Home-page: https://github.com/boto/boto3
6
6
  Author: Amazon Web Services
@@ -22,9 +22,9 @@ Classifier: Programming Language :: Python :: 3.14
22
22
  Requires-Python: >= 3.9
23
23
  License-File: LICENSE
24
24
  License-File: NOTICE
25
- Requires-Dist: botocore<1.42.0,>=1.41.4
25
+ Requires-Dist: botocore<1.42.0,>=1.41.6
26
26
  Requires-Dist: jmespath<2.0.0,>=0.7.1
27
- Requires-Dist: s3transfer<0.16.0,>=0.15.0
27
+ Requires-Dist: s3transfer<0.17.0,>=0.16.0
28
28
  Provides-Extra: crt
29
29
  Requires-Dist: botocore[crt]<2.0a0,>=1.21.0; extra == "crt"
30
30
 
@@ -1,6 +1,6 @@
1
- botocore<1.42.0,>=1.41.4
1
+ botocore<1.42.0,>=1.41.6
2
2
  jmespath<2.0.0,>=0.7.1
3
- s3transfer<0.16.0,>=0.15.0
3
+ s3transfer<0.17.0,>=0.16.0
4
4
 
5
5
  [crt]
6
6
  botocore[crt]<2.0a0,>=1.21.0
@@ -3,9 +3,9 @@ universal = 0
3
3
 
4
4
  [metadata]
5
5
  requires_dist =
6
- botocore>=1.41.4,<1.42.0
6
+ botocore>=1.41.6,<1.42.0
7
7
  jmespath>=0.7.1,<2.0.0
8
- s3transfer>=0.15.0,<0.16.0
8
+ s3transfer>=0.16.0,<0.17.0
9
9
 
10
10
  [options.extras_require]
11
11
  crt = botocore[crt]>=1.21.0,<2.0a0
@@ -14,9 +14,9 @@ VERSION_RE = re.compile(r'''__version__ = ['"]([0-9.]+)['"]''')
14
14
 
15
15
 
16
16
  requires = [
17
- 'botocore>=1.41.4,<1.42.0',
17
+ 'botocore>=1.41.6,<1.42.0',
18
18
  'jmespath>=0.7.1,<2.0.0',
19
- 's3transfer>=0.15.0,<0.16.0',
19
+ 's3transfer>=0.16.0,<0.17.0',
20
20
  ]
21
21
 
22
22
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes