localstack-core 4.13.2.dev95__py3-none-any.whl → 4.13.2.dev97__py3-none-any.whl

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.
@@ -2679,8 +2679,11 @@ class GlacierJobParameters(TypedDict, total=False):
2679
2679
 
2680
2680
 
2681
2681
  class HeadBucketOutput(TypedDict, total=False):
2682
- BucketRegion: BucketRegion | None
2683
- BucketContentType: BucketContentType | None
2682
+ BucketArn: S3RegionalOrS3ExpressBucketArnString | None
2683
+ BucketLocationType: LocationType | None
2684
+ BucketLocationName: BucketLocationName | None
2685
+ BucketRegion: Region | None
2686
+ AccessPointAlias: AccessPointAlias | None
2684
2687
 
2685
2688
 
2686
2689
  class HeadBucketRequest(ServiceRequest):
@@ -62,32 +62,6 @@
62
62
  "type": "string"
63
63
  }
64
64
  },
65
- {
66
- "op": "add",
67
- "path": "/shapes/HeadBucketOutput",
68
- "value": {
69
- "type": "structure",
70
- "members": {
71
- "BucketRegion": {
72
- "shape": "BucketRegion",
73
- "location": "header",
74
- "locationName": "x-amz-bucket-region"
75
- },
76
- "BucketContentType": {
77
- "shape": "BucketContentType",
78
- "location": "header",
79
- "locationName": "content-type"
80
- }
81
- }
82
- }
83
- },
84
- {
85
- "op": "add",
86
- "path": "/operations/HeadBucket/output",
87
- "value": {
88
- "shape": "HeadBucketOutput"
89
- }
90
- },
91
65
  {
92
66
  "op": "add",
93
67
  "path": "/operations/PutBucketPolicy/http/responseCode",
@@ -558,8 +558,12 @@ class S3Provider(S3Api, ServiceLifecycleHook):
558
558
  BucketName=bucket_name,
559
559
  )
560
560
  else:
561
+ existing_bucket = store.buckets[bucket_name]
561
562
  # CreateBucket is idempotent in us-east-1
562
- return CreateBucketOutput(Location=f"/{bucket_name}")
563
+ return CreateBucketOutput(
564
+ Location=f"/{bucket_name}",
565
+ BucketArn=existing_bucket.bucket_arn,
566
+ )
563
567
 
564
568
  if (
565
569
  object_ownership := request.get("ObjectOwnership")
@@ -596,7 +600,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
596
600
  if bucket_region == "us-east-1"
597
601
  else get_full_default_bucket_location(bucket_name)
598
602
  )
599
- response = CreateBucketOutput(Location=location)
603
+ response = CreateBucketOutput(Location=location, BucketArn=s3_bucket.bucket_arn)
600
604
  return response
601
605
 
602
606
  def delete_bucket(
@@ -675,6 +679,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
675
679
  Name=bucket.name,
676
680
  CreationDate=bucket.creation_date,
677
681
  BucketRegion=bucket.bucket_region,
682
+ BucketArn=bucket.bucket_arn,
678
683
  )
679
684
  buckets.append(output_bucket)
680
685
  count += 1
@@ -713,7 +718,9 @@ class S3Provider(S3Api, ServiceLifecycleHook):
713
718
 
714
719
  # TODO: this call is also used to check if the user has access/authorization for the bucket
715
720
  # it can return 403
716
- return HeadBucketOutput(BucketRegion=s3_bucket.bucket_region)
721
+ return HeadBucketOutput(
722
+ BucketRegion=s3_bucket.bucket_region, BucketArn=s3_bucket.bucket_arn
723
+ )
717
724
 
718
725
  def get_bucket_location(
719
726
  self,
@@ -1734,6 +1741,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
1734
1741
  copy_object_result[f"Checksum{s3_object.checksum_algorithm.upper()}"] = (
1735
1742
  s3_object.checksum_value
1736
1743
  )
1744
+ copy_object_result["ChecksumType"] = s3_object.checksum_type
1737
1745
 
1738
1746
  response = CopyObjectOutput(
1739
1747
  CopyObjectResult=copy_object_result,
@@ -2356,7 +2364,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
2356
2364
  checksum_algorithm = request.get("ChecksumAlgorithm")
2357
2365
  if checksum_algorithm and checksum_algorithm not in CHECKSUM_ALGORITHMS:
2358
2366
  raise InvalidRequest(
2359
- "Checksum algorithm provided is unsupported. Please try again with any of the valid types: [CRC32, CRC32C, SHA1, SHA256]"
2367
+ "Checksum algorithm provided is unsupported. Please try again with any of the valid types: [CRC32, CRC32C, CRC64NVME, SHA1, SHA256]"
2360
2368
  )
2361
2369
 
2362
2370
  if not (checksum_type := request.get("ChecksumType")) and checksum_algorithm:
@@ -2401,7 +2409,11 @@ class S3Provider(S3Api, ServiceLifecycleHook):
2401
2409
 
2402
2410
  acl = get_access_control_policy_for_new_resource_request(request, owner=s3_bucket.owner)
2403
2411
 
2404
- # validate encryption values
2412
+ initiator = get_owner_for_account_id(context.account_id)
2413
+ # This is weird, but for all other operations, AWS does not return a DisplayName anymore except for the
2414
+ # `initiator` field in Multipart related operation. We will probably remove this soon once AWS changes that
2415
+ initiator["DisplayName"] = "webfile"
2416
+
2405
2417
  s3_multipart = S3Multipart(
2406
2418
  key=key,
2407
2419
  storage_class=storage_class,
@@ -2420,7 +2432,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
2420
2432
  website_redirect_location=request.get("WebsiteRedirectLocation"),
2421
2433
  expiration=None, # TODO, from lifecycle, or should it be updated with config?
2422
2434
  acl=acl,
2423
- initiator=get_owner_for_account_id(context.account_id),
2435
+ initiator=initiator,
2424
2436
  tagging=tagging,
2425
2437
  owner=s3_bucket.owner,
2426
2438
  precondition=object_exists_for_precondition_write(s3_bucket, key),
@@ -2987,7 +2999,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
2987
2999
  Key=key,
2988
3000
  UploadId=upload_id,
2989
3001
  Initiator=s3_multipart.initiator,
2990
- Owner=s3_multipart.initiator,
3002
+ Owner=s3_multipart.object.owner,
2991
3003
  StorageClass=s3_multipart.object.storage_class,
2992
3004
  IsTruncated=is_truncated,
2993
3005
  MaxParts=max_parts,
@@ -3103,7 +3115,7 @@ class S3Provider(S3Api, ServiceLifecycleHook):
3103
3115
  Key=multipart.object.key,
3104
3116
  Initiated=multipart.initiated,
3105
3117
  StorageClass=multipart.object.storage_class,
3106
- Owner=multipart.initiator, # TODO: check the difference
3118
+ Owner=multipart.object.owner,
3107
3119
  Initiator=multipart.initiator,
3108
3120
  )
3109
3121
  if multipart.checksum_algorithm:
@@ -146,7 +146,6 @@ def get_owner_for_account_id(account_id: str):
146
146
  :return: the Owner object containing the DisplayName and owner ID
147
147
  """
148
148
  return Owner(
149
- DisplayName="webfile", # only in certain regions, see above
150
149
  ID="75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a",
151
150
  )
152
151
 
@@ -468,13 +468,11 @@ def validate_sse_c(
468
468
  raise InvalidArgument(
469
469
  "Requests specifying Server Side Encryption with Customer provided keys must provide a valid encryption algorithm.",
470
470
  ArgumentName="x-amz-server-side-encryption",
471
- ArgumentValue="null",
472
471
  )
473
472
  elif not encryption_key and algorithm:
474
473
  raise InvalidArgument(
475
474
  "Requests specifying Server Side Encryption with Customer provided keys must provide an appropriate secret key.",
476
475
  ArgumentName="x-amz-server-side-encryption",
477
- ArgumentValue="null",
478
476
  )
479
477
 
480
478
  if algorithm != "AES256":
@@ -489,7 +487,6 @@ def validate_sse_c(
489
487
  raise InvalidArgument(
490
488
  "The secret key was invalid for the specified algorithm.",
491
489
  ArgumentName="x-amz-server-side-encryption",
492
- ArgumentValue="null",
493
490
  )
494
491
 
495
492
  sse_customer_key_md5 = base64.b64encode(hashlib.md5(sse_customer_key).digest()).decode("utf-8")
@@ -498,7 +495,6 @@ def validate_sse_c(
498
495
  "The calculated MD5 hash of the key did not match the hash that was provided.",
499
496
  # weirdly, the argument name is wrong, it should be `x-amz-server-side-encryption-customer-key-MD5`
500
497
  ArgumentName="x-amz-server-side-encryption",
501
- ArgumentValue="null",
502
498
  )
503
499
 
504
500
 
localstack/version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '4.13.2.dev95'
32
- __version_tuple__ = version_tuple = (4, 13, 2, 'dev95')
31
+ __version__ = version = '4.13.2.dev97'
32
+ __version_tuple__ = version_tuple = (4, 13, 2, 'dev97')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: localstack-core
3
- Version: 4.13.2.dev95
3
+ Version: 4.13.2.dev97
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ localstack/deprecations.py,sha256=-3IYgCd6LEC3PjO7hbr3Dg-p0PIS6phjmv1qZnj1uo0,15
4
4
  localstack/openapi.yaml,sha256=jFUzv-NKkJttxb8HRrmKiNYOmJD-zVfPxG3DDMrRwfg,30865
5
5
  localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
6
6
  localstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- localstack/version.py,sha256=ECUh-2xINbiqtptWs-PiJa13VlCHRcq_6sLouBAkZ5Y,721
7
+ localstack/version.py,sha256=EN8kOekf5kMEONoKGSDAI50IbkwtW4Ha1D-WS99STs8,721
8
8
  localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
10
10
  localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
@@ -19,7 +19,7 @@ localstack/aws/mocking.py,sha256=JZZ7ZyAmlCGzywTF8jH4IelPGIiLqyz_ltDtO046a3E,136
19
19
  localstack/aws/patches.py,sha256=r5EDhDE_OL25fQzT6oEhV7LvpBzTisOqxdn-JD_ZfrI,1883
20
20
  localstack/aws/scaffold.py,sha256=bHxaAyWF2-E5Fh6gRte0_1oX8jnCepChKUicfkb7lQg,20602
21
21
  localstack/aws/skeleton.py,sha256=7R0M8X5hnoPxdZ1sy0oaBOu_gWAFS4ZrIYUx5617VZs,8832
22
- localstack/aws/spec-patches.json,sha256=w13utQLNiMtkpu1fKRASguVKsrRXK2AW0rkguw7lgqE,43458
22
+ localstack/aws/spec-patches.json,sha256=_zbeWyJy1uB1jtkE6CzDqfVwYvJwxIuomUU-WBUyRhc,42833
23
23
  localstack/aws/spec.py,sha256=WT_sqIIKjWjrD-lBfJFgbvmrfhAbcqak5cfOQdnBJZo,14976
24
24
  localstack/aws/api/__init__.py,sha256=JspwCauxfTTdLNVAr7AkQaPu1lELdBQ1miB9B9sndOo,297
25
25
  localstack/aws/api/core.py,sha256=7qi_hFySJTnOSh1Kv-FCAp2JNpK5jP8sucoG-VTyH4k,6913
@@ -47,7 +47,7 @@ localstack/aws/api/resource_groups/__init__.py,sha256=eilEP-LAkxzC8GiOlYfFNxHLZg
47
47
  localstack/aws/api/resourcegroupstaggingapi/__init__.py,sha256=tlfCHtScE373jJNTnRprpB-4t4anDOKGt24aLYXUBAE,9662
48
48
  localstack/aws/api/route53/__init__.py,sha256=7i5ABGde2cnREs7kAR1uti7hQ5Shu9IG6Tn0YhEXX2A,72165
49
49
  localstack/aws/api/route53resolver/__init__.py,sha256=9AJUZOY7qBu4L19XS6UI1uElgeVJAM4z6uEgZnW7qH0,60642
50
- localstack/aws/api/s3/__init__.py,sha256=PVa4E22AOw84OK0U3WXRD-DNF5td8YbMJdXBjkiRcDo,164903
50
+ localstack/aws/api/s3/__init__.py,sha256=4TbbQpi2GwcZDkvtiwhWnwog_sRuRbeq-0HOVpS39Gc,165048
51
51
  localstack/aws/api/s3control/__init__.py,sha256=fBtuowABO2w0qc-Lw_E5Dv7bwcHx9x_GbTwgkv2QlAw,96176
52
52
  localstack/aws/api/scheduler/__init__.py,sha256=dgx7bSPUyNnMzV1frLgwKOJN_UFdMcnucd1hdxhRmNM,15390
53
53
  localstack/aws/api/secretsmanager/__init__.py,sha256=lpwKUpWzcH4efRKrqifufamTOG6dn4dM3Lye4f4zvXo,24001
@@ -690,9 +690,9 @@ localstack/services/s3/headers.py,sha256=jh0R2vhdnB5pWiVCoV26kqup53dBWz3iQIE3mhP
690
690
  localstack/services/s3/models.py,sha256=moQL38yVh3Bk5tgMIzW2yiIF1E2GdgO56ahOiTY5GTc,31239
691
691
  localstack/services/s3/notifications.py,sha256=JRvZTs3YpEXX-tPdliarVKjKsp42fdzrTNOC51y2-8I,32568
692
692
  localstack/services/s3/presigned_url.py,sha256=rAp8JdscT8ND4qxaHjSsfibEjEvPJ3CIVI0hwHDyJcA,38868
693
- localstack/services/s3/provider.py,sha256=PRQ_ssi8EmVF6YAQPF_Rz7UACkGRD-YU75d9Wg91k1c,204055
694
- localstack/services/s3/utils.py,sha256=yRE4P_ULUIt4WxU55WtIkxj584lObisjolzPKtlIYnM,44432
695
- localstack/services/s3/validation.py,sha256=KPs960rBpUOK9Ui3TqPubqT7t2PNox8l5vRP9U-o9CE,20539
693
+ localstack/services/s3/provider.py,sha256=YlqkZQpCgFw7pwOOV8NF2KHXRkT1lvFVUQfHdAmIf4A,204671
694
+ localstack/services/s3/utils.py,sha256=CKx6DuarUxxQ2d6gLciqoKY95Q5hfzj4wzgg8n91j1U,44363
695
+ localstack/services/s3/validation.py,sha256=wMTShZu48Xpjdc6Y_nkztvjja9Rv4JWXkD8CLyAbBSo,20403
696
696
  localstack/services/s3/website_hosting.py,sha256=I4cE7omiN7EBQjdlvueSb_DaD8cwEZxeh7K-H_We30k,16672
697
697
  localstack/services/s3/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
698
698
  localstack/services/s3/resource_providers/aws_s3_bucket.py,sha256=usTd16U_pw5MG3DBCLNNFQfwWiW5iAPvsT-OGQRjm9k,22770
@@ -1311,10 +1311,10 @@ localstack/utils/server/tcp_proxy.py,sha256=y2NJAmvftTiAYsLU_8qe4W5LGqwUw21i90Pu
1311
1311
  localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1312
1312
  localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
1313
1313
  localstack/utils/xray/traceid.py,sha256=GKO-R2sMMjlrH2UaLPXlQlZ6flbE7ZKb6IZMtMu_M5U,1110
1314
- localstack_core-4.13.2.dev95.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1315
- localstack_core-4.13.2.dev95.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1316
- localstack_core-4.13.2.dev95.dist-info/METADATA,sha256=UlmBC7h3BV1ob3OZj30ee4j4oTpu2v8UAX_DqzfbjKM,5867
1317
- localstack_core-4.13.2.dev95.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
1318
- localstack_core-4.13.2.dev95.dist-info/entry_points.txt,sha256=59aAnn8KVHWAHkMg2dOgmgYtRZ-xTX9T4UiIchWgK6k,20975
1319
- localstack_core-4.13.2.dev95.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1320
- localstack_core-4.13.2.dev95.dist-info/RECORD,,
1314
+ localstack_core-4.13.2.dev97.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
1315
+ localstack_core-4.13.2.dev97.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
1316
+ localstack_core-4.13.2.dev97.dist-info/METADATA,sha256=Jv6TQ87HJfC6yUWPpHMOu75bxGr7dGsa0l0MuRbKhXI,5867
1317
+ localstack_core-4.13.2.dev97.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
1318
+ localstack_core-4.13.2.dev97.dist-info/entry_points.txt,sha256=59aAnn8KVHWAHkMg2dOgmgYtRZ-xTX9T4UiIchWgK6k,20975
1319
+ localstack_core-4.13.2.dev97.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
1320
+ localstack_core-4.13.2.dev97.dist-info/RECORD,,