scalable-pypeline 2.1.15__py2.py3-none-any.whl → 2.1.17__py2.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.
- pypeline/__init__.py +1 -1
- pypeline/pipeline_settings_schema.py +14 -1
- pypeline/utils/graceful_shutdown_util.py +5 -2
- {scalable_pypeline-2.1.15.dist-info → scalable_pypeline-2.1.17.dist-info}/METADATA +2 -2
- {scalable_pypeline-2.1.15.dist-info → scalable_pypeline-2.1.17.dist-info}/RECORD +9 -9
- {scalable_pypeline-2.1.15.dist-info → scalable_pypeline-2.1.17.dist-info}/LICENSE +0 -0
- {scalable_pypeline-2.1.15.dist-info → scalable_pypeline-2.1.17.dist-info}/WHEEL +0 -0
- {scalable_pypeline-2.1.15.dist-info → scalable_pypeline-2.1.17.dist-info}/entry_points.txt +0 -0
- {scalable_pypeline-2.1.15.dist-info → scalable_pypeline-2.1.17.dist-info}/top_level.txt +0 -0
pypeline/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "2.1.
|
1
|
+
__version__ = "2.1.17"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
from datetime import date
|
2
|
+
|
1
3
|
from marshmallow import Schema, fields, validate, ValidationError, validates_schema, INCLUDE
|
2
4
|
|
3
5
|
|
@@ -34,6 +36,7 @@ def create_pipeline_settings_schema(pipeline_settings_schema_data):
|
|
34
36
|
"datetime": fields.DateTime,
|
35
37
|
"array": fields.List,
|
36
38
|
"object": fields.Nested,
|
39
|
+
"date": fields.Date,
|
37
40
|
}.get(data_type)
|
38
41
|
|
39
42
|
if not field_type:
|
@@ -50,6 +53,7 @@ def create_pipeline_settings_schema(pipeline_settings_schema_data):
|
|
50
53
|
"float": fields.Float,
|
51
54
|
"boolean": fields.Boolean,
|
52
55
|
"datetime": fields.DateTime,
|
56
|
+
"date": fields.Date,
|
53
57
|
}.get(element_type)
|
54
58
|
if not field_args["cls_or_instance"]:
|
55
59
|
raise ValidationError(
|
@@ -119,6 +123,7 @@ def create_pipeline_settings_schema(pipeline_settings_schema_data):
|
|
119
123
|
"float": fields.Float,
|
120
124
|
"boolean": fields.Boolean,
|
121
125
|
"datetime": fields.DateTime,
|
126
|
+
"date": fields.Date,
|
122
127
|
"array": fields.List,
|
123
128
|
"object": fields.Nested,
|
124
129
|
}.get(data_type)
|
@@ -137,6 +142,7 @@ def create_pipeline_settings_schema(pipeline_settings_schema_data):
|
|
137
142
|
"float": fields.Float,
|
138
143
|
"boolean": fields.Boolean,
|
139
144
|
"datetime": fields.DateTime,
|
145
|
+
"date": fields.Date,
|
140
146
|
}.get(element_type)
|
141
147
|
if not field_args["cls_or_instance"]:
|
142
148
|
raise ValidationError(
|
@@ -229,7 +235,7 @@ class SettingSchema(Schema):
|
|
229
235
|
dataType = fields.String(
|
230
236
|
required=True,
|
231
237
|
validate=validate.OneOf(
|
232
|
-
["string", "int", "float", "boolean", "datetime", "array", "object"]
|
238
|
+
["string", "int", "float", "boolean", "datetime", "array", "object", "date"]
|
233
239
|
),
|
234
240
|
metadata={"description": "The underlying data type of the setting"},
|
235
241
|
)
|
@@ -317,6 +323,13 @@ class SettingSchema(Schema):
|
|
317
323
|
raise ValidationError(
|
318
324
|
f"Option value `{value}` must be an ISO 8601 string for `datetime`."
|
319
325
|
)
|
326
|
+
elif data_type == "date":
|
327
|
+
try:
|
328
|
+
date.fromisoformat(value)
|
329
|
+
except Exception:
|
330
|
+
raise ValidationError(
|
331
|
+
f"Option value `{value}` must be an ISO 8601 string for `date`."
|
332
|
+
)
|
320
333
|
|
321
334
|
@validates_schema
|
322
335
|
def validate_search_endpoint(self, data, **kwargs):
|
@@ -27,9 +27,12 @@ def enable_graceful_shutdown(broker, redis_url):
|
|
27
27
|
|
28
28
|
def shutdown_handler(signum, frame):
|
29
29
|
logger.info(f"[Signal Handler] Received signal {signum}")
|
30
|
+
wait_counter = 0
|
30
31
|
while r.get(busy_key):
|
31
|
-
|
32
|
-
|
32
|
+
if wait_counter % 30 == 0: # Only log every 30 checks
|
33
|
+
logger.info(f"[Signal Handler] Busy ({busy_key}), waiting...")
|
34
|
+
time.sleep(1)
|
35
|
+
wait_counter += 1
|
33
36
|
logger.info(f"[Signal Handler] Done. Exiting.")
|
34
37
|
sys.exit(0)
|
35
38
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: scalable-pypeline
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.17
|
4
4
|
Summary: PypeLine - Python pipelines for the Real World
|
5
5
|
Home-page: https://gitlab.com/bravos2/pypeline
|
6
6
|
Author: Bravos Power Corporation
|
@@ -33,7 +33,7 @@ Provides-Extra: workers
|
|
33
33
|
Requires-Dist: networkx (>=2.4) ; extra == 'workers'
|
34
34
|
Requires-Dist: dramatiq[rabbitmq] (==1.17.0) ; extra == 'workers'
|
35
35
|
Requires-Dist: apscheduler (<4,>=3.10.4) ; extra == 'workers'
|
36
|
-
Requires-Dist: tenacity (==
|
36
|
+
Requires-Dist: tenacity (==8.0.1) ; extra == 'workers'
|
37
37
|
|
38
38
|
```
|
39
39
|
______ __ ________ _____ _ _____ _ _ _____
|
@@ -1,10 +1,10 @@
|
|
1
|
-
pypeline/__init__.py,sha256=
|
1
|
+
pypeline/__init__.py,sha256=ybQ-f3O4pW9SYci30ZzNDlbiqsMBjSInaZ-GHWegI1I,23
|
2
2
|
pypeline/barrier.py,sha256=oO964l9qOCOibweOHyNivmAvufdXOke9nz2tdgclouo,1172
|
3
3
|
pypeline/constants.py,sha256=EGSuLq4KhZ4bxrbtnUgKclELRyya5ipvv0WeybCzNAs,3049
|
4
4
|
pypeline/dramatiq.py,sha256=D-E6_oJc9he-F2rvze-DCq4eBVY3Hq7V0pSC5crHrrU,13703
|
5
5
|
pypeline/extensions.py,sha256=BzOTnXhNxap3N7uIUUh_hO6dDwx08Vc_RJDE93_K0Lo,610
|
6
6
|
pypeline/pipeline_config_schema.py,sha256=kprvmfPfmNVP5MOqtWzDm4ON5NJWIKQC8GWbIy5EIuk,11183
|
7
|
-
pypeline/pipeline_settings_schema.py,sha256=
|
7
|
+
pypeline/pipeline_settings_schema.py,sha256=B_Jzh4rUKLYBRSBT2vYgeXMYdFiYRdt3_sX6t125Hkk,20899
|
8
8
|
pypeline/pypeline_yaml.py,sha256=Og08sUKwOjq7JYPnkg-NIcGbHravYCkC5Arz22rZEtA,16981
|
9
9
|
pypeline/schedule_config_schema.py,sha256=vtZV-5wpGcAiYcXxdBPRkrjsbR6x_9E-1PC2elrKKbE,3611
|
10
10
|
pypeline/flask/__init__.py,sha256=AdljRh0lMiS8ExgDmgzObwVs8jW7hqQuf83Ml8kn8GQ,491
|
@@ -26,14 +26,14 @@ pypeline/pipelines/middleware/pypeline_middleware.py,sha256=ciXZD2rLMCLGI9wP5zB8
|
|
26
26
|
pypeline/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
27
|
pypeline/utils/config_utils.py,sha256=rAIATyoW7kGETZ_Z2DqiXtGd7bJp5uPfcLtfNPOYsNs,2167
|
28
28
|
pypeline/utils/dramatiq_utils.py,sha256=DUdgVywm1182A4i69XzH9EIh1EJ9zAHmJLtOaVSW7pw,3844
|
29
|
-
pypeline/utils/graceful_shutdown_util.py,sha256=
|
29
|
+
pypeline/utils/graceful_shutdown_util.py,sha256=gdyf4r_vlunZZP-prcol_9aJQEG9Hk8evivVSe_H0N0,1293
|
30
30
|
pypeline/utils/module_utils.py,sha256=-yEJIukDCoXnmlZVXB6Dww25tH6GdPE5SoFqv6pfdVU,3682
|
31
31
|
pypeline/utils/pipeline_utils.py,sha256=kGP1QwCJikGC5QNRtzRXCDVewyRMpWIqERTNnxGLlSY,4795
|
32
32
|
pypeline/utils/schema_utils.py,sha256=Fgl0y9Cuo_TZeEx_S3gaSVnLjn6467LTkjb2ek7Ms98,851
|
33
33
|
tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
scalable_pypeline-2.1.
|
35
|
-
scalable_pypeline-2.1.
|
36
|
-
scalable_pypeline-2.1.
|
37
|
-
scalable_pypeline-2.1.
|
38
|
-
scalable_pypeline-2.1.
|
39
|
-
scalable_pypeline-2.1.
|
34
|
+
scalable_pypeline-2.1.17.dist-info/LICENSE,sha256=DVQuDIgE45qn836wDaWnYhSdxoLXgpRRKH4RuTjpRZQ,10174
|
35
|
+
scalable_pypeline-2.1.17.dist-info/METADATA,sha256=wdwLNpzekuocPmwnXsT6bCvwOkJ0nb-HyXSgd0Hu8iM,5982
|
36
|
+
scalable_pypeline-2.1.17.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
|
37
|
+
scalable_pypeline-2.1.17.dist-info/entry_points.txt,sha256=uWs10ODfHSBKo2Cx_QaUjPHQTpZ3e77j9VlAdRRmMyg,119
|
38
|
+
scalable_pypeline-2.1.17.dist-info/top_level.txt,sha256=C7dpkEOc_-nnsAQb28BfQknjD6XHRyS9ZrvVeoIbV7s,15
|
39
|
+
scalable_pypeline-2.1.17.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|