boto3-assist 0.20.0__py3-none-any.whl → 0.21.0__py3-none-any.whl

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.
@@ -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)
boto3_assist/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.20.0'
1
+ __version__ = '0.21.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
@@ -6,7 +6,7 @@ boto3_assist/connection_tracker.py,sha256=UgfR9RlvXf3A4ssMr3gDMpw89ka8mSRvJn4M34
6
6
  boto3_assist/http_status_codes.py,sha256=G0zRSWenwavYKETvDF9tNVUXQz3Ae2gXdBETYbjvJe8,3284
7
7
  boto3_assist/role_assumption_mixin.py,sha256=PMUU5yC2FUBjFD1UokVkRY3CPB5zTw85AhIB5BMtbc8,1031
8
8
  boto3_assist/session_setup_mixin.py,sha256=X-JQKyyaWNA8Z8kKgf2V2I5vsiLAH8udLTX_xepnsdQ,3140
9
- boto3_assist/version.py,sha256=pJLteH9r0aOnAwnvPatmr2QSz7lO2BDXON0AKkXx0Pg,23
9
+ boto3_assist/version.py,sha256=UAuTYiKF41yTa-lG-LD9UUArhXc4aZ6bJs_6sGq2BuU,23
10
10
  boto3_assist/aws_lambda/event_info.py,sha256=OkZ4WzuGaHEu_T8sB188KBgShAJhZpWASALKRGBOhMg,14648
11
11
  boto3_assist/aws_lambda/mock_context.py,sha256=LPjHP-3YSoY6iPl1kPqJDwSVf1zLNTcukUunDtYcbK0,116
12
12
  boto3_assist/cloudwatch/cloudwatch_connection.py,sha256=mnGWaLSQpHh5EeY7Ek_2o9JKHJxOELIYtQVMX1IaHn4,2480
@@ -25,7 +25,7 @@ boto3_assist/dynamodb/dynamodb_helpers.py,sha256=RoRRqKjdwfC-2-gvlkLvCoNWhIoMrHm
25
25
  boto3_assist/dynamodb/dynamodb_importer.py,sha256=nCKsyRQeMqDSf0Q5mQ_X_oVIg4PRnu0hcUzZnBli610,3471
26
26
  boto3_assist/dynamodb/dynamodb_index.py,sha256=D0Lq121qk1cXeMetPeqnzvv6CXd0XfEygfdUXaljLG8,8551
27
27
  boto3_assist/dynamodb/dynamodb_iservice.py,sha256=O9Aj0PFEvcuk2vhARifWTFnUwcQW5EXzwZS478Hm-N0,796
28
- boto3_assist/dynamodb/dynamodb_key.py,sha256=YD7o1EUlwVBQ55p9YCTKqAUU_np4nqtLIHnmp-BeolM,1803
28
+ boto3_assist/dynamodb/dynamodb_key.py,sha256=4IYnG4a99AjdOKUcDaWhNF_lvZJRZcKOIPzBQQzVdB0,3294
29
29
  boto3_assist/dynamodb/dynamodb_model_base.py,sha256=ceVKmequ2S7zY-8IkQwmtNvGV8GtaEraFBy1c2Y5P4A,12031
30
30
  boto3_assist/dynamodb/dynamodb_model_base_interfaces.py,sha256=yT4zDRI8vP15WVOHnCvY3FsEy_QSIta5-bnUby70Xow,747
31
31
  boto3_assist/dynamodb/dynamodb_re_indexer.py,sha256=Y0qRrvpmjS68w8ci6Au7Hg02W_ktqhUGGALeN-9XTls,6164
@@ -57,8 +57,8 @@ boto3_assist/utilities/logging_utility.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
57
57
  boto3_assist/utilities/numbers_utility.py,sha256=wzv9d0uXT_2_ZHHio7LBzibwxPqhGpvbq9HinrVn_4A,10160
58
58
  boto3_assist/utilities/serialization_utility.py,sha256=Jc6H0cpcZjLO7tdyUZdBWHzItduLkw6sh2YQh8Hc8D8,21647
59
59
  boto3_assist/utilities/string_utility.py,sha256=XxUIz19L2LFFTRDAAmdPa8Qhn40u9yO7g4nULFuvg0M,11033
60
- boto3_assist-0.20.0.dist-info/METADATA,sha256=fTDDcy1YzJ4vDZFqic4B1-veECbBopRgj9Yyj0FTeEI,2875
61
- boto3_assist-0.20.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
- boto3_assist-0.20.0.dist-info/licenses/LICENSE-EXPLAINED.txt,sha256=WFREvTpfTjPjDHpOLADxJpCKpIla3Ht87RUUGii4ODU,606
63
- boto3_assist-0.20.0.dist-info/licenses/LICENSE.txt,sha256=PXDhFWS5L5aOTkVhNvoitHKbAkgxqMI2uUPQyrnXGiI,1105
64
- boto3_assist-0.20.0.dist-info/RECORD,,
60
+ boto3_assist-0.21.0.dist-info/METADATA,sha256=jg5TRMDh2xJnT8enHHUVuxET9Ohz0BHTrf9aR57oZwo,2875
61
+ boto3_assist-0.21.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
+ boto3_assist-0.21.0.dist-info/licenses/LICENSE-EXPLAINED.txt,sha256=WFREvTpfTjPjDHpOLADxJpCKpIla3Ht87RUUGii4ODU,606
63
+ boto3_assist-0.21.0.dist-info/licenses/LICENSE.txt,sha256=PXDhFWS5L5aOTkVhNvoitHKbAkgxqMI2uUPQyrnXGiI,1105
64
+ boto3_assist-0.21.0.dist-info/RECORD,,