boto3 1.37.32__tar.gz → 1.37.34__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.37.32 → boto3-1.37.34}/PKG-INFO +2 -2
- {boto3-1.37.32 → boto3-1.37.34}/boto3/__init__.py +1 -1
- {boto3-1.37.32 → boto3-1.37.34}/boto3/compat.py +6 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/s3/inject.py +30 -1
- {boto3-1.37.32 → boto3-1.37.34}/boto3.egg-info/PKG-INFO +2 -2
- {boto3-1.37.32 → boto3-1.37.34}/boto3.egg-info/requires.txt +1 -1
- {boto3-1.37.32 → boto3-1.37.34}/setup.cfg +1 -1
- {boto3-1.37.32 → boto3-1.37.34}/setup.py +1 -1
- {boto3-1.37.32 → boto3-1.37.34}/CONTRIBUTING.rst +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/LICENSE +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/MANIFEST.in +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/NOTICE +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/README.rst +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/crt.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/cloudformation/2010-05-15/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/cloudwatch/2010-08-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/dynamodb/2012-08-10/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2014-10-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2015-03-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2015-04-15/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2015-10-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2016-04-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2016-09-15/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/ec2/2016-11-15/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/glacier/2012-06-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/iam/2010-05-08/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/opsworks/2013-02-18/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/s3/2006-03-01/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/sns/2010-03-31/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/data/sqs/2012-11-05/resources-1.json +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/__init__.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/action.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/attr.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/base.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/client.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/collection.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/docstring.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/method.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/resource.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/service.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/subresource.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/utils.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/docs/waiter.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/dynamodb/__init__.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/dynamodb/conditions.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/dynamodb/table.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/dynamodb/transform.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/dynamodb/types.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/ec2/__init__.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/ec2/createtags.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/ec2/deletetags.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/examples/cloudfront.rst +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/examples/s3.rst +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/exceptions.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/__init__.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/action.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/base.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/collection.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/factory.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/model.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/params.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/resources/response.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/s3/__init__.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/s3/constants.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/s3/transfer.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/session.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3/utils.py +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3.egg-info/SOURCES.txt +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3.egg-info/dependency_links.txt +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/boto3.egg-info/top_level.txt +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/pyproject.toml +0 -0
- {boto3-1.37.32 → boto3-1.37.34}/requirements.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: boto3
|
3
|
-
Version: 1.37.
|
3
|
+
Version: 1.37.34
|
4
4
|
Summary: The AWS SDK for Python
|
5
5
|
Home-page: https://github.com/boto/boto3
|
6
6
|
Author: Amazon Web Services
|
@@ -23,7 +23,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
23
23
|
Requires-Python: >= 3.8
|
24
24
|
License-File: LICENSE
|
25
25
|
License-File: NOTICE
|
26
|
-
Requires-Dist: botocore<1.38.0,>=1.37.
|
26
|
+
Requires-Dist: botocore<1.38.0,>=1.37.34
|
27
27
|
Requires-Dist: jmespath<2.0.0,>=0.7.1
|
28
28
|
Requires-Dist: s3transfer<0.12.0,>=0.11.0
|
29
29
|
Provides-Extra: crt
|
@@ -24,6 +24,8 @@ from boto3.exceptions import PythonDeprecationWarning
|
|
24
24
|
# ConnectionError
|
25
25
|
SOCKET_ERROR = ConnectionError
|
26
26
|
|
27
|
+
_APPEND_MODE_CHAR = 'a'
|
28
|
+
|
27
29
|
import collections.abc as collections_abc
|
28
30
|
|
29
31
|
|
@@ -80,3 +82,7 @@ def _warn_deprecated_python():
|
|
80
82
|
"later. More information can be found here: {}"
|
81
83
|
).format(py_version[0], py_version[1], params['date'], params['blog_link'])
|
82
84
|
warnings.warn(warning, PythonDeprecationWarning)
|
85
|
+
|
86
|
+
|
87
|
+
def is_append_mode(fileobj):
|
88
|
+
return hasattr(fileobj, 'mode') and _APPEND_MODE_CHAR in fileobj.mode
|
@@ -11,11 +11,13 @@
|
|
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
13
|
import copy as python_copy
|
14
|
+
import logging
|
14
15
|
from functools import partial
|
15
16
|
|
16
17
|
from botocore.exceptions import ClientError
|
17
18
|
|
18
19
|
from boto3 import utils
|
20
|
+
from boto3.compat import is_append_mode
|
19
21
|
from boto3.s3.transfer import (
|
20
22
|
ProgressCallbackInvoker,
|
21
23
|
S3Transfer,
|
@@ -47,6 +49,9 @@ except ImportError:
|
|
47
49
|
pass
|
48
50
|
|
49
51
|
|
52
|
+
logger = logging.getLogger(__name__)
|
53
|
+
|
54
|
+
|
50
55
|
def inject_s3_transfer_methods(class_attributes, **kwargs):
|
51
56
|
utils.inject_attribute(class_attributes, 'upload_file', upload_file)
|
52
57
|
utils.inject_attribute(class_attributes, 'download_file', download_file)
|
@@ -766,6 +771,27 @@ def object_upload_fileobj(
|
|
766
771
|
)
|
767
772
|
|
768
773
|
|
774
|
+
def disable_threading_if_append_mode(config, fileobj):
|
775
|
+
"""Set `TransferConfig.use_threads` to `False` if file-like
|
776
|
+
object is in append mode.
|
777
|
+
|
778
|
+
:type config: boto3.s3.transfer.TransferConfig
|
779
|
+
:param config: The transfer configuration to be used when performing the
|
780
|
+
download.
|
781
|
+
|
782
|
+
:type fileobj: A file-like object
|
783
|
+
:param fileobj: A file-like object to inspect for append mode.
|
784
|
+
"""
|
785
|
+
if is_append_mode(fileobj):
|
786
|
+
config.use_threads = False
|
787
|
+
logger.warning(
|
788
|
+
'A single thread will be used because the provided file object '
|
789
|
+
'is in append mode. Writes may always be appended to the end of '
|
790
|
+
'the file regardless of seek position, so a single thread must be '
|
791
|
+
'used to ensure sequential writes.'
|
792
|
+
)
|
793
|
+
|
794
|
+
|
769
795
|
@with_current_context(partial(register_feature_id, 'S3_TRANSFER'))
|
770
796
|
def download_fileobj(
|
771
797
|
self, Bucket, Key, Fileobj, ExtraArgs=None, Callback=None, Config=None
|
@@ -819,7 +845,10 @@ def download_fileobj(
|
|
819
845
|
if config is None:
|
820
846
|
config = TransferConfig()
|
821
847
|
|
822
|
-
|
848
|
+
new_config = python_copy.copy(config)
|
849
|
+
disable_threading_if_append_mode(new_config, Fileobj)
|
850
|
+
|
851
|
+
with create_transfer_manager(self, new_config) as manager:
|
823
852
|
future = manager.download(
|
824
853
|
bucket=Bucket,
|
825
854
|
key=Key,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: boto3
|
3
|
-
Version: 1.37.
|
3
|
+
Version: 1.37.34
|
4
4
|
Summary: The AWS SDK for Python
|
5
5
|
Home-page: https://github.com/boto/boto3
|
6
6
|
Author: Amazon Web Services
|
@@ -23,7 +23,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
23
23
|
Requires-Python: >= 3.8
|
24
24
|
License-File: LICENSE
|
25
25
|
License-File: NOTICE
|
26
|
-
Requires-Dist: botocore<1.38.0,>=1.37.
|
26
|
+
Requires-Dist: botocore<1.38.0,>=1.37.34
|
27
27
|
Requires-Dist: jmespath<2.0.0,>=0.7.1
|
28
28
|
Requires-Dist: s3transfer<0.12.0,>=0.11.0
|
29
29
|
Provides-Extra: crt
|
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
|
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
|