boto3-assist 0.20.0__tar.gz → 0.21.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 (143) hide show
  1. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/PKG-INFO +1 -1
  2. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/pyproject.toml +1 -1
  3. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_key.py +48 -1
  4. boto3_assist-0.21.0/src/boto3_assist/version.py +1 -0
  5. boto3_assist-0.20.0/src/boto3_assist/version.py +0 -1
  6. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.env.docker +0 -0
  7. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.env.docker.001 +0 -0
  8. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.env.docker.nosql.workbench +0 -0
  9. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.env.unittest +0 -0
  10. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.gitignore +0 -0
  11. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.vscode/launch.json +0 -0
  12. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.vscode/settings.json +0 -0
  13. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/.vscode/tasks.json +0 -0
  14. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/LICENSE-EXPLAINED.txt +0 -0
  15. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/LICENSE.txt +0 -0
  16. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/README.md +0 -0
  17. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/aws_regions_with_status.csv +0 -0
  18. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/aws_regions_with_status.json +0 -0
  19. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/devops/build.py +0 -0
  20. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/devops/readme.md +0 -0
  21. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/__init__.py +0 -0
  22. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/cloudwatch/log_report.py +0 -0
  23. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/models/order_item_model.py +0 -0
  24. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/models/order_model.py +0 -0
  25. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/models/product_model.py +0 -0
  26. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/models/user_model.py +0 -0
  27. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/models/user_post_model.py +0 -0
  28. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/order_example/main.py +0 -0
  29. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/order_example/products.json +0 -0
  30. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/order_item_service.py +0 -0
  31. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/order_service.py +0 -0
  32. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/product_service.py +0 -0
  33. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/table_service.py +0 -0
  34. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/user_post_service.py +0 -0
  35. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/user_service.py +0 -0
  36. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/user_service_client_example.py +0 -0
  37. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/services/user_service_resource_example.py +0 -0
  38. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/dynamodb/user_post_example/main.py +0 -0
  39. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/examples/ec2/regions_report.py +0 -0
  40. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/module-headers.txt +0 -0
  41. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/mypy.ini +0 -0
  42. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/requirements-dev.txt +0 -0
  43. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/requirements.txt +0 -0
  44. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/run-checks.sh +0 -0
  45. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/run_unit_tests.sh +0 -0
  46. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/__init__.py +0 -0
  47. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/aws_config.py +0 -0
  48. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/aws_lambda/event_info.py +0 -0
  49. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/aws_lambda/mock_context.py +0 -0
  50. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/boto3session.py +0 -0
  51. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cloudwatch/cloudwatch_connection.py +0 -0
  52. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cloudwatch/cloudwatch_connection_tracker.py +0 -0
  53. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cloudwatch/cloudwatch_log_connection.py +0 -0
  54. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cloudwatch/cloudwatch_logs.py +0 -0
  55. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cloudwatch/cloudwatch_query.py +0 -0
  56. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cognito/cognito_authorizer.py +0 -0
  57. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cognito/cognito_connection.py +0 -0
  58. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cognito/cognito_utility.py +0 -0
  59. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cognito/jwks_cache.py +0 -0
  60. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/cognito/user.py +0 -0
  61. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/connection.py +0 -0
  62. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/connection_tracker.py +0 -0
  63. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb.py +0 -0
  64. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_connection.py +0 -0
  65. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_helpers.py +0 -0
  66. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_importer.py +0 -0
  67. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_index.py +0 -0
  68. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_iservice.py +0 -0
  69. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_model_base.py +0 -0
  70. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_model_base_interfaces.py +0 -0
  71. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_re_indexer.py +0 -0
  72. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_reindexer.py +0 -0
  73. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_reserved_words.py +0 -0
  74. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/dynamodb_reserved_words.txt +0 -0
  75. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/readme.md +0 -0
  76. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/dynamodb/troubleshooting.md +0 -0
  77. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/ec2/ec2_connection.py +0 -0
  78. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/environment_services/__init__.py +0 -0
  79. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/environment_services/environment_loader.py +0 -0
  80. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/environment_services/environment_variables.py +0 -0
  81. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/errors/custom_exceptions.py +0 -0
  82. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/http_status_codes.py +0 -0
  83. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/models/serializable_model.py +0 -0
  84. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/role_assumption_mixin.py +0 -0
  85. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/s3/s3.py +0 -0
  86. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/s3/s3_bucket.py +0 -0
  87. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/s3/s3_connection.py +0 -0
  88. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/s3/s3_event_data.py +0 -0
  89. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/s3/s3_object.py +0 -0
  90. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/securityhub/securityhub.py +0 -0
  91. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/securityhub/securityhub_connection.py +0 -0
  92. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/session_setup_mixin.py +0 -0
  93. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/ssm/connection.py +0 -0
  94. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/ssm/parameter_store/parameter_store.py +0 -0
  95. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/datetime_utility.py +0 -0
  96. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/dictionary_utility.py +0 -0
  97. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/file_operations.py +0 -0
  98. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/http_utility.py +0 -0
  99. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/logging_utility.py +0 -0
  100. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/numbers_utility.py +0 -0
  101. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/serialization_utility.py +0 -0
  102. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/src/boto3_assist/utilities/string_utility.py +0 -0
  103. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/__init__.py +0 -0
  104. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/integration/cross_account_connection_test.py +0 -0
  105. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/integration/tenant.py +0 -0
  106. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/integration/tenant_services.py +0 -0
  107. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/aws_config_test.py +0 -0
  108. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/common/db_test_helpers.py +0 -0
  109. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/__init__.py +0 -0
  110. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/cms/base.py +0 -0
  111. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/cms/content_block.py +0 -0
  112. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/cms/page.py +0 -0
  113. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/cms/template.py +0 -0
  114. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/simple_model.py +0 -0
  115. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/user_model.py +0 -0
  116. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/db_models/user_required_fields_model.py +0 -0
  117. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/dynamodb_model_base_test.py +0 -0
  118. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/dynamodb_model_projections_test.py +0 -0
  119. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/dynamodb_model_serializtion_test.py +0 -0
  120. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/dynamodb_moto_sorting_test.py +0 -0
  121. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/dynamodb_query_test.py +0 -0
  122. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/dynamodb_tests/dynamodb_reindex_test.py +0 -0
  123. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/examples_test/__init__.py +0 -0
  124. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/examples_test/user_service_test.py +0 -0
  125. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/lambda_tests/__init__.py +0 -0
  126. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/lambda_tests/event_info_test.py +0 -0
  127. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/models_tests/__init__.py +0 -0
  128. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/models_tests/models/person.py +0 -0
  129. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/models_tests/models/user.py +0 -0
  130. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/models_tests/serializable_model_person_test.py +0 -0
  131. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/models_tests/serializable_model_user_test.py +0 -0
  132. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/models_tests/serializable_model_wide_test.py +0 -0
  133. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/parameter_store/__init__.py +0 -0
  134. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/parameter_store/parameter_store_test.py +0 -0
  135. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/s3/__init__.py +0 -0
  136. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/s3/files/test.txt +0 -0
  137. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/s3/s3_event_data_test.py +0 -0
  138. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/s3/s3_file_delete_test.py +0 -0
  139. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/s3/s3_file_upload_test.py +0 -0
  140. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/session_tests/test_boto3_session_manager.py +0 -0
  141. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/utilities/__init__.py +0 -0
  142. {boto3_assist-0.20.0 → boto3_assist-0.21.0}/tests/unit/utilities/serialization_utility_test.py +0 -0
  143. {boto3_assist-0.20.0 → boto3_assist-0.21.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.20.0
3
+ Version: 0.21.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
@@ -15,7 +15,7 @@ addopts = "-m 'not integration'"
15
15
 
16
16
  [project]
17
17
  name = "boto3_assist"
18
- version = "0.20.0"
18
+ version = "0.21.0"
19
19
 
20
20
  authors = [
21
21
  { name="Eric Wilson", email="boto3-assist@geekcafe.com" }
@@ -49,7 +49,52 @@ class DynamoDBKey:
49
49
  def build_key(*key_value_pairs) -> str:
50
50
  """
51
51
  Static method to build a key based on provided key-value pairs.
52
- Stops appending if any value is None.
52
+ - Stops appending if any value is None.
53
+ - However a value of "" (empty string) will continue the chain.
54
+
55
+ Example:
56
+ gsi.partition_key.value = lambda: DynamoDBKey.build_key(
57
+ ("user",self.model.user_id)
58
+ )
59
+
60
+ pk: user#<user-id>
61
+ pk: user#123456789
62
+
63
+ gsi.sort_key.value = lambda: DynamoDBKey.build_key(
64
+ ("xref", self.model.xref_type),
65
+ ("id", self.model.xref_pk),
66
+
67
+ )
68
+
69
+ sk: xref#<xref-type>#id#<some-id>
70
+ sk: xref#task#id#123456789
71
+
72
+ # example two has a leading "domain" (crm)
73
+ gsi.sort_key.value = lambda: DynamoDBKey.build_key(
74
+ ("crm", "")
75
+ ("xref", self.model.xref_type),
76
+ ("id", self.model.xref_pk),
77
+
78
+ )
79
+
80
+ sk: crm#xref#<xref-type>#id#<some-id>
81
+ sk: crm#xref#task#id#123456789
82
+
83
+ # using None stops the key build
84
+ # useful when doing begins with
85
+
86
+ # assume self.model.xref_pk is None
87
+ gsi.sort_key.value = lambda: DynamoDBKey.build_key(
88
+ ("xref", self.model.xref_type),
89
+ ("id", self.model.xref_pk),
90
+
91
+ )
92
+ # results with a key of
93
+ # which would get all of the users tasks assuming the pk was still
94
+ # the same
95
+ sk: xref#<xref-type>#id#
96
+ sk: xref#task#id#
97
+
53
98
  """
54
99
  parts = []
55
100
  for key, value in key_value_pairs:
@@ -57,6 +102,8 @@ class DynamoDBKey:
57
102
  if value is None:
58
103
  parts.append(f"{prefix}")
59
104
  break
105
+ elif len(str(value).strip()) == 0:
106
+ parts.append(f"{key}")
60
107
  else:
61
108
  parts.append(f"{prefix}{value}")
62
109
  key_str = "#".join(parts)
@@ -0,0 +1 @@
1
+ __version__ = '0.21.0'
@@ -1 +0,0 @@
1
- __version__ = '0.20.0'
File without changes
File without changes
File without changes
File without changes
File without changes