localstack-sdk-python 0.0.3__tar.gz → 4.3.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 (153) hide show
  1. localstack_sdk_python-4.3.0/.github/workflows/release.yml +133 -0
  2. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/.gitignore +7 -1
  3. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/Makefile +15 -7
  4. localstack_sdk_python-4.3.0/PKG-INFO +70 -0
  5. localstack_sdk_python-4.3.0/README.md +56 -0
  6. localstack_sdk_python-4.3.0/bin/generate.sh +25 -0
  7. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/aws/client.py +186 -0
  8. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/chaos/client.py +69 -0
  9. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack/sdk/chaos/managers.py +5 -0
  10. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/clients.py +35 -0
  11. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/pods/client.py +115 -0
  12. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/pods/exceptions.py +18 -0
  13. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/state/client.py +19 -0
  14. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/testing/__init__.py +3 -0
  15. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/testing/decorators.py +31 -0
  16. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/testing/pytest/plugins.py +11 -0
  17. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/version.py +21 -0
  18. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack_sdk_python.egg-info/PKG-INFO +70 -0
  19. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack_sdk_python.egg-info/SOURCES.txt +35 -8
  20. localstack_sdk_python-4.3.0/localstack-sdk-python/localstack_sdk_python.egg-info/entry_points.txt +2 -0
  21. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/.openapi-generator/FILES +19 -2
  22. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/.openapi-generator/VERSION +1 -0
  23. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/__init__.py +1 -0
  24. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/aws_api.py +989 -206
  25. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/chaos_api.py +43 -43
  26. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/default_api.py +1 -1
  27. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/localstack_api.py +1 -1
  28. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/pods_api.py +122 -122
  29. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/pro_api.py +2373 -496
  30. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/api/replicator_api.py +1069 -0
  31. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api/state_api.py +125 -67
  32. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api_client.py +2 -2
  33. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/configuration.py +155 -40
  34. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/exceptions.py +1 -1
  35. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/__init__.py +19 -3
  36. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/action_and_resource.py +98 -0
  37. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/aws_pinpoint_application_id_reference_id_get200_response.py +1 -1
  38. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/check_actions_request.py +100 -0
  39. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/check_actions_request_required_permission_inner.py +90 -0
  40. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/check_actions_response.py +126 -0
  41. localstack_sdk_python-0.0.3/packages/localstack-sdk-generated/localstack/sdk/models/get_remote200_response.py → localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/check_actions_response_source_principal.py +10 -12
  42. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/cloud_watch_metrics.py +1 -1
  43. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/cloud_watch_metrics_metrics_inner.py +1 -1
  44. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/cloud_watch_metrics_metrics_inner_d_inner.py +1 -1
  45. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/cloud_watch_metrics_metrics_inner_d_inner_v.py +1 -1
  46. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/cloud_watch_metrics_metrics_inner_t.py +1 -1
  47. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/cloud_watch_metrics_metrics_inner_v.py +1 -1
  48. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/create_remote_request.py +1 -1
  49. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/delete_ddb_expired_items200_response.py +1 -1
  50. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/fault_rule.py +1 -1
  51. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/fault_rule_error.py +1 -1
  52. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_diagnostics200_response.py +1 -1
  53. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_diagnostics200_response_logs.py +1 -1
  54. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_diagnostics200_response_version.py +1 -1
  55. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_diagnostics200_response_version_host.py +1 -1
  56. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_diagnostics200_response_version_image_version.py +1 -1
  57. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_diagnostics200_response_version_localstack_version.py +1 -1
  58. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_features_and_services200_response.py +1 -1
  59. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_lambda_runtimes200_response.py +1 -1
  60. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_ses_messages200_response.py +1 -1
  61. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/get_sns_subscription_token200_response.py +1 -1
  62. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/iam_config.py +106 -0
  63. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/init_scripts.py +1 -1
  64. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/init_scripts_completed.py +1 -1
  65. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/init_scripts_scripts_inner.py +1 -1
  66. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/init_scripts_stage.py +1 -1
  67. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/init_scripts_stage_scripts_inner.py +1 -1
  68. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/list_remotes200_response.py +1 -1
  69. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/load_service.py +88 -0
  70. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/localstack_pods_environment_get200_response.py +1 -1
  71. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/localstack_stackinfo_get200_response.py +1 -1
  72. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/manage_session_request.py +1 -1
  73. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/message.py +1 -1
  74. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/network_effects_config.py +1 -1
  75. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/pod_list.py +1 -1
  76. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/pod_list_cloudpods_inner.py +1 -1
  77. localstack_sdk_python-0.0.3/packages/localstack-sdk-generated/localstack/sdk/models/list_remotes200_response_remotes_inner.py → localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/pod_remote.py +5 -5
  78. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/pod_save_request.py +1 -1
  79. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/pod_versions.py +1 -1
  80. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/pod_versions_versions_inner.py +1 -1
  81. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/receive_message_request.py +1 -1
  82. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/receive_message_result.py +1 -1
  83. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/remote_config.py +1 -1
  84. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/remote_config_one_of.py +1 -1
  85. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_config_mock.py +88 -0
  86. localstack_sdk_python-0.0.3/packages/localstack-sdk-generated/localstack/sdk/models/pod_remote.py → localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_config_single.py +12 -21
  87. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_job.py +96 -0
  88. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_request.py +107 -0
  89. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_request_source_aws_config.py +96 -0
  90. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_request_target_aws_config.py +96 -0
  91. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/replication_supported_resource.py +94 -0
  92. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/ses_destination.py +92 -0
  93. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/ses_sent_email.py +1 -1
  94. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/ses_sent_email_body.py +3 -3
  95. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/session_info.py +1 -1
  96. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/sns_message.py +122 -0
  97. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/sns_platform_endpoint_message.py +105 -0
  98. localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/sns_platform_endpoint_response.py +107 -0
  99. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/sns_subscription_token_error.py +1 -1
  100. localstack_sdk_python-0.0.3/packages/localstack-sdk-generated/localstack/sdk/models/get_sns_sms_messages200_response.py → localstack_sdk_python-4.3.0/packages/localstack-sdk-generated/localstack/sdk/models/snssms_messages_response.py +26 -22
  101. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/state_result.py +1 -1
  102. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/store_data200_response.py +1 -1
  103. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/update_config_option200_response.py +1 -1
  104. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/models/update_config_option_request.py +1 -1
  105. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/rest.py +1 -1
  106. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/pyproject.toml +7 -3
  107. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/templates/pyproject.mustache +7 -3
  108. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/pyproject.toml +14 -5
  109. localstack_sdk_python-4.3.0/tests/conftest.py +1 -0
  110. localstack_sdk_python-4.3.0/tests/integration/__init__.py +0 -0
  111. localstack_sdk_python-4.3.0/tests/integration/test_aws.py +225 -0
  112. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/tests/integration/test_pods.py +6 -0
  113. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/tests/integration/test_state.py +2 -8
  114. localstack_sdk_python-4.3.0/tests/test_client.py +7 -0
  115. localstack_sdk_python-4.3.0/tests/testing/__init__.py +0 -0
  116. localstack_sdk_python-4.3.0/tests/testing/test_decorators.py +29 -0
  117. localstack_sdk_python-4.3.0/tests/testing/test_fixtures.py +12 -0
  118. localstack_sdk_python-4.3.0/tests/utils.py +36 -0
  119. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/uv.lock +3 -5
  120. localstack_sdk_python-0.0.3/PKG-INFO +0 -39
  121. localstack_sdk_python-0.0.3/README.md +0 -26
  122. localstack_sdk_python-0.0.3/bin/generate.sh +0 -15
  123. localstack_sdk_python-0.0.3/localstack-sdk-python/localstack/clients.py +0 -18
  124. localstack_sdk_python-0.0.3/localstack-sdk-python/localstack/sdk/aws/client.py +0 -68
  125. localstack_sdk_python-0.0.3/localstack-sdk-python/localstack/sdk/chaos/client.py +0 -39
  126. localstack_sdk_python-0.0.3/localstack-sdk-python/localstack/sdk/pods/client.py +0 -77
  127. localstack_sdk_python-0.0.3/localstack-sdk-python/localstack/sdk/state/client.py +0 -11
  128. localstack_sdk_python-0.0.3/localstack-sdk-python/localstack_sdk_python.egg-info/PKG-INFO +0 -39
  129. localstack_sdk_python-0.0.3/packages/localstack-sdk-generated/.openapi-generator/VERSION +0 -1
  130. localstack_sdk_python-0.0.3/packages/localstack-sdk-generated/localstack/sdk/models/get_sns_messages200_response.py +0 -103
  131. localstack_sdk_python-0.0.3/requirements-spec.txt +0 -2
  132. localstack_sdk_python-0.0.3/scripts/create_spec.py +0 -20
  133. localstack_sdk_python-0.0.3/tests/integration/test_aws.py +0 -142
  134. localstack_sdk_python-0.0.3/tests/utils.py +0 -5
  135. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/.github/workflows/test.yml +0 -0
  136. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/LICENSE.txt +0 -0
  137. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack/sdk/aws/__init__.py +0 -0
  138. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack/sdk/chaos/__init__.py +0 -0
  139. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack/sdk/pods/__init__.py +0 -0
  140. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack/sdk/state/__init__.py +0 -0
  141. {localstack_sdk_python-0.0.3/tests → localstack_sdk_python-4.3.0/localstack-sdk-python/localstack/sdk/testing/pytest}/__init__.py +0 -0
  142. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack_sdk_python.egg-info/dependency_links.txt +0 -0
  143. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack_sdk_python.egg-info/requires.txt +0 -0
  144. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/localstack-sdk-python/localstack_sdk_python.egg-info/top_level.txt +0 -0
  145. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/.gitignore +0 -0
  146. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/.openapi-generator-ignore +0 -0
  147. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/api_response.py +0 -0
  148. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/localstack/sdk/py.typed +0 -0
  149. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/requirements.txt +0 -0
  150. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/packages/localstack-sdk-generated/templates/rest.mustache +0 -0
  151. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/setup.cfg +0 -0
  152. {localstack_sdk_python-0.0.3/tests/integration → localstack_sdk_python-4.3.0/tests}/__init__.py +0 -0
  153. {localstack_sdk_python-0.0.3 → localstack_sdk_python-4.3.0}/tests/integration/test_chaos.py +0 -0
@@ -0,0 +1,133 @@
1
+ name: Release LocalStack Python Client
2
+
3
+ on:
4
+ repository_dispatch:
5
+ types: [release-sdk]
6
+ workflow_dispatch:
7
+ inputs:
8
+ version:
9
+ description: The version of the OpenAPI spec to release the client for
10
+ required: true
11
+
12
+ env:
13
+ git_user_name: localstack[bot]
14
+ git_user_email: localstack-bot@users.noreply.github.com
15
+
16
+ jobs:
17
+
18
+ test_python:
19
+ runs-on: ubuntu-latest
20
+ env:
21
+ release: ${{ github.event_name == 'workflow_dispatch' && inputs.version || github.event.client_payload.version}}
22
+
23
+ steps:
24
+ - name: "Pull image"
25
+ run: |
26
+ docker pull localstack/localstack-pro:${{ env.release }}
27
+
28
+ - name: "Checkout"
29
+ uses: actions/checkout@v4
30
+ with:
31
+ # setuptools_scm requires git history to determine the version
32
+ fetch-depth: 0
33
+
34
+ - name: "Set up Python 3.11"
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: "3.11"
38
+
39
+ - name: "Install uv"
40
+ uses: astral-sh/setup-uv@v3
41
+
42
+ - name: "Generate code from spec"
43
+ run: |
44
+ make clean-generated
45
+ ./bin/generate.sh ${{ env.release }}
46
+
47
+ - name: "Prepare git config"
48
+ run: |
49
+ git config user.name ${{ env.git_user_name }}
50
+ git config user.email ${{ env.git_user_email }}
51
+
52
+ - name: "Commit changed code"
53
+ run: |
54
+ # Code automatically generated goes into the packages directory.
55
+ # As we generate code for the version to be released, we commit those changes.
56
+ if git status --porcelain packages/ | grep -q '^'; then
57
+ git add packages/
58
+ git commit -m "Generate code for ${{ env.release }}"
59
+
60
+ echo "Changes committed successfully"
61
+ else
62
+ echo "No changes detected after generating the code"
63
+ fi
64
+
65
+ - name: "Install project"
66
+ run: |
67
+ make install-dev
68
+
69
+ - name: "Install LocalStack"
70
+ run: |
71
+ pip install localstack==${{ env.release }}
72
+
73
+ - name: "Start Localstack"
74
+ env:
75
+ LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }}
76
+ run: |
77
+ source .venv/bin/activate
78
+ DEBUG=1 DISABLE_EVENTS="1" IMAGE_NAME="localstack/localstack-pro:${{ env.release }}" localstack start -d
79
+ localstack wait -t 120 || (python -m localstack.cli.main logs && false)
80
+
81
+ - name: "Run Python Tests"
82
+ env:
83
+ LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }}
84
+ run: |
85
+ make test
86
+
87
+ - name: "Stop Localstack"
88
+ if: success() || failure()
89
+ run: |
90
+ source .venv/bin/activate
91
+ localstack logs
92
+ localstack stop
93
+
94
+ - name: "Install release helper"
95
+ run: |
96
+ curl -o bin/release-helper.sh -L https://api.github.com/repos/localstack/localstack/contents/bin/release-helper.sh -H 'Accept: application/vnd.github.v3.raw'
97
+ chmod +x bin/release-helper.sh
98
+
99
+ - name: "Create the release commit and tag"
100
+ run: |
101
+ bin/release-helper.sh git-commit-release ${{ env.release }}
102
+
103
+ - name: "Publish release to pypi"
104
+ env:
105
+ UV_PUBLISH_TOKEN: ${{ secrets.UV_PUBLISH_TOKEN }}
106
+ run: |
107
+ make install publish
108
+
109
+ - name: "Push the release commit and tag"
110
+ run: |
111
+ git push --follow-tags
112
+
113
+ - name: "Create GitHub release"
114
+ env:
115
+ GITHUB_TOKEN: ${{ secrets.LOCALSTACK_GITHUB_TOKEN }}
116
+ run: gh release create "${{ env.release }}" --generate-notes --draft
117
+
118
+ - name: "Commit and push next development version"
119
+ run: |
120
+ bin/release-helper.sh git-commit-increment
121
+ git push
122
+
123
+ - name: "Publish development version to pypi"
124
+ env:
125
+ UV_PUBLISH_TOKEN: ${{ secrets.UV_PUBLISH_TOKEN }}
126
+ run: |
127
+ make install publish
128
+
129
+ - name: "Show git modifications"
130
+ run: |
131
+ git log --oneline -n 4
132
+ git show HEAD~1
133
+ git show HEAD
@@ -63,4 +63,10 @@ localstack-pro-azure/tests/otherlangs/dotnet/*/obj
63
63
 
64
64
  # setuptools_scm version.py
65
65
  */*/*/*/version.py
66
- localstack-sdk-python-2/.openapi-generator/
66
+ localstack-sdk-python-2/.openapi-generator/
67
+
68
+ # setuptools_scm version.py
69
+ **/version.py
70
+
71
+ # release helper
72
+ bin/release-helper.sh
@@ -1,29 +1,37 @@
1
- VENV_CMD ?= python3 -m venv
2
1
  VENV_DIR ?= .venv
3
- VENV_BIN = python3 -m venv
4
2
  VENV_RUN = . $(VENV_DIR)/bin/activate
5
3
  VENV_ACTIVATE = $(VENV_DIR)/bin/activate
6
4
  TEST_PATH ?= .
7
5
  TEST_EXEC ?= python -m
8
6
  PYTEST_LOGLEVEL ?= warning
9
- PIP_CMD ?= pip
10
7
 
11
8
  install: ## omit dev dependencies
9
+ uv venv
12
10
  uv sync --no-dev
13
11
 
14
12
  install-dev: ## create the venv and install
13
+ uv venv
15
14
  uv sync
16
15
 
17
- build-spec: ## build the entire localstack api spec (openapi.yaml in the root folder)
18
- $(VENV_RUN); python scripts/create_spec.py
19
-
20
16
  clean: ## Clean up the virtual environment
21
17
  rm -rf $(VENV_DIR)
22
18
  rm -rf dist/
23
19
 
20
+ clean-dist:
21
+ rm -rf dist/
22
+
24
23
  clean-generated: ## Cleanup generated code
25
24
  rm -rf packages/localstack-sdk-generated/localstack/
26
25
 
26
+ generate: ## Generate the code from the OpenAPI specs
27
+ ./bin/generate.sh
28
+
29
+ build:
30
+ uv build --all-packages
31
+
32
+ publish: clean-dist build
33
+ uv publish
34
+
27
35
  format:
28
36
  ($(VENV_RUN); python -m ruff format --exclude packages .; python -m ruff check --output-format=full --exclude packages --fix .)
29
37
 
@@ -33,4 +41,4 @@ lint:
33
41
  test: ## Run automated tests
34
42
  ($(VENV_RUN); $(TEST_EXEC) pytest --durations=10 --log-cli-level=$(PYTEST_LOGLEVEL) $(PYTEST_ARGS) $(TEST_PATH))
35
43
 
36
- .PHONY: clean install install-dev
44
+ .PHONY: clean install install-dev clean clean-dist clean-generated generate build publish format lint test
@@ -0,0 +1,70 @@
1
+ Metadata-Version: 2.4
2
+ Name: localstack-sdk-python
3
+ Version: 4.3.0
4
+ Summary: Python SDK for LocalStack
5
+ Author-email: LocalStack Team <info@localstack.cloud>
6
+ Project-URL: Homepage, https://localstack.cloud
7
+ Project-URL: Documentation, https://docs.localstack.cloud
8
+ Project-URL: Repository, https://github.com/localstack/localstack-sdk-python.git
9
+ Project-URL: Issues, https://github.com/localstack/localstack-sdk-python/issues
10
+ Description-Content-Type: text/markdown
11
+ License-File: LICENSE.txt
12
+ Requires-Dist: localstack-sdk-generated
13
+ Dynamic: license-file
14
+
15
+ # LocalStack Python SDK
16
+ [![PyPI version](https://img.shields.io/pypi/v/localstack-sdk-python)](https://pypi.org/project/localstack-sdk-python/)
17
+ [![Integration Tests](https://github.com/localstack/localstack-sdk-python/actions/workflows/test.yml/badge.svg)](https://github.com/localstack/localstack-sdk-python/actions/workflows/test.yml)
18
+
19
+ This is the Python SDK for LocalStack.
20
+ LocalStack offers a number of developer endpoints (see [docs](https://docs.localstack.cloud/references/internal-endpoints/)).
21
+ This SDK provides a programmatic and easy way to interact with them.
22
+
23
+ > [!WARNING]
24
+ > This project is still in a preview phase and will be subject to fast and breaking changes.
25
+
26
+ ### Project Structure
27
+
28
+ This project is composed by two Python packages:
29
+
30
+ - `packages/localstack-sdk-generated`: generated from the LocalStack's OpenAPI specs with [openapi-generator](https://github.com/OpenAPITools/openapi-generator).
31
+ The LocalStack's OpenAPI specs are available in [localstack/openapi](https://github.com/localstack/openapi).
32
+ This package is not meant to be manually modified, as it needs to be generated every time from the specs.
33
+ - `localstack-sdk-python`: the user-facing SDK that consumed `localstack-sdk-generated` as its main dependency.
34
+
35
+ ### Installation
36
+
37
+ You can install the LocalStack Python SDK with `pip`:
38
+
39
+ ```shell
40
+ pip install localstack-sdk-python
41
+ ```
42
+
43
+ #### From Source
44
+
45
+ This project uses [uv](https://github.com/astral-sh/uv) as a package manager.
46
+ On a Unix system, you can install `uv` with the standalone installer:
47
+
48
+ ```shell
49
+ curl -LsSf https://astral.sh/uv/install.sh | sh
50
+ ```
51
+
52
+ Once `uv` is installed, you can install the project from source with:
53
+
54
+ ```shell
55
+ make install
56
+ ```
57
+
58
+ To run the integration test suite:
59
+
60
+ ```shell
61
+ make test
62
+ ```
63
+
64
+ Note that LocalStack Pro (with the same version as the SDK) should be running in the background to execute the test.
65
+
66
+ ### Quickstart
67
+
68
+ To get started with our SDK, check out the [official documentation on https://docs.localstack.cloud](https://docs.localstack.cloud/user-guide/tools/localstack-sdk/python/).
69
+ You'll find comprehensive guides and detailed code samples that demonstrate how to use the various features provided
70
+ by the SDK.
@@ -0,0 +1,56 @@
1
+ # LocalStack Python SDK
2
+ [![PyPI version](https://img.shields.io/pypi/v/localstack-sdk-python)](https://pypi.org/project/localstack-sdk-python/)
3
+ [![Integration Tests](https://github.com/localstack/localstack-sdk-python/actions/workflows/test.yml/badge.svg)](https://github.com/localstack/localstack-sdk-python/actions/workflows/test.yml)
4
+
5
+ This is the Python SDK for LocalStack.
6
+ LocalStack offers a number of developer endpoints (see [docs](https://docs.localstack.cloud/references/internal-endpoints/)).
7
+ This SDK provides a programmatic and easy way to interact with them.
8
+
9
+ > [!WARNING]
10
+ > This project is still in a preview phase and will be subject to fast and breaking changes.
11
+
12
+ ### Project Structure
13
+
14
+ This project is composed by two Python packages:
15
+
16
+ - `packages/localstack-sdk-generated`: generated from the LocalStack's OpenAPI specs with [openapi-generator](https://github.com/OpenAPITools/openapi-generator).
17
+ The LocalStack's OpenAPI specs are available in [localstack/openapi](https://github.com/localstack/openapi).
18
+ This package is not meant to be manually modified, as it needs to be generated every time from the specs.
19
+ - `localstack-sdk-python`: the user-facing SDK that consumed `localstack-sdk-generated` as its main dependency.
20
+
21
+ ### Installation
22
+
23
+ You can install the LocalStack Python SDK with `pip`:
24
+
25
+ ```shell
26
+ pip install localstack-sdk-python
27
+ ```
28
+
29
+ #### From Source
30
+
31
+ This project uses [uv](https://github.com/astral-sh/uv) as a package manager.
32
+ On a Unix system, you can install `uv` with the standalone installer:
33
+
34
+ ```shell
35
+ curl -LsSf https://astral.sh/uv/install.sh | sh
36
+ ```
37
+
38
+ Once `uv` is installed, you can install the project from source with:
39
+
40
+ ```shell
41
+ make install
42
+ ```
43
+
44
+ To run the integration test suite:
45
+
46
+ ```shell
47
+ make test
48
+ ```
49
+
50
+ Note that LocalStack Pro (with the same version as the SDK) should be running in the background to execute the test.
51
+
52
+ ### Quickstart
53
+
54
+ To get started with our SDK, check out the [official documentation on https://docs.localstack.cloud](https://docs.localstack.cloud/user-guide/tools/localstack-sdk/python/).
55
+ You'll find comprehensive guides and detailed code samples that demonstrate how to use the various features provided
56
+ by the SDK.
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+
3
+ # Use the latest spec by default
4
+ SPEC_URL="https://raw.githubusercontent.com/localstack/openapi/refs/heads/main/openapi/emulators/localstack-spec-latest.yml"
5
+
6
+ if [ -n "$1" ]; then
7
+ SPEC_URL="https://github.com/localstack/openapi/releases/download/v$1/localstack-spec.yml"
8
+ fi
9
+
10
+ # Check if the URL is valid
11
+ if ! wget --spider -q "$SPEC_URL"; then
12
+ echo "Spec URL seems not accessible: $SPEC_URL"
13
+ exit 1
14
+ fi
15
+
16
+ docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli:v7.10.0 generate \
17
+ -i "$SPEC_URL" \
18
+ --skip-validate-spec \
19
+ -g python \
20
+ -o /local//packages/localstack-sdk-generated \
21
+ --global-property models,apis,supportingFiles \
22
+ -p packageName=localstack.sdk \
23
+ --template-dir /local/packages/localstack-sdk-generated/templates \
24
+ --global-property apiTests=false,modelTests=false \
25
+ --global-property apiDocs=false,modelDocs=False
@@ -0,0 +1,186 @@
1
+ import json
2
+
3
+ from localstack.sdk.api.aws_api import AwsApi
4
+ from localstack.sdk.clients import BaseClient
5
+ from localstack.sdk.models import (
6
+ Message,
7
+ SesSentEmail,
8
+ SNSPlatformEndpointResponse,
9
+ SNSSMSMessagesResponse,
10
+ )
11
+
12
+
13
+ def _from_sqs_query_to_json(xml_dict: dict) -> list[Message]:
14
+ """
15
+ todo: developer endpoint implements sqs-query protocol. Remove this workaround one we move them to json.
16
+ """
17
+ raw_messages = (
18
+ xml_dict.get("ReceiveMessageResponse", {}).get("ReceiveMessageResult", {}) or {}
19
+ ).get("Message", [])
20
+ if isinstance(raw_messages, dict):
21
+ raw_messages = [raw_messages]
22
+ messages = []
23
+ for msg in raw_messages:
24
+ _attributes = msg.get("Attribute", [])
25
+ attributes = {i["Name"]: i["Value"] for i in _attributes}
26
+ _m = {
27
+ "MessageId": msg.get("MessageId"),
28
+ "ReceiptHandle": msg.get("ReceiptHandle"),
29
+ "MD5OfBody": msg.get("MD5OfBody"),
30
+ "Body": msg.get("Body"),
31
+ "Attributes": attributes,
32
+ }
33
+ m = Message.from_dict(_m)
34
+ messages.append(m)
35
+ return messages
36
+
37
+
38
+ class AWSClient(BaseClient):
39
+ """
40
+ The client to interact with all the LocalStack's AWS endpoints.
41
+ These endpoints offer specific features in addition to the ones offered by the AWS services. For instance,
42
+ access all the messages withing a SQS without the side effect of deleting them.
43
+ """
44
+
45
+ def __init__(self, **kwargs) -> None:
46
+ super().__init__(**kwargs)
47
+ self._client = AwsApi(self._api_client)
48
+
49
+ ########
50
+ # SQS
51
+ ########
52
+
53
+ def list_sqs_messages(self, account_id: str, region: str, queue_name: str) -> list[Message]:
54
+ """
55
+ Lists all the SQS messages in a given queue in a specific account id and region, without any side effect.
56
+
57
+ :param account_id: the account id of the queue
58
+ :param region: the region of the queue
59
+ :param queue_name: the name of the queue
60
+ :return: the list of messages in the queue
61
+ """
62
+ response = self._client.list_sqs_messages_with_http_info(
63
+ account_id=account_id, region=region, queue_name=queue_name
64
+ )
65
+ return _from_sqs_query_to_json(json.loads(response.raw_data))
66
+
67
+ def list_sqs_messages_from_queue_url(self, queue_url: str) -> list[Message]:
68
+ """
69
+ Lists all the SQS messages in a given queue, without any side effect.
70
+
71
+ :param queue_url: the URL of the queue
72
+ :return: the list of messages in the queue
73
+ """
74
+ response = self._client.list_all_sqs_messages_with_http_info(queue_url=queue_url)
75
+ return _from_sqs_query_to_json(json.loads(response.raw_data))
76
+
77
+ ########
78
+ # SES
79
+ ########
80
+
81
+ def get_ses_messages(
82
+ self, id_filter: str | None = None, email_filter: str | None = None
83
+ ) -> list[SesSentEmail]:
84
+ """
85
+ Returns all the in-memory saved SES messages. They can be filtered by message ID and/or message source.
86
+
87
+ :param id_filter: the message id used as filter for the SES messages
88
+ :param email_filter: the message source filter
89
+ :return: a list of email sent with SES
90
+ """
91
+ response = self._client.get_ses_messages(id=id_filter, email=email_filter)
92
+ return response.messages
93
+
94
+ def discard_ses_messages(self, id_filter: str | None = None) -> None:
95
+ """
96
+ Clears all SES messages. An ID filter can be provided to delete only a specific message.
97
+
98
+ :param id_filter: the id filter
99
+ :return: None
100
+ """
101
+ return self._client.discard_ses_messages(id=id_filter)
102
+
103
+ ########
104
+ # SNS
105
+ ########
106
+
107
+ def get_sns_sms_messages(
108
+ self,
109
+ phone_number: str | None = None,
110
+ account_id: str = "000000000000",
111
+ region: str = "us-east-1",
112
+ ) -> SNSSMSMessagesResponse:
113
+ """
114
+ Returns all SMS messages published to a phone number.
115
+
116
+ :param phone_number: the phone number to which the messages have been published. If not specified, all messages
117
+ are returned.
118
+ :param account_id: the AWS Account ID from which the messages have been published. '000000000000' by default
119
+ :param region: the AWS region from which the messages have been published. us-east-1 by default
120
+ :return:
121
+ """
122
+ return self._client.get_sns_sms_messages(
123
+ phone_number=phone_number, account_id=account_id, region=region
124
+ )
125
+
126
+ def discard_sns_sms_messages(
127
+ self,
128
+ phone_number: str | None = None,
129
+ account_id: str = "000000000000",
130
+ region: str = "us-east-1",
131
+ ) -> None:
132
+ """
133
+ Discards all SMS messages published to a phone number.
134
+
135
+ :param phone_number: the phone number to which the messages have been published. If not specified, all messages
136
+ are deleted.
137
+ :param account_id: the AWS Account ID from which the messages have been published. '000000000000' by default
138
+ :param region: the AWS region from which the messages have been published. us-east-1 by default
139
+ :return: None
140
+ """
141
+ return self._client.discard_sns_sms_messages(
142
+ phone_number=phone_number, account_id=account_id, region=region
143
+ )
144
+
145
+ def get_sns_endpoint_messages(
146
+ self,
147
+ endpoint_arn: str | None = None,
148
+ account_id: str = "000000000000",
149
+ region: str = "us-east-1",
150
+ ) -> SNSPlatformEndpointResponse:
151
+ """
152
+ Returns all the messages published to a platform endpoint.
153
+
154
+ :param endpoint_arn: the ARN to which the messages have been published. If not specified, will return all the
155
+ messages.
156
+ :param account_id: the AWS Account ID from which the messages have been published. 000000000000 if not specified
157
+ :param region: the AWS region from which the messages have been published. us-east-1 by default
158
+ :return: a response with the list of messages and the queried region
159
+ """
160
+ return self._client.get_sns_endpoint_messages(
161
+ endpoint_arn=endpoint_arn, account_id=account_id, region=region
162
+ )
163
+
164
+ def discard_sns_endpoint_messages(
165
+ self,
166
+ endpoint_arn: str | None = None,
167
+ account_id: str = "000000000000",
168
+ region: str = "us-east-1",
169
+ ) -> None:
170
+ """
171
+ Discards all the messaged published to a platform endpoint.
172
+
173
+ :param endpoint_arn: the ARN to which the messages have been published. If not specified, will discard all the
174
+ messages.
175
+ :param account_id: the AWS Account ID from which the messages have been published. 000000000000 if not specified
176
+ :param region: the AWS region from which the messages have been published. us-east-1 by default
177
+ :return: None
178
+ """
179
+ return self._client.discard_sns_endpoint_messages(
180
+ endpoint_arn=endpoint_arn, account_id=account_id, region=region
181
+ )
182
+
183
+
184
+ def get_default(**args) -> AwsApi:
185
+ """Return a client with a default configuration"""
186
+ return AwsApi(args)
@@ -0,0 +1,69 @@
1
+ from localstack.sdk.api.chaos_api import ChaosApi
2
+ from localstack.sdk.clients import BaseClient
3
+ from localstack.sdk.models import FaultRule, NetworkEffectsConfig
4
+
5
+
6
+ class ChaosClient(BaseClient):
7
+ """
8
+ The client to interact with the LocalStack's Chaos API.
9
+ """
10
+
11
+ def __init__(self, **kwargs) -> None:
12
+ super().__init__(**kwargs)
13
+ self._client = ChaosApi(self._api_client)
14
+
15
+ def set_fault_rules(self, fault_rules: list[FaultRule]) -> list[FaultRule]:
16
+ """
17
+ Creates a new sets of fault rules. It overwrites the previous ones.
18
+ :param fault_rules: the list of FaultRule we want to set
19
+ :return: the list of FaultRule currently in place
20
+ """
21
+ return self._client.set_fault_rules(fault_rule=fault_rules)
22
+
23
+ def add_fault_rules(self, fault_rules: list[FaultRule]) -> list[FaultRule]:
24
+ """
25
+ Adds a new set of rules to the current fault configuration.
26
+ :param fault_rules: the FaultRule rules to add
27
+ :return: the list of FaultRule currently in place
28
+ """
29
+ return self._client.add_fault_rules(fault_rule=fault_rules)
30
+
31
+ def delete_fault_rules(self, fault_rules: list[FaultRule]) -> list[FaultRule]:
32
+ """
33
+ Deletes a set of rules from the fault configuration.
34
+ :param fault_rules: the FaultRule to delete
35
+ :return: the list of FaultRule currently in place
36
+ """
37
+ return self._client.delete_fault_rules(fault_rule=fault_rules)
38
+
39
+ def get_fault_rules(self) -> list[FaultRule]:
40
+ """
41
+ Gets the current fault configuration.
42
+ :return: the list of FaultRule of the current configuration
43
+ """
44
+ return self._client.get_fault_rules()
45
+
46
+ def get_network_effects(self) -> NetworkEffectsConfig:
47
+ """
48
+ Gets the current network effect configuration.
49
+ :return: the current NetworkEffectsConfig
50
+ """
51
+ return self._client.get_network_effects()
52
+
53
+ def set_network_effects(
54
+ self, network_effects_config: NetworkEffectsConfig
55
+ ) -> NetworkEffectsConfig:
56
+ """
57
+ Configure a new network effect, e.g, latency.
58
+ :param network_effects_config: the network config to be set
59
+ :return: the current configuration of network effects
60
+ """
61
+ return self._client.set_network_effects(network_effects_config=network_effects_config)
62
+
63
+
64
+ def get_default(**args) -> ChaosClient:
65
+ """
66
+ Return a chaos client with a default configuration. You can pass a host argument to overwrite the fault one
67
+ (http://localhost.localstack.cloud:4566).
68
+ """
69
+ return ChaosClient(**args)
@@ -6,6 +6,11 @@ from localstack.sdk.models import FaultRule
6
6
 
7
7
  @contextmanager
8
8
  def fault_configuration(fault_rules: list[FaultRule]):
9
+ """
10
+ This is a context manager that temporarily applies a given set of fault rules.
11
+ :param fault_rules: a list of FaultRule to be applied.
12
+ :return: None
13
+ """
9
14
  client = get_default()
10
15
  try:
11
16
  client.set_fault_rules(fault_rules=fault_rules)
@@ -0,0 +1,35 @@
1
+ from localstack.sdk import version
2
+ from localstack.sdk.api_client import ApiClient
3
+ from localstack.sdk.configuration import Configuration
4
+
5
+
6
+ class BaseClient:
7
+ """
8
+ A BaseClient creates a configuration and instantiate a ApiClient, which is a generic OpenAPI client automatically
9
+ generated by the openapitools/openapi-generator tool.
10
+ """
11
+
12
+ configuration: Configuration
13
+ """The configuration for the base client"""
14
+ _api_client: ApiClient
15
+ """The OpenAPI client"""
16
+ host: str
17
+ """The LocalStack host (http://localhost.localstack.cloud:4566 by default)"""
18
+ auth_token: str | None
19
+ """A client can be injected with a LocalStack auth token. If not provided, the one used to start up the
20
+ LocalStack instance will be used (for the features needing it, e.g., Cloud Pods)."""
21
+
22
+ def __init__(self, host: str | None = None, auth_token: str | None = None, **kwargs) -> None:
23
+ """
24
+ Initializes a base client to interact with LocalStack developer endpoint.
25
+ :param host: the host, http://localhost.localstack.cloud:4566 by default.
26
+ :param auth_token: if provided, this token would be used for authentication against platform. It not, the
27
+ LocalStack runtime will use the one used to start the container. The token used determines the Cloud
28
+ Pods identity, i.e., which pods are available.
29
+ """
30
+ self.host = host or "http://localhost.localstack.cloud:4566"
31
+ self.auth_token = auth_token
32
+ self.configuration = Configuration(host=self.host)
33
+ self._api_client = ApiClient(configuration=self.configuration)
34
+ # The generated code comes with 1.0.0 hard-coded. We set here the correct version
35
+ self._api_client.user_agent = f"LocalStack SDK/{version.version}/python"