plexus-python-pulse-common 1.1.87__py3-none-any.whl → 1.1.88__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.
- plexus/pulse/common/utils/ormutils.py +10 -7
- plexus/pulse/common/utils/strutils.py +16 -3
- {plexus_python_pulse_common-1.1.87.dist-info → plexus_python_pulse_common-1.1.88.dist-info}/METADATA +1 -1
- {plexus_python_pulse_common-1.1.87.dist-info → plexus_python_pulse_common-1.1.88.dist-info}/RECORD +6 -6
- {plexus_python_pulse_common-1.1.87.dist-info → plexus_python_pulse_common-1.1.88.dist-info}/WHEEL +0 -0
- {plexus_python_pulse_common-1.1.87.dist-info → plexus_python_pulse_common-1.1.88.dist-info}/top_level.txt +0 -0
|
@@ -551,7 +551,10 @@ def model_revision_type(dialect: str | None = None) -> sa.types.TypeEngine[int]:
|
|
|
551
551
|
raise ValueError(f"unsupported database dialect '{dialect}'")
|
|
552
552
|
|
|
553
553
|
|
|
554
|
-
def index_condition_kwarg(
|
|
554
|
+
def index_condition_kwarg(
|
|
555
|
+
dialect: str | None = None,
|
|
556
|
+
clause: sa.ClauseElement | None = None
|
|
557
|
+
) -> dict[str, sa.ClauseElement | None]:
|
|
555
558
|
if dialect is None:
|
|
556
559
|
dialect = dialects.postgresql
|
|
557
560
|
if dialect == dialects.postgresql:
|
|
@@ -728,7 +731,7 @@ def make_snapshot_model_mixin(dialect: str | None = None) -> type[SnapshotModelM
|
|
|
728
731
|
index_name,
|
|
729
732
|
"record_sqn",
|
|
730
733
|
unique=True,
|
|
731
|
-
**index_condition_kwarg(dialect, sa.
|
|
734
|
+
**index_condition_kwarg(dialect, sa.column("expired_at").is_(None)),
|
|
732
735
|
)
|
|
733
736
|
|
|
734
737
|
@classmethod
|
|
@@ -736,7 +739,7 @@ def make_snapshot_model_mixin(dialect: str | None = None) -> type[SnapshotModelM
|
|
|
736
739
|
return sa.Index(
|
|
737
740
|
index_name,
|
|
738
741
|
*fields,
|
|
739
|
-
**index_condition_kwarg(dialect, sa.
|
|
742
|
+
**index_condition_kwarg(dialect, sa.column("expired_at").is_(None)),
|
|
740
743
|
)
|
|
741
744
|
|
|
742
745
|
@classmethod
|
|
@@ -745,7 +748,7 @@ def make_snapshot_model_mixin(dialect: str | None = None) -> type[SnapshotModelM
|
|
|
745
748
|
index_name,
|
|
746
749
|
*fields,
|
|
747
750
|
unique=True,
|
|
748
|
-
**index_condition_kwarg(dialect, sa.
|
|
751
|
+
**index_condition_kwarg(dialect, sa.column("expired_at").is_(None)),
|
|
749
752
|
)
|
|
750
753
|
|
|
751
754
|
return ModelMixin
|
|
@@ -865,7 +868,7 @@ def make_revision_model_mixin(dialect: str | None = None) -> type[RevisionModelM
|
|
|
865
868
|
index_name,
|
|
866
869
|
"record_sqn",
|
|
867
870
|
unique=True,
|
|
868
|
-
**index_condition_kwarg(dialect, sa.
|
|
871
|
+
**index_condition_kwarg(dialect, sa.column("expired_at").is_(None)),
|
|
869
872
|
)
|
|
870
873
|
|
|
871
874
|
@classmethod
|
|
@@ -873,7 +876,7 @@ def make_revision_model_mixin(dialect: str | None = None) -> type[RevisionModelM
|
|
|
873
876
|
return sa.Index(
|
|
874
877
|
index_name,
|
|
875
878
|
*fields,
|
|
876
|
-
**index_condition_kwarg(dialect, sa.
|
|
879
|
+
**index_condition_kwarg(dialect, sa.column("expired_at").is_(None)),
|
|
877
880
|
)
|
|
878
881
|
|
|
879
882
|
@classmethod
|
|
@@ -882,7 +885,7 @@ def make_revision_model_mixin(dialect: str | None = None) -> type[RevisionModelM
|
|
|
882
885
|
index_name,
|
|
883
886
|
*fields,
|
|
884
887
|
unique=True,
|
|
885
|
-
**index_condition_kwarg(dialect, sa.
|
|
888
|
+
**index_condition_kwarg(dialect, sa.column("expired_at").is_(None)),
|
|
886
889
|
)
|
|
887
890
|
|
|
888
891
|
return ModelMixin
|
|
@@ -28,6 +28,8 @@ __all__ = [
|
|
|
28
28
|
"strict_fragmented_abspath_parser",
|
|
29
29
|
"email_address_pattern",
|
|
30
30
|
"email_address_parser",
|
|
31
|
+
"numeric_version_pattern",
|
|
32
|
+
"numeric_version_parser",
|
|
31
33
|
"semver_pattern",
|
|
32
34
|
"semver_parser",
|
|
33
35
|
"colon_tag_pattern",
|
|
@@ -91,6 +93,7 @@ sharp_token: pp.ParserElement = pp.Char("#")
|
|
|
91
93
|
lower_regexp: re.Pattern[str] = re.compile(r"[a-z]")
|
|
92
94
|
upper_regexp: re.Pattern[str] = re.compile(r"[A-Z]")
|
|
93
95
|
digit_regexp: re.Pattern[str] = re.compile(r"[0-9]")
|
|
96
|
+
alpha_regexp: re.Pattern[str] = re.compile(r"[a-zA-Z]")
|
|
94
97
|
lower_digit_regexp: re.Pattern[str] = re.compile(r"[a-z0-9]")
|
|
95
98
|
upper_digit_regexp: re.Pattern[str] = re.compile(r"[A-Z0-9]")
|
|
96
99
|
alpha_digit_regexp: re.Pattern[str] = re.compile(r"[a-zA-Z0-9]")
|
|
@@ -99,6 +102,7 @@ hex_digit_regexp: re.Pattern[str] = re.compile(r"[a-f0-9]")
|
|
|
99
102
|
lowers_regexp: re.Pattern[str] = re.compile(rf"{lower_regexp.pattern}+")
|
|
100
103
|
uppers_regexp: re.Pattern[str] = re.compile(rf"{upper_regexp.pattern}+")
|
|
101
104
|
digits_regexp: re.Pattern[str] = re.compile(rf"{digit_regexp.pattern}+")
|
|
105
|
+
alphas_regexp: re.Pattern[str] = re.compile(rf"{alpha_regexp.pattern}+")
|
|
102
106
|
lower_digits_regexp: re.Pattern[str] = re.compile(rf"{lower_digit_regexp.pattern}+")
|
|
103
107
|
upper_digits_regexp: re.Pattern[str] = re.compile(rf"{upper_digit_regexp.pattern}+")
|
|
104
108
|
alpha_digits_regexp: re.Pattern[str] = re.compile(rf"{alpha_digit_regexp.pattern}+")
|
|
@@ -110,6 +114,7 @@ strict_chars_regexp: re.Pattern[str] = re.compile(rf"({alpha_digit_regexp.patter
|
|
|
110
114
|
lower_element: pp.ParserElement = pp.Regex(lower_regexp.pattern)
|
|
111
115
|
upper_element: pp.ParserElement = pp.Regex(upper_regexp.pattern)
|
|
112
116
|
digit_element: pp.ParserElement = pp.Regex(digit_regexp.pattern)
|
|
117
|
+
alpha_element: pp.ParserElement = pp.Regex(alpha_regexp.pattern)
|
|
113
118
|
lower_digit_element: pp.ParserElement = pp.Regex(lower_digit_regexp.pattern)
|
|
114
119
|
upper_digit_element: pp.ParserElement = pp.Regex(upper_digit_regexp.pattern)
|
|
115
120
|
alpha_digit_element: pp.ParserElement = pp.Regex(alpha_digit_regexp.pattern)
|
|
@@ -118,6 +123,7 @@ hex_digit_element: pp.ParserElement = pp.Regex(hex_digit_regexp.pattern)
|
|
|
118
123
|
lowers_element: pp.ParserElement = pp.Regex(lowers_regexp.pattern)
|
|
119
124
|
uppers_element: pp.ParserElement = pp.Regex(uppers_regexp.pattern)
|
|
120
125
|
digits_element: pp.ParserElement = pp.Regex(digits_regexp.pattern)
|
|
126
|
+
alphas_element: pp.ParserElement = pp.Regex(alphas_regexp.pattern)
|
|
121
127
|
lower_digits_element: pp.ParserElement = pp.Regex(lower_digits_regexp.pattern)
|
|
122
128
|
upper_digits_element: pp.ParserElement = pp.Regex(upper_digits_regexp.pattern)
|
|
123
129
|
alpha_digits_element: pp.ParserElement = pp.Regex(alpha_digits_regexp.pattern)
|
|
@@ -184,10 +190,14 @@ email_address_regexp: re.Pattern[str] = re.compile(
|
|
|
184
190
|
rf"(({lower_digit_regexp.pattern}|[_-])+)(?:\.({lower_digit_regexp.pattern}|[_-])+)*@(?:{kebab_case_regexp.pattern}\.)+({lower_digit_regexp.pattern}{{2,63}})")
|
|
185
191
|
email_address_element: pp.ParserElement = pp.Regex(email_address_regexp.pattern)
|
|
186
192
|
|
|
193
|
+
numeric_version_regexp: re.Pattern[str] = re.compile(
|
|
194
|
+
rf"(?:{number_regexp.pattern})(?:\.(?:{number_regexp.pattern}))*")
|
|
195
|
+
numeric_version_element: pp.ParserElement = pp.Regex(numeric_version_regexp.pattern)
|
|
196
|
+
|
|
187
197
|
semver_regexp: re.Pattern[str] = re.compile(
|
|
188
|
-
rf"({number_regexp.pattern})\.({number_regexp.pattern})\.({number_regexp.pattern})"
|
|
189
|
-
rf"(?:-{
|
|
190
|
-
rf"(?:\+{
|
|
198
|
+
rf"(?:{number_regexp.pattern})\.(?:{number_regexp.pattern})\.(?:{number_regexp.pattern})"
|
|
199
|
+
rf"(?:-(?:(?:{alpha_digit_regexp.pattern}|-)*(?:{alpha_regexp.pattern}|-)(?:{alpha_digit_regexp.pattern}|-)*|{number_regexp.pattern})(?:\.(?:(?:{alpha_digit_regexp.pattern}|-)*(?:{alpha_regexp.pattern}|-)(?:{alpha_digit_regexp.pattern}|-)*|{number_regexp.pattern}))*)?"
|
|
200
|
+
rf"(?:\+(?:{alpha_digit_regexp.pattern}|-)+(?:\.(?:{alpha_digit_regexp.pattern}|-)+)*)?")
|
|
191
201
|
semver_element: pp.ParserElement = pp.Regex(semver_regexp.pattern)
|
|
192
202
|
|
|
193
203
|
colon_tag_regexp: re.Pattern[str] = re.compile(rf"{snake_case_regexp.pattern}(?::{snake_case_regexp.pattern})*")
|
|
@@ -229,6 +239,9 @@ strict_fragmented_abspath_parser = make_string_parser(strict_fragmented_abspath_
|
|
|
229
239
|
email_address_pattern = make_string_pattern(email_address_regexp)
|
|
230
240
|
email_address_parser = make_string_parser(email_address_element)
|
|
231
241
|
|
|
242
|
+
numeric_version_pattern = make_string_pattern(numeric_version_regexp)
|
|
243
|
+
numeric_version_parser = make_string_parser(numeric_version_element)
|
|
244
|
+
|
|
232
245
|
semver_pattern = make_string_pattern(semver_regexp)
|
|
233
246
|
semver_parser = make_string_parser(semver_element)
|
|
234
247
|
|
{plexus_python_pulse_common-1.1.87.dist-info → plexus_python_pulse_common-1.1.88.dist-info}/RECORD
RENAMED
|
@@ -17,14 +17,14 @@ plexus/pulse/common/utils/dockerutils.py,sha256=7DF9yFGz8uHwpYk115xBWqOjs5etz0UE
|
|
|
17
17
|
plexus/pulse/common/utils/flowutils.py,sha256=MGu15KL9mw-LyGGLceVmY-c2FGer5PURnMZWFSJN--I,10182
|
|
18
18
|
plexus/pulse/common/utils/gisutils.py,sha256=Cx0ZB9-NA_7VuzbuzRArTJ5UfltG-KmvVC8YxPIgPE4,11600
|
|
19
19
|
plexus/pulse/common/utils/jsonutils.py,sha256=zSbW94klN2jrkMdBECu4RNJX6zzNaSxauQ3FuihuB6E,3342
|
|
20
|
-
plexus/pulse/common/utils/ormutils.py,sha256=
|
|
20
|
+
plexus/pulse/common/utils/ormutils.py,sha256=taaZzpIH0C-ShEmOWf-vt22bgcFFqH1FnJlNcH9tEFM,68222
|
|
21
21
|
plexus/pulse/common/utils/pathutils.py,sha256=eYfNK48wf1xZGK2IbpKxYOn4skZhWWA8OTyUwDXGMIc,9222
|
|
22
22
|
plexus/pulse/common/utils/s3utils.py,sha256=5q5wSOavt-n5EdrflQX7WPGgDeWQkGO9lG5Nq3QXjCk,35904
|
|
23
23
|
plexus/pulse/common/utils/sqlutils.py,sha256=D6kTBjhO5YlNRt3uFlPt6z3uH61m9ajEzPYmsI6NoFc,231
|
|
24
|
-
plexus/pulse/common/utils/strutils.py,sha256=
|
|
24
|
+
plexus/pulse/common/utils/strutils.py,sha256=8kl88-u89FApoaq-D2ulk5DNl9kenP6vqksvVJ0iH4s,17325
|
|
25
25
|
plexus/pulse/common/utils/tagutils.py,sha256=V8eUxtWSijX6nHSCuRX2dTJz3why3TCOzPVK5YXt28s,66944
|
|
26
26
|
plexus/pulse/common/utils/testutils.py,sha256=hKPRvoN4mg8QGQJH121l59a0uo8jN5rntGQAVYplGBw,6166
|
|
27
|
-
plexus_python_pulse_common-1.1.
|
|
28
|
-
plexus_python_pulse_common-1.1.
|
|
29
|
-
plexus_python_pulse_common-1.1.
|
|
30
|
-
plexus_python_pulse_common-1.1.
|
|
27
|
+
plexus_python_pulse_common-1.1.88.dist-info/METADATA,sha256=bNGz7B5jj23hayiYBRvtfRpfnsD21flHjbg-sgdiKMY,1555
|
|
28
|
+
plexus_python_pulse_common-1.1.88.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
29
|
+
plexus_python_pulse_common-1.1.88.dist-info/top_level.txt,sha256=ug_g7CVwaMQuas5UzAXbHUrQvKGCn8ezc6ZNvvRlJOE,7
|
|
30
|
+
plexus_python_pulse_common-1.1.88.dist-info/RECORD,,
|
{plexus_python_pulse_common-1.1.87.dist-info → plexus_python_pulse_common-1.1.88.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|