boto3-assist 0.23.0__tar.gz → 0.25.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 (147) hide show
  1. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/PKG-INFO +5 -5
  2. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/README.md +4 -4
  3. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/devops/build.py +1 -1
  4. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/pyproject.toml +1 -1
  5. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/requirements-dev.txt +2 -1
  6. boto3_assist-0.25.0/setup.sh +55 -0
  7. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb.py +1 -1
  8. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_index.py +21 -9
  9. boto3_assist-0.25.0/src/boto3_assist/version.py +1 -0
  10. boto3_assist-0.23.0/src/boto3_assist/version.py +0 -1
  11. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.env.docker +0 -0
  12. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.env.docker.001 +0 -0
  13. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.env.docker.nosql.workbench +0 -0
  14. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.env.unittest +0 -0
  15. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.gitignore +0 -0
  16. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.vscode/launch.json +0 -0
  17. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.vscode/settings.json +0 -0
  18. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/.vscode/tasks.json +0 -0
  19. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/LICENSE-EXPLAINED.txt +0 -0
  20. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/LICENSE.txt +0 -0
  21. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/aws_regions_with_status.csv +0 -0
  22. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/aws_regions_with_status.json +0 -0
  23. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/devops/readme.md +0 -0
  24. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/__init__.py +0 -0
  25. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/cloudwatch/log_report.py +0 -0
  26. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/models/order_item_model.py +0 -0
  27. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/models/order_model.py +0 -0
  28. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/models/product_model.py +0 -0
  29. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/models/user_model.py +0 -0
  30. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/models/user_post_model.py +0 -0
  31. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/order_example/main.py +0 -0
  32. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/order_example/products.json +0 -0
  33. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/order_item_service.py +0 -0
  34. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/order_service.py +0 -0
  35. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/product_service.py +0 -0
  36. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/table_service.py +0 -0
  37. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/user_post_service.py +0 -0
  38. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/user_service.py +0 -0
  39. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/user_service_client_example.py +0 -0
  40. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/services/user_service_resource_example.py +0 -0
  41. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/dynamodb/user_post_example/main.py +0 -0
  42. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/examples/ec2/regions_report.py +0 -0
  43. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/module-headers.txt +0 -0
  44. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/mypy.ini +0 -0
  45. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/requirements.txt +0 -0
  46. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/run-checks.sh +0 -0
  47. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/run_unit_tests.sh +0 -0
  48. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/__init__.py +0 -0
  49. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/aws_config.py +0 -0
  50. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/aws_lambda/event_info.py +0 -0
  51. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/aws_lambda/mock_context.py +0 -0
  52. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/boto3session.py +0 -0
  53. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cloudwatch/cloudwatch_connection.py +0 -0
  54. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cloudwatch/cloudwatch_connection_tracker.py +0 -0
  55. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cloudwatch/cloudwatch_log_connection.py +0 -0
  56. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cloudwatch/cloudwatch_logs.py +0 -0
  57. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cloudwatch/cloudwatch_query.py +0 -0
  58. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cognito/cognito_authorizer.py +0 -0
  59. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cognito/cognito_connection.py +0 -0
  60. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cognito/cognito_utility.py +0 -0
  61. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cognito/jwks_cache.py +0 -0
  62. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/cognito/user.py +0 -0
  63. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/connection.py +0 -0
  64. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/connection_tracker.py +0 -0
  65. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_connection.py +0 -0
  66. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_helpers.py +0 -0
  67. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_importer.py +0 -0
  68. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_iservice.py +0 -0
  69. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_key.py +0 -0
  70. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_model_base.py +0 -0
  71. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_model_base_interfaces.py +0 -0
  72. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_re_indexer.py +0 -0
  73. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_reindexer.py +0 -0
  74. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_reserved_words.py +0 -0
  75. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/dynamodb_reserved_words.txt +0 -0
  76. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/readme.md +0 -0
  77. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/dynamodb/troubleshooting.md +0 -0
  78. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/ec2/ec2_connection.py +0 -0
  79. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/environment_services/__init__.py +0 -0
  80. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/environment_services/environment_loader.py +0 -0
  81. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/environment_services/environment_variables.py +0 -0
  82. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/errors/custom_exceptions.py +0 -0
  83. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/http_status_codes.py +0 -0
  84. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/models/serializable_model.py +0 -0
  85. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/role_assumption_mixin.py +0 -0
  86. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/s3/s3.py +0 -0
  87. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/s3/s3_bucket.py +0 -0
  88. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/s3/s3_connection.py +0 -0
  89. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/s3/s3_event_data.py +0 -0
  90. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/s3/s3_object.py +0 -0
  91. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/securityhub/securityhub.py +0 -0
  92. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/securityhub/securityhub_connection.py +0 -0
  93. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/session_setup_mixin.py +0 -0
  94. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/ssm/connection.py +0 -0
  95. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/ssm/parameter_store/parameter_store.py +0 -0
  96. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/datetime_utility.py +0 -0
  97. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/dictionary_utility.py +0 -0
  98. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/file_operations.py +0 -0
  99. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/http_utility.py +0 -0
  100. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/logging_utility.py +0 -0
  101. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/numbers_utility.py +0 -0
  102. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/serialization_utility.py +0 -0
  103. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/src/boto3_assist/utilities/string_utility.py +0 -0
  104. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/__init__.py +0 -0
  105. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/integration/cross_account_connection_test.py +0 -0
  106. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/integration/tenant.py +0 -0
  107. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/integration/tenant_services.py +0 -0
  108. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/aws_config_test.py +0 -0
  109. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/common/db_test_helpers.py +0 -0
  110. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/__init__.py +0 -0
  111. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/cms/base.py +0 -0
  112. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/cms/content_block.py +0 -0
  113. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/cms/page.py +0 -0
  114. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/cms/template.py +0 -0
  115. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/simple_model.py +0 -0
  116. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/task.py +0 -0
  117. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/user_model.py +0 -0
  118. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/db_models/user_required_fields_model.py +0 -0
  119. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_fail_if_exists_test.py +0 -0
  120. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_model_base_test.py +0 -0
  121. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_model_projections_test.py +0 -0
  122. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_model_serializtion_test.py +0 -0
  123. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_moto_sorting_test.py +0 -0
  124. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_primary_key_sort_test.py +0 -0
  125. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_query_test.py +0 -0
  126. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/dynamodb_tests/dynamodb_reindex_test.py +0 -0
  127. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/examples_test/__init__.py +0 -0
  128. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/examples_test/user_service_test.py +0 -0
  129. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/lambda_tests/__init__.py +0 -0
  130. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/lambda_tests/event_info_test.py +0 -0
  131. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/models_tests/__init__.py +0 -0
  132. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/models_tests/models/person.py +0 -0
  133. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/models_tests/models/user.py +0 -0
  134. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/models_tests/serializable_model_person_test.py +0 -0
  135. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/models_tests/serializable_model_user_test.py +0 -0
  136. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/models_tests/serializable_model_wide_test.py +0 -0
  137. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/parameter_store/__init__.py +0 -0
  138. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/parameter_store/parameter_store_test.py +0 -0
  139. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/s3/__init__.py +0 -0
  140. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/s3/files/test.txt +0 -0
  141. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/s3/s3_event_data_test.py +0 -0
  142. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/s3/s3_file_delete_test.py +0 -0
  143. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/s3/s3_file_upload_test.py +0 -0
  144. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/session_tests/test_boto3_session_manager.py +0 -0
  145. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/utilities/__init__.py +0 -0
  146. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/utilities/serialization_utility_test.py +0 -0
  147. {boto3_assist-0.23.0 → boto3_assist-0.25.0}/tests/unit/utilities/string_utility_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boto3_assist
3
- Version: 0.23.0
3
+ Version: 0.25.0
4
4
  Summary: Additional boto3 wrappers to make your life a little easier
5
5
  Author-email: Eric Wilson <boto3-assist@geekcafe.com>
6
6
  License-File: LICENSE-EXPLAINED.txt
@@ -32,7 +32,7 @@ Description-Content-Type: text/markdown
32
32
 
33
33
  This is in beta and subject to changes before it's initial 1.0.0 release
34
34
 
35
- This libary was created to make life a little easier when using boto3.
35
+ This library was created to make life a little easier when using boto3.
36
36
 
37
37
  Currently it supports:
38
38
  - User Authentication / Session Mapping
@@ -40,11 +40,11 @@ Currently it supports:
40
40
 
41
41
 
42
42
  ## User Authentication / Session Mapping
43
- Have you ever needed an easy way to load your sessions for a local, dev or production enviroment? Well this library
43
+ Have you ever needed an easy way to load your sessions for a local, dev or production environment? Well this library
44
44
  makes it a little easier by lazy loading your boto3 session so that tools like `python-dotenv` can be used to load your
45
45
  environment vars first and then load your session.
46
46
 
47
- ## DyamoDB model mapping and Key Generation
47
+ ## DynamoDB model mapping and Key Generation
48
48
  It's a light weight mapping tool to turn your python classes / object models to DynamoDB items that are ready
49
49
  for saving. See the [examples](https://github.com/geekcafe/boto3-assist/tree/main/examples) directory in the repo for more information.
50
50
 
@@ -61,7 +61,7 @@ pip install boto3-assist
61
61
  ## Running Unit Tests
62
62
  Several of our tests use a mocking library to simulate connections to S3, DynamoDB, etc. In order to use those tests, you will need to have a `.env.unittest` file at the root of this project (which our tests will attempt to locate and load).
63
63
 
64
- For your convenince the `.evn.unittest` file has been added to this project. The values should not point to live AWS profiles, instead it should use the values added.
64
+ For your convenience the `.evn.unittest` file has been added to this project. The values should not point to live AWS profiles, instead it should use the values added.
65
65
 
66
66
  Since we also point to a profile, you should create the profile in the `~/.aws/config` file. The entry should look like the following:
67
67
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  This is in beta and subject to changes before it's initial 1.0.0 release
8
8
 
9
- This libary was created to make life a little easier when using boto3.
9
+ This library was created to make life a little easier when using boto3.
10
10
 
11
11
  Currently it supports:
12
12
  - User Authentication / Session Mapping
@@ -14,11 +14,11 @@ Currently it supports:
14
14
 
15
15
 
16
16
  ## User Authentication / Session Mapping
17
- Have you ever needed an easy way to load your sessions for a local, dev or production enviroment? Well this library
17
+ Have you ever needed an easy way to load your sessions for a local, dev or production environment? Well this library
18
18
  makes it a little easier by lazy loading your boto3 session so that tools like `python-dotenv` can be used to load your
19
19
  environment vars first and then load your session.
20
20
 
21
- ## DyamoDB model mapping and Key Generation
21
+ ## DynamoDB model mapping and Key Generation
22
22
  It's a light weight mapping tool to turn your python classes / object models to DynamoDB items that are ready
23
23
  for saving. See the [examples](https://github.com/geekcafe/boto3-assist/tree/main/examples) directory in the repo for more information.
24
24
 
@@ -35,7 +35,7 @@ pip install boto3-assist
35
35
  ## Running Unit Tests
36
36
  Several of our tests use a mocking library to simulate connections to S3, DynamoDB, etc. In order to use those tests, you will need to have a `.env.unittest` file at the root of this project (which our tests will attempt to locate and load).
37
37
 
38
- For your convenince the `.evn.unittest` file has been added to this project. The values should not point to live AWS profiles, instead it should use the values added.
38
+ For your convenience the `.evn.unittest` file has been added to this project. The values should not point to live AWS profiles, instead it should use the values added.
39
39
 
40
40
  Since we also point to a profile, you should create the profile in the `~/.aws/config` file. The entry should look like the following:
41
41
 
@@ -62,7 +62,7 @@ def extract_version_and_write_to_file(pyproject_toml: str, version_file: str):
62
62
 
63
63
  def run_build():
64
64
  """Run python build commands"""
65
- run_commands(["python", "-m", "build"])
65
+ run_commands(["python", "-m", "build", "--no-isolation"])
66
66
 
67
67
 
68
68
  def run_publish():
@@ -15,7 +15,7 @@ addopts = "-m 'not integration'"
15
15
 
16
16
  [project]
17
17
  name = "boto3_assist"
18
- version = "0.23.0"
18
+ version = "0.25.0"
19
19
 
20
20
  authors = [
21
21
  { name="Eric Wilson", email="boto3-assist@geekcafe.com" }
@@ -20,4 +20,5 @@ pkginfo # occasionally we need to upgrade this or we can get upload errors when
20
20
  # ERROR InvalidDistribution: Metadata is missing required fields: Name, Version.
21
21
  # Make sure the distribution includes the files where those fields are specified, and is using a supported
22
22
  # Metadata-Version: 1.0, 1.1, 1.2, 2.0, 2.1, 2.2, 2.3.
23
- pytest
23
+ pytest
24
+ hatchling
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # setup.sh - Cross-platform setup for python projects
5
+
6
+ # Default mode: ask the user
7
+ FETCH_LATEST="interactive"
8
+
9
+ usage() {
10
+ cat <<EOF
11
+ Usage: $0 [options]
12
+
13
+ Options:
14
+ -u, --update Automatically pull the latest setup.py (no prompt)
15
+ -n, --no-update Skip pulling the latest setup.py
16
+ --ci CI/CD mode (same as --update)
17
+ -h, --help Show this help message and exit
18
+ EOF
19
+ exit 0
20
+ }
21
+
22
+ # --- parse command-line flags ---
23
+ while [[ $# -gt 0 ]]; do
24
+ case "$1" in
25
+ -u|--update) FETCH_LATEST="yes" ;;
26
+ -n|--no-update) FETCH_LATEST="no" ;;
27
+ --ci) FETCH_LATEST="yes" ;;
28
+ -h|--help) usage ;;
29
+ *) echo "Unknown option: $1" >&2
30
+ usage
31
+ ;;
32
+ esac
33
+ shift
34
+ done
35
+
36
+ # --- interactive prompt if needed ---
37
+ if [[ "$FETCH_LATEST" == "interactive" ]]; then
38
+ read -r -p "Pull latest setup.py from repository? [y/N] " answer
39
+ if [[ "$answer" =~ ^[Yy] ]]; then
40
+ FETCH_LATEST="yes"
41
+ else
42
+ FETCH_LATEST="no"
43
+ fi
44
+ fi
45
+
46
+ # --- fetch if requested ---
47
+ if [[ "$FETCH_LATEST" == "yes" ]]; then
48
+ echo "🔄 Fetching latest setup.py..."
49
+ curl -sSL \
50
+ https://raw.githubusercontent.com/geekcafe/py-setup-tool/main/setup.py \
51
+ -o setup.py
52
+ fi
53
+
54
+ # --- run the Python installer ---
55
+ python3 setup.py
@@ -352,7 +352,7 @@ class DynamoDB(DynamoDBConnection):
352
352
  if not index_name:
353
353
  index_name = key.name
354
354
  # turn it into a key expected by dynamodb
355
- key = key.key()
355
+ key = key.key(query_key=True)
356
356
 
357
357
  kwargs: dict = {}
358
358
 
@@ -156,11 +156,22 @@ class DynamoDBIndex:
156
156
  condition: str = "begins_with",
157
157
  low_value: Any = None,
158
158
  high_value: Any = None,
159
+ query_key: bool = False,
159
160
  # sk_value_2: Optional[str | int | float] = None,
160
161
  ) -> dict | Key | ConditionBase | ComparisonCondition | Equals:
161
162
  """Get the key for a given index"""
162
163
  key: dict | Key | ConditionBase | ComparisonCondition | Equals
163
- if (
164
+
165
+ if query_key:
166
+ key = self._build_query_key(
167
+ include_sort_key=include_sort_key,
168
+ condition=condition,
169
+ low_value=low_value,
170
+ high_value=high_value,
171
+ )
172
+ return key
173
+
174
+ elif (
164
175
  self.name == DynamoDBIndexes.PRIMARY_INDEX
165
176
  and include_sort_key
166
177
  # if it ends with a # we are assuming that we are doing a wild card mapping
@@ -175,14 +186,15 @@ class DynamoDBIndex:
175
186
  key[self.sort_key.attribute_name] = self.sort_key.value
176
187
 
177
188
  return key
178
- else:
179
- key = self._build_query_key(
180
- include_sort_key=include_sort_key,
181
- condition=condition,
182
- low_value=low_value,
183
- high_value=high_value,
184
- )
185
- return key
189
+
190
+ # catch all (TODO: decide if this is the best pattern or should we raise an error)
191
+ key = self._build_query_key(
192
+ include_sort_key=include_sort_key,
193
+ condition=condition,
194
+ low_value=low_value,
195
+ high_value=high_value,
196
+ )
197
+ return key
186
198
 
187
199
  def _build_query_key(
188
200
  self,
@@ -0,0 +1 @@
1
+ __version__ = '0.25.0'
@@ -1 +0,0 @@
1
- __version__ = '0.23.0'
File without changes
File without changes
File without changes
File without changes