capo-keyspacesstreams 0.2.0__tar.gz → 0.4.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 (93) hide show
  1. {capo_keyspacesstreams-0.2.0/src/capo_keyspacesstreams.egg-info → capo_keyspacesstreams-0.4.0}/PKG-INFO +1 -1
  2. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/pyproject.toml +1 -1
  3. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_operations/keyspaces_streams/get_records.py +8 -3
  4. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_operations/keyspaces_streams/get_shard_iterator.py +8 -3
  5. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_operations/keyspaces_streams/get_stream.py +8 -3
  6. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_operations/keyspaces_streams/list_streams.py +8 -3
  7. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_services/_pipeline.py +19 -0
  8. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_services/async_keyspaces_streams.py +5 -0
  9. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_services/keyspaces_streams.py +5 -0
  10. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0/src/capo_keyspacesstreams.egg-info}/PKG-INFO +1 -1
  11. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/LICENSE +0 -0
  12. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/README.md +0 -0
  13. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/setup.cfg +0 -0
  14. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/__init__.py +0 -0
  15. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_async.py +0 -0
  16. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_auth/_identity.py +0 -0
  17. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_auth/_providers.py +0 -0
  18. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_auth/_signers.py +0 -0
  19. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_auth/_sigv4.py +0 -0
  20. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_auth/_zapros_handler.py +0 -0
  21. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_body.py +0 -0
  22. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_iter.py +0 -0
  23. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_pagination.py +0 -0
  24. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_protocol/__init__.py +0 -0
  25. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_protocol/errors.py +0 -0
  26. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_protocol/eventstream.py +0 -0
  27. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_protocol/serialize.py +0 -0
  28. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_protocol/xml.py +0 -0
  29. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_rule_engine/__init__.py +0 -0
  30. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_rule_engine/_aws_partition.py +0 -0
  31. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_rule_engine/_endpoint_rule_set.py +0 -0
  32. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_rule_engine/_endpoint_runtime.py +0 -0
  33. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/_services/_aws_config.py +0 -0
  34. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/__init__.py +0 -0
  35. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/_base.py +0 -0
  36. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/access_denied_exception.py +0 -0
  37. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/internal_server_exception.py +0 -0
  38. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/resource_not_found_exception.py +0 -0
  39. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/throttling_exception.py +0 -0
  40. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/errors/validation_exception.py +0 -0
  41. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/py.typed +0 -0
  42. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/_prelude/blob.py +0 -0
  43. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/_prelude/timestamp.py +0 -0
  44. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/date.py +0 -0
  45. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/get_records_input.py +0 -0
  46. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/get_records_output.py +0 -0
  47. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/get_shard_iterator_input.py +0 -0
  48. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/get_shard_iterator_output.py +0 -0
  49. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/get_stream_input.py +0 -0
  50. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/get_stream_output.py +0 -0
  51. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/iterator_description.py +0 -0
  52. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/iterator_position.py +0 -0
  53. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspace_name.py +0 -0
  54. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_cell.py +0 -0
  55. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_cell_list.py +0 -0
  56. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_cell_map.py +0 -0
  57. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_cell_map_definition.py +0 -0
  58. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_cell_value.py +0 -0
  59. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_cells.py +0 -0
  60. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_keys_map.py +0 -0
  61. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_metadata.py +0 -0
  62. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_row.py +0 -0
  63. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/keyspaces_udt_map.py +0 -0
  64. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/list_streams_input.py +0 -0
  65. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/list_streams_output.py +0 -0
  66. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/origin_type.py +0 -0
  67. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/record.py +0 -0
  68. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/record_list.py +0 -0
  69. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/sequence_number.py +0 -0
  70. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/sequence_number_range.py +0 -0
  71. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard.py +0 -0
  72. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_description_list.py +0 -0
  73. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_filter.py +0 -0
  74. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_filter_type.py +0 -0
  75. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_id.py +0 -0
  76. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_id_list.py +0 -0
  77. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_id_token.py +0 -0
  78. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_iterator.py +0 -0
  79. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/shard_iterator_type.py +0 -0
  80. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/stream.py +0 -0
  81. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/stream_arn.py +0 -0
  82. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/stream_arn_token.py +0 -0
  83. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/stream_list.py +0 -0
  84. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/stream_status.py +0 -0
  85. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/stream_view_type.py +0 -0
  86. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/table_name.py +0 -0
  87. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams/types/validation_exception_type.py +0 -0
  88. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams.egg-info/SOURCES.txt +0 -0
  89. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams.egg-info/dependency_links.txt +0 -0
  90. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams.egg-info/requires.txt +0 -0
  91. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/src/capo_keyspacesstreams.egg-info/top_level.txt +0 -0
  92. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/tests/test_body.py +0 -0
  93. {capo_keyspacesstreams-0.2.0 → capo_keyspacesstreams-0.4.0}/tests/test_sigv4.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: capo-keyspacesstreams
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: Python SDK for AWS Keyspacesstreams.
5
5
  Classifier: Development Status :: 4 - Beta
6
6
  Classifier: Intended Audience :: Developers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "capo-keyspacesstreams"
3
- version = "0.2.0"
3
+ version = "0.4.0"
4
4
  description = "Python SDK for AWS Keyspacesstreams."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -28,6 +28,7 @@ from capo_keyspacesstreams._rule_engine._endpoint_rule_set import (
28
28
  from capo_keyspacesstreams._services._pipeline import (
29
29
  AsyncOperationOptions,
30
30
  OperationOptions,
31
+ raise_error,
31
32
  )
32
33
  from capo_keyspacesstreams.errors import UnknownServiceError
33
34
 
@@ -128,7 +129,11 @@ def build_request(
128
129
  allow_nan=False,
129
130
  ).encode()
130
131
  headers["content-type"] = "application/x-amz-json-1.0"
131
- signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
132
+ signer = (
133
+ None
134
+ if options.anonymous
135
+ else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
136
+ )
132
137
  normalized_url = zapros.URL(url)
133
138
  for k, v in params:
134
139
  normalized_url.search_params.append(k, v)
@@ -147,7 +152,7 @@ def get_records(
147
152
  try:
148
153
  if response.status >= 300:
149
154
  response.read()
150
- handle_error(response)
155
+ raise_error(response, handle_error)
151
156
  return handle_response(response), response
152
157
  except BaseException:
153
158
  response.close()
@@ -164,7 +169,7 @@ async def async_get_records(
164
169
  try:
165
170
  if response.status >= 300:
166
171
  await response.aread()
167
- handle_error(response)
172
+ raise_error(response, handle_error)
168
173
  return await async_handle_response(response), response
169
174
  except BaseException:
170
175
  await response.aclose()
@@ -27,6 +27,7 @@ from capo_keyspacesstreams._rule_engine._endpoint_rule_set import (
27
27
  from capo_keyspacesstreams._services._pipeline import (
28
28
  AsyncOperationOptions,
29
29
  OperationOptions,
30
+ raise_error,
30
31
  )
31
32
  from capo_keyspacesstreams.errors import UnknownServiceError
32
33
 
@@ -125,7 +126,11 @@ def build_request(
125
126
  allow_nan=False,
126
127
  ).encode()
127
128
  headers["content-type"] = "application/x-amz-json-1.0"
128
- signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
129
+ signer = (
130
+ None
131
+ if options.anonymous
132
+ else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
133
+ )
129
134
  normalized_url = zapros.URL(url)
130
135
  for k, v in params:
131
136
  normalized_url.search_params.append(k, v)
@@ -145,7 +150,7 @@ def get_shard_iterator(
145
150
  try:
146
151
  if response.status >= 300:
147
152
  response.read()
148
- handle_error(response)
153
+ raise_error(response, handle_error)
149
154
  return handle_response(response), response
150
155
  except BaseException:
151
156
  response.close()
@@ -163,7 +168,7 @@ async def async_get_shard_iterator(
163
168
  try:
164
169
  if response.status >= 300:
165
170
  await response.aread()
166
- handle_error(response)
171
+ raise_error(response, handle_error)
167
172
  return await async_handle_response(response), response
168
173
  except BaseException:
169
174
  await response.aclose()
@@ -31,6 +31,7 @@ from capo_keyspacesstreams._rule_engine._endpoint_rule_set import (
31
31
  from capo_keyspacesstreams._services._pipeline import (
32
32
  AsyncOperationOptions,
33
33
  OperationOptions,
34
+ raise_error,
34
35
  )
35
36
  from capo_keyspacesstreams.errors import UnknownServiceError
36
37
 
@@ -131,7 +132,11 @@ def build_request(
131
132
  allow_nan=False,
132
133
  ).encode()
133
134
  headers["content-type"] = "application/x-amz-json-1.0"
134
- signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
135
+ signer = (
136
+ None
137
+ if options.anonymous
138
+ else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
139
+ )
135
140
  normalized_url = zapros.URL(url)
136
141
  for k, v in params:
137
142
  normalized_url.search_params.append(k, v)
@@ -150,7 +155,7 @@ def get_stream(
150
155
  try:
151
156
  if response.status >= 300:
152
157
  response.read()
153
- handle_error(response)
158
+ raise_error(response, handle_error)
154
159
  return handle_response(response), response
155
160
  except BaseException:
156
161
  response.close()
@@ -167,7 +172,7 @@ async def async_get_stream(
167
172
  try:
168
173
  if response.status >= 300:
169
174
  await response.aread()
170
- handle_error(response)
175
+ raise_error(response, handle_error)
171
176
  return await async_handle_response(response), response
172
177
  except BaseException:
173
178
  await response.aclose()
@@ -27,6 +27,7 @@ from capo_keyspacesstreams._rule_engine._endpoint_rule_set import (
27
27
  from capo_keyspacesstreams._services._pipeline import (
28
28
  AsyncOperationOptions,
29
29
  OperationOptions,
30
+ raise_error,
30
31
  )
31
32
  from capo_keyspacesstreams.errors import UnknownServiceError
32
33
 
@@ -127,7 +128,11 @@ def build_request(
127
128
  allow_nan=False,
128
129
  ).encode()
129
130
  headers["content-type"] = "application/x-amz-json-1.0"
130
- signer = get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
131
+ signer = (
132
+ None
133
+ if options.anonymous
134
+ else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
135
+ )
131
136
  normalized_url = zapros.URL(url)
132
137
  for k, v in params:
133
138
  normalized_url.search_params.append(k, v)
@@ -146,7 +151,7 @@ def list_streams(
146
151
  try:
147
152
  if response.status >= 300:
148
153
  response.read()
149
- handle_error(response)
154
+ raise_error(response, handle_error)
150
155
  return handle_response(response), response
151
156
  except BaseException:
152
157
  response.close()
@@ -163,7 +168,7 @@ async def async_list_streams(
163
168
  try:
164
169
  if response.status >= 300:
165
170
  await response.aread()
166
- handle_error(response)
171
+ raise_error(response, handle_error)
167
172
  return await async_handle_response(response), response
168
173
  except BaseException:
169
174
  await response.aclose()
@@ -6,6 +6,7 @@ from collections.abc import AsyncIterator, Iterator, Sequence
6
6
  from dataclasses import dataclass
7
7
  from typing import TYPE_CHECKING, Awaitable, Callable, Generic, TypeVar, cast
8
8
 
9
+ from typing_extensions import Never
9
10
  from zapros import (
10
11
  AsyncClient,
11
12
  Client,
@@ -38,6 +39,7 @@ class OperationOptions:
38
39
  region: str | None = None
39
40
  retry_max_attempts: int | None = None
40
41
  credentials_provider: IdentityProvider[Credentials] | None = None
42
+ anonymous: bool | None = None
41
43
 
42
44
 
43
45
  @dataclass
@@ -48,6 +50,7 @@ class AsyncOperationOptions:
48
50
  region: str | None = None
49
51
  retry_max_attempts: int | None = None
50
52
  credentials_provider: IdentityProvider[Credentials] | None = None
53
+ anonymous: bool | None = None
51
54
 
52
55
 
53
56
  @dataclass
@@ -133,6 +136,22 @@ async def aexecute_pipeline(
133
136
  return await make_chain(0)(request)
134
137
 
135
138
 
139
+ def raise_error(response: Response, handle_error: Callable[[Response], Never]) -> Never:
140
+ try:
141
+ handle_error(response)
142
+ except ServiceError as exc:
143
+ # The response itself can say a retry is safe, even when the error is
144
+ # not marked @retryable: a 429, a transient 5xx or a Retry-After header.
145
+ if response.status == 429:
146
+ exc.is_throttling_error = True
147
+ if (
148
+ response.status in (429, 500, 502, 503, 504)
149
+ or "retry-after" in response.headers
150
+ ):
151
+ exc.is_retryable = True
152
+ raise
153
+
154
+
136
155
  def _is_retryable(exc: Exception) -> bool:
137
156
  if isinstance(exc, ServiceError):
138
157
  return exc.is_retryable
@@ -58,6 +58,7 @@ class AsyncKeyspacesStreamsClientConfig(TypedDict, total=False, closed=True):
58
58
  endpoint: str | None
59
59
  region: str | None
60
60
  credentials_provider: IdentityProvider[Credentials] | None
61
+ anonymous: bool | None
61
62
 
62
63
 
63
64
  class AsyncKeyspacesStreamsClient:
@@ -72,6 +73,7 @@ class AsyncKeyspacesStreamsClient:
72
73
  region: The value of the ``AWS::Region`` endpoint parameter.
73
74
  credentials: AWS credentials for request signing.
74
75
  credentials_provider: Provider that resolves AWS credentials. Takes precedence over ``credentials``.
76
+ anonymous: Send requests unsigned, without resolving credentials, even for operations that require authentication.
75
77
  """
76
78
 
77
79
  def __init__(
@@ -84,6 +86,7 @@ class AsyncKeyspacesStreamsClient:
84
86
  region: str | None = None,
85
87
  credentials: Credentials | None = None,
86
88
  credentials_provider: CredentialsProvider | None = None,
89
+ anonymous: bool | None = None,
87
90
  ):
88
91
  self._client = AsyncClient(http_handler).wrap_with_middleware(
89
92
  lambda next: AuthMiddleware(next)
@@ -109,6 +112,7 @@ class AsyncKeyspacesStreamsClient:
109
112
  "endpoint": endpoint,
110
113
  "region": region,
111
114
  "credentials_provider": resolved_credentials_provider,
115
+ "anonymous": anonymous,
112
116
  }
113
117
  )
114
118
 
@@ -134,6 +138,7 @@ class AsyncKeyspacesStreamsClient:
134
138
  credentials_provider=overrides.get(
135
139
  "credentials_provider", self._config.get("credentials_provider")
136
140
  ),
141
+ anonymous=overrides.get("anonymous", self._config.get("anonymous")),
137
142
  )
138
143
  return interceptors_, options_
139
144
 
@@ -58,6 +58,7 @@ class KeyspacesStreamsClientConfig(TypedDict, total=False, closed=True):
58
58
  endpoint: str | None
59
59
  region: str | None
60
60
  credentials_provider: IdentityProvider[Credentials] | None
61
+ anonymous: bool | None
61
62
 
62
63
 
63
64
  class KeyspacesStreamsClient:
@@ -72,6 +73,7 @@ class KeyspacesStreamsClient:
72
73
  region: The value of the ``AWS::Region`` endpoint parameter.
73
74
  credentials: AWS credentials for request signing.
74
75
  credentials_provider: Provider that resolves AWS credentials. Takes precedence over ``credentials``.
76
+ anonymous: Send requests unsigned, without resolving credentials, even for operations that require authentication.
75
77
  """
76
78
 
77
79
  def __init__(
@@ -84,6 +86,7 @@ class KeyspacesStreamsClient:
84
86
  region: str | None = None,
85
87
  credentials: Credentials | None = None,
86
88
  credentials_provider: CredentialsProvider | None = None,
89
+ anonymous: bool | None = None,
87
90
  ):
88
91
  self._client = Client(http_handler).wrap_with_middleware(
89
92
  lambda next: AuthMiddleware(next)
@@ -109,6 +112,7 @@ class KeyspacesStreamsClient:
109
112
  "endpoint": endpoint,
110
113
  "region": region,
111
114
  "credentials_provider": resolved_credentials_provider,
115
+ "anonymous": anonymous,
112
116
  }
113
117
  )
114
118
 
@@ -134,6 +138,7 @@ class KeyspacesStreamsClient:
134
138
  credentials_provider=overrides.get(
135
139
  "credentials_provider", self._config.get("credentials_provider")
136
140
  ),
141
+ anonymous=overrides.get("anonymous", self._config.get("anonymous")),
137
142
  )
138
143
  return interceptors_, options_
139
144
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: capo-keyspacesstreams
3
- Version: 0.2.0
3
+ Version: 0.4.0
4
4
  Summary: Python SDK for AWS Keyspacesstreams.
5
5
  Classifier: Development Status :: 4 - Beta
6
6
  Classifier: Intended Audience :: Developers