boto3-assist 0.2.7__tar.gz → 0.2.9__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 (102) hide show
  1. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/PKG-INFO +1 -1
  2. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/pyproject.toml +1 -1
  3. boto3_assist-0.2.9/requirements-dev.txt +18 -0
  4. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb.py +10 -1
  5. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_model_base.py +11 -1
  6. boto3_assist-0.2.9/src/boto3_assist/version.py +1 -0
  7. boto3_assist-0.2.7/requirements-dev.txt +0 -13
  8. boto3_assist-0.2.7/src/boto3_assist/version.py +0 -1
  9. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.env.docker +0 -0
  10. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.env.docker.001 +0 -0
  11. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.env.docker.nosql.workbench +0 -0
  12. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.env.unittest +0 -0
  13. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.gitignore +0 -0
  14. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.vscode/launch.json +0 -0
  15. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.vscode/settings.json +0 -0
  16. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/.vscode/tasks.json +0 -0
  17. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/LICENSE-EXPLAINED.txt +0 -0
  18. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/LICENSE.txt +0 -0
  19. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/README.md +0 -0
  20. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/aws_regions_with_status.csv +0 -0
  21. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/aws_regions_with_status.json +0 -0
  22. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/devops/build.py +0 -0
  23. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/devops/readme.md +0 -0
  24. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/__init__.py +0 -0
  25. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/cloudwatch/log_report.py +0 -0
  26. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/models/order_item_model.py +0 -0
  27. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/models/order_model.py +0 -0
  28. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/models/product_model.py +0 -0
  29. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/models/user_model.py +0 -0
  30. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/models/user_post_model.py +0 -0
  31. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/order_example/main.py +0 -0
  32. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/order_example/products.json +0 -0
  33. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/order_item_service.py +0 -0
  34. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/order_service.py +0 -0
  35. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/product_service.py +0 -0
  36. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/table_service.py +0 -0
  37. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/user_post_service.py +0 -0
  38. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/user_service.py +0 -0
  39. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/user_service_client_example.py +0 -0
  40. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/services/user_service_resource_example.py +0 -0
  41. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/dynamodb/user_post_example/main.py +0 -0
  42. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/examples/ec2/regions_report.py +0 -0
  43. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/module-headers.txt +0 -0
  44. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/mypy.ini +0 -0
  45. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/requirements.txt +0 -0
  46. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/run-checks.sh +0 -0
  47. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/__init__.py +0 -0
  48. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/boto3session.py +0 -0
  49. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/cloudwatch/cloudwatch_connection.py +0 -0
  50. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/cloudwatch/cloudwatch_connection_tracker.py +0 -0
  51. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/cloudwatch/cloudwatch_log_connection.py +0 -0
  52. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/cloudwatch/cloudwatch_logs.py +0 -0
  53. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/cloudwatch/cloudwatch_query.py +0 -0
  54. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/connection.py +0 -0
  55. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/connection_tracker.py +0 -0
  56. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_connection.py +0 -0
  57. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_connection_tracker.py +0 -0
  58. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_helpers.py +0 -0
  59. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_importer.py +0 -0
  60. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_index.py +0 -0
  61. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_iservice.py +0 -0
  62. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_key.py +0 -0
  63. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_model_base_interfaces.py +0 -0
  64. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_reindexer.py +0 -0
  65. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_reserved_words.py +0 -0
  66. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/dynamodb_reserved_words.txt +0 -0
  67. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/readme.md +0 -0
  68. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/dynamodb/troubleshooting.md +0 -0
  69. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/ec2/ec2_connection.py +0 -0
  70. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/environment_services/__init__.py +0 -0
  71. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/environment_services/environment_loader.py +0 -0
  72. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/environment_services/environment_variables.py +0 -0
  73. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/errors/custom_exceptions.py +0 -0
  74. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/s3/s3.py +0 -0
  75. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/s3/s3_connection.py +0 -0
  76. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/utilities/datetime_utility.py +0 -0
  77. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/utilities/file_operations.py +0 -0
  78. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/utilities/http_utility.py +0 -0
  79. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/utilities/logging_utility.py +0 -0
  80. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/utilities/serialization_utility.py +0 -0
  81. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/src/boto3_assist/utilities/string_utility.py +0 -0
  82. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/__init__.py +0 -0
  83. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/__top/__init__.py +0 -0
  84. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/__init__.py +0 -0
  85. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/dynamodb_model_base_test.py +0 -0
  86. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/dynamodb_model_projections_test.py +0 -0
  87. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/dynamodb_model_serializtion_test.py +0 -0
  88. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/dynamodb_moto_sorting_test.py +0 -0
  89. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/dynamodb_reindex_test.py +0 -0
  90. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/models/cms/base.py +0 -0
  91. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/models/cms/content_block.py +0 -0
  92. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/models/cms/page.py +0 -0
  93. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/models/cms/template.py +0 -0
  94. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/models/simple_model.py +0 -0
  95. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/dynamodb/models/user_model.py +0 -0
  96. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/examples_test/__init__.py +0 -0
  97. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/examples_test/user_service_test.py +0 -0
  98. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/s3/__init__.py +0 -0
  99. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/s3/files/test.txt +0 -0
  100. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/s3/s3_file_upload_test.py +0 -0
  101. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/utilities/__init__.py +0 -0
  102. {boto3_assist-0.2.7 → boto3_assist-0.2.9}/tests/utilities/serialization_utility_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boto3_assist
3
- Version: 0.2.7
3
+ Version: 0.2.9
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
@@ -7,7 +7,7 @@ packages = ["src/boto3_assist"]
7
7
 
8
8
  [project]
9
9
  name = "boto3_assist"
10
- version = "0.2.7"
10
+ version = "0.2.9"
11
11
 
12
12
  authors = [
13
13
  { name="Eric Wilson", email="boto3-assist@geekcafe.com" }
@@ -0,0 +1,18 @@
1
+ boto3-stubs[dynamodb]
2
+ build
3
+ mypy
4
+ mypy_boto3_dynamodb
5
+ mypy_boto3_ec2
6
+ mypy_boto3_cloudwatch
7
+ mypy_boto3_s3
8
+ moto [dynamodb2] # mocks for unit tests
9
+ # setuptools
10
+ types-python-dateutil
11
+ toml
12
+ twine
13
+ wheel
14
+ pkginfo # occasionally we need to upgrade this or we can get upload errors when it's out of sync
15
+ # the error may look like the following
16
+ # ERROR InvalidDistribution: Metadata is missing required fields: Name, Version.
17
+ # Make sure the distribution includes the files where those fields are specified, and is using a supported
18
+ # Metadata-Version: 1.0, 1.1, 1.2, 2.0, 2.1, 2.2, 2.3.
@@ -82,11 +82,20 @@ class DynamoDB(DynamoDBConnection):
82
82
  try:
83
83
  if not isinstance(item, dict):
84
84
  # attemp to convert it
85
+ if not isinstance(item, DynamoDBModelBase):
86
+ raise RuntimeError(
87
+ f"Item is not a dictionary or DynamoDBModelBase. Type: {type(item).__name__}. "
88
+ "In order to prep the model for saving, it needs to already be dictionary or support "
89
+ "the to_resource_dictionary() method, which is available when you inherit from DynamoDBModelBase. "
90
+ "Unable to save item to DynamoDB. The entry was not saved."
91
+ )
85
92
  try:
86
93
  item = item.to_resource_dictionary()
87
94
  except Exception as e: # pylint: disable=w0718
88
95
  logger.exception(e)
89
- raise ValueError("Unsupported item or module was passed.") from e
96
+ raise RuntimeError(
97
+ "An error occured during model converation. The entry was not saved."
98
+ ) from e
90
99
 
91
100
  if isinstance(item, dict):
92
101
  self.__log_item_size(item=item)
@@ -234,9 +234,19 @@ class DynamoDBModelBase:
234
234
  return value.timestamp()
235
235
 
236
236
  raise ValueError(
237
- "Value must be a string in a valid datetime format or datetime"
237
+ "Value must be a None, a string in a valid datetime format or datetime"
238
238
  )
239
239
 
240
+ def to_utc(self, value: str | dt.datetime | None) -> dt.datetime | None:
241
+ """
242
+ Convert a datetime to UTC. This ensures all datetimes are stored in UTC format
243
+
244
+ Exceptions:
245
+ ValueError: If the value is not a datetime string or datetime
246
+ """
247
+
248
+ value = DatetimeUtility.to_datetime_utc(value)
249
+
240
250
 
241
251
  class DynamoDBSerializer:
242
252
  """Library to Serialize object to a DynamoDB Format"""
@@ -0,0 +1 @@
1
+ __version__ = '0.2.9'
@@ -1,13 +0,0 @@
1
- boto3-stubs[dynamodb]
2
- build
3
- mypy
4
- mypy_boto3_dynamodb
5
- mypy_boto3_ec2
6
- mypy_boto3_cloudwatch
7
- mypy_boto3_s3
8
- moto [dynamodb2] # mocks for unit tests
9
- # setuptools
10
- types-python-dateutil
11
- toml
12
- twine
13
- wheel
@@ -1 +0,0 @@
1
- __version__ = '0.2.7'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes