ddeutil-workflow 0.0.7__py3-none-any.whl → 0.0.8__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ddeutil-workflow
3
- Version: 0.0.7
3
+ Version: 0.0.8
4
4
  Summary: Data Developer & Engineer Workflow Utility Objects
5
5
  Author-email: ddeutils <korawich.anu@gmail.com>
6
6
  License: MIT
@@ -79,13 +79,10 @@ pip install ddeutil-workflow
79
79
  This project need `ddeutil-io` extension namespace packages. If you want to install
80
80
  this package with application add-ons, you should add `app` in installation;
81
81
 
82
- ```shell
83
- pip install ddeutil-workflow[app]
84
- ```
85
-
86
- ```shell
87
- pip install ddeutil-workflow[api]
88
- ```
82
+ | Usecase | Install Optional |
83
+ |--------------------|---------------------------|
84
+ | Scheduler Service | `ddeutil-workflow[app]` |
85
+ | FastAPI Server | `ddeutil-workflow[api]` |
89
86
 
90
87
  ## Getting Started
91
88
 
@@ -168,11 +165,12 @@ use-case.
168
165
  > I recommend you to use `task` stage for all actions that you want to do with
169
166
  > pipeline object.
170
167
 
171
- ### Python & Bash
172
-
173
168
  ```yaml
174
169
  run_py_local:
175
170
  type: pipeline.Pipeline
171
+ on:
172
+ - cronjob: '* * * * *'
173
+ timezone: "Asia/Bangkok"
176
174
  params:
177
175
  author-run: str
178
176
  run-date: datetime
@@ -182,12 +180,11 @@ run_py_local:
182
180
  - name: "Printing Information"
183
181
  id: define-func
184
182
  run: |
185
- x = '${{ params.author-run }}'
186
- print(f'Hello {x}')
183
+ x = '${{ params.run-date | fmt("%Y%m%d") }}'
184
+ print(f'Hello at {x}')
187
185
 
188
186
  def echo(name: str):
189
187
  print(f'Hello {name}')
190
-
191
188
  - name: "Run Sequence and use var from Above"
192
189
  vars:
193
190
  x: ${{ params.author-run }}
@@ -195,7 +192,6 @@ run_py_local:
195
192
  print(f'Receive x from above with {x}')
196
193
  # Change x value
197
194
  x: int = 1
198
-
199
195
  - name: "Call Function"
200
196
  vars:
201
197
  echo: ${{ stages.define-func.outputs.echo }}
@@ -210,93 +206,23 @@ run_py_local:
210
206
  ```
211
207
 
212
208
  ```python
209
+ from datetime import datetime
213
210
  from ddeutil.workflow.pipeline import Pipeline
214
211
 
215
- pipe = Pipeline.from_loader(name='run_py_local', externals={})
216
- pipe.execute(params={'author-run': 'Local Workflow', 'run-date': '2024-01-01'})
212
+ pipe: Pipeline = Pipeline.from_loader(name='run_py_local', externals={})
213
+ pipe.execute(params={
214
+ 'author-run': 'Local Workflow',
215
+ 'run-date': datetime(2024, 1, 1),
216
+ })
217
217
  ```
218
218
 
219
219
  ```shell
220
- > Hello Local Workflow
220
+ > Hello at 20240101
221
221
  > Receive x from above with Local Workflow
222
222
  > Hello Caller
223
223
  > Hello World from Shell
224
224
  ```
225
225
 
226
- ### Hook (Extract & Load)
227
-
228
- ```yaml
229
- pipe_el_pg_to_lake:
230
- type: pipeline.Pipeline
231
- params:
232
- run-date: datetime
233
- author-email: str
234
- jobs:
235
- extract-load:
236
- stages:
237
- - name: "Extract Load from Postgres to Lake"
238
- id: extract-load
239
- uses: tasks/postgres-to-delta@polars
240
- with:
241
- source:
242
- conn: conn_postgres_url
243
- query: |
244
- select * from ${{ params.name }}
245
- where update_date = '${{ params.datetime }}'
246
- sink:
247
- conn: conn_az_lake
248
- endpoint: "/${{ params.name }}"
249
- ```
250
-
251
- Implement hook:
252
-
253
- ```python
254
- from ddeutil.workflow.utils import tag
255
-
256
- @tag('polars', alias='postgres-to-delta')
257
- def postgres_to_delta(source, sink):
258
- return {
259
- "source": source, "sink": sink
260
- }
261
- ```
262
-
263
- ### Hook (Transform)
264
-
265
- ```yaml
266
- pipeline_hook_mssql_proc:
267
- type: pipeline.Pipeline
268
- params:
269
- run_date: datetime
270
- sp_name: str
271
- source_name: str
272
- target_name: str
273
- jobs:
274
- transform:
275
- stages:
276
- - name: "Transform Data in MS SQL Server"
277
- id: transform
278
- uses: tasks/mssql-proc@odbc
279
- with:
280
- exec: ${{ params.sp_name }}
281
- params:
282
- run_mode: "T"
283
- run_date: ${{ params.run_date }}
284
- source: ${{ params.source_name }}
285
- target: ${{ params.target_name }}
286
- ```
287
-
288
- Implement hook:
289
-
290
- ```python
291
- from ddeutil.workflow.utils import tag
292
-
293
- @tag('odbc', alias='mssql-proc')
294
- def odbc_mssql_procedure(_exec: str, params: dict):
295
- return {
296
- "exec": _exec, "params": params
297
- }
298
- ```
299
-
300
226
  ## Configuration
301
227
 
302
228
  ```bash
@@ -306,7 +232,6 @@ export WORKFLOW_CORE_REGISTRY_FILTER=ddeutil.workflow.utils
306
232
  export WORKFLOW_CORE_PATH_CONF=conf
307
233
  export WORKFLOW_CORE_TIMEZONE=Asia/Bangkok
308
234
  export WORKFLOW_CORE_DEFAULT_STAGE_ID=true
309
-
310
235
  export WORKFLOW_CORE_MAX_PIPELINE_POKING=4
311
236
  export WORKFLOW_CORE_MAX_JOB_PARALLEL=2
312
237
  ```
@@ -0,0 +1,20 @@
1
+ ddeutil/workflow/__about__.py,sha256=FA15NQYpQvn7SrHupxQQQ9Ad5ZzEXOvwDS5UyB1h1bo,27
2
+ ddeutil/workflow/__init__.py,sha256=4PEL3RdHmUowK0Dz-tK7fO0wvFX4u9CLd0Up7b3lrAQ,760
3
+ ddeutil/workflow/__types.py,sha256=SYMoxbENQX8uPsiCZkjtpHAqqHOh8rUrarAFicAJd0E,1773
4
+ ddeutil/workflow/api.py,sha256=d2Mmv9jTtN3FITIy-2mivyAKdBOGZxtkNWRMPbCLlFI,3341
5
+ ddeutil/workflow/app.py,sha256=BuYhOoSJCHiSoj3xb2I5QoxaHrD3bKdmoJua3bKBetc,1165
6
+ ddeutil/workflow/exceptions.py,sha256=zuCcsfJ1hFivubXz6lXCpGYXk07d_PkRaUD5ew3_LC0,632
7
+ ddeutil/workflow/loader.py,sha256=_ZD-XP5P7VbUeqItrUVPaKIZu6dMUZ2aywbCbReW1hQ,2778
8
+ ddeutil/workflow/log.py,sha256=N2TyjcuAoH0YTvzJCHTO037IHgVkLA986Xhtz1LSgE4,1742
9
+ ddeutil/workflow/on.py,sha256=YoEqDbzJUwqOA3JRltbvlYr0rNTtxdmb7cWMxl8U19k,6717
10
+ ddeutil/workflow/pipeline.py,sha256=VC6VDxycUdGKn13V42RZxAlCFySYb2HIZGq_ku5Kp5k,30844
11
+ ddeutil/workflow/repeat.py,sha256=sNoRfbOR4cYm_edrSvlVy9N8Dk_osLIq9FC5GMZz32M,4621
12
+ ddeutil/workflow/route.py,sha256=Ck_O1xJwI-vKkMJr37El0-1PGKlwKF8__DDNWVQrf0A,2079
13
+ ddeutil/workflow/scheduler.py,sha256=FqmkvWCqwJ4eRf8aDn5Ce4FcNWqmcvu2aTTfL34lfgs,22184
14
+ ddeutil/workflow/stage.py,sha256=tbxENx_-2BQ6peXKM_s6RQ1oGzTlXcZ4yDpP1Hufkdk,18095
15
+ ddeutil/workflow/utils.py,sha256=seyU81JXfb2zz6QbJvVEb2Wn4qt8f-FBA6QFC97xY5k,21240
16
+ ddeutil_workflow-0.0.8.dist-info/LICENSE,sha256=nGFZ1QEhhhWeMHf9n99_fdt4vQaXS29xWKxt-OcLywk,1085
17
+ ddeutil_workflow-0.0.8.dist-info/METADATA,sha256=9i7Jk3CZlBpNkmFFjD247opgYA6Mc8AT6CtZjcvamYI,8314
18
+ ddeutil_workflow-0.0.8.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
19
+ ddeutil_workflow-0.0.8.dist-info/top_level.txt,sha256=m9M6XeSWDwt_yMsmH6gcOjHZVK5O0-vgtNBuncHjzW4,8
20
+ ddeutil_workflow-0.0.8.dist-info/RECORD,,
@@ -1,20 +0,0 @@
1
- ddeutil/workflow/__about__.py,sha256=b23XabBwtuoPOLmS_Hj_gSA4LZ0fRfAkACM6c3szVoc,27
2
- ddeutil/workflow/__init__.py,sha256=4PEL3RdHmUowK0Dz-tK7fO0wvFX4u9CLd0Up7b3lrAQ,760
3
- ddeutil/workflow/__types.py,sha256=SYMoxbENQX8uPsiCZkjtpHAqqHOh8rUrarAFicAJd0E,1773
4
- ddeutil/workflow/api.py,sha256=d2Mmv9jTtN3FITIy-2mivyAKdBOGZxtkNWRMPbCLlFI,3341
5
- ddeutil/workflow/app.py,sha256=GbdwvUkE8lO2Ze4pZ0-J-7p9mcZAaORfjkHwW_oZIP0,1076
6
- ddeutil/workflow/exceptions.py,sha256=BH7COn_3uz3z7oJBZOQGiuo8osBFgeXL8HYymnjCOPQ,671
7
- ddeutil/workflow/loader.py,sha256=_ZD-XP5P7VbUeqItrUVPaKIZu6dMUZ2aywbCbReW1hQ,2778
8
- ddeutil/workflow/log.py,sha256=_GJEdJr7bqpcQDxZjrqHd-hkiW3NKFaVoR6voE6Ty0o,952
9
- ddeutil/workflow/on.py,sha256=YoEqDbzJUwqOA3JRltbvlYr0rNTtxdmb7cWMxl8U19k,6717
10
- ddeutil/workflow/pipeline.py,sha256=dKF09TFS_v5TCD-5o8tp1UhB5sGuWIQu4zl_UFtlIC0,25951
11
- ddeutil/workflow/repeat.py,sha256=sNoRfbOR4cYm_edrSvlVy9N8Dk_osLIq9FC5GMZz32M,4621
12
- ddeutil/workflow/route.py,sha256=Ck_O1xJwI-vKkMJr37El0-1PGKlwKF8__DDNWVQrf0A,2079
13
- ddeutil/workflow/scheduler.py,sha256=FqmkvWCqwJ4eRf8aDn5Ce4FcNWqmcvu2aTTfL34lfgs,22184
14
- ddeutil/workflow/stage.py,sha256=z05bKk2QFQDXjidSnQYCVOdceSpSO13sHXE0B1UH6XA,14978
15
- ddeutil/workflow/utils.py,sha256=pDM2jaYVP-USH0pLd_XmHOguxVPGVzZ76hOh1AZdINU,18495
16
- ddeutil_workflow-0.0.7.dist-info/LICENSE,sha256=nGFZ1QEhhhWeMHf9n99_fdt4vQaXS29xWKxt-OcLywk,1085
17
- ddeutil_workflow-0.0.7.dist-info/METADATA,sha256=ba2nH57cpHB2P4ldQCRT8ZWDj3r1OPx9a1dgcB0a2Ws,9702
18
- ddeutil_workflow-0.0.7.dist-info/WHEEL,sha256=HiCZjzuy6Dw0hdX5R3LCFPDmFS4BWl8H-8W39XfmgX4,91
19
- ddeutil_workflow-0.0.7.dist-info/top_level.txt,sha256=m9M6XeSWDwt_yMsmH6gcOjHZVK5O0-vgtNBuncHjzW4,8
20
- ddeutil_workflow-0.0.7.dist-info/RECORD,,