boto3 1.42.1__tar.gz → 1.42.23__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.
- {boto3-1.42.1 → boto3-1.42.23}/PKG-INFO +3 -3
- {boto3-1.42.1 → boto3-1.42.23}/README.rst +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/boto3/__init__.py +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/__init__.py +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/service.py +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/boto3/dynamodb/conditions.py +3 -3
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/base.py +7 -11
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/factory.py +3 -3
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/model.py +3 -3
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/params.py +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/boto3/s3/transfer.py +12 -8
- {boto3-1.42.1 → boto3-1.42.23}/boto3/session.py +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/boto3/utils.py +1 -11
- {boto3-1.42.1 → boto3-1.42.23}/boto3.egg-info/PKG-INFO +3 -3
- {boto3-1.42.1 → boto3-1.42.23}/boto3.egg-info/requires.txt +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/pyproject.toml +9 -1
- {boto3-1.42.1 → boto3-1.42.23}/setup.cfg +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/setup.py +1 -1
- {boto3-1.42.1 → boto3-1.42.23}/CONTRIBUTING.rst +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/LICENSE +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/MANIFEST.in +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/NOTICE +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/compat.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/crt.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/cloudformation/2010-05-15/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/cloudwatch/2010-08-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/dynamodb/2012-08-10/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2014-10-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2015-03-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2015-04-15/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2015-10-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2016-04-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2016-09-15/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/ec2/2016-11-15/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/glacier/2012-06-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/iam/2010-05-08/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/s3/2006-03-01/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/sns/2010-03-31/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/data/sqs/2012-11-05/resources-1.json +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/action.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/attr.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/base.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/client.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/collection.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/docstring.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/method.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/resource.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/subresource.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/utils.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/docs/waiter.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/dynamodb/__init__.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/dynamodb/table.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/dynamodb/transform.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/dynamodb/types.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/ec2/__init__.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/ec2/createtags.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/ec2/deletetags.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/examples/cloudfront.rst +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/examples/s3.rst +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/exceptions.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/__init__.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/action.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/collection.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/resources/response.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/s3/__init__.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/s3/constants.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3/s3/inject.py +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3.egg-info/SOURCES.txt +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3.egg-info/dependency_links.txt +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/boto3.egg-info/top_level.txt +0 -0
- {boto3-1.42.1 → boto3-1.42.23}/requirements.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: boto3
|
|
3
|
-
Version: 1.42.
|
|
3
|
+
Version: 1.42.23
|
|
4
4
|
Summary: The AWS SDK for Python
|
|
5
5
|
Home-page: https://github.com/boto/boto3
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -22,7 +22,7 @@ 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.43.0,>=1.42.
|
|
25
|
+
Requires-Dist: botocore<1.43.0,>=1.42.23
|
|
26
26
|
Requires-Dist: jmespath<2.0.0,>=0.7.1
|
|
27
27
|
Requires-Dist: s3transfer<0.17.0,>=0.16.0
|
|
28
28
|
Provides-Extra: crt
|
|
@@ -115,7 +115,7 @@ Then, set up a default region (in e.g. ``~/.aws/config``):
|
|
|
115
115
|
.. code-block:: ini
|
|
116
116
|
|
|
117
117
|
[default]
|
|
118
|
-
region=us-east-1
|
|
118
|
+
region = us-east-1
|
|
119
119
|
|
|
120
120
|
Other credential configuration methods can be found `here <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html>`__
|
|
121
121
|
|
|
@@ -85,7 +85,7 @@ Then, set up a default region (in e.g. ``~/.aws/config``):
|
|
|
85
85
|
.. code-block:: ini
|
|
86
86
|
|
|
87
87
|
[default]
|
|
88
|
-
region=us-east-1
|
|
88
|
+
region = us-east-1
|
|
89
89
|
|
|
90
90
|
Other credential configuration methods can be found `here <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html>`__
|
|
91
91
|
|
|
@@ -45,7 +45,7 @@ def generate_docs(root_dir, session):
|
|
|
45
45
|
service_name, session, services_doc_path
|
|
46
46
|
).document_service()
|
|
47
47
|
service_doc_path = os.path.join(
|
|
48
|
-
services_doc_path, service_name
|
|
48
|
+
services_doc_path, f"{service_name}.rst"
|
|
49
49
|
)
|
|
50
50
|
with open(service_doc_path, 'wb') as f:
|
|
51
51
|
f.write(docs)
|
|
@@ -190,7 +190,7 @@ class ServiceDocumenter(BaseServiceDocumenter):
|
|
|
190
190
|
|
|
191
191
|
def _get_example_file(self):
|
|
192
192
|
return os.path.realpath(
|
|
193
|
-
os.path.join(self.EXAMPLE_PATH, self._service_name
|
|
193
|
+
os.path.join(self.EXAMPLE_PATH, f"{self._service_name}.rst")
|
|
194
194
|
)
|
|
195
195
|
|
|
196
196
|
def _document_examples(self, section):
|
|
@@ -311,10 +311,10 @@ class ConditionExpressionBuilder:
|
|
|
311
311
|
self._value_placeholder = 'v'
|
|
312
312
|
|
|
313
313
|
def _get_name_placeholder(self):
|
|
314
|
-
return
|
|
314
|
+
return f"#{self._name_placeholder}{self._name_count}"
|
|
315
315
|
|
|
316
316
|
def _get_value_placeholder(self):
|
|
317
|
-
return
|
|
317
|
+
return f":{self._value_placeholder}{self._value_count}"
|
|
318
318
|
|
|
319
319
|
def reset(self):
|
|
320
320
|
"""Resets the placeholder name and values"""
|
|
@@ -451,7 +451,7 @@ class ConditionExpressionBuilder:
|
|
|
451
451
|
# Assuming the values are grouped by parenthesis.
|
|
452
452
|
# IN is the currently the only one that uses this so it maybe
|
|
453
453
|
# needed to be changed in future.
|
|
454
|
-
return
|
|
454
|
+
return f"({', '.join(placeholder_list)})"
|
|
455
455
|
# Otherwise, treat the value as a single value that needs only
|
|
456
456
|
# one placeholder.
|
|
457
457
|
else:
|
|
@@ -104,7 +104,7 @@ class ServiceResource:
|
|
|
104
104
|
# Allow setting identifiers as positional arguments in the order
|
|
105
105
|
# in which they were defined in the ResourceJSON.
|
|
106
106
|
for i, value in enumerate(args):
|
|
107
|
-
setattr(self,
|
|
107
|
+
setattr(self, f"_{self.meta.identifiers[i]}", value)
|
|
108
108
|
|
|
109
109
|
# Allow setting identifiers via keyword arguments. Here we need
|
|
110
110
|
# extra logic to ignore other keyword arguments like ``client``.
|
|
@@ -115,7 +115,7 @@ class ServiceResource:
|
|
|
115
115
|
if name not in self.meta.identifiers:
|
|
116
116
|
raise ValueError(f'Unknown keyword argument: {name}')
|
|
117
117
|
|
|
118
|
-
setattr(self,
|
|
118
|
+
setattr(self, f"_{name}", value)
|
|
119
119
|
|
|
120
120
|
# Validate that all identifiers have been set.
|
|
121
121
|
for identifier in self.meta.identifiers:
|
|
@@ -123,15 +123,11 @@ class ServiceResource:
|
|
|
123
123
|
raise ValueError(f'Required parameter {identifier} not set')
|
|
124
124
|
|
|
125
125
|
def __repr__(self):
|
|
126
|
-
identifiers = [
|
|
127
|
-
|
|
128
|
-
identifiers
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return "{}({})".format(
|
|
132
|
-
self.__class__.__name__,
|
|
133
|
-
', '.join(identifiers),
|
|
134
|
-
)
|
|
126
|
+
identifiers = [
|
|
127
|
+
f'{identifier}={repr(getattr(self, identifier))}'
|
|
128
|
+
for identifier in self.meta.identifiers
|
|
129
|
+
]
|
|
130
|
+
return f"{self.__class__.__name__}({', '.join(identifiers)})"
|
|
135
131
|
|
|
136
132
|
def __eq__(self, other):
|
|
137
133
|
# Should be instances of the same resource class
|
|
@@ -145,7 +145,7 @@ class ResourceFactory:
|
|
|
145
145
|
cls_name = resource_name
|
|
146
146
|
if service_context.service_name == resource_name:
|
|
147
147
|
cls_name = 'ServiceResource'
|
|
148
|
-
cls_name = service_context.service_name
|
|
148
|
+
cls_name = f"{service_context.service_name}.{cls_name}"
|
|
149
149
|
|
|
150
150
|
base_classes = [ServiceResource]
|
|
151
151
|
if self._emitter is not None:
|
|
@@ -325,7 +325,7 @@ class ResourceFactory:
|
|
|
325
325
|
# identifiers have a value ``None``. If any are ``None``,
|
|
326
326
|
# a more informative user error than a generic AttributeError
|
|
327
327
|
# is raised.
|
|
328
|
-
return getattr(self,
|
|
328
|
+
return getattr(self, f"_{identifier.name}", None)
|
|
329
329
|
|
|
330
330
|
get_identifier.__name__ = str(identifier.name)
|
|
331
331
|
get_identifier.__doc__ = docstring.IdentifierDocstring(
|
|
@@ -344,7 +344,7 @@ class ResourceFactory:
|
|
|
344
344
|
"""
|
|
345
345
|
|
|
346
346
|
def get_identifier(self):
|
|
347
|
-
return getattr(self,
|
|
347
|
+
return getattr(self, f"_{identifier.name}", None)
|
|
348
348
|
|
|
349
349
|
get_identifier.__name__ = str(identifier.member_name)
|
|
350
350
|
get_identifier.__doc__ = docstring.AttributeDocstring(
|
|
@@ -366,9 +366,9 @@ class ResourceModel:
|
|
|
366
366
|
name = xform_name(name)
|
|
367
367
|
|
|
368
368
|
if name in names:
|
|
369
|
-
logger.debug(
|
|
370
|
-
self._renamed[(category, name)] = name
|
|
371
|
-
name +=
|
|
369
|
+
logger.debug('Renaming %s %s %s', self.name, category, name)
|
|
370
|
+
self._renamed[(category, name)] = f"{name}_{category}"
|
|
371
|
+
name += f"_{category}"
|
|
372
372
|
|
|
373
373
|
if name in names:
|
|
374
374
|
# This isn't good, let's raise instead of trying to keep
|
|
@@ -132,7 +132,7 @@ def build_param_structure(params, target, value, index=None):
|
|
|
132
132
|
else:
|
|
133
133
|
# We have an explicit index
|
|
134
134
|
index = int(result.group(1))
|
|
135
|
-
part = part[: -len(
|
|
135
|
+
part = part[: -len(f"{index}[]")]
|
|
136
136
|
else:
|
|
137
137
|
# Index will be set after we know the proper part
|
|
138
138
|
# name and that it's a list instance.
|
|
@@ -175,13 +175,17 @@ def create_transfer_manager(client, config, osutil=None):
|
|
|
175
175
|
crt_transfer_manager = create_crt_transfer_manager(client, config)
|
|
176
176
|
if crt_transfer_manager is not None:
|
|
177
177
|
logger.debug(
|
|
178
|
-
|
|
178
|
+
"Using CRT client. pid: %s, thread: %s",
|
|
179
|
+
getpid(),
|
|
180
|
+
threading.get_ident(),
|
|
179
181
|
)
|
|
180
182
|
return crt_transfer_manager
|
|
181
183
|
|
|
182
184
|
# If we don't resolve something above, fallback to the default.
|
|
183
185
|
logger.debug(
|
|
184
|
-
|
|
186
|
+
"Using default client. pid: %s, thread: %s",
|
|
187
|
+
getpid(),
|
|
188
|
+
threading.get_ident(),
|
|
185
189
|
)
|
|
186
190
|
return _create_default_transfer_manager(client, config, osutil)
|
|
187
191
|
|
|
@@ -214,9 +218,11 @@ def _should_use_crt(config):
|
|
|
214
218
|
return True
|
|
215
219
|
|
|
216
220
|
logger.debug(
|
|
217
|
-
"Opting out of CRT Transfer Manager.
|
|
218
|
-
|
|
219
|
-
|
|
221
|
+
"Opting out of CRT Transfer Manager. "
|
|
222
|
+
"Preferred client: %s, CRT available: %s, Instance Optimized: %s",
|
|
223
|
+
pref_transfer_client,
|
|
224
|
+
HAS_CRT,
|
|
225
|
+
is_optimized_instance,
|
|
220
226
|
)
|
|
221
227
|
return False
|
|
222
228
|
|
|
@@ -450,9 +456,7 @@ class S3Transfer:
|
|
|
450
456
|
# client error.
|
|
451
457
|
except ClientError as e:
|
|
452
458
|
raise S3UploadFailedError(
|
|
453
|
-
"Failed to upload {} to {}: {}"
|
|
454
|
-
filename, '/'.join([bucket, key]), e
|
|
455
|
-
)
|
|
459
|
+
f"Failed to upload {filename} to {bucket}/{key}: {e}"
|
|
456
460
|
)
|
|
457
461
|
|
|
458
462
|
def download_file(
|
|
@@ -72,7 +72,7 @@ class Session:
|
|
|
72
72
|
if self._session.user_agent_name == 'Botocore':
|
|
73
73
|
botocore_info = f'Botocore/{self._session.user_agent_version}'
|
|
74
74
|
if self._session.user_agent_extra:
|
|
75
|
-
self._session.user_agent_extra +=
|
|
75
|
+
self._session.user_agent_extra += f" {botocore_info}"
|
|
76
76
|
else:
|
|
77
77
|
self._session.user_agent_extra = botocore_info
|
|
78
78
|
self._session.user_agent_name = 'Boto3'
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
|
-
import sys
|
|
14
13
|
from collections import namedtuple
|
|
14
|
+
from importlib import import_module
|
|
15
15
|
|
|
16
16
|
_ServiceContext = namedtuple(
|
|
17
17
|
'ServiceContext',
|
|
@@ -47,16 +47,6 @@ class ServiceContext(_ServiceContext):
|
|
|
47
47
|
pass
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
def import_module(name):
|
|
51
|
-
"""Import module given a name.
|
|
52
|
-
|
|
53
|
-
Does not support relative imports.
|
|
54
|
-
|
|
55
|
-
"""
|
|
56
|
-
__import__(name)
|
|
57
|
-
return sys.modules[name]
|
|
58
|
-
|
|
59
|
-
|
|
60
50
|
def lazy_call(full_name, **kwargs):
|
|
61
51
|
parent_kwargs = kwargs
|
|
62
52
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: boto3
|
|
3
|
-
Version: 1.42.
|
|
3
|
+
Version: 1.42.23
|
|
4
4
|
Summary: The AWS SDK for Python
|
|
5
5
|
Home-page: https://github.com/boto/boto3
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -22,7 +22,7 @@ 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.43.0,>=1.42.
|
|
25
|
+
Requires-Dist: botocore<1.43.0,>=1.42.23
|
|
26
26
|
Requires-Dist: jmespath<2.0.0,>=0.7.1
|
|
27
27
|
Requires-Dist: s3transfer<0.17.0,>=0.16.0
|
|
28
28
|
Provides-Extra: crt
|
|
@@ -115,7 +115,7 @@ Then, set up a default region (in e.g. ``~/.aws/config``):
|
|
|
115
115
|
.. code-block:: ini
|
|
116
116
|
|
|
117
117
|
[default]
|
|
118
|
-
region=us-east-1
|
|
118
|
+
region = us-east-1
|
|
119
119
|
|
|
120
120
|
Other credential configuration methods can be found `here <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html>`__
|
|
121
121
|
|
|
@@ -43,7 +43,15 @@ target-version = "py39"
|
|
|
43
43
|
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default.
|
|
44
44
|
# Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or
|
|
45
45
|
# McCabe complexity (`C901`) by default.
|
|
46
|
-
select = [
|
|
46
|
+
select = [
|
|
47
|
+
"E4", # pycodestyle
|
|
48
|
+
"E7", # pycodestyle
|
|
49
|
+
"E9", # pycodestyle
|
|
50
|
+
"F", # pyflakes
|
|
51
|
+
"G", # flake8-logging-format
|
|
52
|
+
"I", # isort
|
|
53
|
+
"UP", # pyupgrade
|
|
54
|
+
]
|
|
47
55
|
ignore = []
|
|
48
56
|
|
|
49
57
|
# Allow fix for all enabled rules (when `--fix`) is provided.
|
|
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
|
|
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
|