ddeutil-workflow 0.0.77__py3-none-any.whl → 0.0.79__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.4
2
2
  Name: ddeutil-workflow
3
- Version: 0.0.77
3
+ Version: 0.0.79
4
4
  Summary: Lightweight workflow orchestration with YAML template
5
5
  Author-email: ddeutils <korawich.anu@gmail.com>
6
6
  License: MIT
@@ -24,7 +24,7 @@ Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  Requires-Dist: ddeutil[checksum]>=0.4.8
26
26
  Requires-Dist: ddeutil-io[toml,yaml]>=0.2.14
27
- Requires-Dist: pydantic<3.0.0,==2.11.5
27
+ Requires-Dist: pydantic<3.0.0,==2.11.7
28
28
  Requires-Dist: pydantic-extra-types<3.0.0,>=2.10.4
29
29
  Requires-Dist: python-dotenv>=1.1.0
30
30
  Requires-Dist: typer>=0.16.0
@@ -35,9 +35,17 @@ Requires-Dist: httpx; extra == "all"
35
35
  Requires-Dist: ujson; extra == "all"
36
36
  Requires-Dist: aiofiles; extra == "all"
37
37
  Requires-Dist: aiohttp; extra == "all"
38
- Requires-Dist: requests==2.32.3; extra == "all"
38
+ Requires-Dist: requests==2.32.4; extra == "all"
39
39
  Provides-Extra: docker
40
40
  Requires-Dist: docker==7.1.0; extra == "docker"
41
+ Provides-Extra: azure
42
+ Requires-Dist: azure-batch>=13.0.0; extra == "azure"
43
+ Requires-Dist: azure-storage-blob>=12.0.0; extra == "azure"
44
+ Provides-Extra: aws
45
+ Requires-Dist: boto3>=1.39.0; extra == "aws"
46
+ Provides-Extra: gcp
47
+ Requires-Dist: google-cloud-batch>=0.17.0; extra == "gcp"
48
+ Requires-Dist: google-cloud-storage>=2.10.0; extra == "gcp"
41
49
  Dynamic: license-file
42
50
 
43
51
  # Workflow Orchestration
@@ -140,6 +148,19 @@ If you want to install this package with application add-ons, you should add
140
148
  | Python | `ddeutil-workflow` | ✅ |
141
149
  | FastAPI Server | `ddeutil-workflow[all]` | ✅ |
142
150
 
151
+ Check the version of the current workflow package:
152
+
153
+ ```shell
154
+ $ pip install ddeutil-workflow
155
+ $ workflow-cli version
156
+ ```
157
+
158
+ Initial workflow project:
159
+
160
+ ```shell
161
+ $ workflow-cli init
162
+ ```
163
+
143
164
  ## 📖 Documentation
144
165
 
145
166
  For comprehensive API documentation, examples, and best practices:
@@ -147,7 +168,19 @@ For comprehensive API documentation, examples, and best practices:
147
168
  - **[Full Documentation](https://ddeutils.github.io/ddeutil-workflow/)** - Complete user guide and API reference
148
169
  - **[Getting Started](https://ddeutils.github.io/ddeutil-workflow/getting-started/)** - Quick start guide
149
170
  - **[API Reference](https://ddeutils.github.io/ddeutil-workflow/api/workflow/)** - Detailed API documentation
150
- - **[Examples](https://ddeutils.github.io/ddeutil-workflow/examples/)** - Real-world usage examples
171
+ - **[Optimized Tracing](docs/optimized-tracing.md)** - High-performance logging system (2-5x faster)
172
+
173
+ ## ⚡ Performance Improvements
174
+
175
+ The workflow system now includes an optimized tracing system that provides significant performance improvements:
176
+
177
+ - **🚀 2-5x faster logging** with buffered I/O operations
178
+ - **💾 60-80% reduction** in disk I/O operations
179
+ - **🛡️ Built-in thread safety** with minimal overhead
180
+ - **🔄 Backward compatible** - existing code automatically benefits
181
+ - **📊 Lower memory footprint** for high-volume logging
182
+
183
+ See [Optimized Tracing Documentation](docs/optimized-tracing.md) for details and performance benchmarks.
151
184
 
152
185
  ## 🎯 Usage
153
186
 
@@ -283,22 +316,21 @@ it will use default value and do not raise any error to you.
283
316
  > The config value that you will set on the environment should combine with
284
317
  > prefix, component, and name which is `WORKFLOW_{component}_{name}` (Upper case).
285
318
 
286
- | Name | Component | Default | Description |
287
- |:----------------------------|:---------:|:--------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------|
288
- | **REGISTRY_CALLER** | CORE | `.` | List of importable string for the call stage. |
289
- | **REGISTRY_FILTER** | CORE | `ddeutil.workflow.templates` | List of importable string for the filter template. |
290
- | **CONF_PATH** | CORE | `./conf` | The config path that keep all template `.yaml` files. |
291
- | **STAGE_DEFAULT_ID** | CORE | `false` | A flag that enable default stage ID that use for catch an execution output. |
292
- | **GENERATE_ID_SIMPLE_MODE** | CORE | `true` | A flog that enable generating ID with `md5` algorithm. |
293
- | **DEBUG_MODE** | LOG | `true` | A flag that enable logging with debug level mode. |
294
- | **TIMEZONE** | LOG | `Asia/Bangkok` | A Timezone string value that will pass to `ZoneInfo` object. |
295
- | **FORMAT** | LOG | `%(asctime)s.%(msecs)03d (%(name)-10s, %(process)-5d,%(thread)-5d) [%(levelname)-7s] %(message)-120s (%(filename)s:%(lineno)s)` | A trace message console format. |
296
- | **FORMAT_FILE** | LOG | `{datetime} ({process:5d}, {thread:5d}) {message:120s} ({filename}:{lineno})` | A trace message format that use to write to target pointer. |
297
- | **DATETIME_FORMAT** | LOG | `%Y-%m-%d %H:%M:%S` | A datetime format of the trace log. |
298
- | **TRACE_URL** | LOG | `file:./logs` | A pointer URL of trace log that use to emit log message. |
299
- | **TRACE_ENABLE_WRITE** | LOG | `false` | A flag that enable writing trace log. |
300
- | **AUDIT_URL** | LOG | `file:./audits` | A pointer URL of audit log that use to write audit metrix. |
301
- | **AUDIT_ENABLE_WRITE** | LOG | `true` | A flag that enable writing audit log after end execution in the workflow release step. |
319
+ | Name | Component | Default | Description |
320
+ |:-----------------------------|:---------:|:--------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------|
321
+ | **REGISTRY_CALLER** | CORE | `.` | List of importable string for the call stage. |
322
+ | **REGISTRY_FILTER** | CORE | `ddeutil.workflow.templates` | List of importable string for the filter template. |
323
+ | **CONF_PATH** | CORE | `./conf` | The config path that keep all template `.yaml` files. |
324
+ | **STAGE_DEFAULT_ID** | CORE | `false` | A flag that enable default stage ID that use for catch an execution output. |
325
+ | **GENERATE_ID_SIMPLE_MODE** | CORE | `true` | A flog that enable generating ID with `md5` algorithm. |
326
+ | **DEBUG_MODE** | LOG | `true` | A flag that enable logging with debug level mode. |
327
+ | **TIMEZONE** | LOG | `Asia/Bangkok` | A Timezone string value that will pass to `ZoneInfo` object. |
328
+ | **FORMAT** | LOG | `%(asctime)s.%(msecs)03d (%(name)-10s, %(process)-5d,%(thread)-5d) [%(levelname)-7s] %(message)-120s (%(filename)s:%(lineno)s)` | A trace message console format. |
329
+ | **FORMAT_FILE** | LOG | `{datetime} ({process:5d}, {thread:5d}) {message:120s} ({filename}:{lineno})` | A trace message format that use to write to target pointer. |
330
+ | **DATETIME_FORMAT** | LOG | `%Y-%m-%d %H:%M:%S` | A datetime format of the trace log. |
331
+ | **TRACE_HANDLERS** | LOG | `[{"type": "console"}]` | A pointer URL of trace log that use to emit log message. Now uses optimized handler by default. |
332
+ | **AUDIT_URL** | LOG | `file:./audits` | A pointer URL of audit log that use to write audit metrix. |
333
+ | **AUDIT_ENABLE_WRITE** | LOG | `true` | A flag that enable writing audit log after end execution in the workflow release step. |
302
334
 
303
335
  ## :rocket: Deployment
304
336
 
@@ -0,0 +1,36 @@
1
+ ddeutil/workflow/__about__.py,sha256=yvfj2RwP4ItaAPfKbYC9qJNcrKY9lxnnSRd6wZ4-CgQ,28
2
+ ddeutil/workflow/__cron.py,sha256=avOagaHl9xXOmizeRWm13cOrty9Tw0vRjFq-xoEgpAY,29167
3
+ ddeutil/workflow/__init__.py,sha256=1xH6m7jXxFly_5FbWCoe8rqhdeSdnnrBMPzoiVo_Exo,3247
4
+ ddeutil/workflow/__main__.py,sha256=Qd-f8z2Q2vpiEP2x6PBFsJrpACWDVxFKQk820MhFmHo,59
5
+ ddeutil/workflow/__types.py,sha256=tA2vsr6mzTSzbWB1sb62c5GgxODlfVRz6FvgLNJtQao,4788
6
+ ddeutil/workflow/audits.py,sha256=7wfRXJmrG3T4YUSArABPfiWq6BzSBf8qoo24JAt433A,28280
7
+ ddeutil/workflow/cli.py,sha256=aNFOZ3Re_QJBBP6vkT9Lsjrg8wLxrw_LKrl-1SIvSOg,8152
8
+ ddeutil/workflow/conf.py,sha256=vdTvR1OVk2TZBK5ZwwUpfxgg8GU4ldV8ukLzG1-tGDQ,16603
9
+ ddeutil/workflow/errors.py,sha256=UpUIqoyqkvzqjuxtUQ9535l1HeAsyh-plEG0PgDVR2w,5541
10
+ ddeutil/workflow/event.py,sha256=qm7QHw-Pozm6oIUzAIxpDkPzzVZVtHgJIUlIle0vEfQ,13943
11
+ ddeutil/workflow/job.py,sha256=UvzU66CebZkwIBg1KZch_aA3bZL0jpVrhRUQ2JIyiN4,46615
12
+ ddeutil/workflow/params.py,sha256=y9f6DEIyae1j4awbj3Kbeq75-U2UPFlKv9K57Hdo_Go,17188
13
+ ddeutil/workflow/result.py,sha256=BOk3DZMtmdE7xzQYeEYTGFlIkzJQ4Ed3fYzf0zF8Jo8,8963
14
+ ddeutil/workflow/reusables.py,sha256=g_Cac3yHy0H5ffl4Bb8_eGl284ELxOuX4LI8GYPMZgw,24983
15
+ ddeutil/workflow/stages.py,sha256=QufIa2b7A_ngOndVoGzyxKm_o5ZrauNeqxAC4vBkKFM,122678
16
+ ddeutil/workflow/traces.py,sha256=0crly_08a7dfi8-w8QPmYizxh6T7VR8yDnEoxEEiwM0,72838
17
+ ddeutil/workflow/utils.py,sha256=-E-Z5hN_UTFuWDk-NpfKhNj0QtLfJSvZNDI5NzJsd5E,12122
18
+ ddeutil/workflow/workflow.py,sha256=WTQAoSUNOmGpvZYgl28ziTY3kxtqQQw4jbTXPJOIBY4,42790
19
+ ddeutil/workflow/api/__init__.py,sha256=5DzYL3ngceoRshh5HYCSVWChqNJSiP01E1bEd8XxPi0,4799
20
+ ddeutil/workflow/api/log_conf.py,sha256=WfS3udDLSyrP-C80lWOvxxmhd_XWKvQPkwDqKblcH3E,1834
21
+ ddeutil/workflow/api/routes/__init__.py,sha256=JRaJZB0D6mgR17MbZo8yLtdYDtD62AA8MdKlFqhG84M,420
22
+ ddeutil/workflow/api/routes/job.py,sha256=8eu2OAOS3fENQ54OO723lFpzgHMyz1D-b_xZj6OnmcA,2550
23
+ ddeutil/workflow/api/routes/logs.py,sha256=RiZ62eQVMWArPHE3lpan955U4DdLLkethlvSMlwF7Mg,5312
24
+ ddeutil/workflow/api/routes/workflows.py,sha256=1Mqx4Hft4uJglgJI-Wcw-JzkhomFYZrtP0DnQDBkAFQ,4410
25
+ ddeutil/workflow/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ ddeutil/workflow/plugins/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ ddeutil/workflow/plugins/providers/aws.py,sha256=61uIFBEWt-_D5Sui24qUPier1Hiqlw_RP_eY-rXBCKc,31551
28
+ ddeutil/workflow/plugins/providers/az.py,sha256=o3dh011lEtmr7-d7FPZJPgXdT0ytFzKfc5xnVxSyXGU,34867
29
+ ddeutil/workflow/plugins/providers/container.py,sha256=DSN0RWxMjTJN5ANheeMauDaPa3X6Z2E1eGUcctYkENw,22134
30
+ ddeutil/workflow/plugins/providers/gcs.py,sha256=KgAOdMBvdbMLTH_z_FwVriBFtZfKEYx8_34jzUOVjTY,27460
31
+ ddeutil_workflow-0.0.79.dist-info/licenses/LICENSE,sha256=nGFZ1QEhhhWeMHf9n99_fdt4vQaXS29xWKxt-OcLywk,1085
32
+ ddeutil_workflow-0.0.79.dist-info/METADATA,sha256=V6nV4VeqzwryOpJVDmd4sK5U9rqgn8H4qs8WcTf8ugw,16755
33
+ ddeutil_workflow-0.0.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
34
+ ddeutil_workflow-0.0.79.dist-info/entry_points.txt,sha256=qDTpPSauL0ciO6T4iSVt8bJeYrVEkkoEEw_RlGx6Kgk,63
35
+ ddeutil_workflow-0.0.79.dist-info/top_level.txt,sha256=m9M6XeSWDwt_yMsmH6gcOjHZVK5O0-vgtNBuncHjzW4,8
36
+ ddeutil_workflow-0.0.79.dist-info/RECORD,,
@@ -1,30 +0,0 @@
1
- ddeutil/workflow/__about__.py,sha256=aU8Cs3gP8PwasjEnV2TWve1NsqO6d4yk5KpYOnhSHz0,28
2
- ddeutil/workflow/__cron.py,sha256=avOagaHl9xXOmizeRWm13cOrty9Tw0vRjFq-xoEgpAY,29167
3
- ddeutil/workflow/__init__.py,sha256=_8sP-CTPOfwsFFhmdwQ2Gp7yY7qJemP7TYsIWgd5jc0,3300
4
- ddeutil/workflow/__main__.py,sha256=Qd-f8z2Q2vpiEP2x6PBFsJrpACWDVxFKQk820MhFmHo,59
5
- ddeutil/workflow/__types.py,sha256=tA2vsr6mzTSzbWB1sb62c5GgxODlfVRz6FvgLNJtQao,4788
6
- ddeutil/workflow/audits.py,sha256=wANG0jEQ7slUSgVZG4JbjlR5PtmF8mHpM9RH-zpYM_g,12679
7
- ddeutil/workflow/cli.py,sha256=eAwRZMSEJu-NONc_un0D_1swFlENMjl3C-iXYnyTTPY,7411
8
- ddeutil/workflow/conf.py,sha256=CL_LFJyrocNCSGN9NwErVAtN_JdetcBqeYIJ9x7e2nE,16796
9
- ddeutil/workflow/errors.py,sha256=tHS6ekxBmZ6sIeLaxHHSaMfhVvlWnndfb2-Aq-bL2So,5509
10
- ddeutil/workflow/event.py,sha256=siChcBhsu4ejzW1fK0tjHPXQVaSUCSxPYDgDrh6duwo,13676
11
- ddeutil/workflow/job.py,sha256=_NOPWPs2FuiMvNE-L6c9mpXEChXmgQ8zmD33ZzqVi0A,44146
12
- ddeutil/workflow/params.py,sha256=Cyz142OcvENIZrM7Efc2xuGPmmFBhROifP5ojoaCezg,13658
13
- ddeutil/workflow/result.py,sha256=Fz6y6apivLW-94gAxcT42z-mGqWMk6-O3RJ2GGSNUHM,9146
14
- ddeutil/workflow/reusables.py,sha256=3_TV3lpwzqW2lnBJbgt9MkPXk8lFvp2NhYSCdjyOQI8,23338
15
- ddeutil/workflow/stages.py,sha256=KchpcPSgrkvPHhpF1YYNOclk1nhdpLL-AG1M71G6QV8,121972
16
- ddeutil/workflow/traces.py,sha256=0n6Mytp6oeNjOV8lIsFitzZ6TrtuSNVFkUmodBiE_vA,28466
17
- ddeutil/workflow/utils.py,sha256=N8dVsBYOBVXdFOlUETo7zPFefqp3w0XK1940s7k7iOE,10989
18
- ddeutil/workflow/workflow.py,sha256=iQ9z6eOoj-66w6p8wGu28doQGGnL569BcjI3dTK561o,41616
19
- ddeutil/workflow/api/__init__.py,sha256=5DzYL3ngceoRshh5HYCSVWChqNJSiP01E1bEd8XxPi0,4799
20
- ddeutil/workflow/api/log_conf.py,sha256=WfS3udDLSyrP-C80lWOvxxmhd_XWKvQPkwDqKblcH3E,1834
21
- ddeutil/workflow/api/routes/__init__.py,sha256=JRaJZB0D6mgR17MbZo8yLtdYDtD62AA8MdKlFqhG84M,420
22
- ddeutil/workflow/api/routes/job.py,sha256=-lbZ_hS9pEdSy6zeke5qrXEgdNxtQ2w9in7cHuM2Jzs,2536
23
- ddeutil/workflow/api/routes/logs.py,sha256=RiZ62eQVMWArPHE3lpan955U4DdLLkethlvSMlwF7Mg,5312
24
- ddeutil/workflow/api/routes/workflows.py,sha256=1Mqx4Hft4uJglgJI-Wcw-JzkhomFYZrtP0DnQDBkAFQ,4410
25
- ddeutil_workflow-0.0.77.dist-info/licenses/LICENSE,sha256=nGFZ1QEhhhWeMHf9n99_fdt4vQaXS29xWKxt-OcLywk,1085
26
- ddeutil_workflow-0.0.77.dist-info/METADATA,sha256=hplZltt-c1l8T6x2nJidJ-2U79x-6MhS5c5hXws1oGo,15781
27
- ddeutil_workflow-0.0.77.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- ddeutil_workflow-0.0.77.dist-info/entry_points.txt,sha256=qDTpPSauL0ciO6T4iSVt8bJeYrVEkkoEEw_RlGx6Kgk,63
29
- ddeutil_workflow-0.0.77.dist-info/top_level.txt,sha256=m9M6XeSWDwt_yMsmH6gcOjHZVK5O0-vgtNBuncHjzW4,8
30
- ddeutil_workflow-0.0.77.dist-info/RECORD,,