localstack-core 4.10.1.dev7__py3-none-any.whl → 4.10.1.dev42__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.
Files changed (77) hide show
  1. localstack/aws/api/acm/__init__.py +122 -122
  2. localstack/aws/api/apigateway/__init__.py +560 -559
  3. localstack/aws/api/cloudcontrol/__init__.py +63 -63
  4. localstack/aws/api/cloudformation/__init__.py +1040 -969
  5. localstack/aws/api/cloudwatch/__init__.py +375 -375
  6. localstack/aws/api/config/__init__.py +784 -786
  7. localstack/aws/api/dynamodb/__init__.py +753 -759
  8. localstack/aws/api/dynamodbstreams/__init__.py +74 -74
  9. localstack/aws/api/ec2/__init__.py +8901 -8818
  10. localstack/aws/api/es/__init__.py +453 -453
  11. localstack/aws/api/events/__init__.py +552 -552
  12. localstack/aws/api/firehose/__init__.py +541 -543
  13. localstack/aws/api/iam/__init__.py +639 -572
  14. localstack/aws/api/kinesis/__init__.py +235 -147
  15. localstack/aws/api/kms/__init__.py +340 -336
  16. localstack/aws/api/lambda_/__init__.py +574 -573
  17. localstack/aws/api/logs/__init__.py +676 -675
  18. localstack/aws/api/opensearch/__init__.py +814 -785
  19. localstack/aws/api/pipes/__init__.py +336 -336
  20. localstack/aws/api/redshift/__init__.py +1188 -1166
  21. localstack/aws/api/resource_groups/__init__.py +175 -175
  22. localstack/aws/api/resourcegroupstaggingapi/__init__.py +67 -67
  23. localstack/aws/api/route53/__init__.py +254 -254
  24. localstack/aws/api/route53resolver/__init__.py +396 -396
  25. localstack/aws/api/s3/__init__.py +1350 -1349
  26. localstack/aws/api/s3control/__init__.py +594 -594
  27. localstack/aws/api/scheduler/__init__.py +118 -118
  28. localstack/aws/api/secretsmanager/__init__.py +193 -193
  29. localstack/aws/api/ses/__init__.py +227 -227
  30. localstack/aws/api/sns/__init__.py +115 -115
  31. localstack/aws/api/sqs/__init__.py +100 -100
  32. localstack/aws/api/ssm/__init__.py +1977 -1971
  33. localstack/aws/api/stepfunctions/__init__.py +323 -323
  34. localstack/aws/api/sts/__init__.py +90 -66
  35. localstack/aws/api/support/__init__.py +112 -112
  36. localstack/aws/api/swf/__init__.py +378 -386
  37. localstack/aws/api/transcribe/__init__.py +425 -425
  38. localstack/aws/handlers/service.py +11 -1
  39. localstack/aws/protocol/parser.py +1 -1
  40. localstack/aws/scaffold.py +15 -17
  41. localstack/cli/localstack.py +6 -1
  42. localstack/dev/kubernetes/__main__.py +38 -3
  43. localstack/services/apigateway/helpers.py +5 -9
  44. localstack/services/apigateway/legacy/provider.py +32 -9
  45. localstack/services/apigateway/patches.py +0 -9
  46. localstack/services/cloudformation/provider.py +2 -2
  47. localstack/services/cloudformation/v2/provider.py +6 -6
  48. localstack/services/kinesis/packages.py +1 -1
  49. localstack/services/kms/models.py +34 -4
  50. localstack/services/kms/provider.py +93 -16
  51. localstack/services/lambda_/api_utils.py +3 -1
  52. localstack/services/lambda_/packages.py +1 -1
  53. localstack/services/lambda_/provider.py +1 -1
  54. localstack/services/lambda_/runtimes.py +8 -3
  55. localstack/services/logs/provider.py +36 -19
  56. localstack/services/s3/provider.py +1 -1
  57. localstack/services/sns/v2/models.py +24 -1
  58. localstack/services/sns/v2/provider.py +144 -12
  59. localstack/services/sns/v2/utils.py +8 -0
  60. localstack/services/sqs/models.py +37 -10
  61. localstack/testing/snapshots/transformer_utility.py +2 -0
  62. localstack/testing/testselection/matching.py +0 -1
  63. localstack/utils/aws/client_types.py +0 -8
  64. localstack/utils/catalog/catalog_loader.py +111 -3
  65. localstack/utils/crypto.py +109 -0
  66. localstack/version.py +2 -2
  67. {localstack_core-4.10.1.dev7.dist-info → localstack_core-4.10.1.dev42.dist-info}/METADATA +6 -5
  68. {localstack_core-4.10.1.dev7.dist-info → localstack_core-4.10.1.dev42.dist-info}/RECORD +76 -76
  69. localstack_core-4.10.1.dev42.dist-info/plux.json +1 -0
  70. localstack_core-4.10.1.dev7.dist-info/plux.json +0 -1
  71. {localstack_core-4.10.1.dev7.data → localstack_core-4.10.1.dev42.data}/scripts/localstack +0 -0
  72. {localstack_core-4.10.1.dev7.data → localstack_core-4.10.1.dev42.data}/scripts/localstack-supervisor +0 -0
  73. {localstack_core-4.10.1.dev7.data → localstack_core-4.10.1.dev42.data}/scripts/localstack.bat +0 -0
  74. {localstack_core-4.10.1.dev7.dist-info → localstack_core-4.10.1.dev42.dist-info}/WHEEL +0 -0
  75. {localstack_core-4.10.1.dev7.dist-info → localstack_core-4.10.1.dev42.dist-info}/entry_points.txt +0 -0
  76. {localstack_core-4.10.1.dev7.dist-info → localstack_core-4.10.1.dev42.dist-info}/licenses/LICENSE.txt +0 -0
  77. {localstack_core-4.10.1.dev7.dist-info → localstack_core-4.10.1.dev42.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime
2
2
  from enum import StrEnum
3
- from typing import Dict, List, Optional, TypedDict
3
+ from typing import TypedDict
4
4
 
5
5
  from localstack.aws.api import RequestContext, ServiceException, ServiceRequest, handler
6
6
 
@@ -274,8 +274,8 @@ class VerificationException(ServiceException):
274
274
  Status: string
275
275
 
276
276
 
277
- ActionsList = List[action]
278
- DelegatesList = List[delegate]
277
+ ActionsList = list[action]
278
+ DelegatesList = list[delegate]
279
279
 
280
280
 
281
281
  class AddPermissionInput(ServiceRequest):
@@ -288,11 +288,11 @@ class AddPermissionInput(ServiceRequest):
288
288
  class BatchResultErrorEntry(TypedDict, total=False):
289
289
  Id: String
290
290
  Code: String
291
- Message: Optional[String]
291
+ Message: String | None
292
292
  SenderFault: boolean
293
293
 
294
294
 
295
- BatchResultErrorEntryList = List[BatchResultErrorEntry]
295
+ BatchResultErrorEntryList = list[BatchResultErrorEntry]
296
296
  Binary = bytes
297
297
 
298
298
 
@@ -301,24 +301,24 @@ class CheckIfPhoneNumberIsOptedOutInput(ServiceRequest):
301
301
 
302
302
 
303
303
  class CheckIfPhoneNumberIsOptedOutResponse(TypedDict, total=False):
304
- isOptedOut: Optional[boolean]
304
+ isOptedOut: boolean | None
305
305
 
306
306
 
307
307
  class ConfirmSubscriptionInput(ServiceRequest):
308
308
  TopicArn: topicARN
309
309
  Token: token
310
- AuthenticateOnUnsubscribe: Optional[authenticateOnUnsubscribe]
310
+ AuthenticateOnUnsubscribe: authenticateOnUnsubscribe | None
311
311
 
312
312
 
313
313
  class ConfirmSubscriptionResponse(TypedDict, total=False):
314
- SubscriptionArn: Optional[subscriptionARN]
314
+ SubscriptionArn: subscriptionARN | None
315
315
 
316
316
 
317
317
  class CreateEndpointResponse(TypedDict, total=False):
318
- EndpointArn: Optional[String]
318
+ EndpointArn: String | None
319
319
 
320
320
 
321
- MapStringToString = Dict[String, String]
321
+ MapStringToString = dict[String, String]
322
322
 
323
323
 
324
324
  class CreatePlatformApplicationInput(ServiceRequest):
@@ -328,19 +328,19 @@ class CreatePlatformApplicationInput(ServiceRequest):
328
328
 
329
329
 
330
330
  class CreatePlatformApplicationResponse(TypedDict, total=False):
331
- PlatformApplicationArn: Optional[String]
331
+ PlatformApplicationArn: String | None
332
332
 
333
333
 
334
334
  class CreatePlatformEndpointInput(ServiceRequest):
335
335
  PlatformApplicationArn: String
336
336
  Token: String
337
- CustomUserData: Optional[String]
338
- Attributes: Optional[MapStringToString]
337
+ CustomUserData: String | None
338
+ Attributes: MapStringToString | None
339
339
 
340
340
 
341
341
  class CreateSMSSandboxPhoneNumberInput(ServiceRequest):
342
342
  PhoneNumber: PhoneNumberString
343
- LanguageCode: Optional[LanguageCodeString]
343
+ LanguageCode: LanguageCodeString | None
344
344
 
345
345
 
346
346
  class CreateSMSSandboxPhoneNumberResult(TypedDict, total=False):
@@ -352,19 +352,19 @@ class Tag(TypedDict, total=False):
352
352
  Value: TagValue
353
353
 
354
354
 
355
- TagList = List[Tag]
356
- TopicAttributesMap = Dict[attributeName, attributeValue]
355
+ TagList = list[Tag]
356
+ TopicAttributesMap = dict[attributeName, attributeValue]
357
357
 
358
358
 
359
359
  class CreateTopicInput(ServiceRequest):
360
360
  Name: topicName
361
- Attributes: Optional[TopicAttributesMap]
362
- Tags: Optional[TagList]
363
- DataProtectionPolicy: Optional[attributeValue]
361
+ Attributes: TopicAttributesMap | None
362
+ Tags: TagList | None
363
+ DataProtectionPolicy: attributeValue | None
364
364
 
365
365
 
366
366
  class CreateTopicResponse(TypedDict, total=False):
367
- TopicArn: Optional[topicARN]
367
+ TopicArn: topicARN | None
368
368
 
369
369
 
370
370
  class DeleteEndpointInput(ServiceRequest):
@@ -388,8 +388,8 @@ class DeleteTopicInput(ServiceRequest):
388
388
 
389
389
 
390
390
  class Endpoint(TypedDict, total=False):
391
- EndpointArn: Optional[String]
392
- Attributes: Optional[MapStringToString]
391
+ EndpointArn: String | None
392
+ Attributes: MapStringToString | None
393
393
 
394
394
 
395
395
  class GetDataProtectionPolicyInput(ServiceRequest):
@@ -397,7 +397,7 @@ class GetDataProtectionPolicyInput(ServiceRequest):
397
397
 
398
398
 
399
399
  class GetDataProtectionPolicyResponse(TypedDict, total=False):
400
- DataProtectionPolicy: Optional[attributeValue]
400
+ DataProtectionPolicy: attributeValue | None
401
401
 
402
402
 
403
403
  class GetEndpointAttributesInput(ServiceRequest):
@@ -405,7 +405,7 @@ class GetEndpointAttributesInput(ServiceRequest):
405
405
 
406
406
 
407
407
  class GetEndpointAttributesResponse(TypedDict, total=False):
408
- Attributes: Optional[MapStringToString]
408
+ Attributes: MapStringToString | None
409
409
 
410
410
 
411
411
  class GetPlatformApplicationAttributesInput(ServiceRequest):
@@ -413,18 +413,18 @@ class GetPlatformApplicationAttributesInput(ServiceRequest):
413
413
 
414
414
 
415
415
  class GetPlatformApplicationAttributesResponse(TypedDict, total=False):
416
- Attributes: Optional[MapStringToString]
416
+ Attributes: MapStringToString | None
417
417
 
418
418
 
419
- ListString = List[String]
419
+ ListString = list[String]
420
420
 
421
421
 
422
422
  class GetSMSAttributesInput(ServiceRequest):
423
- attributes: Optional[ListString]
423
+ attributes: ListString | None
424
424
 
425
425
 
426
426
  class GetSMSAttributesResponse(TypedDict, total=False):
427
- attributes: Optional[MapStringToString]
427
+ attributes: MapStringToString | None
428
428
 
429
429
 
430
430
  class GetSMSSandboxAccountStatusInput(ServiceRequest):
@@ -439,11 +439,11 @@ class GetSubscriptionAttributesInput(ServiceRequest):
439
439
  SubscriptionArn: subscriptionARN
440
440
 
441
441
 
442
- SubscriptionAttributesMap = Dict[attributeName, attributeValue]
442
+ SubscriptionAttributesMap = dict[attributeName, attributeValue]
443
443
 
444
444
 
445
445
  class GetSubscriptionAttributesResponse(TypedDict, total=False):
446
- Attributes: Optional[SubscriptionAttributesMap]
446
+ Attributes: SubscriptionAttributesMap | None
447
447
 
448
448
 
449
449
  class GetTopicAttributesInput(ServiceRequest):
@@ -451,123 +451,123 @@ class GetTopicAttributesInput(ServiceRequest):
451
451
 
452
452
 
453
453
  class GetTopicAttributesResponse(TypedDict, total=False):
454
- Attributes: Optional[TopicAttributesMap]
454
+ Attributes: TopicAttributesMap | None
455
455
 
456
456
 
457
457
  class ListEndpointsByPlatformApplicationInput(ServiceRequest):
458
458
  PlatformApplicationArn: String
459
- NextToken: Optional[String]
459
+ NextToken: String | None
460
460
 
461
461
 
462
- ListOfEndpoints = List[Endpoint]
462
+ ListOfEndpoints = list[Endpoint]
463
463
 
464
464
 
465
465
  class ListEndpointsByPlatformApplicationResponse(TypedDict, total=False):
466
- Endpoints: Optional[ListOfEndpoints]
467
- NextToken: Optional[String]
466
+ Endpoints: ListOfEndpoints | None
467
+ NextToken: String | None
468
468
 
469
469
 
470
470
  class PlatformApplication(TypedDict, total=False):
471
- PlatformApplicationArn: Optional[String]
472
- Attributes: Optional[MapStringToString]
471
+ PlatformApplicationArn: String | None
472
+ Attributes: MapStringToString | None
473
473
 
474
474
 
475
- ListOfPlatformApplications = List[PlatformApplication]
475
+ ListOfPlatformApplications = list[PlatformApplication]
476
476
 
477
477
 
478
478
  class ListOriginationNumbersRequest(ServiceRequest):
479
- NextToken: Optional[nextToken]
480
- MaxResults: Optional[MaxItemsListOriginationNumbers]
479
+ NextToken: nextToken | None
480
+ MaxResults: MaxItemsListOriginationNumbers | None
481
481
 
482
482
 
483
- NumberCapabilityList = List[NumberCapability]
483
+ NumberCapabilityList = list[NumberCapability]
484
484
  Timestamp = datetime
485
485
 
486
486
 
487
487
  class PhoneNumberInformation(TypedDict, total=False):
488
- CreatedAt: Optional[Timestamp]
489
- PhoneNumber: Optional[PhoneNumber]
490
- Status: Optional[String]
491
- Iso2CountryCode: Optional[Iso2CountryCode]
492
- RouteType: Optional[RouteType]
493
- NumberCapabilities: Optional[NumberCapabilityList]
488
+ CreatedAt: Timestamp | None
489
+ PhoneNumber: PhoneNumber | None
490
+ Status: String | None
491
+ Iso2CountryCode: Iso2CountryCode | None
492
+ RouteType: RouteType | None
493
+ NumberCapabilities: NumberCapabilityList | None
494
494
 
495
495
 
496
- PhoneNumberInformationList = List[PhoneNumberInformation]
496
+ PhoneNumberInformationList = list[PhoneNumberInformation]
497
497
 
498
498
 
499
499
  class ListOriginationNumbersResult(TypedDict, total=False):
500
- NextToken: Optional[nextToken]
501
- PhoneNumbers: Optional[PhoneNumberInformationList]
500
+ NextToken: nextToken | None
501
+ PhoneNumbers: PhoneNumberInformationList | None
502
502
 
503
503
 
504
504
  class ListPhoneNumbersOptedOutInput(ServiceRequest):
505
- nextToken: Optional[string]
505
+ nextToken: string | None
506
506
 
507
507
 
508
- PhoneNumberList = List[PhoneNumber]
508
+ PhoneNumberList = list[PhoneNumber]
509
509
 
510
510
 
511
511
  class ListPhoneNumbersOptedOutResponse(TypedDict, total=False):
512
- phoneNumbers: Optional[PhoneNumberList]
513
- nextToken: Optional[string]
512
+ phoneNumbers: PhoneNumberList | None
513
+ nextToken: string | None
514
514
 
515
515
 
516
516
  class ListPlatformApplicationsInput(ServiceRequest):
517
- NextToken: Optional[String]
517
+ NextToken: String | None
518
518
 
519
519
 
520
520
  class ListPlatformApplicationsResponse(TypedDict, total=False):
521
- PlatformApplications: Optional[ListOfPlatformApplications]
522
- NextToken: Optional[String]
521
+ PlatformApplications: ListOfPlatformApplications | None
522
+ NextToken: String | None
523
523
 
524
524
 
525
525
  class ListSMSSandboxPhoneNumbersInput(ServiceRequest):
526
- NextToken: Optional[nextToken]
527
- MaxResults: Optional[MaxItems]
526
+ NextToken: nextToken | None
527
+ MaxResults: MaxItems | None
528
528
 
529
529
 
530
530
  class SMSSandboxPhoneNumber(TypedDict, total=False):
531
- PhoneNumber: Optional[PhoneNumberString]
532
- Status: Optional[SMSSandboxPhoneNumberVerificationStatus]
531
+ PhoneNumber: PhoneNumberString | None
532
+ Status: SMSSandboxPhoneNumberVerificationStatus | None
533
533
 
534
534
 
535
- SMSSandboxPhoneNumberList = List[SMSSandboxPhoneNumber]
535
+ SMSSandboxPhoneNumberList = list[SMSSandboxPhoneNumber]
536
536
 
537
537
 
538
538
  class ListSMSSandboxPhoneNumbersResult(TypedDict, total=False):
539
539
  PhoneNumbers: SMSSandboxPhoneNumberList
540
- NextToken: Optional[string]
540
+ NextToken: string | None
541
541
 
542
542
 
543
543
  class ListSubscriptionsByTopicInput(ServiceRequest):
544
544
  TopicArn: topicARN
545
- NextToken: Optional[nextToken]
545
+ NextToken: nextToken | None
546
546
 
547
547
 
548
548
  class Subscription(TypedDict, total=False):
549
- SubscriptionArn: Optional[subscriptionARN]
550
- Owner: Optional[account]
551
- Protocol: Optional[protocol]
552
- Endpoint: Optional[endpoint]
553
- TopicArn: Optional[topicARN]
549
+ SubscriptionArn: subscriptionARN | None
550
+ Owner: account | None
551
+ Protocol: protocol | None
552
+ Endpoint: endpoint | None
553
+ TopicArn: topicARN | None
554
554
 
555
555
 
556
- SubscriptionsList = List[Subscription]
556
+ SubscriptionsList = list[Subscription]
557
557
 
558
558
 
559
559
  class ListSubscriptionsByTopicResponse(TypedDict, total=False):
560
- Subscriptions: Optional[SubscriptionsList]
561
- NextToken: Optional[nextToken]
560
+ Subscriptions: SubscriptionsList | None
561
+ NextToken: nextToken | None
562
562
 
563
563
 
564
564
  class ListSubscriptionsInput(ServiceRequest):
565
- NextToken: Optional[nextToken]
565
+ NextToken: nextToken | None
566
566
 
567
567
 
568
568
  class ListSubscriptionsResponse(TypedDict, total=False):
569
- Subscriptions: Optional[SubscriptionsList]
570
- NextToken: Optional[nextToken]
569
+ Subscriptions: SubscriptionsList | None
570
+ NextToken: nextToken | None
571
571
 
572
572
 
573
573
  class ListTagsForResourceRequest(ServiceRequest):
@@ -575,32 +575,32 @@ class ListTagsForResourceRequest(ServiceRequest):
575
575
 
576
576
 
577
577
  class ListTagsForResourceResponse(TypedDict, total=False):
578
- Tags: Optional[TagList]
578
+ Tags: TagList | None
579
579
 
580
580
 
581
581
  class ListTopicsInput(ServiceRequest):
582
- NextToken: Optional[nextToken]
582
+ NextToken: nextToken | None
583
583
 
584
584
 
585
585
  class Topic(TypedDict, total=False):
586
- TopicArn: Optional[topicARN]
586
+ TopicArn: topicARN | None
587
587
 
588
588
 
589
- TopicsList = List[Topic]
589
+ TopicsList = list[Topic]
590
590
 
591
591
 
592
592
  class ListTopicsResponse(TypedDict, total=False):
593
- Topics: Optional[TopicsList]
594
- NextToken: Optional[nextToken]
593
+ Topics: TopicsList | None
594
+ NextToken: nextToken | None
595
595
 
596
596
 
597
597
  class MessageAttributeValue(TypedDict, total=False):
598
598
  DataType: String
599
- StringValue: Optional[String]
600
- BinaryValue: Optional[Binary]
599
+ StringValue: String | None
600
+ BinaryValue: Binary | None
601
601
 
602
602
 
603
- MessageAttributeMap = Dict[String, MessageAttributeValue]
603
+ MessageAttributeMap = dict[String, MessageAttributeValue]
604
604
 
605
605
 
606
606
  class OptInPhoneNumberInput(ServiceRequest):
@@ -614,14 +614,14 @@ class OptInPhoneNumberResponse(TypedDict, total=False):
614
614
  class PublishBatchRequestEntry(TypedDict, total=False):
615
615
  Id: String
616
616
  Message: message
617
- Subject: Optional[subject]
618
- MessageStructure: Optional[messageStructure]
619
- MessageAttributes: Optional[MessageAttributeMap]
620
- MessageDeduplicationId: Optional[String]
621
- MessageGroupId: Optional[String]
617
+ Subject: subject | None
618
+ MessageStructure: messageStructure | None
619
+ MessageAttributes: MessageAttributeMap | None
620
+ MessageDeduplicationId: String | None
621
+ MessageGroupId: String | None
622
622
 
623
623
 
624
- PublishBatchRequestEntryList = List[PublishBatchRequestEntry]
624
+ PublishBatchRequestEntryList = list[PublishBatchRequestEntry]
625
625
 
626
626
 
627
627
  class PublishBatchInput(ServiceRequest):
@@ -630,34 +630,34 @@ class PublishBatchInput(ServiceRequest):
630
630
 
631
631
 
632
632
  class PublishBatchResultEntry(TypedDict, total=False):
633
- Id: Optional[String]
634
- MessageId: Optional[messageId]
635
- SequenceNumber: Optional[String]
633
+ Id: String | None
634
+ MessageId: messageId | None
635
+ SequenceNumber: String | None
636
636
 
637
637
 
638
- PublishBatchResultEntryList = List[PublishBatchResultEntry]
638
+ PublishBatchResultEntryList = list[PublishBatchResultEntry]
639
639
 
640
640
 
641
641
  class PublishBatchResponse(TypedDict, total=False):
642
- Successful: Optional[PublishBatchResultEntryList]
643
- Failed: Optional[BatchResultErrorEntryList]
642
+ Successful: PublishBatchResultEntryList | None
643
+ Failed: BatchResultErrorEntryList | None
644
644
 
645
645
 
646
646
  class PublishInput(ServiceRequest):
647
- TopicArn: Optional[topicARN]
648
- TargetArn: Optional[String]
649
- PhoneNumber: Optional[PhoneNumber]
647
+ TopicArn: topicARN | None
648
+ TargetArn: String | None
649
+ PhoneNumber: PhoneNumber | None
650
650
  Message: message
651
- Subject: Optional[subject]
652
- MessageStructure: Optional[messageStructure]
653
- MessageAttributes: Optional[MessageAttributeMap]
654
- MessageDeduplicationId: Optional[String]
655
- MessageGroupId: Optional[String]
651
+ Subject: subject | None
652
+ MessageStructure: messageStructure | None
653
+ MessageAttributes: MessageAttributeMap | None
654
+ MessageDeduplicationId: String | None
655
+ MessageGroupId: String | None
656
656
 
657
657
 
658
658
  class PublishResponse(TypedDict, total=False):
659
- MessageId: Optional[messageId]
660
- SequenceNumber: Optional[String]
659
+ MessageId: messageId | None
660
+ SequenceNumber: String | None
661
661
 
662
662
 
663
663
  class PutDataProtectionPolicyInput(ServiceRequest):
@@ -691,28 +691,28 @@ class SetSMSAttributesResponse(TypedDict, total=False):
691
691
  class SetSubscriptionAttributesInput(ServiceRequest):
692
692
  SubscriptionArn: subscriptionARN
693
693
  AttributeName: attributeName
694
- AttributeValue: Optional[attributeValue]
694
+ AttributeValue: attributeValue | None
695
695
 
696
696
 
697
697
  class SetTopicAttributesInput(ServiceRequest):
698
698
  TopicArn: topicARN
699
699
  AttributeName: attributeName
700
- AttributeValue: Optional[attributeValue]
700
+ AttributeValue: attributeValue | None
701
701
 
702
702
 
703
703
  class SubscribeInput(ServiceRequest):
704
704
  TopicArn: topicARN
705
705
  Protocol: protocol
706
- Endpoint: Optional[endpoint]
707
- Attributes: Optional[SubscriptionAttributesMap]
708
- ReturnSubscriptionArn: Optional[boolean]
706
+ Endpoint: endpoint | None
707
+ Attributes: SubscriptionAttributesMap | None
708
+ ReturnSubscriptionArn: boolean | None
709
709
 
710
710
 
711
711
  class SubscribeResponse(TypedDict, total=False):
712
- SubscriptionArn: Optional[subscriptionARN]
712
+ SubscriptionArn: subscriptionARN | None
713
713
 
714
714
 
715
- TagKeyList = List[TagKey]
715
+ TagKeyList = list[TagKey]
716
716
 
717
717
 
718
718
  class TagResourceRequest(ServiceRequest):
@@ -747,8 +747,8 @@ class VerifySMSSandboxPhoneNumberResult(TypedDict, total=False):
747
747
 
748
748
 
749
749
  class SnsApi:
750
- service = "sns"
751
- version = "2010-03-31"
750
+ service: str = "sns"
751
+ version: str = "2010-03-31"
752
752
 
753
753
  @handler("AddPermission")
754
754
  def add_permission(