capo-keyspaces 0.4.0__tar.gz → 0.6.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.
- {capo_keyspaces-0.4.0/src/capo_keyspaces.egg-info → capo_keyspaces-0.6.0}/PKG-INFO +2 -2
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/pyproject.toml +2 -2
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_auth/_sigv4.py +9 -9
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/create_keyspace.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/create_table.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/create_type.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/delete_keyspace.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/delete_table.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/delete_type.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/get_keyspace.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/get_table.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/get_table_auto_scaling_settings.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/get_type.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/list_keyspaces.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/list_tables.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/list_tags_for_resource.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/list_types.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/restore_table.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/tag_resource.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/untag_resource.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/update_keyspace.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_operations/keyspaces_service/update_table.py +5 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_services/_pipeline.py +2 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_services/async_keyspaces.py +12 -4
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_services/keyspaces.py +12 -4
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0/src/capo_keyspaces.egg-info}/PKG-INFO +2 -2
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces.egg-info/requires.txt +1 -1
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/tests/test_sigv4.py +21 -6
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/LICENSE +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/README.md +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/setup.cfg +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/__init__.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_async.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_auth/_identity.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_auth/_providers.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_auth/_signers.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_auth/_zapros_handler.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_body.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_iter.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_pagination.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_protocol/__init__.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_protocol/errors.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_protocol/eventstream.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_protocol/serialize.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_protocol/xml.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/__init__.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/_aws_partition.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/_endpoint_rule_set.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/_endpoint_runtime.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_services/_aws_config.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/__init__.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/_base.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/access_denied_exception.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/conflict_exception.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/internal_server_exception.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/resource_not_found_exception.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/service_quota_exceeded_exception.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/validation_exception.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/py.typed +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/_prelude/blob.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/_prelude/timestamp.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/arn.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/auto_scaling_policy.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/auto_scaling_settings.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/auto_scaling_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/boolean_object.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/capacity_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/capacity_specification_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/capacity_units.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/cdc_propagate_tags.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/cdc_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/cdc_specification_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/cdc_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/client_side_timestamps.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/client_side_timestamps_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/clustering_key.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/clustering_key_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/column_definition.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/column_definition_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/comment.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/create_keyspace_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/create_keyspace_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/create_table_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/create_table_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/create_type_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/create_type_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/default_time_to_live.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/delete_keyspace_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/delete_keyspace_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/delete_table_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/delete_table_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/delete_type_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/delete_type_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/depth.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/double_object.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/encryption_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/encryption_type.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/field_definition.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/field_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/generic_string.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_keyspace_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_keyspace_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_table_auto_scaling_settings_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_table_auto_scaling_settings_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_table_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_table_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_type_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/get_type_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/integer_object.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/keyspace_name.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/keyspace_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/keyspace_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/keyspace_summary_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/kms_key_arn.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_keyspaces_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_keyspaces_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_tables_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_tables_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_tags_for_resource_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_tags_for_resource_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_types_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/list_types_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/max_results.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/next_token.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/partition_key.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/partition_key_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/point_in_time_recovery.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/point_in_time_recovery_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/point_in_time_recovery_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/region.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/region_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replica_auto_scaling_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replica_auto_scaling_specification_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replica_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replica_specification_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replica_specification_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replica_specification_summary_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replication_group_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replication_group_status_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/replication_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/restore_table_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/restore_table_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/rs.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/schema_definition.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/sort_order.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/static_column.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/static_column_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/stream_arn.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/table_name.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/table_name_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/table_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/table_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/table_summary_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tables_replication_progress.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tag.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tag_key.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tag_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tag_resource_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tag_resource_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/tag_value.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/target_tracking_scaling_policy_configuration.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/throughput_mode.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/time_to_live.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/time_to_live_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/timestamp.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/type_name.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/type_name_list.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/type_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/untag_resource_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/untag_resource_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/update_keyspace_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/update_keyspace_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/update_table_request.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/update_table_response.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/view_type.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/warm_throughput_specification.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/warm_throughput_specification_summary.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/warm_throughput_status.py +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces.egg-info/SOURCES.txt +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces.egg-info/dependency_links.txt +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces.egg-info/top_level.txt +0 -0
- {capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/tests/test_body.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: capo-keyspaces
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Python SDK for AWS Keyspaces.
|
|
5
5
|
Classifier: Development Status :: 4 - Beta
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -17,7 +17,7 @@ Classifier: Typing :: Typed
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: zapros>=0.
|
|
20
|
+
Requires-Dist: zapros>=0.21.0
|
|
21
21
|
Provides-Extra: anyio
|
|
22
22
|
Requires-Dist: anyio>=3.0; extra == "anyio"
|
|
23
23
|
Provides-Extra: sso
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "capo-keyspaces"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.6.0"
|
|
4
4
|
description = "Python SDK for AWS Keyspaces."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -19,7 +19,7 @@ classifiers = [
|
|
|
19
19
|
"Typing :: Typed",
|
|
20
20
|
]
|
|
21
21
|
dependencies = [
|
|
22
|
-
"zapros>=0.
|
|
22
|
+
"zapros>=0.21.0",
|
|
23
23
|
]
|
|
24
24
|
|
|
25
25
|
[project.optional-dependencies]
|
|
@@ -17,7 +17,7 @@ import hmac
|
|
|
17
17
|
import re
|
|
18
18
|
from collections.abc import AsyncIterator, Iterator
|
|
19
19
|
from typing import Any, Literal, TypedDict, cast
|
|
20
|
-
from urllib.parse import quote
|
|
20
|
+
from urllib.parse import quote
|
|
21
21
|
|
|
22
22
|
import zapros
|
|
23
23
|
from pywhatwgurl import URLSearchParams
|
|
@@ -134,11 +134,11 @@ def _remove_dot_segments(path: str) -> str:
|
|
|
134
134
|
def _canonical_path(path: str, *, double_encode: bool, normalize: bool) -> str:
|
|
135
135
|
"""Build CanonicalURI.
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
normalize dot segments and URI-encode each
|
|
139
|
-
rules-engine ``disableNormalizePath`` /
|
|
140
|
-
turn those steps off — S3-family
|
|
141
|
-
signed exactly as provided.
|
|
137
|
+
``path`` is the path as sent on the wire, so it is already URI-encoded
|
|
138
|
+
once. Standard services normalize dot segments and URI-encode each
|
|
139
|
+
segment a second time. The rules-engine ``disableNormalizePath`` /
|
|
140
|
+
``disableDoubleEncoding`` flags turn those steps off — S3-family
|
|
141
|
+
services set both, so the path is signed exactly as provided.
|
|
142
142
|
"""
|
|
143
143
|
if not path:
|
|
144
144
|
return "/"
|
|
@@ -148,9 +148,9 @@ def _canonical_path(path: str, *, double_encode: bool, normalize: bool) -> str:
|
|
|
148
148
|
path = _remove_dot_segments(path)
|
|
149
149
|
if not double_encode:
|
|
150
150
|
return path
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
return quote(
|
|
151
|
+
# Never decode first: that would turn a "%2F" inside a segment (an ARN in
|
|
152
|
+
# a path label) into a separator and leave it out of the second encoding.
|
|
153
|
+
return quote(path, safe="/~")
|
|
154
154
|
|
|
155
155
|
|
|
156
156
|
def _canonical_query(query: str) -> str:
|
|
@@ -129,7 +129,11 @@ def build_request(
|
|
|
129
129
|
allow_nan=False,
|
|
130
130
|
).encode()
|
|
131
131
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
132
|
-
signer =
|
|
132
|
+
signer = (
|
|
133
|
+
None
|
|
134
|
+
if options.anonymous
|
|
135
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
136
|
+
)
|
|
133
137
|
normalized_url = zapros.URL(url)
|
|
134
138
|
for k, v in params:
|
|
135
139
|
normalized_url.search_params.append(k, v)
|
|
@@ -144,7 +144,11 @@ def build_request(
|
|
|
144
144
|
allow_nan=False,
|
|
145
145
|
).encode()
|
|
146
146
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
147
|
-
signer =
|
|
147
|
+
signer = (
|
|
148
|
+
None
|
|
149
|
+
if options.anonymous
|
|
150
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
151
|
+
)
|
|
148
152
|
normalized_url = zapros.URL(url)
|
|
149
153
|
for k, v in params:
|
|
150
154
|
normalized_url.search_params.append(k, v)
|
|
@@ -133,7 +133,11 @@ def build_request(
|
|
|
133
133
|
allow_nan=False,
|
|
134
134
|
).encode()
|
|
135
135
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
136
|
-
signer =
|
|
136
|
+
signer = (
|
|
137
|
+
None
|
|
138
|
+
if options.anonymous
|
|
139
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
140
|
+
)
|
|
137
141
|
normalized_url = zapros.URL(url)
|
|
138
142
|
for k, v in params:
|
|
139
143
|
normalized_url.search_params.append(k, v)
|
|
@@ -124,7 +124,11 @@ def build_request(
|
|
|
124
124
|
allow_nan=False,
|
|
125
125
|
).encode()
|
|
126
126
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
127
|
-
signer =
|
|
127
|
+
signer = (
|
|
128
|
+
None
|
|
129
|
+
if options.anonymous
|
|
130
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
131
|
+
)
|
|
128
132
|
normalized_url = zapros.URL(url)
|
|
129
133
|
for k, v in params:
|
|
130
134
|
normalized_url.search_params.append(k, v)
|
|
@@ -124,7 +124,11 @@ def build_request(
|
|
|
124
124
|
allow_nan=False,
|
|
125
125
|
).encode()
|
|
126
126
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
127
|
-
signer =
|
|
127
|
+
signer = (
|
|
128
|
+
None
|
|
129
|
+
if options.anonymous
|
|
130
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
131
|
+
)
|
|
128
132
|
normalized_url = zapros.URL(url)
|
|
129
133
|
for k, v in params:
|
|
130
134
|
normalized_url.search_params.append(k, v)
|
|
@@ -132,7 +132,11 @@ def build_request(
|
|
|
132
132
|
allow_nan=False,
|
|
133
133
|
).encode()
|
|
134
134
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
135
|
-
signer =
|
|
135
|
+
signer = (
|
|
136
|
+
None
|
|
137
|
+
if options.anonymous
|
|
138
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
139
|
+
)
|
|
136
140
|
normalized_url = zapros.URL(url)
|
|
137
141
|
for k, v in params:
|
|
138
142
|
normalized_url.search_params.append(k, v)
|
|
@@ -129,7 +129,11 @@ def build_request(
|
|
|
129
129
|
allow_nan=False,
|
|
130
130
|
).encode()
|
|
131
131
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
132
|
-
signer =
|
|
132
|
+
signer = (
|
|
133
|
+
None
|
|
134
|
+
if options.anonymous
|
|
135
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
136
|
+
)
|
|
133
137
|
normalized_url = zapros.URL(url)
|
|
134
138
|
for k, v in params:
|
|
135
139
|
normalized_url.search_params.append(k, v)
|
|
@@ -138,7 +138,11 @@ def build_request(
|
|
|
138
138
|
allow_nan=False,
|
|
139
139
|
).encode()
|
|
140
140
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
141
|
-
signer =
|
|
141
|
+
signer = (
|
|
142
|
+
None
|
|
143
|
+
if options.anonymous
|
|
144
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
145
|
+
)
|
|
142
146
|
normalized_url = zapros.URL(url)
|
|
143
147
|
for k, v in params:
|
|
144
148
|
normalized_url.search_params.append(k, v)
|
|
@@ -127,7 +127,11 @@ def build_request(
|
|
|
127
127
|
allow_nan=False,
|
|
128
128
|
).encode()
|
|
129
129
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
130
|
-
signer =
|
|
130
|
+
signer = (
|
|
131
|
+
None
|
|
132
|
+
if options.anonymous
|
|
133
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
134
|
+
)
|
|
131
135
|
normalized_url = zapros.URL(url)
|
|
132
136
|
for k, v in params:
|
|
133
137
|
normalized_url.search_params.append(k, v)
|
|
@@ -131,7 +131,11 @@ def build_request(
|
|
|
131
131
|
allow_nan=False,
|
|
132
132
|
).encode()
|
|
133
133
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
134
|
-
signer =
|
|
134
|
+
signer = (
|
|
135
|
+
None
|
|
136
|
+
if options.anonymous
|
|
137
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
138
|
+
)
|
|
135
139
|
normalized_url = zapros.URL(url)
|
|
136
140
|
for k, v in params:
|
|
137
141
|
normalized_url.search_params.append(k, v)
|
|
@@ -128,7 +128,11 @@ def build_request(
|
|
|
128
128
|
allow_nan=False,
|
|
129
129
|
).encode()
|
|
130
130
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
131
|
-
signer =
|
|
131
|
+
signer = (
|
|
132
|
+
None
|
|
133
|
+
if options.anonymous
|
|
134
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
135
|
+
)
|
|
132
136
|
normalized_url = zapros.URL(url)
|
|
133
137
|
for k, v in params:
|
|
134
138
|
normalized_url.search_params.append(k, v)
|
|
@@ -128,7 +128,11 @@ def build_request(
|
|
|
128
128
|
allow_nan=False,
|
|
129
129
|
).encode()
|
|
130
130
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
131
|
-
signer =
|
|
131
|
+
signer = (
|
|
132
|
+
None
|
|
133
|
+
if options.anonymous
|
|
134
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
135
|
+
)
|
|
132
136
|
normalized_url = zapros.URL(url)
|
|
133
137
|
for k, v in params:
|
|
134
138
|
normalized_url.search_params.append(k, v)
|
|
@@ -126,7 +126,11 @@ def build_request(
|
|
|
126
126
|
allow_nan=False,
|
|
127
127
|
).encode()
|
|
128
128
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
129
|
-
signer =
|
|
129
|
+
signer = (
|
|
130
|
+
None
|
|
131
|
+
if options.anonymous
|
|
132
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
133
|
+
)
|
|
130
134
|
normalized_url = zapros.URL(url)
|
|
131
135
|
for k, v in params:
|
|
132
136
|
normalized_url.search_params.append(k, v)
|
|
@@ -128,7 +128,11 @@ def build_request(
|
|
|
128
128
|
allow_nan=False,
|
|
129
129
|
).encode()
|
|
130
130
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
131
|
-
signer =
|
|
131
|
+
signer = (
|
|
132
|
+
None
|
|
133
|
+
if options.anonymous
|
|
134
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
135
|
+
)
|
|
132
136
|
normalized_url = zapros.URL(url)
|
|
133
137
|
for k, v in params:
|
|
134
138
|
normalized_url.search_params.append(k, v)
|
|
@@ -139,7 +139,11 @@ def build_request(
|
|
|
139
139
|
allow_nan=False,
|
|
140
140
|
).encode()
|
|
141
141
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
142
|
-
signer =
|
|
142
|
+
signer = (
|
|
143
|
+
None
|
|
144
|
+
if options.anonymous
|
|
145
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
146
|
+
)
|
|
143
147
|
normalized_url = zapros.URL(url)
|
|
144
148
|
for k, v in params:
|
|
145
149
|
normalized_url.search_params.append(k, v)
|
|
@@ -125,7 +125,11 @@ def build_request(
|
|
|
125
125
|
allow_nan=False,
|
|
126
126
|
).encode()
|
|
127
127
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
128
|
-
signer =
|
|
128
|
+
signer = (
|
|
129
|
+
None
|
|
130
|
+
if options.anonymous
|
|
131
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
132
|
+
)
|
|
129
133
|
normalized_url = zapros.URL(url)
|
|
130
134
|
for k, v in params:
|
|
131
135
|
normalized_url.search_params.append(k, v)
|
|
@@ -125,7 +125,11 @@ def build_request(
|
|
|
125
125
|
allow_nan=False,
|
|
126
126
|
).encode()
|
|
127
127
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
128
|
-
signer =
|
|
128
|
+
signer = (
|
|
129
|
+
None
|
|
130
|
+
if options.anonymous
|
|
131
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
132
|
+
)
|
|
129
133
|
normalized_url = zapros.URL(url)
|
|
130
134
|
for k, v in params:
|
|
131
135
|
normalized_url.search_params.append(k, v)
|
|
@@ -134,7 +134,11 @@ def build_request(
|
|
|
134
134
|
allow_nan=False,
|
|
135
135
|
).encode()
|
|
136
136
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
137
|
-
signer =
|
|
137
|
+
signer = (
|
|
138
|
+
None
|
|
139
|
+
if options.anonymous
|
|
140
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
141
|
+
)
|
|
138
142
|
normalized_url = zapros.URL(url)
|
|
139
143
|
for k, v in params:
|
|
140
144
|
normalized_url.search_params.append(k, v)
|
|
@@ -142,7 +142,11 @@ def build_request(
|
|
|
142
142
|
allow_nan=False,
|
|
143
143
|
).encode()
|
|
144
144
|
headers["content-type"] = "application/x-amz-json-1.0"
|
|
145
|
-
signer =
|
|
145
|
+
signer = (
|
|
146
|
+
None
|
|
147
|
+
if options.anonymous
|
|
148
|
+
else get_signer(options, auth_schemes=endpoint.properties.get("authSchemes"))
|
|
149
|
+
)
|
|
146
150
|
normalized_url = zapros.URL(url)
|
|
147
151
|
for k, v in params:
|
|
148
152
|
normalized_url.search_params.append(k, v)
|
|
@@ -40,6 +40,7 @@ class OperationOptions:
|
|
|
40
40
|
endpoint: str | None = None
|
|
41
41
|
retry_max_attempts: int | None = None
|
|
42
42
|
credentials_provider: IdentityProvider[Credentials] | None = None
|
|
43
|
+
anonymous: bool | None = None
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
@dataclass
|
|
@@ -51,6 +52,7 @@ class AsyncOperationOptions:
|
|
|
51
52
|
endpoint: str | None = None
|
|
52
53
|
retry_max_attempts: int | None = None
|
|
53
54
|
credentials_provider: IdentityProvider[Credentials] | None = None
|
|
55
|
+
anonymous: bool | None = None
|
|
54
56
|
|
|
55
57
|
|
|
56
58
|
@dataclass
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_services/async_keyspaces.py
RENAMED
|
@@ -103,6 +103,7 @@ class AsyncKeyspacesClientConfig(TypedDict, total=False, closed=True):
|
|
|
103
103
|
use_fips: bool | None
|
|
104
104
|
endpoint: str | None
|
|
105
105
|
credentials_provider: IdentityProvider[Credentials] | None
|
|
106
|
+
anonymous: bool | None
|
|
106
107
|
|
|
107
108
|
|
|
108
109
|
class AsyncKeyspacesClient:
|
|
@@ -118,6 +119,7 @@ class AsyncKeyspacesClient:
|
|
|
118
119
|
endpoint: The value of the ``SDK::Endpoint`` endpoint parameter.
|
|
119
120
|
credentials: AWS credentials for request signing.
|
|
120
121
|
credentials_provider: Provider that resolves AWS credentials. Takes precedence over ``credentials``.
|
|
122
|
+
anonymous: Send requests unsigned, without resolving credentials, even for operations that require authentication.
|
|
121
123
|
"""
|
|
122
124
|
|
|
123
125
|
def __init__(
|
|
@@ -131,10 +133,14 @@ class AsyncKeyspacesClient:
|
|
|
131
133
|
endpoint: str | None = None,
|
|
132
134
|
credentials: Credentials | None = None,
|
|
133
135
|
credentials_provider: CredentialsProvider | None = None,
|
|
136
|
+
anonymous: bool | None = None,
|
|
134
137
|
):
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
client = AsyncClient(http_handler)
|
|
139
|
+
# The handler the user gave us, or the default one for this environment.
|
|
140
|
+
# The SDK middlewares wrap it below, and the credential resolvers borrow
|
|
141
|
+
# it for their one-off calls.
|
|
142
|
+
raw_handler = client.handler
|
|
143
|
+
self._client = client.wrap_with_middleware(lambda next: AuthMiddleware(next))
|
|
138
144
|
if credentials is not None and credentials_provider is not None:
|
|
139
145
|
warnings.warn(
|
|
140
146
|
"Both credentials and credentials_provider given; provider takes precedence"
|
|
@@ -146,7 +152,7 @@ class AsyncKeyspacesClient:
|
|
|
146
152
|
resolved_credentials_provider = StaticAwsCredentialsProvider(credentials)
|
|
147
153
|
if resolved_credentials_provider is None and credentials is None:
|
|
148
154
|
resolved_credentials_provider = default_aws_credentials_chain(
|
|
149
|
-
AsyncClient(
|
|
155
|
+
AsyncClient(raw_handler)
|
|
150
156
|
)
|
|
151
157
|
self._config = AsyncKeyspacesClientConfig(
|
|
152
158
|
{
|
|
@@ -157,6 +163,7 @@ class AsyncKeyspacesClient:
|
|
|
157
163
|
"use_fips": use_fips,
|
|
158
164
|
"endpoint": endpoint,
|
|
159
165
|
"credentials_provider": resolved_credentials_provider,
|
|
166
|
+
"anonymous": anonymous,
|
|
160
167
|
}
|
|
161
168
|
)
|
|
162
169
|
|
|
@@ -185,6 +192,7 @@ class AsyncKeyspacesClient:
|
|
|
185
192
|
credentials_provider=overrides.get(
|
|
186
193
|
"credentials_provider", self._config.get("credentials_provider")
|
|
187
194
|
),
|
|
195
|
+
anonymous=overrides.get("anonymous", self._config.get("anonymous")),
|
|
188
196
|
)
|
|
189
197
|
return interceptors_, options_
|
|
190
198
|
|
|
@@ -103,6 +103,7 @@ class KeyspacesClientConfig(TypedDict, total=False, closed=True):
|
|
|
103
103
|
use_fips: bool | None
|
|
104
104
|
endpoint: str | None
|
|
105
105
|
credentials_provider: IdentityProvider[Credentials] | None
|
|
106
|
+
anonymous: bool | None
|
|
106
107
|
|
|
107
108
|
|
|
108
109
|
class KeyspacesClient:
|
|
@@ -118,6 +119,7 @@ class KeyspacesClient:
|
|
|
118
119
|
endpoint: The value of the ``SDK::Endpoint`` endpoint parameter.
|
|
119
120
|
credentials: AWS credentials for request signing.
|
|
120
121
|
credentials_provider: Provider that resolves AWS credentials. Takes precedence over ``credentials``.
|
|
122
|
+
anonymous: Send requests unsigned, without resolving credentials, even for operations that require authentication.
|
|
121
123
|
"""
|
|
122
124
|
|
|
123
125
|
def __init__(
|
|
@@ -131,10 +133,14 @@ class KeyspacesClient:
|
|
|
131
133
|
endpoint: str | None = None,
|
|
132
134
|
credentials: Credentials | None = None,
|
|
133
135
|
credentials_provider: CredentialsProvider | None = None,
|
|
136
|
+
anonymous: bool | None = None,
|
|
134
137
|
):
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
client = Client(http_handler)
|
|
139
|
+
# The handler the user gave us, or the default one for this environment.
|
|
140
|
+
# The SDK middlewares wrap it below, and the credential resolvers borrow
|
|
141
|
+
# it for their one-off calls.
|
|
142
|
+
raw_handler = client.handler
|
|
143
|
+
self._client = client.wrap_with_middleware(lambda next: AuthMiddleware(next))
|
|
138
144
|
if credentials is not None and credentials_provider is not None:
|
|
139
145
|
warnings.warn(
|
|
140
146
|
"Both credentials and credentials_provider given; provider takes precedence"
|
|
@@ -146,7 +152,7 @@ class KeyspacesClient:
|
|
|
146
152
|
resolved_credentials_provider = StaticAwsCredentialsProvider(credentials)
|
|
147
153
|
if resolved_credentials_provider is None and credentials is None:
|
|
148
154
|
resolved_credentials_provider = default_aws_credentials_chain(
|
|
149
|
-
Client(
|
|
155
|
+
Client(raw_handler)
|
|
150
156
|
)
|
|
151
157
|
self._config = KeyspacesClientConfig(
|
|
152
158
|
{
|
|
@@ -157,6 +163,7 @@ class KeyspacesClient:
|
|
|
157
163
|
"use_fips": use_fips,
|
|
158
164
|
"endpoint": endpoint,
|
|
159
165
|
"credentials_provider": resolved_credentials_provider,
|
|
166
|
+
"anonymous": anonymous,
|
|
160
167
|
}
|
|
161
168
|
)
|
|
162
169
|
|
|
@@ -185,6 +192,7 @@ class KeyspacesClient:
|
|
|
185
192
|
credentials_provider=overrides.get(
|
|
186
193
|
"credentials_provider", self._config.get("credentials_provider")
|
|
187
194
|
),
|
|
195
|
+
anonymous=overrides.get("anonymous", self._config.get("anonymous")),
|
|
188
196
|
)
|
|
189
197
|
return interceptors_, options_
|
|
190
198
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: capo-keyspaces
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Python SDK for AWS Keyspaces.
|
|
5
5
|
Classifier: Development Status :: 4 - Beta
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -17,7 +17,7 @@ Classifier: Typing :: Typed
|
|
|
17
17
|
Requires-Python: >=3.10
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: zapros>=0.
|
|
20
|
+
Requires-Dist: zapros>=0.21.0
|
|
21
21
|
Provides-Extra: anyio
|
|
22
22
|
Requires-Dist: anyio>=3.0; extra == "anyio"
|
|
23
23
|
Provides-Extra: sso
|
|
@@ -91,13 +91,28 @@ class TestCanonicalPath:
|
|
|
91
91
|
def test_s3_preserves_dot_segments(self):
|
|
92
92
|
assert _s3_path("/a/../b/./c") == "/a/../b/./c"
|
|
93
93
|
|
|
94
|
-
def
|
|
95
|
-
#
|
|
96
|
-
assert _std_path("/foo bar") == "/foo%2520bar"
|
|
97
|
-
|
|
98
|
-
def test_non_s3_already_encoded_double_encodes(self):
|
|
99
|
-
# "/foo%20bar" gets unquoted to "/foo bar", then double-encoded.
|
|
94
|
+
def test_non_s3_encodes_wire_path_once_more(self):
|
|
95
|
+
# The path arrives URI-encoded once ("/foo bar" is sent as "/foo%20bar").
|
|
100
96
|
assert _std_path("/foo%20bar") == "/foo%2520bar"
|
|
97
|
+
assert _std_path("/a%3Ab/caf%C3%A9~") == "/a%253Ab/caf%25C3%25A9~"
|
|
98
|
+
|
|
99
|
+
def test_non_s3_keeps_encoded_slash_inside_segment(self):
|
|
100
|
+
# An ARN in a path label: its "/" is sent as "%2F" and must stay part
|
|
101
|
+
# of the segment, not become a separator.
|
|
102
|
+
assert (
|
|
103
|
+
_std_path("/model/arn%3Aaws%3Abedrock%3A%3Afoundation-model%2Fx/converse")
|
|
104
|
+
== "/model/arn%253Aaws%253Abedrock%253A%253Afoundation-model%252Fx/converse"
|
|
105
|
+
)
|
|
106
|
+
assert _s3_path("/bucket/a%2Fb") == "/bucket/a%2Fb"
|
|
107
|
+
|
|
108
|
+
def test_non_s3_encodes_literal_reserved_characters_once(self):
|
|
109
|
+
# "@" and "$" appear literally in a few URI templates and are sent as is.
|
|
110
|
+
assert _std_path("/@connections/abc") == "/%40connections/abc"
|
|
111
|
+
assert _std_path("/things/t/jobs/$next") == "/things/t/jobs/%24next"
|
|
112
|
+
|
|
113
|
+
def test_non_s3_does_not_decode_the_wire_path(self):
|
|
114
|
+
assert _std_path("/a%2fb") == "/a%252fb"
|
|
115
|
+
assert _std_path("/a%25b") == "/a%2525b"
|
|
101
116
|
|
|
102
117
|
def test_non_s3_removes_dot_segments(self):
|
|
103
118
|
# Mirrors botocore's normalize_url_path: "." dropped, ".." pops,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/_aws_partition.py
RENAMED
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/_endpoint_rule_set.py
RENAMED
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/_rule_engine/_endpoint_runtime.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/access_denied_exception.py
RENAMED
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/conflict_exception.py
RENAMED
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/internal_server_exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/errors/validation_exception.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/_prelude/timestamp.py
RENAMED
|
File without changes
|
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/auto_scaling_policy.py
RENAMED
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/auto_scaling_settings.py
RENAMED
|
File without changes
|
{capo_keyspaces-0.4.0 → capo_keyspaces-0.6.0}/src/capo_keyspaces/types/auto_scaling_specification.py
RENAMED
|
File without changes
|
|
File without changes
|