capo-lambda 0.5.0__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 (681) hide show
  1. capo_lambda/__init__.py +52 -0
  2. capo_lambda/_async.py +25 -0
  3. capo_lambda/_auth/_identity.py +16 -0
  4. capo_lambda/_auth/_providers.py +318 -0
  5. capo_lambda/_auth/_signers.py +84 -0
  6. capo_lambda/_auth/_sigv4.py +382 -0
  7. capo_lambda/_auth/_zapros_handler.py +62 -0
  8. capo_lambda/_iter.py +113 -0
  9. capo_lambda/_operations/aws_gir_api_service/add_layer_version_permission.py +169 -0
  10. capo_lambda/_operations/aws_gir_api_service/add_permission.py +168 -0
  11. capo_lambda/_operations/aws_gir_api_service/checkpoint_durable_execution.py +150 -0
  12. capo_lambda/_operations/aws_gir_api_service/create_alias.py +152 -0
  13. capo_lambda/_operations/aws_gir_api_service/create_capacity_provider.py +157 -0
  14. capo_lambda/_operations/aws_gir_api_service/create_code_signing_config.py +140 -0
  15. capo_lambda/_operations/aws_gir_api_service/create_event_source_mapping.py +173 -0
  16. capo_lambda/_operations/aws_gir_api_service/create_function.py +208 -0
  17. capo_lambda/_operations/aws_gir_api_service/create_function_url_config.py +158 -0
  18. capo_lambda/_operations/aws_gir_api_service/delete_alias.py +123 -0
  19. capo_lambda/_operations/aws_gir_api_service/delete_capacity_provider.py +156 -0
  20. capo_lambda/_operations/aws_gir_api_service/delete_code_signing_config.py +146 -0
  21. capo_lambda/_operations/aws_gir_api_service/delete_event_source_mapping.py +176 -0
  22. capo_lambda/_operations/aws_gir_api_service/delete_function.py +148 -0
  23. capo_lambda/_operations/aws_gir_api_service/delete_function_code_signing_config.py +133 -0
  24. capo_lambda/_operations/aws_gir_api_service/delete_function_concurrency.py +125 -0
  25. capo_lambda/_operations/aws_gir_api_service/delete_function_event_invoke_config.py +130 -0
  26. capo_lambda/_operations/aws_gir_api_service/delete_function_url_config.py +122 -0
  27. capo_lambda/_operations/aws_gir_api_service/delete_layer_version.py +114 -0
  28. capo_lambda/_operations/aws_gir_api_service/delete_provisioned_concurrency_config.py +130 -0
  29. capo_lambda/_operations/aws_gir_api_service/get_account_settings.py +139 -0
  30. capo_lambda/_operations/aws_gir_api_service/get_alias.py +147 -0
  31. capo_lambda/_operations/aws_gir_api_service/get_capacity_provider.py +151 -0
  32. capo_lambda/_operations/aws_gir_api_service/get_code_signing_config.py +146 -0
  33. capo_lambda/_operations/aws_gir_api_service/get_durable_execution.py +154 -0
  34. capo_lambda/_operations/aws_gir_api_service/get_durable_execution_history.py +158 -0
  35. capo_lambda/_operations/aws_gir_api_service/get_durable_execution_state.py +151 -0
  36. capo_lambda/_operations/aws_gir_api_service/get_event_source_mapping.py +166 -0
  37. capo_lambda/_operations/aws_gir_api_service/get_function.py +154 -0
  38. capo_lambda/_operations/aws_gir_api_service/get_function_code_signing_config.py +148 -0
  39. capo_lambda/_operations/aws_gir_api_service/get_function_concurrency.py +145 -0
  40. capo_lambda/_operations/aws_gir_api_service/get_function_configuration.py +172 -0
  41. capo_lambda/_operations/aws_gir_api_service/get_function_event_invoke_config.py +156 -0
  42. capo_lambda/_operations/aws_gir_api_service/get_function_recursion_config.py +149 -0
  43. capo_lambda/_operations/aws_gir_api_service/get_function_scaling_config.py +151 -0
  44. capo_lambda/_operations/aws_gir_api_service/get_function_url_config.py +150 -0
  45. capo_lambda/_operations/aws_gir_api_service/get_layer_version.py +156 -0
  46. capo_lambda/_operations/aws_gir_api_service/get_layer_version_by_arn.py +152 -0
  47. capo_lambda/_operations/aws_gir_api_service/get_layer_version_policy.py +149 -0
  48. capo_lambda/_operations/aws_gir_api_service/get_policy.py +145 -0
  49. capo_lambda/_operations/aws_gir_api_service/get_provisioned_concurrency_config.py +156 -0
  50. capo_lambda/_operations/aws_gir_api_service/get_runtime_management_config.py +151 -0
  51. capo_lambda/_operations/aws_gir_api_service/invoke.py +342 -0
  52. capo_lambda/_operations/aws_gir_api_service/invoke_async.py +153 -0
  53. capo_lambda/_operations/aws_gir_api_service/invoke_with_response_stream.py +346 -0
  54. capo_lambda/_operations/aws_gir_api_service/list_aliases.py +154 -0
  55. capo_lambda/_operations/aws_gir_api_service/list_capacity_providers.py +146 -0
  56. capo_lambda/_operations/aws_gir_api_service/list_code_signing_configs.py +142 -0
  57. capo_lambda/_operations/aws_gir_api_service/list_durable_executions_by_function.py +166 -0
  58. capo_lambda/_operations/aws_gir_api_service/list_event_source_mappings.py +152 -0
  59. capo_lambda/_operations/aws_gir_api_service/list_function_event_invoke_configs.py +153 -0
  60. capo_lambda/_operations/aws_gir_api_service/list_function_url_configs.py +154 -0
  61. capo_lambda/_operations/aws_gir_api_service/list_function_versions_by_capacity_provider.py +155 -0
  62. capo_lambda/_operations/aws_gir_api_service/list_functions.py +150 -0
  63. capo_lambda/_operations/aws_gir_api_service/list_functions_by_code_signing_config.py +150 -0
  64. capo_lambda/_operations/aws_gir_api_service/list_layer_versions.py +160 -0
  65. capo_lambda/_operations/aws_gir_api_service/list_layers.py +147 -0
  66. capo_lambda/_operations/aws_gir_api_service/list_provisioned_concurrency_configs.py +153 -0
  67. capo_lambda/_operations/aws_gir_api_service/list_tags.py +144 -0
  68. capo_lambda/_operations/aws_gir_api_service/list_versions_by_function.py +154 -0
  69. capo_lambda/_operations/aws_gir_api_service/publish_layer_version.py +157 -0
  70. capo_lambda/_operations/aws_gir_api_service/publish_version.py +192 -0
  71. capo_lambda/_operations/aws_gir_api_service/put_function_code_signing_config.py +163 -0
  72. capo_lambda/_operations/aws_gir_api_service/put_function_concurrency.py +149 -0
  73. capo_lambda/_operations/aws_gir_api_service/put_function_event_invoke_config.py +166 -0
  74. capo_lambda/_operations/aws_gir_api_service/put_function_recursion_config.py +157 -0
  75. capo_lambda/_operations/aws_gir_api_service/put_function_scaling_config.py +160 -0
  76. capo_lambda/_operations/aws_gir_api_service/put_provisioned_concurrency_config.py +161 -0
  77. capo_lambda/_operations/aws_gir_api_service/put_runtime_management_config.py +159 -0
  78. capo_lambda/_operations/aws_gir_api_service/remove_layer_version_permission.py +132 -0
  79. capo_lambda/_operations/aws_gir_api_service/remove_permission.py +133 -0
  80. capo_lambda/_operations/aws_gir_api_service/send_durable_execution_callback_failure.py +151 -0
  81. capo_lambda/_operations/aws_gir_api_service/send_durable_execution_callback_heartbeat.py +144 -0
  82. capo_lambda/_operations/aws_gir_api_service/send_durable_execution_callback_success.py +151 -0
  83. capo_lambda/_operations/aws_gir_api_service/stop_durable_execution.py +158 -0
  84. capo_lambda/_operations/aws_gir_api_service/tag_resource.py +129 -0
  85. capo_lambda/_operations/aws_gir_api_service/untag_resource.py +128 -0
  86. capo_lambda/_operations/aws_gir_api_service/update_alias.py +160 -0
  87. capo_lambda/_operations/aws_gir_api_service/update_capacity_provider.py +160 -0
  88. capo_lambda/_operations/aws_gir_api_service/update_code_signing_config.py +151 -0
  89. capo_lambda/_operations/aws_gir_api_service/update_event_source_mapping.py +179 -0
  90. capo_lambda/_operations/aws_gir_api_service/update_function_code.py +203 -0
  91. capo_lambda/_operations/aws_gir_api_service/update_function_configuration.py +204 -0
  92. capo_lambda/_operations/aws_gir_api_service/update_function_event_invoke_config.py +166 -0
  93. capo_lambda/_operations/aws_gir_api_service/update_function_url_config.py +158 -0
  94. capo_lambda/_pagination.py +21 -0
  95. capo_lambda/_protocol/__init__.py +1 -0
  96. capo_lambda/_protocol/errors.py +59 -0
  97. capo_lambda/_protocol/eventstream.py +238 -0
  98. capo_lambda/_protocol/xml.py +27 -0
  99. capo_lambda/_resources/aws_gir_api_service/capacity_provider_resource.py +713 -0
  100. capo_lambda/_resources/aws_gir_api_service/code_signing_config_resource.py +656 -0
  101. capo_lambda/_resources/aws_gir_api_service/event_source_mapping.py +1163 -0
  102. capo_lambda/_resources/aws_gir_api_service/function.py +3923 -0
  103. capo_lambda/_resources/aws_gir_api_service/function_alias.py +670 -0
  104. capo_lambda/_resources/aws_gir_api_service/function_version_resource.py +303 -0
  105. capo_lambda/_resources/aws_gir_api_service/layer_resource.py +170 -0
  106. capo_lambda/_resources/aws_gir_api_service/layer_version.py +1022 -0
  107. capo_lambda/_resources/aws_gir_api_service/permission.py +389 -0
  108. capo_lambda/_resources/aws_gir_api_service/provisioned_concurrency_config.py +376 -0
  109. capo_lambda/_resources/aws_gir_api_service/resource_policy.py +19 -0
  110. capo_lambda/_rule_engine/__init__.py +0 -0
  111. capo_lambda/_rule_engine/_aws_partition.py +160 -0
  112. capo_lambda/_rule_engine/_endpoint_rule_set.py +136 -0
  113. capo_lambda/_rule_engine/_endpoint_runtime.py +389 -0
  114. capo_lambda/_services/_aws_config.py +152 -0
  115. capo_lambda/_services/_lambda.py +1388 -0
  116. capo_lambda/_services/_pipeline.py +198 -0
  117. capo_lambda/_services/async__lambda.py +1411 -0
  118. capo_lambda/errors/__init__.py +148 -0
  119. capo_lambda/errors/_base.py +94 -0
  120. capo_lambda/errors/callback_timeout_exception.py +54 -0
  121. capo_lambda/errors/capacity_provider_limit_exceeded_exception.py +54 -0
  122. capo_lambda/errors/code_signing_config_not_found_exception.py +53 -0
  123. capo_lambda/errors/code_storage_exceeded_exception.py +54 -0
  124. capo_lambda/errors/code_verification_failed_exception.py +53 -0
  125. capo_lambda/errors/durable_execution_already_started_exception.py +54 -0
  126. capo_lambda/errors/ec2_access_denied_exception.py +53 -0
  127. capo_lambda/errors/ec2_throttled_exception.py +53 -0
  128. capo_lambda/errors/ec2_unexpected_exception.py +58 -0
  129. capo_lambda/errors/efs_mount_connectivity_exception.py +53 -0
  130. capo_lambda/errors/efs_mount_failure_exception.py +53 -0
  131. capo_lambda/errors/efs_mount_timeout_exception.py +53 -0
  132. capo_lambda/errors/efsio_exception.py +53 -0
  133. capo_lambda/errors/eni_limit_reached_exception.py +53 -0
  134. capo_lambda/errors/function_versions_per_capacity_provider_limit_exceeded_exception.py +64 -0
  135. capo_lambda/errors/invalid_code_signature_exception.py +53 -0
  136. capo_lambda/errors/invalid_parameter_value_exception.py +55 -0
  137. capo_lambda/errors/invalid_request_content_exception.py +55 -0
  138. capo_lambda/errors/invalid_runtime_exception.py +53 -0
  139. capo_lambda/errors/invalid_security_group_id_exception.py +53 -0
  140. capo_lambda/errors/invalid_subnet_id_exception.py +53 -0
  141. capo_lambda/errors/invalid_zip_file_exception.py +53 -0
  142. capo_lambda/errors/kms_access_denied_exception.py +53 -0
  143. capo_lambda/errors/kms_disabled_exception.py +53 -0
  144. capo_lambda/errors/kms_invalid_state_exception.py +53 -0
  145. capo_lambda/errors/kms_not_found_exception.py +53 -0
  146. capo_lambda/errors/no_published_version_exception.py +54 -0
  147. capo_lambda/errors/policy_length_exceeded_exception.py +53 -0
  148. capo_lambda/errors/precondition_failed_exception.py +55 -0
  149. capo_lambda/errors/provisioned_concurrency_config_not_found_exception.py +53 -0
  150. capo_lambda/errors/recursive_invocation_exception.py +55 -0
  151. capo_lambda/errors/request_too_large_exception.py +53 -0
  152. capo_lambda/errors/resource_conflict_exception.py +55 -0
  153. capo_lambda/errors/resource_in_use_exception.py +53 -0
  154. capo_lambda/errors/resource_not_found_exception.py +53 -0
  155. capo_lambda/errors/resource_not_ready_exception.py +55 -0
  156. capo_lambda/errors/s3_files_mount_connectivity_exception.py +55 -0
  157. capo_lambda/errors/s3_files_mount_failure_exception.py +55 -0
  158. capo_lambda/errors/s3_files_mount_timeout_exception.py +55 -0
  159. capo_lambda/errors/serialized_request_entity_too_large_exception.py +54 -0
  160. capo_lambda/errors/service_exception.py +53 -0
  161. capo_lambda/errors/snap_start_exception.py +53 -0
  162. capo_lambda/errors/snap_start_not_ready_exception.py +53 -0
  163. capo_lambda/errors/snap_start_timeout_exception.py +53 -0
  164. capo_lambda/errors/subnet_ip_address_limit_reached_exception.py +53 -0
  165. capo_lambda/errors/too_many_requests_exception.py +69 -0
  166. capo_lambda/errors/unsupported_media_type_exception.py +53 -0
  167. capo_lambda/py.typed +0 -0
  168. capo_lambda/types/_prelude/blob.py +12 -0
  169. capo_lambda/types/_prelude/timestamp.py +12 -0
  170. capo_lambda/types/account_limit.py +62 -0
  171. capo_lambda/types/account_usage.py +36 -0
  172. capo_lambda/types/action.py +5 -0
  173. capo_lambda/types/add_layer_version_permission_request.py +69 -0
  174. capo_lambda/types/add_layer_version_permission_response.py +34 -0
  175. capo_lambda/types/add_permission_request.py +122 -0
  176. capo_lambda/types/add_permission_response.py +28 -0
  177. capo_lambda/types/additional_version.py +5 -0
  178. capo_lambda/types/additional_version_weights.py +27 -0
  179. capo_lambda/types/alias.py +5 -0
  180. capo_lambda/types/alias_configuration.py +77 -0
  181. capo_lambda/types/alias_list.py +27 -0
  182. capo_lambda/types/alias_routing_configuration.py +42 -0
  183. capo_lambda/types/allow_credentials.py +5 -0
  184. capo_lambda/types/allow_methods_list.py +17 -0
  185. capo_lambda/types/allow_origins_list.py +17 -0
  186. capo_lambda/types/allowed_publishers.py +47 -0
  187. capo_lambda/types/amazon_managed_kafka_event_source_config.py +49 -0
  188. capo_lambda/types/application_log_level.py +21 -0
  189. capo_lambda/types/architecture.py +17 -0
  190. capo_lambda/types/architectures_list.py +27 -0
  191. capo_lambda/types/arn.py +5 -0
  192. capo_lambda/types/attempt_count.py +5 -0
  193. capo_lambda/types/batch_size.py +5 -0
  194. capo_lambda/types/binary_operation_payload.py +15 -0
  195. capo_lambda/types/bisect_batch_on_function_error.py +5 -0
  196. capo_lambda/types/blob.py +15 -0
  197. capo_lambda/types/blob_stream.py +7 -0
  198. capo_lambda/types/boolean.py +5 -0
  199. capo_lambda/types/callback_details.py +46 -0
  200. capo_lambda/types/callback_failed_details.py +35 -0
  201. capo_lambda/types/callback_id.py +5 -0
  202. capo_lambda/types/callback_options.py +36 -0
  203. capo_lambda/types/callback_started_details.py +44 -0
  204. capo_lambda/types/callback_succeeded_details.py +35 -0
  205. capo_lambda/types/callback_timed_out_details.py +35 -0
  206. capo_lambda/types/capacity_provider.py +143 -0
  207. capo_lambda/types/capacity_provider_arn.py +5 -0
  208. capo_lambda/types/capacity_provider_config.py +45 -0
  209. capo_lambda/types/capacity_provider_max_v_cpu_count.py +5 -0
  210. capo_lambda/types/capacity_provider_name.py +5 -0
  211. capo_lambda/types/capacity_provider_permissions_config.py +37 -0
  212. capo_lambda/types/capacity_provider_predefined_metric_type.py +16 -0
  213. capo_lambda/types/capacity_provider_scaling_config.py +72 -0
  214. capo_lambda/types/capacity_provider_scaling_mode.py +17 -0
  215. capo_lambda/types/capacity_provider_scaling_policies_list.py +33 -0
  216. capo_lambda/types/capacity_provider_security_group_ids.py +19 -0
  217. capo_lambda/types/capacity_provider_state.py +19 -0
  218. capo_lambda/types/capacity_provider_subnet_ids.py +17 -0
  219. capo_lambda/types/capacity_provider_vpc_config.py +65 -0
  220. capo_lambda/types/capacity_providers_list.py +29 -0
  221. capo_lambda/types/chained_invoke_details.py +39 -0
  222. capo_lambda/types/chained_invoke_failed_details.py +35 -0
  223. capo_lambda/types/chained_invoke_options.py +38 -0
  224. capo_lambda/types/chained_invoke_started_details.py +67 -0
  225. capo_lambda/types/chained_invoke_stopped_details.py +35 -0
  226. capo_lambda/types/chained_invoke_succeeded_details.py +35 -0
  227. capo_lambda/types/chained_invoke_timed_out_details.py +35 -0
  228. capo_lambda/types/checkpoint_durable_execution_request.py +58 -0
  229. capo_lambda/types/checkpoint_durable_execution_response.py +52 -0
  230. capo_lambda/types/checkpoint_token.py +5 -0
  231. capo_lambda/types/checkpoint_updated_execution_state.py +43 -0
  232. capo_lambda/types/client_token.py +5 -0
  233. capo_lambda/types/code_signing_config.py +94 -0
  234. capo_lambda/types/code_signing_config_arn.py +5 -0
  235. capo_lambda/types/code_signing_config_id.py +5 -0
  236. capo_lambda/types/code_signing_config_list.py +29 -0
  237. capo_lambda/types/code_signing_policies.py +42 -0
  238. capo_lambda/types/code_signing_policy.py +17 -0
  239. capo_lambda/types/collection_name.py +5 -0
  240. capo_lambda/types/compatible_architectures.py +27 -0
  241. capo_lambda/types/compatible_runtimes.py +27 -0
  242. capo_lambda/types/concurrency.py +30 -0
  243. capo_lambda/types/context_details.py +46 -0
  244. capo_lambda/types/context_failed_details.py +35 -0
  245. capo_lambda/types/context_options.py +28 -0
  246. capo_lambda/types/context_started_details.py +18 -0
  247. capo_lambda/types/context_succeeded_details.py +35 -0
  248. capo_lambda/types/cors.py +96 -0
  249. capo_lambda/types/create_alias_request.py +72 -0
  250. capo_lambda/types/create_capacity_provider_request.py +139 -0
  251. capo_lambda/types/create_capacity_provider_response.py +41 -0
  252. capo_lambda/types/create_code_signing_config_request.py +82 -0
  253. capo_lambda/types/create_code_signing_config_response.py +43 -0
  254. capo_lambda/types/create_event_source_mapping_request.py +426 -0
  255. capo_lambda/types/create_function_request.py +385 -0
  256. capo_lambda/types/create_function_url_config_request.py +73 -0
  257. capo_lambda/types/create_function_url_config_response.py +95 -0
  258. capo_lambda/types/database_name.py +5 -0
  259. capo_lambda/types/date.py +15 -0
  260. capo_lambda/types/dead_letter_config.py +28 -0
  261. capo_lambda/types/delete_alias_request.py +27 -0
  262. capo_lambda/types/delete_capacity_provider_request.py +26 -0
  263. capo_lambda/types/delete_capacity_provider_response.py +41 -0
  264. capo_lambda/types/delete_code_signing_config_request.py +26 -0
  265. capo_lambda/types/delete_code_signing_config_response.py +18 -0
  266. capo_lambda/types/delete_event_source_mapping_request.py +24 -0
  267. capo_lambda/types/delete_function_code_signing_config_request.py +24 -0
  268. capo_lambda/types/delete_function_concurrency_request.py +24 -0
  269. capo_lambda/types/delete_function_event_invoke_config_request.py +29 -0
  270. capo_lambda/types/delete_function_request.py +29 -0
  271. capo_lambda/types/delete_function_response.py +24 -0
  272. capo_lambda/types/delete_function_url_config_request.py +29 -0
  273. capo_lambda/types/delete_layer_version_request.py +27 -0
  274. capo_lambda/types/delete_provisioned_concurrency_config_request.py +27 -0
  275. capo_lambda/types/description.py +5 -0
  276. capo_lambda/types/destination_arn.py +5 -0
  277. capo_lambda/types/destination_config.py +51 -0
  278. capo_lambda/types/document_db_event_source_config.py +50 -0
  279. capo_lambda/types/durable_config.py +39 -0
  280. capo_lambda/types/durable_execution_arn.py +5 -0
  281. capo_lambda/types/durable_execution_name.py +5 -0
  282. capo_lambda/types/durable_executions.py +27 -0
  283. capo_lambda/types/duration_seconds.py +5 -0
  284. capo_lambda/types/enabled.py +5 -0
  285. capo_lambda/types/end_point_type.py +14 -0
  286. capo_lambda/types/endpoint.py +5 -0
  287. capo_lambda/types/endpoint_lists.py +17 -0
  288. capo_lambda/types/endpoints.py +37 -0
  289. capo_lambda/types/environment.py +38 -0
  290. capo_lambda/types/environment_error.py +35 -0
  291. capo_lambda/types/environment_response.py +53 -0
  292. capo_lambda/types/environment_variable_name.py +5 -0
  293. capo_lambda/types/environment_variable_value.py +5 -0
  294. capo_lambda/types/environment_variables.py +27 -0
  295. capo_lambda/types/ephemeral_storage.py +31 -0
  296. capo_lambda/types/ephemeral_storage_size.py +5 -0
  297. capo_lambda/types/error_data.py +5 -0
  298. capo_lambda/types/error_message.py +5 -0
  299. capo_lambda/types/error_object.py +57 -0
  300. capo_lambda/types/error_type.py +5 -0
  301. capo_lambda/types/event.py +584 -0
  302. capo_lambda/types/event_error.py +41 -0
  303. capo_lambda/types/event_id.py +5 -0
  304. capo_lambda/types/event_input.py +35 -0
  305. capo_lambda/types/event_result.py +35 -0
  306. capo_lambda/types/event_source_mapping_arn.py +5 -0
  307. capo_lambda/types/event_source_mapping_configuration.py +472 -0
  308. capo_lambda/types/event_source_mapping_logging_config.py +42 -0
  309. capo_lambda/types/event_source_mapping_metric.py +18 -0
  310. capo_lambda/types/event_source_mapping_metric_list.py +29 -0
  311. capo_lambda/types/event_source_mapping_metrics_config.py +42 -0
  312. capo_lambda/types/event_source_mapping_system_log_level.py +18 -0
  313. capo_lambda/types/event_source_mappings_list.py +33 -0
  314. capo_lambda/types/event_source_position.py +18 -0
  315. capo_lambda/types/event_source_token.py +5 -0
  316. capo_lambda/types/event_type.py +39 -0
  317. capo_lambda/types/events.py +27 -0
  318. capo_lambda/types/execution.py +95 -0
  319. capo_lambda/types/execution_details.py +28 -0
  320. capo_lambda/types/execution_environment_memory_gi_b_per_v_cpu.py +5 -0
  321. capo_lambda/types/execution_failed_details.py +35 -0
  322. capo_lambda/types/execution_started_details.py +43 -0
  323. capo_lambda/types/execution_status.py +20 -0
  324. capo_lambda/types/execution_status_list.py +29 -0
  325. capo_lambda/types/execution_stopped_details.py +35 -0
  326. capo_lambda/types/execution_succeeded_details.py +35 -0
  327. capo_lambda/types/execution_timed_out_details.py +32 -0
  328. capo_lambda/types/execution_timeout.py +5 -0
  329. capo_lambda/types/execution_timestamp.py +15 -0
  330. capo_lambda/types/file_system_arn.py +5 -0
  331. capo_lambda/types/file_system_config.py +39 -0
  332. capo_lambda/types/file_system_config_list.py +29 -0
  333. capo_lambda/types/filter.py +28 -0
  334. capo_lambda/types/filter_criteria.py +32 -0
  335. capo_lambda/types/filter_criteria_error.py +39 -0
  336. capo_lambda/types/filter_criteria_error_code.py +5 -0
  337. capo_lambda/types/filter_criteria_error_message.py +5 -0
  338. capo_lambda/types/filter_list.py +27 -0
  339. capo_lambda/types/full_document.py +17 -0
  340. capo_lambda/types/function_arn.py +5 -0
  341. capo_lambda/types/function_arn_list.py +17 -0
  342. capo_lambda/types/function_code.py +69 -0
  343. capo_lambda/types/function_code_location.py +52 -0
  344. capo_lambda/types/function_configuration.py +513 -0
  345. capo_lambda/types/function_event_invoke_config.py +80 -0
  346. capo_lambda/types/function_event_invoke_config_list.py +31 -0
  347. capo_lambda/types/function_list.py +29 -0
  348. capo_lambda/types/function_name.py +5 -0
  349. capo_lambda/types/function_response_type.py +14 -0
  350. capo_lambda/types/function_response_type_list.py +29 -0
  351. capo_lambda/types/function_scaling_config.py +38 -0
  352. capo_lambda/types/function_scaling_config_execution_environments.py +5 -0
  353. capo_lambda/types/function_url.py +5 -0
  354. capo_lambda/types/function_url_auth_type.py +17 -0
  355. capo_lambda/types/function_url_config.py +96 -0
  356. capo_lambda/types/function_url_config_list.py +29 -0
  357. capo_lambda/types/function_url_qualifier.py +5 -0
  358. capo_lambda/types/function_version.py +14 -0
  359. capo_lambda/types/function_version_latest_published.py +14 -0
  360. capo_lambda/types/function_versions_by_capacity_provider_list.py +37 -0
  361. capo_lambda/types/function_versions_by_capacity_provider_list_item.py +47 -0
  362. capo_lambda/types/get_account_settings_request.py +18 -0
  363. capo_lambda/types/get_account_settings_response.py +51 -0
  364. capo_lambda/types/get_alias_request.py +27 -0
  365. capo_lambda/types/get_capacity_provider_request.py +26 -0
  366. capo_lambda/types/get_capacity_provider_response.py +41 -0
  367. capo_lambda/types/get_code_signing_config_request.py +26 -0
  368. capo_lambda/types/get_code_signing_config_response.py +43 -0
  369. capo_lambda/types/get_durable_execution_history_request.py +38 -0
  370. capo_lambda/types/get_durable_execution_history_response.py +42 -0
  371. capo_lambda/types/get_durable_execution_request.py +24 -0
  372. capo_lambda/types/get_durable_execution_response.py +150 -0
  373. capo_lambda/types/get_durable_execution_state_request.py +33 -0
  374. capo_lambda/types/get_durable_execution_state_response.py +46 -0
  375. capo_lambda/types/get_event_source_mapping_request.py +24 -0
  376. capo_lambda/types/get_function_code_signing_config_request.py +24 -0
  377. capo_lambda/types/get_function_code_signing_config_response.py +45 -0
  378. capo_lambda/types/get_function_concurrency_request.py +24 -0
  379. capo_lambda/types/get_function_concurrency_response.py +30 -0
  380. capo_lambda/types/get_function_configuration_request.py +29 -0
  381. capo_lambda/types/get_function_event_invoke_config_request.py +29 -0
  382. capo_lambda/types/get_function_recursion_config_request.py +24 -0
  383. capo_lambda/types/get_function_recursion_config_response.py +36 -0
  384. capo_lambda/types/get_function_request.py +29 -0
  385. capo_lambda/types/get_function_response.py +96 -0
  386. capo_lambda/types/get_function_scaling_config_request.py +29 -0
  387. capo_lambda/types/get_function_scaling_config_response.py +69 -0
  388. capo_lambda/types/get_function_url_config_request.py +29 -0
  389. capo_lambda/types/get_function_url_config_response.py +100 -0
  390. capo_lambda/types/get_layer_version_by_arn_request.py +24 -0
  391. capo_lambda/types/get_layer_version_policy_request.py +27 -0
  392. capo_lambda/types/get_layer_version_policy_response.py +34 -0
  393. capo_lambda/types/get_layer_version_request.py +27 -0
  394. capo_lambda/types/get_layer_version_response.py +127 -0
  395. capo_lambda/types/get_policy_request.py +29 -0
  396. capo_lambda/types/get_policy_response.py +34 -0
  397. capo_lambda/types/get_provisioned_concurrency_config_request.py +27 -0
  398. capo_lambda/types/get_provisioned_concurrency_config_response.py +94 -0
  399. capo_lambda/types/get_runtime_management_config_request.py +29 -0
  400. capo_lambda/types/get_runtime_management_config_response.py +56 -0
  401. capo_lambda/types/handler.py +5 -0
  402. capo_lambda/types/header.py +5 -0
  403. capo_lambda/types/headers_list.py +17 -0
  404. capo_lambda/types/http_status.py +5 -0
  405. capo_lambda/types/image_config.py +55 -0
  406. capo_lambda/types/image_config_error.py +35 -0
  407. capo_lambda/types/image_config_response.py +51 -0
  408. capo_lambda/types/include_execution_data.py +5 -0
  409. capo_lambda/types/input_payload.py +5 -0
  410. capo_lambda/types/instance_requirements.py +77 -0
  411. capo_lambda/types/instance_type.py +5 -0
  412. capo_lambda/types/instance_type_set.py +17 -0
  413. capo_lambda/types/integer.py +5 -0
  414. capo_lambda/types/invocation_completed_details.py +75 -0
  415. capo_lambda/types/invocation_request.py +57 -0
  416. capo_lambda/types/invocation_response.py +48 -0
  417. capo_lambda/types/invocation_type.py +18 -0
  418. capo_lambda/types/invoke_async_request.py +16 -0
  419. capo_lambda/types/invoke_async_response.py +24 -0
  420. capo_lambda/types/invoke_mode.py +17 -0
  421. capo_lambda/types/invoke_response_stream_update.py +42 -0
  422. capo_lambda/types/invoke_with_response_stream_complete_event.py +55 -0
  423. capo_lambda/types/invoke_with_response_stream_request.py +54 -0
  424. capo_lambda/types/invoke_with_response_stream_response.py +24 -0
  425. capo_lambda/types/invoke_with_response_stream_response_event.py +78 -0
  426. capo_lambda/types/invoked_via_function_url.py +5 -0
  427. capo_lambda/types/item_count.py +5 -0
  428. capo_lambda/types/kafka_schema_registry_access_config.py +47 -0
  429. capo_lambda/types/kafka_schema_registry_access_config_list.py +33 -0
  430. capo_lambda/types/kafka_schema_registry_auth_type.py +18 -0
  431. capo_lambda/types/kafka_schema_registry_config.py +93 -0
  432. capo_lambda/types/kafka_schema_validation_attribute.py +17 -0
  433. capo_lambda/types/kafka_schema_validation_config.py +42 -0
  434. capo_lambda/types/kafka_schema_validation_config_list.py +33 -0
  435. capo_lambda/types/kms_key_arn.py +5 -0
  436. capo_lambda/types/kms_key_arn_non_empty.py +5 -0
  437. capo_lambda/types/lambda_managed_instances_capacity_provider_config.py +59 -0
  438. capo_lambda/types/last_update_status.py +18 -0
  439. capo_lambda/types/last_update_status_reason.py +5 -0
  440. capo_lambda/types/last_update_status_reason_code.py +49 -0
  441. capo_lambda/types/layer.py +49 -0
  442. capo_lambda/types/layer_arn.py +5 -0
  443. capo_lambda/types/layer_list.py +17 -0
  444. capo_lambda/types/layer_name.py +5 -0
  445. capo_lambda/types/layer_permission_allowed_action.py +5 -0
  446. capo_lambda/types/layer_permission_allowed_principal.py +5 -0
  447. capo_lambda/types/layer_version_arn.py +5 -0
  448. capo_lambda/types/layer_version_content_input.py +55 -0
  449. capo_lambda/types/layer_version_content_output.py +54 -0
  450. capo_lambda/types/layer_version_number.py +5 -0
  451. capo_lambda/types/layer_versions_list.py +29 -0
  452. capo_lambda/types/layer_versions_list_item.py +101 -0
  453. capo_lambda/types/layers_list.py +27 -0
  454. capo_lambda/types/layers_list_item.py +56 -0
  455. capo_lambda/types/layers_reference_list.py +27 -0
  456. capo_lambda/types/license_info.py +5 -0
  457. capo_lambda/types/list_aliases_request.py +35 -0
  458. capo_lambda/types/list_aliases_response.py +39 -0
  459. capo_lambda/types/list_capacity_providers_request.py +32 -0
  460. capo_lambda/types/list_capacity_providers_response.py +52 -0
  461. capo_lambda/types/list_code_signing_configs_request.py +27 -0
  462. capo_lambda/types/list_code_signing_configs_response.py +49 -0
  463. capo_lambda/types/list_durable_executions_by_function_request.py +55 -0
  464. capo_lambda/types/list_durable_executions_by_function_response.py +47 -0
  465. capo_lambda/types/list_event_source_mappings_request.py +35 -0
  466. capo_lambda/types/list_event_source_mappings_response.py +49 -0
  467. capo_lambda/types/list_function_event_invoke_configs_request.py +32 -0
  468. capo_lambda/types/list_function_event_invoke_configs_response.py +49 -0
  469. capo_lambda/types/list_function_url_configs_request.py +30 -0
  470. capo_lambda/types/list_function_url_configs_response.py +54 -0
  471. capo_lambda/types/list_function_versions_by_capacity_provider_request.py +32 -0
  472. capo_lambda/types/list_function_versions_by_capacity_provider_response.py +62 -0
  473. capo_lambda/types/list_functions_by_code_signing_config_request.py +32 -0
  474. capo_lambda/types/list_functions_by_code_signing_config_response.py +43 -0
  475. capo_lambda/types/list_functions_request.py +33 -0
  476. capo_lambda/types/list_functions_response.py +43 -0
  477. capo_lambda/types/list_layer_versions_request.py +36 -0
  478. capo_lambda/types/list_layer_versions_response.py +45 -0
  479. capo_lambda/types/list_layers_request.py +33 -0
  480. capo_lambda/types/list_layers_response.py +39 -0
  481. capo_lambda/types/list_provisioned_concurrency_configs_request.py +32 -0
  482. capo_lambda/types/list_provisioned_concurrency_configs_response.py +49 -0
  483. capo_lambda/types/list_tags_request.py +24 -0
  484. capo_lambda/types/list_tags_response.py +32 -0
  485. capo_lambda/types/list_versions_by_function_request.py +30 -0
  486. capo_lambda/types/list_versions_by_function_response.py +43 -0
  487. capo_lambda/types/local_mount_path.py +5 -0
  488. capo_lambda/types/log_format.py +17 -0
  489. capo_lambda/types/log_group.py +5 -0
  490. capo_lambda/types/log_type.py +17 -0
  491. capo_lambda/types/logging_config.py +79 -0
  492. capo_lambda/types/long.py +5 -0
  493. capo_lambda/types/master_region.py +5 -0
  494. capo_lambda/types/max_age.py +5 -0
  495. capo_lambda/types/max_fifty_list_items.py +5 -0
  496. capo_lambda/types/max_function_event_invoke_config_list_items.py +5 -0
  497. capo_lambda/types/max_items.py +5 -0
  498. capo_lambda/types/max_layer_list_items.py +5 -0
  499. capo_lambda/types/max_list_items.py +5 -0
  500. capo_lambda/types/max_provisioned_concurrency_config_list_items.py +5 -0
  501. capo_lambda/types/maximum_batching_window_in_seconds.py +5 -0
  502. capo_lambda/types/maximum_concurrency.py +5 -0
  503. capo_lambda/types/maximum_event_age_in_seconds.py +5 -0
  504. capo_lambda/types/maximum_number_of_pollers.py +5 -0
  505. capo_lambda/types/maximum_record_age_in_seconds.py +5 -0
  506. capo_lambda/types/maximum_retry_attempts.py +5 -0
  507. capo_lambda/types/maximum_retry_attempts_event_source_mapping.py +5 -0
  508. capo_lambda/types/memory_size.py +5 -0
  509. capo_lambda/types/method.py +5 -0
  510. capo_lambda/types/metric_target_value.py +5 -0
  511. capo_lambda/types/minimum_number_of_pollers.py +5 -0
  512. capo_lambda/types/name_spaced_function_arn.py +5 -0
  513. capo_lambda/types/namespaced_function_name.py +5 -0
  514. capo_lambda/types/namespaced_statement_id.py +5 -0
  515. capo_lambda/types/non_negative_integer.py +5 -0
  516. capo_lambda/types/nullable_boolean.py +5 -0
  517. capo_lambda/types/numeric_latest_published_or_alias_qualifier.py +5 -0
  518. capo_lambda/types/on_failure.py +28 -0
  519. capo_lambda/types/on_success.py +28 -0
  520. capo_lambda/types/operation.py +205 -0
  521. capo_lambda/types/operation_action.py +20 -0
  522. capo_lambda/types/operation_id.py +5 -0
  523. capo_lambda/types/operation_name.py +5 -0
  524. capo_lambda/types/operation_payload.py +5 -0
  525. capo_lambda/types/operation_status.py +23 -0
  526. capo_lambda/types/operation_sub_type.py +5 -0
  527. capo_lambda/types/operation_type.py +21 -0
  528. capo_lambda/types/operation_update.py +174 -0
  529. capo_lambda/types/operation_updates.py +27 -0
  530. capo_lambda/types/operations.py +27 -0
  531. capo_lambda/types/organization_id.py +5 -0
  532. capo_lambda/types/origin.py +5 -0
  533. capo_lambda/types/output_payload.py +5 -0
  534. capo_lambda/types/package_type.py +17 -0
  535. capo_lambda/types/parallelization_factor.py +5 -0
  536. capo_lambda/types/pattern.py +5 -0
  537. capo_lambda/types/per_execution_environment_max_concurrency.py +5 -0
  538. capo_lambda/types/positive_integer.py +5 -0
  539. capo_lambda/types/principal.py +5 -0
  540. capo_lambda/types/principal_org_id.py +5 -0
  541. capo_lambda/types/provisioned_concurrency_config_list.py +37 -0
  542. capo_lambda/types/provisioned_concurrency_config_list_item.py +101 -0
  543. capo_lambda/types/provisioned_concurrency_status_enum.py +18 -0
  544. capo_lambda/types/provisioned_poller_config.py +48 -0
  545. capo_lambda/types/provisioned_poller_group_name.py +5 -0
  546. capo_lambda/types/publish_layer_version_request.py +98 -0
  547. capo_lambda/types/publish_layer_version_response.py +127 -0
  548. capo_lambda/types/publish_version_request.py +65 -0
  549. capo_lambda/types/published_function_qualifier.py +5 -0
  550. capo_lambda/types/put_function_code_signing_config_request.py +38 -0
  551. capo_lambda/types/put_function_code_signing_config_response.py +45 -0
  552. capo_lambda/types/put_function_concurrency_request.py +38 -0
  553. capo_lambda/types/put_function_event_invoke_config_request.py +66 -0
  554. capo_lambda/types/put_function_recursion_config_request.py +44 -0
  555. capo_lambda/types/put_function_recursion_config_response.py +36 -0
  556. capo_lambda/types/put_function_scaling_config_request.py +50 -0
  557. capo_lambda/types/put_function_scaling_config_response.py +36 -0
  558. capo_lambda/types/put_provisioned_concurrency_config_request.py +43 -0
  559. capo_lambda/types/put_provisioned_concurrency_config_response.py +94 -0
  560. capo_lambda/types/put_runtime_management_config_request.py +58 -0
  561. capo_lambda/types/put_runtime_management_config_response.py +60 -0
  562. capo_lambda/types/qualifier.py +5 -0
  563. capo_lambda/types/queue.py +5 -0
  564. capo_lambda/types/queues.py +17 -0
  565. capo_lambda/types/recursive_loop.py +17 -0
  566. capo_lambda/types/remove_layer_version_permission_request.py +33 -0
  567. capo_lambda/types/remove_permission_request.py +35 -0
  568. capo_lambda/types/replay_children.py +5 -0
  569. capo_lambda/types/reserved_concurrent_executions.py +5 -0
  570. capo_lambda/types/resource_arn.py +5 -0
  571. capo_lambda/types/response_streaming_invocation_type.py +17 -0
  572. capo_lambda/types/retention_period_in_days.py +5 -0
  573. capo_lambda/types/retry_details.py +38 -0
  574. capo_lambda/types/reverse_order.py +5 -0
  575. capo_lambda/types/role_arn.py +5 -0
  576. capo_lambda/types/runtime.py +61 -0
  577. capo_lambda/types/runtime_version_arn.py +5 -0
  578. capo_lambda/types/runtime_version_config.py +45 -0
  579. capo_lambda/types/runtime_version_error.py +35 -0
  580. capo_lambda/types/s3_bucket.py +5 -0
  581. capo_lambda/types/s3_key.py +5 -0
  582. capo_lambda/types/s3_object_version.py +5 -0
  583. capo_lambda/types/scaling_config.py +30 -0
  584. capo_lambda/types/schema_registry_event_record_format.py +17 -0
  585. capo_lambda/types/schema_registry_uri.py +5 -0
  586. capo_lambda/types/security_group_id.py +5 -0
  587. capo_lambda/types/security_group_ids.py +19 -0
  588. capo_lambda/types/self_managed_event_source.py +36 -0
  589. capo_lambda/types/self_managed_kafka_event_source_config.py +49 -0
  590. capo_lambda/types/send_durable_execution_callback_failure_request.py +35 -0
  591. capo_lambda/types/send_durable_execution_callback_failure_response.py +18 -0
  592. capo_lambda/types/send_durable_execution_callback_heartbeat_request.py +24 -0
  593. capo_lambda/types/send_durable_execution_callback_heartbeat_response.py +18 -0
  594. capo_lambda/types/send_durable_execution_callback_success_request.py +41 -0
  595. capo_lambda/types/send_durable_execution_callback_success_response.py +18 -0
  596. capo_lambda/types/sensitive_string.py +5 -0
  597. capo_lambda/types/signing_profile_version_arns.py +17 -0
  598. capo_lambda/types/snap_start.py +36 -0
  599. capo_lambda/types/snap_start_apply_on.py +17 -0
  600. capo_lambda/types/snap_start_optimization_status.py +17 -0
  601. capo_lambda/types/snap_start_response.py +57 -0
  602. capo_lambda/types/source_access_configuration.py +41 -0
  603. capo_lambda/types/source_access_configurations.py +29 -0
  604. capo_lambda/types/source_access_type.py +23 -0
  605. capo_lambda/types/source_owner.py +5 -0
  606. capo_lambda/types/stack_trace_entries.py +19 -0
  607. capo_lambda/types/stack_trace_entry.py +5 -0
  608. capo_lambda/types/state.py +23 -0
  609. capo_lambda/types/state_reason.py +5 -0
  610. capo_lambda/types/state_reason_code.py +53 -0
  611. capo_lambda/types/statement_id.py +5 -0
  612. capo_lambda/types/step_details.py +68 -0
  613. capo_lambda/types/step_failed_details.py +51 -0
  614. capo_lambda/types/step_options.py +30 -0
  615. capo_lambda/types/step_started_details.py +18 -0
  616. capo_lambda/types/step_succeeded_details.py +51 -0
  617. capo_lambda/types/stop_durable_execution_request.py +35 -0
  618. capo_lambda/types/stop_durable_execution_response.py +41 -0
  619. capo_lambda/types/string.py +5 -0
  620. capo_lambda/types/string_list.py +17 -0
  621. capo_lambda/types/subnet_id.py +5 -0
  622. capo_lambda/types/subnet_ids.py +17 -0
  623. capo_lambda/types/system_log_level.py +18 -0
  624. capo_lambda/types/tag_key.py +5 -0
  625. capo_lambda/types/tag_key_list.py +17 -0
  626. capo_lambda/types/tag_resource_request.py +38 -0
  627. capo_lambda/types/tag_value.py +5 -0
  628. capo_lambda/types/taggable_resource.py +5 -0
  629. capo_lambda/types/tags.py +26 -0
  630. capo_lambda/types/tags_error.py +39 -0
  631. capo_lambda/types/tags_error_code.py +5 -0
  632. capo_lambda/types/tags_error_message.py +5 -0
  633. capo_lambda/types/target_tracking_scaling_policy.py +53 -0
  634. capo_lambda/types/tenancy_config.py +41 -0
  635. capo_lambda/types/tenant_id.py +5 -0
  636. capo_lambda/types/tenant_isolation_mode.py +14 -0
  637. capo_lambda/types/throttle_reason.py +21 -0
  638. capo_lambda/types/timeout.py +5 -0
  639. capo_lambda/types/timestamp.py +5 -0
  640. capo_lambda/types/topic.py +5 -0
  641. capo_lambda/types/topics.py +17 -0
  642. capo_lambda/types/trace_header.py +28 -0
  643. capo_lambda/types/tracing_config.py +32 -0
  644. capo_lambda/types/tracing_config_response.py +32 -0
  645. capo_lambda/types/tracing_mode.py +17 -0
  646. capo_lambda/types/truncated.py +5 -0
  647. capo_lambda/types/tumbling_window_in_seconds.py +5 -0
  648. capo_lambda/types/unqualified_function_name.py +5 -0
  649. capo_lambda/types/unreserved_concurrent_executions.py +5 -0
  650. capo_lambda/types/untag_resource_request.py +27 -0
  651. capo_lambda/types/update_alias_request.py +71 -0
  652. capo_lambda/types/update_capacity_provider_request.py +47 -0
  653. capo_lambda/types/update_capacity_provider_response.py +41 -0
  654. capo_lambda/types/update_code_signing_config_request.py +73 -0
  655. capo_lambda/types/update_code_signing_config_response.py +43 -0
  656. capo_lambda/types/update_event_source_mapping_request.py +326 -0
  657. capo_lambda/types/update_function_code_request.py +129 -0
  658. capo_lambda/types/update_function_configuration_request.py +278 -0
  659. capo_lambda/types/update_function_event_invoke_config_request.py +66 -0
  660. capo_lambda/types/update_function_url_config_request.py +72 -0
  661. capo_lambda/types/update_function_url_config_response.py +104 -0
  662. capo_lambda/types/update_runtime_on.py +18 -0
  663. capo_lambda/types/uri.py +5 -0
  664. capo_lambda/types/version.py +5 -0
  665. capo_lambda/types/version_with_latest_published.py +5 -0
  666. capo_lambda/types/vpc_config.py +64 -0
  667. capo_lambda/types/vpc_config_response.py +71 -0
  668. capo_lambda/types/vpc_id.py +5 -0
  669. capo_lambda/types/wait_cancelled_details.py +32 -0
  670. capo_lambda/types/wait_details.py +42 -0
  671. capo_lambda/types/wait_options.py +28 -0
  672. capo_lambda/types/wait_started_details.py +51 -0
  673. capo_lambda/types/wait_succeeded_details.py +28 -0
  674. capo_lambda/types/weight.py +5 -0
  675. capo_lambda/types/working_directory.py +5 -0
  676. capo_lambda/types/x_amzn_trace_id.py +5 -0
  677. capo_lambda-0.5.0.dist-info/METADATA +97 -0
  678. capo_lambda-0.5.0.dist-info/RECORD +681 -0
  679. capo_lambda-0.5.0.dist-info/WHEEL +5 -0
  680. capo_lambda-0.5.0.dist-info/licenses/LICENSE +21 -0
  681. capo_lambda-0.5.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,136 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from ._aws_partition import aws_partition
6
+ from ._endpoint_runtime import (
7
+ Endpoint,
8
+ EndpointError,
9
+ get_attr,
10
+ interpolate,
11
+ )
12
+
13
+
14
+ class EndpointParams:
15
+ def __init__(
16
+ self,
17
+ *,
18
+ UseDualStack: bool | None = None,
19
+ UseFIPS: bool | None = None,
20
+ Region: str | None = None,
21
+ Endpoint: str | None = None,
22
+ ):
23
+ self.UseDualStack = UseDualStack if UseDualStack is not None else False
24
+ self.UseFIPS = UseFIPS if UseFIPS is not None else False
25
+ self.Region = Region if Region is not None else None
26
+ self.Endpoint = Endpoint if Endpoint is not None else None
27
+
28
+
29
+ def resolve(p: EndpointParams) -> Endpoint: # type: ignore
30
+ """Resolve endpoint from parameters using generated ruleset."""
31
+ _locals: dict[str, Any] = {}
32
+ if p.Endpoint is not None:
33
+ if p.UseFIPS is True:
34
+ raise EndpointError(
35
+ interpolate(
36
+ "Invalid Configuration: FIPS and custom endpoint are not supported",
37
+ p,
38
+ _locals,
39
+ )
40
+ )
41
+ if p.UseDualStack is True:
42
+ raise EndpointError(
43
+ interpolate(
44
+ "Invalid Configuration: Dualstack and custom endpoint are not supported",
45
+ p,
46
+ _locals,
47
+ )
48
+ )
49
+ return Endpoint(url=p.Endpoint, properties={}, headers={})
50
+ _locals: dict[str, Any] = {}
51
+ if p.Region is not None:
52
+ _locals["PartitionResult"] = aws_partition(p.Region)
53
+ if _locals["PartitionResult"] is not None:
54
+ if p.UseFIPS is True:
55
+ if p.UseDualStack is True:
56
+ if True is get_attr(
57
+ _locals["PartitionResult"],
58
+ interpolate("supportsFIPS", p, _locals),
59
+ ):
60
+ if True is get_attr(
61
+ _locals["PartitionResult"],
62
+ interpolate("supportsDualStack", p, _locals),
63
+ ):
64
+ return Endpoint(
65
+ url=interpolate(
66
+ "https://lambda-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",
67
+ p,
68
+ _locals,
69
+ ),
70
+ properties={},
71
+ headers={},
72
+ )
73
+ raise EndpointError(
74
+ interpolate(
75
+ "FIPS and DualStack are enabled, but this partition does not support one or both",
76
+ p,
77
+ _locals,
78
+ )
79
+ )
80
+ if p.UseFIPS is True:
81
+ if (
82
+ get_attr(
83
+ _locals["PartitionResult"],
84
+ interpolate("supportsFIPS", p, _locals),
85
+ )
86
+ is True
87
+ ):
88
+ return Endpoint(
89
+ url=interpolate(
90
+ "https://lambda-fips.{Region}.{PartitionResult#dnsSuffix}",
91
+ p,
92
+ _locals,
93
+ ),
94
+ properties={},
95
+ headers={},
96
+ )
97
+ raise EndpointError(
98
+ interpolate(
99
+ "FIPS is enabled but this partition does not support FIPS",
100
+ p,
101
+ _locals,
102
+ )
103
+ )
104
+ if p.UseDualStack is True:
105
+ if True is get_attr(
106
+ _locals["PartitionResult"],
107
+ interpolate("supportsDualStack", p, _locals),
108
+ ):
109
+ return Endpoint(
110
+ url=interpolate(
111
+ "https://lambda.{Region}.{PartitionResult#dualStackDnsSuffix}",
112
+ p,
113
+ _locals,
114
+ ),
115
+ properties={},
116
+ headers={},
117
+ )
118
+ raise EndpointError(
119
+ interpolate(
120
+ "DualStack is enabled but this partition does not support DualStack",
121
+ p,
122
+ _locals,
123
+ )
124
+ )
125
+ return Endpoint(
126
+ url=interpolate(
127
+ "https://lambda.{Region}.{PartitionResult#dnsSuffix}", p, _locals
128
+ ),
129
+ properties={},
130
+ headers={},
131
+ )
132
+ _locals: dict[str, Any] = {}
133
+ raise EndpointError(
134
+ interpolate("Invalid Configuration: Missing Region", p, _locals)
135
+ )
136
+ raise EndpointError("No endpoint rules matched")
@@ -0,0 +1,389 @@
1
+ """Endpoint rule-set runtime — hand-written helpers shared by every generated
2
+ ``_endpoint_rule_set.py``. Pure, no third-party deps.
3
+
4
+ Functions mirror the Smithy rules-engine standard library:
5
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import re
11
+ from collections.abc import Mapping
12
+ from dataclasses import dataclass, field
13
+ from typing import Any, TypedDict
14
+ from urllib.parse import quote, urlsplit
15
+
16
+
17
+ @dataclass(frozen=True, slots=True)
18
+ class Endpoint:
19
+ """Resolved endpoint returned by ``resolve()``.
20
+
21
+ Mirrors the rules-engine *Endpoint object*: a ``url`` plus optional
22
+ ``properties`` (arbitrary document values) and ``headers`` (multi-value
23
+ map of header name to list of values).
24
+
25
+ Reference:
26
+ https://smithy.io/2.0/additional-specs/rules-engine/specification.html#endpoint-object
27
+ """
28
+
29
+ url: str
30
+ properties: dict[str, Any] = field(default_factory=dict)
31
+ headers: dict[str, list[str]] = field(default_factory=dict)
32
+
33
+
34
+ class EndpointError(Exception):
35
+ """Raised when no endpoint rule matches or an ``error`` rule fires.
36
+
37
+ Corresponds to the rules-engine *error rule*: terminates evaluation
38
+ with a diagnostic message produced by the rule set.
39
+
40
+ Reference:
41
+ https://smithy.io/2.0/additional-specs/rules-engine/specification.html#error-rule
42
+ """
43
+
44
+
45
+ _PLACEHOLDER = re.compile(r"\{([A-Za-z_][A-Za-z0-9_]*)(?:#([A-Za-z0-9_.\[\]]+))?\}")
46
+
47
+
48
+ def interpolate(template: str, params: object, locals_: dict[str, Any]) -> str:
49
+ """Expand a rules-engine *template string*.
50
+
51
+ Substitutes ``{Name}`` and ``{Name#path.subpath}`` references inside
52
+ ``template``. Names resolve against ``locals_`` first (variables bound
53
+ by ``assign`` conditions), then against ``params`` attributes (any
54
+ object with attribute access — a dataclass, plain class, etc.; not a
55
+ dict).
56
+ ``#path`` segments walk the resolved value via :func:`get_attr`.
57
+
58
+ Raises :class:`EndpointError` if a referenced name resolves to ``None``.
59
+
60
+ Reference:
61
+ https://smithy.io/2.0/additional-specs/rules-engine/specification.html#template-strings
62
+ """
63
+
64
+ def replace(match: re.Match[str]) -> str:
65
+ name, path = match.group(1), match.group(2)
66
+
67
+ if name in locals_:
68
+ value = locals_[name]
69
+ elif hasattr(params, name):
70
+ value = getattr(params, name)
71
+ else:
72
+ raise EndpointError(f"interpolate: unknown reference '{name}'")
73
+
74
+ if value is None:
75
+ raise EndpointError(f"interpolate: '{name}' is None")
76
+
77
+ if path:
78
+ value = get_attr(value, path)
79
+
80
+ if value is None:
81
+ raise EndpointError(f"interpolate: '{name}#{path}' is None")
82
+
83
+ if isinstance(value, bool):
84
+ return "true" if value else "false"
85
+ return str(value)
86
+
87
+ return _PLACEHOLDER.sub(replace, template)
88
+
89
+
90
+ _SEGMENT_RE = re.compile(r"([A-Za-z_][A-Za-z0-9_]*|\[-?\d+\])")
91
+
92
+
93
+ def get_attr(value: Mapping[str, object] | list[str], path: str) -> object:
94
+ """Rules-engine ``getAttr`` — index into a value by a dotted/bracketed path.
95
+
96
+ Walks segments like ``a.b[0].c`` against dicts (key lookup), objects
97
+ (attribute lookup), and indexable sequences (integer index). Any missing
98
+ key, missing attribute, out-of-range index, or non-indexable cursor
99
+ short-circuits to ``None``.
100
+
101
+ Reference:
102
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html#getattr-function
103
+ """
104
+ cursor: object = value
105
+ for segment in _SEGMENT_RE.findall(path):
106
+ if cursor is None:
107
+ return None
108
+
109
+ if segment.startswith("["):
110
+ # Array index
111
+ idx = int(segment[1:-1])
112
+ try:
113
+ cursor = cursor[idx] # type: ignore
114
+ except IndexError:
115
+ return None
116
+ except TypeError:
117
+ return None
118
+ except KeyError:
119
+ return None
120
+ else:
121
+ # Field access
122
+ if isinstance(cursor, dict):
123
+ cursor = cursor.get(segment)
124
+ else:
125
+ cursor = getattr(cursor, segment, None)
126
+
127
+ return cursor
128
+
129
+
130
+ def string_equals(a: Any, b: Any) -> bool:
131
+ """Rules-engine ``stringEquals`` — strict string equality.
132
+
133
+ Both operands must be Python ``str``; any non-str comparand returns
134
+ ``False``.
135
+
136
+ Reference:
137
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html#stringequals-function
138
+ """
139
+ return isinstance(a, str) and isinstance(b, str) and a == b
140
+
141
+
142
+ _HOST_LABEL = re.compile(r"^[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$")
143
+
144
+
145
+ def substring(value: Any, start: int, stop: int, reverse: bool) -> str | None:
146
+ """Rules-engine ``substring`` — slice an ASCII string by ``[start, stop)``.
147
+
148
+ Returns ``None`` when ``value`` is not a string, contains non-ASCII
149
+ code points, or the ``start``/``stop`` indices are negative, equal,
150
+ inverted, or past the end. When ``reverse`` is true, indices count
151
+ from the end of the string toward the start.
152
+
153
+ Reference:
154
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html#substring-function
155
+ """
156
+ if not isinstance(value, str):
157
+ return None
158
+ if not value.isascii():
159
+ return None
160
+ if start < 0 or stop < 0 or start >= stop:
161
+ return None
162
+ if stop > len(value):
163
+ return None
164
+ if reverse:
165
+ n = len(value)
166
+ return value[n - stop : n - start]
167
+ return value[start:stop]
168
+
169
+
170
+ def is_valid_host_label(value: Any, allow_subdomains: bool) -> bool:
171
+ """Rules-engine ``isValidHostLabel`` — validate an RFC 1123 host label.
172
+
173
+ A label is 1–63 chars of ``[A-Za-z0-9-]`` that does not start or end
174
+ with a hyphen. When ``allow_subdomains`` is true, ``value`` may be a
175
+ dot-separated sequence of such labels (every label must be valid).
176
+
177
+ Reference:
178
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html#isvalidhostlabel-function
179
+ """
180
+ if not isinstance(value, str) or not value:
181
+ return False
182
+ if allow_subdomains:
183
+ labels = value.split(".")
184
+ return bool(labels) and all(_HOST_LABEL.match(label) for label in labels)
185
+ return _HOST_LABEL.match(value) is not None
186
+
187
+
188
+ def uri_encode(value: str | None) -> str:
189
+ """Rules-engine ``uriEncode`` — percent-encode per RFC 3986 §2.3.
190
+
191
+ Every character outside the unreserved set ``A-Z a-z 0-9 - _ . ~`` is
192
+ percent-encoded, including ``/``. Non-string input yields ``""``.
193
+
194
+ Reference:
195
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html#uriencode-function
196
+ """
197
+ if value is None:
198
+ return ""
199
+ return quote(value, safe="-_.~")
200
+
201
+
202
+ class ParsedUrl(TypedDict):
203
+ scheme: str
204
+ authority: str
205
+ path: str
206
+ normalizedPath: str
207
+ isIp: bool
208
+
209
+
210
+ def parse_url(value: str) -> ParsedUrl | None:
211
+ """Rules-engine ``parseUrl`` — split an HTTP(S) URL into components.
212
+
213
+ Returns a :class:`ParsedUrl` with ``scheme``, ``authority`` (host plus
214
+ optional ``:port``), ``path``, ``normalizedPath`` (``path`` guaranteed
215
+ to end in ``/``), and ``isIp`` (true for IPv4 dotted-quad or IPv6
216
+ hosts). Returns ``None`` when ``value`` is not a string, the scheme is
217
+ not ``http``/``https``, or a query/fragment is present.
218
+
219
+ Reference:
220
+ https://smithy.io/2.0/additional-specs/rules-engine/standard-library.html#parseurl-function
221
+ """
222
+
223
+ try:
224
+ parts = urlsplit(value)
225
+
226
+ if parts.scheme not in ("http", "https"):
227
+ return None
228
+
229
+ # Smithy parseUrl rejects query strings and fragments.
230
+ if parts.query or parts.fragment:
231
+ return None
232
+
233
+ # urlsplit preserves the raw/encoded path.
234
+ path = parts.path
235
+
236
+ normalized_path = path if path.endswith("/") else f"{path}/"
237
+
238
+ return {
239
+ "scheme": parts.scheme,
240
+ "authority": parts.netloc,
241
+ "path": path,
242
+ "normalizedPath": normalized_path,
243
+ "isIp": _looks_like_ip(parts.hostname or ""),
244
+ }
245
+
246
+ except Exception:
247
+ return None
248
+
249
+
250
+ def _looks_like_ip(host: str) -> bool:
251
+ if not host:
252
+ return False
253
+ if ":" in host: # IPv6 (urlsplit strips brackets from hostname)
254
+ return True
255
+ parts = host.split(".")
256
+ return len(parts) == 4 and all(p.isdigit() for p in parts)
257
+
258
+
259
+ class ParsedArn(TypedDict):
260
+ partition: str
261
+ service: str
262
+ region: str
263
+ accountId: str
264
+ resourceId: list[str]
265
+
266
+
267
+ def aws_parse_arn(arn: Any) -> ParsedArn | None:
268
+ """AWS rules-engine ``aws.parseArn`` — split an ARN into components.
269
+
270
+ An ARN has the shape ``arn:<partition>:<service>:<region>:<account>:<resource>``.
271
+ Returns a :class:`ParsedArn` with ``partition``, ``service``, ``region``,
272
+ ``accountId``, and ``resourceId`` (the trailing resource section split
273
+ on ``:`` and ``/``). Returns ``None`` when ``arn`` is not a string, has
274
+ fewer than six ``:``-separated parts, does not begin with ``arn``, or
275
+ has empty ``partition``/``service``/resource sections. ``region`` and
276
+ ``accountId`` may be empty (e.g. IAM ARNs have no region).
277
+
278
+ Reference:
279
+ https://smithy.io/2.0/aws/rules-engine/standard-library.html#aws-parsearn-function
280
+ """
281
+ if not isinstance(arn, str):
282
+ return None
283
+ parts = arn.split(":", 5)
284
+ if len(parts) != 6:
285
+ return None
286
+ prefix, partition, service, region, account_id, resource = parts
287
+ if prefix != "arn" or not partition or not service or not resource:
288
+ return None
289
+ return {
290
+ "partition": partition,
291
+ "service": service,
292
+ "region": region,
293
+ "accountId": account_id,
294
+ "resourceId": re.split(r"[:/]", resource),
295
+ }
296
+
297
+
298
+ _S3_BUCKET_LABEL = re.compile(r"^[a-z0-9][a-z0-9\-]{1,61}[a-z0-9]$")
299
+ _IPV4 = re.compile(r"^(\d{1,3}\.){3}\d{1,3}$")
300
+
301
+
302
+ def aws_is_virtual_hostable_s3_bucket(value: Any, allow_subdomains: Any) -> bool:
303
+ """AWS rules-engine ``aws.isVirtualHostableS3Bucket`` — validate an S3
304
+ bucket name for virtual-hosted-style addressing.
305
+
306
+ Returns ``True`` when ``value`` is a DNS-compliant S3 bucket name
307
+ (3–63 chars, lowercase alphanumeric plus hyphens, no leading/trailing
308
+ hyphen, no IPv4-address shape). When ``allow_subdomains`` is true,
309
+ dotted bucket names are accepted and each dot-separated label must
310
+ independently satisfy the same rules.
311
+
312
+ Reference:
313
+ https://smithy.io/2.0/aws/rules-engine/standard-library.html#aws-isvirtualhostables3bucket-function
314
+ """
315
+ if not isinstance(value, str):
316
+ return False
317
+ if allow_subdomains:
318
+ labels = value.split(".")
319
+ return all(aws_is_virtual_hostable_s3_bucket(label, False) for label in labels)
320
+ if _IPV4.match(value):
321
+ return False
322
+ return _S3_BUCKET_LABEL.match(value) is not None
323
+
324
+
325
+ def apply_label(url: str, placeholder: str, value: str) -> str:
326
+ """Substitute ``placeholder`` in ``url`` with ``value`` — except when the
327
+ rule engine has already embedded ``value`` as a whole host label or path
328
+ segment. In that case, strip the placeholder and collapse any resulting
329
+ ``//`` or trailing ``/`` in the path.
330
+
331
+ "Part" = host label (split on ``.``) or path segment (split on ``/``).
332
+ Match is case-sensitive, whole-part only. An empty ``value`` always
333
+ substitutes (never matches).
334
+ """
335
+ if placeholder not in url:
336
+ return url
337
+
338
+ if not value:
339
+ return url.replace(placeholder, "")
340
+
341
+ try:
342
+ parsed = urlsplit(url)
343
+ # urlsplit.hostname lowercases the value, which would break the
344
+ # case-sensitive membership test below. Extract from netloc manually
345
+ # to preserve the original casing.
346
+ netloc = parsed.netloc or ""
347
+ host = (
348
+ netloc.rsplit(":", 1)[0]
349
+ if ":" in netloc and not netloc.startswith("[")
350
+ else netloc
351
+ )
352
+ path = parsed.path or ""
353
+ except Exception:
354
+ # Parse failure -> fall back to substitution (defensive).
355
+ return url.replace(placeholder, quote(value, safe=""))
356
+
357
+ host_labels = host.split(".") if host and not host.startswith("[") else []
358
+ path_segments = [seg for seg in path.split("/") if seg]
359
+
360
+ # Guard: only strip when the placeholder is in the path portion. If the
361
+ # placeholder appears only in a query string or fragment, a coincidental
362
+ # host/path match must not trigger the strip branch.
363
+ scheme_sep = url.find("://")
364
+ head_end = url.find("/", scheme_sep + 3) if scheme_sep != -1 else -1
365
+ path_portion = url[head_end:] if head_end != -1 else ""
366
+ # Strip query and fragment off the path portion for the placeholder check.
367
+ for sep in ("?", "#"):
368
+ idx = path_portion.find(sep)
369
+ if idx != -1:
370
+ path_portion = path_portion[:idx]
371
+ if placeholder not in path_portion:
372
+ return url.replace(placeholder, quote(value, safe=""))
373
+
374
+ if value in host_labels or value in path_segments:
375
+ # Splice the placeholder out, then collapse the one seam slash our
376
+ # removal may have created. Pre-existing slash duplicates in the
377
+ # URI template are not our concern — we only fix what we caused.
378
+ idx = url.find(placeholder)
379
+ stripped = url[:idx] + url[idx + len(placeholder) :]
380
+ before = stripped[idx - 1] if idx > 0 else ""
381
+ after = stripped[idx] if idx < len(stripped) else ""
382
+ if before == "/" and after == "/":
383
+ stripped = stripped[:idx] + stripped[idx + 1 :]
384
+ # Placeholder at the path's tail leaves a stray trailing ``/``.
385
+ if stripped.endswith("/"):
386
+ stripped = stripped[:-1]
387
+ return stripped
388
+
389
+ return url.replace(placeholder, quote(value, safe=""))
@@ -0,0 +1,152 @@
1
+ from __future__ import annotations
2
+
3
+ import configparser
4
+ import functools
5
+ import os
6
+ from dataclasses import dataclass
7
+ from pathlib import Path
8
+ from typing import TypeVar
9
+
10
+ from capo_lambda._services._pipeline import (
11
+ AsyncInterceptor,
12
+ AsyncNextFn,
13
+ AsyncOperationRequest,
14
+ AsyncOperationResponse,
15
+ Interceptor,
16
+ NextFn,
17
+ OperationRequest,
18
+ OperationResponse,
19
+ )
20
+
21
+ ENDPOINT_ENV_VAR = "AWS_ENDPOINT_URL_LAMBDA"
22
+ SERVICE_ID = "lambda"
23
+ TInput = TypeVar("TInput")
24
+ TOutput = TypeVar("TOutput")
25
+
26
+
27
+ @dataclass(frozen=True)
28
+ class AwsSettings:
29
+ region: str | None
30
+ endpoint: str | None
31
+ use_fips: bool
32
+ use_dual_stack: bool
33
+ max_attempts: int
34
+
35
+
36
+ def _env_bool(name: str) -> bool | None:
37
+ val = os.environ.get(name)
38
+ if val is None:
39
+ return None
40
+ return val.strip().lower() in ("true", "1")
41
+
42
+
43
+ def _profile_bool(section: dict[str, str], key: str) -> bool | None:
44
+ val = section.get(key)
45
+ if val is None:
46
+ return None
47
+ return val.strip().lower() in ("true", "1")
48
+
49
+
50
+ def _load_profile() -> tuple[dict[str, str], dict[str, dict[str, str]]]:
51
+ profile = (
52
+ os.environ.get("AWS_PROFILE")
53
+ or os.environ.get("AWS_DEFAULT_PROFILE")
54
+ or "default"
55
+ )
56
+ raw_cfg = os.environ.get("AWS_CONFIG_FILE")
57
+ cfg_file = (
58
+ Path(raw_cfg).expanduser() if raw_cfg else Path.home() / ".aws" / "config"
59
+ )
60
+ merged: dict[str, str] = {}
61
+ services: dict[str, dict[str, str]] = {}
62
+ if cfg_file.is_file():
63
+ cfg = configparser.ConfigParser(interpolation=None)
64
+ cfg.read(cfg_file)
65
+ key = "default" if profile == "default" else f"profile {profile}"
66
+ if cfg.has_section(key):
67
+ merged.update(dict(cfg.items(key)))
68
+ services_name = merged.get("services")
69
+ if services_name and cfg.has_section(f"services {services_name}"):
70
+ raw = dict(cfg.items(f"services {services_name}"))
71
+ for svc, block in raw.items():
72
+ parsed: dict[str, str] = {}
73
+ for line in block.splitlines():
74
+ stripped = line.strip()
75
+ if "=" in stripped:
76
+ k, _, val = stripped.partition("=")
77
+ parsed[k.strip()] = val.strip()
78
+ services[svc] = parsed
79
+ return merged, services
80
+
81
+
82
+ @functools.cache
83
+ def load_aws_settings() -> AwsSettings:
84
+ profile, services = _load_profile()
85
+ region = os.environ.get("AWS_REGION") or profile.get("region")
86
+ endpoint = (
87
+ os.environ.get(ENDPOINT_ENV_VAR)
88
+ or os.environ.get("AWS_ENDPOINT_URL")
89
+ or services.get(SERVICE_ID, {}).get("endpoint_url")
90
+ or profile.get("endpoint_url")
91
+ )
92
+ use_fips: bool | None = _env_bool("AWS_USE_FIPS_ENDPOINT")
93
+ if use_fips is None:
94
+ use_fips = _profile_bool(profile, "use_fips_endpoint")
95
+ if use_fips is None:
96
+ use_fips = False
97
+ use_dual_stack: bool | None = _env_bool("AWS_USE_DUALSTACK_ENDPOINT")
98
+ if use_dual_stack is None:
99
+ use_dual_stack = _profile_bool(profile, "use_dualstack_endpoint")
100
+ if use_dual_stack is None:
101
+ use_dual_stack = False
102
+ max_attempts_raw = os.environ.get("AWS_MAX_ATTEMPTS") or profile.get("max_attempts")
103
+ max_attempts = int(max_attempts_raw) if max_attempts_raw else 3
104
+ return AwsSettings(
105
+ region=region,
106
+ endpoint=endpoint,
107
+ use_fips=use_fips,
108
+ use_dual_stack=use_dual_stack,
109
+ max_attempts=max_attempts,
110
+ )
111
+
112
+
113
+ def aws_config() -> Interceptor[TInput, TOutput]:
114
+ def interceptor(
115
+ request: OperationRequest[TInput], next: NextFn[TInput, TOutput]
116
+ ) -> OperationResponse[TOutput]:
117
+ settings = load_aws_settings()
118
+ options = request.options
119
+ if options.region is None:
120
+ options.region = settings.region
121
+ if options.endpoint is None:
122
+ options.endpoint = settings.endpoint
123
+ if options.use_fips is None:
124
+ options.use_fips = settings.use_fips
125
+ if options.use_dual_stack is None:
126
+ options.use_dual_stack = settings.use_dual_stack
127
+ if options.retry_max_attempts is None:
128
+ options.retry_max_attempts = settings.max_attempts
129
+ return next(request)
130
+
131
+ return interceptor
132
+
133
+
134
+ def aaws_config() -> AsyncInterceptor[TInput, TOutput]:
135
+ async def interceptor(
136
+ request: AsyncOperationRequest[TInput], next: AsyncNextFn[TInput, TOutput]
137
+ ) -> AsyncOperationResponse[TOutput]:
138
+ settings = load_aws_settings()
139
+ options = request.options
140
+ if options.region is None:
141
+ options.region = settings.region
142
+ if options.endpoint is None:
143
+ options.endpoint = settings.endpoint
144
+ if options.use_fips is None:
145
+ options.use_fips = settings.use_fips
146
+ if options.use_dual_stack is None:
147
+ options.use_dual_stack = settings.use_dual_stack
148
+ if options.retry_max_attempts is None:
149
+ options.retry_max_attempts = settings.max_attempts
150
+ return await next(request)
151
+
152
+ return interceptor