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 CHANGED
@@ -1 +1 @@
1
- __version__ = "2.1.15"
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
- logger.info(f"[Signal Handler] Busy ({busy_key}), waiting...")
32
- time.sleep(30)
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.15
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 (==9.1.2) ; extra == 'workers'
36
+ Requires-Dist: tenacity (==8.0.1) ; extra == 'workers'
37
37
 
38
38
  ```
39
39
  ______ __ ________ _____ _ _____ _ _ _____
@@ -1,10 +1,10 @@
1
- pypeline/__init__.py,sha256=844sXOr-u1RlesL29JDG0AmKKXDd3M8Kvx9gXhfWq7Y,23
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=VgbMvTxQSqnvLX593RNoD9gTsZnJwzCc4wGpczV5CEI,20403
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=d3p8ZQ9-xasd_H0YUA5ZsjCQ9PVliSO7_4c1OYzhx-Q,1156
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.15.dist-info/LICENSE,sha256=DVQuDIgE45qn836wDaWnYhSdxoLXgpRRKH4RuTjpRZQ,10174
35
- scalable_pypeline-2.1.15.dist-info/METADATA,sha256=J1HbXnGvUrENm3pN0ekb84MR3HqUhrGymagufPEN4mw,5982
36
- scalable_pypeline-2.1.15.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
37
- scalable_pypeline-2.1.15.dist-info/entry_points.txt,sha256=uWs10ODfHSBKo2Cx_QaUjPHQTpZ3e77j9VlAdRRmMyg,119
38
- scalable_pypeline-2.1.15.dist-info/top_level.txt,sha256=C7dpkEOc_-nnsAQb28BfQknjD6XHRyS9ZrvVeoIbV7s,15
39
- scalable_pypeline-2.1.15.dist-info/RECORD,,
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,,