processes 3.1.1__tar.gz → 7.0.0__tar.gz

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.
Files changed (108) hide show
  1. processes-7.0.0/.github/workflows/lint-pr.yml +31 -0
  2. {processes-3.1.1 → processes-7.0.0}/.github/workflows/tests.yml +1 -1
  3. {processes-3.1.1 → processes-7.0.0}/.gitignore +5 -1
  4. processes-7.0.0/CHANGELOG.md +204 -0
  5. {processes-3.1.1 → processes-7.0.0}/PKG-INFO +179 -66
  6. {processes-3.1.1 → processes-7.0.0}/README.md +177 -63
  7. {processes-3.1.1 → processes-7.0.0}/docs/examples/advanced.md +17 -15
  8. {processes-3.1.1 → processes-7.0.0}/docs/examples/basic.md +10 -10
  9. processes-7.0.0/docs/examples/reports.md +128 -0
  10. {processes-3.1.1 → processes-7.0.0}/docs/index.md +42 -43
  11. processes-7.0.0/docs/reference.md +14 -0
  12. {processes-3.1.1 → processes-7.0.0}/examples/01_basic_tasks_and_dependencies/README.md +10 -10
  13. {processes-3.1.1 → processes-7.0.0}/examples/01_basic_tasks_and_dependencies/example1.py +4 -4
  14. {processes-3.1.1 → processes-7.0.0}/examples/02_task_dependencies_result_passing/README.md +7 -7
  15. {processes-3.1.1 → processes-7.0.0}/examples/02_task_dependencies_result_passing/example2.py +6 -6
  16. processes-7.0.0/examples/03_reports_and_notifications/README.md +32 -0
  17. processes-7.0.0/examples/03_reports_and_notifications/example3.py +181 -0
  18. {processes-3.1.1 → processes-7.0.0}/examples/README.md +12 -1
  19. {processes-3.1.1 → processes-7.0.0}/mkdocs.yml +1 -0
  20. {processes-3.1.1 → processes-7.0.0}/pyproject.toml +2 -2
  21. processes-7.0.0/src/processes/__init__.py +32 -0
  22. processes-7.0.0/src/processes/_logfile.py +100 -0
  23. {processes-3.1.1 → processes-7.0.0}/src/processes/_tb_utils.py +10 -12
  24. processes-7.0.0/src/processes/comms/__init__.py +15 -0
  25. processes-7.0.0/src/processes/comms/_email.py +304 -0
  26. processes-7.0.0/src/processes/comms/_webhook.py +126 -0
  27. processes-7.0.0/src/processes/comms/base.py +57 -0
  28. processes-7.0.0/src/processes/comms/channels.py +112 -0
  29. {processes-3.1.1/src/processes → processes-7.0.0/src/processes/comms}/email_config.py +5 -29
  30. processes-7.0.0/src/processes/comms/themes/languages/de.json +20 -0
  31. processes-7.0.0/src/processes/comms/themes/languages/en.json +20 -0
  32. processes-7.0.0/src/processes/comms/themes/languages/es.json +20 -0
  33. processes-7.0.0/src/processes/comms/themes/languages/fr.json +20 -0
  34. processes-7.0.0/src/processes/comms/themes/languages/it.json +20 -0
  35. processes-7.0.0/src/processes/comms/themes/languages/pt.json +20 -0
  36. processes-7.0.0/src/processes/comms/themes/styles/report.html +178 -0
  37. processes-7.0.0/src/processes/comms/webhook_config.py +44 -0
  38. processes-7.0.0/src/processes/error_data.py +42 -0
  39. processes-7.0.0/src/processes/execution_report.py +221 -0
  40. {processes-3.1.1 → processes-7.0.0}/src/processes/process.py +198 -98
  41. {processes-3.1.1 → processes-7.0.0}/src/processes/task.py +103 -161
  42. processes-7.0.0/src/processes/task_types.py +202 -0
  43. processes-7.0.0/tests/conftest.py +75 -0
  44. processes-7.0.0/tests/manual_tests/manual_report_notify.py +331 -0
  45. {processes-3.1.1 → processes-7.0.0}/tests/test_args_kwargs.py +25 -23
  46. {processes-3.1.1 → processes-7.0.0}/tests/test_complex_dag_failures.py +30 -117
  47. {processes-3.1.1 → processes-7.0.0}/tests/test_dependencies.py +14 -14
  48. processes-7.0.0/tests/test_execution_report.py +120 -0
  49. {processes-3.1.1 → processes-7.0.0}/tests/test_logfiles.py +4 -4
  50. {processes-3.1.1 → processes-7.0.0}/tests/test_normal_run_no_errors.py +22 -27
  51. {processes-3.1.1 → processes-7.0.0}/tests/test_parallel_race_conditions.py +19 -18
  52. processes-7.0.0/tests/test_process_mutation.py +137 -0
  53. processes-7.0.0/tests/test_report_notify_dispatch.py +155 -0
  54. processes-7.0.0/tests/test_report_rendering.py +149 -0
  55. processes-7.0.0/tests/test_report_send.py +344 -0
  56. processes-7.0.0/tests/test_report_to_json.py +98 -0
  57. processes-7.0.0/tests/test_resolve_args_failure.py +52 -0
  58. {processes-3.1.1 → processes-7.0.0}/tests/test_timeout_retry.py +40 -38
  59. processes-7.0.0/tests/test_unique_name.py +71 -0
  60. {processes-3.1.1 → processes-7.0.0}/uv.lock +34 -171
  61. processes-3.1.1/.github/workflows/lint-pr.yml +0 -31
  62. processes-3.1.1/CHANGELOG.md +0 -104
  63. processes-3.1.1/docs/reference.md +0 -10
  64. processes-3.1.1/src/processes/__init__.py +0 -23
  65. processes-3.1.1/src/processes/_email_internals.py +0 -217
  66. processes-3.1.1/src/processes/_error_data.py +0 -74
  67. processes-3.1.1/src/processes/_logfile_formatting.py +0 -57
  68. processes-3.1.1/src/processes/themes/languages/de.json +0 -15
  69. processes-3.1.1/src/processes/themes/languages/en.json +0 -15
  70. processes-3.1.1/src/processes/themes/languages/es.json +0 -15
  71. processes-3.1.1/src/processes/themes/languages/fr.json +0 -15
  72. processes-3.1.1/src/processes/themes/languages/it.json +0 -15
  73. processes-3.1.1/src/processes/themes/languages/pt.json +0 -15
  74. processes-3.1.1/src/processes/themes/styles/classic.html +0 -49
  75. processes-3.1.1/src/processes/themes/styles/compact.html +0 -67
  76. processes-3.1.1/src/processes/themes/styles/modern.html +0 -115
  77. processes-3.1.1/tests/manual_tests/manual_pipeline_inspect.py +0 -423
  78. processes-3.1.1/tests/manual_tests/manual_themed_tracebacks.py +0 -304
  79. processes-3.1.1/tests/test_email_themes.py +0 -531
  80. processes-3.1.1/tests/test_unique_name.py +0 -40
  81. {processes-3.1.1 → processes-7.0.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  82. {processes-3.1.1 → processes-7.0.0}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  83. {processes-3.1.1 → processes-7.0.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  84. {processes-3.1.1 → processes-7.0.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  85. {processes-3.1.1 → processes-7.0.0}/.github/workflows/docs.yml +0 -0
  86. {processes-3.1.1 → processes-7.0.0}/.github/workflows/lint.yml +0 -0
  87. {processes-3.1.1 → processes-7.0.0}/.github/workflows/mypy.yml +0 -0
  88. {processes-3.1.1 → processes-7.0.0}/.github/workflows/publish.yml +0 -0
  89. {processes-3.1.1 → processes-7.0.0}/.github/workflows/tags.yml +0 -0
  90. {processes-3.1.1 → processes-7.0.0}/CONTRIBUTING.md +0 -0
  91. {processes-3.1.1 → processes-7.0.0}/LICENSE +0 -0
  92. {processes-3.1.1 → processes-7.0.0}/assets/banner.svg +0 -0
  93. {processes-3.1.1 → processes-7.0.0}/assets/logo.png +0 -0
  94. {processes-3.1.1 → processes-7.0.0}/assets/logo.svg +0 -0
  95. {processes-3.1.1 → processes-7.0.0}/assets/social_banner.png +0 -0
  96. {processes-3.1.1 → processes-7.0.0}/assets/social_banner.svg +0 -0
  97. {processes-3.1.1 → processes-7.0.0}/docs/assets/favicon.svg +0 -0
  98. {processes-3.1.1 → processes-7.0.0}/docs/examples/intro.md +0 -0
  99. {processes-3.1.1 → processes-7.0.0}/pytest.ini +0 -0
  100. {processes-3.1.1/src/processes → processes-7.0.0/src/processes/comms}/themes/palettes/catppuccin.css +0 -0
  101. {processes-3.1.1/src/processes → processes-7.0.0/src/processes/comms}/themes/palettes/neobones.css +0 -0
  102. {processes-3.1.1/src/processes → processes-7.0.0/src/processes/comms}/themes/palettes/neutral.css +0 -0
  103. {processes-3.1.1/src/processes → processes-7.0.0/src/processes/comms}/themes/palettes/slate.css +0 -0
  104. {processes-3.1.1 → processes-7.0.0}/src/processes/exceptions.py +0 -0
  105. {processes-3.1.1 → processes-7.0.0}/src/processes/py.typed +0 -0
  106. {processes-3.1.1 → processes-7.0.0}/tests/__init__.py +0 -0
  107. {processes-3.1.1 → processes-7.0.0}/tests/base_test.py +0 -0
  108. {processes-3.1.1 → processes-7.0.0}/tests/manual_tests/__init__.py +0 -0
@@ -0,0 +1,31 @@
1
+ name: "Lint PR"
2
+
3
+ on:
4
+ pull_request:
5
+ types:
6
+ - opened
7
+ - edited
8
+ - synchronize
9
+
10
+ permissions:
11
+ pull-requests: read
12
+
13
+ jobs:
14
+ main:
15
+ name: Validate PR title
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: amannn/action-semantic-pull-request@v6
19
+ env:
20
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
21
+ with:
22
+ types: |
23
+ fix
24
+ feat
25
+ docs
26
+ style
27
+ refactor
28
+ perf
29
+ test
30
+ build
31
+ ci
@@ -12,7 +12,7 @@ jobs:
12
12
  fail-fast: false
13
13
  matrix:
14
14
  os: [ubuntu-latest, windows-latest, macos-latest]
15
- python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
15
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
16
16
 
17
17
  steps:
18
18
  - name: Checkout code
@@ -180,4 +180,8 @@ mail_config.toml
180
180
 
181
181
  /logs/
182
182
  logs/*
183
- logs
183
+ logs
184
+
185
+ PR_DESCRIPTION.md
186
+
187
+ FEATURE_PLAN.md
@@ -0,0 +1,204 @@
1
+ ## v7.0.0 (2026-06-20)
2
+
3
+ ### BREAKING CHANGE
4
+
5
+ - Task(channels=...) and the NotificationChannel API are removed;
6
+ HTMLEmailStyle.style and traced_vars_frame_filter are removed (the latter moves
7
+ to Task). Per-task email/webhook alerts are replaced by report.notify.
8
+
9
+ ### Feat
10
+
11
+ - add process name to report, email subject, and webhook payload
12
+ - normalize task names to lowercase for case-insensitive matching
13
+ - delegate notifications to ProcessExecutionReport, drop per-task channels
14
+ - replace notify_errors with notify(only_errors=...) and add task filter
15
+ - implement WebhookChannel and EmailChannel send_report
16
+ - add ReportChannel architecture for report notifications
17
+ - add ProcessExecutionReport.notify/.notify_errors stubs
18
+ - add ProcessExecutionReport.to_json
19
+ - add graph mutation methods to Process
20
+
21
+ ### Refactor
22
+
23
+ - group communication code into a comms/ package
24
+ - unify SMTP and webhook transport behind single classes
25
+ - extract task value types to leaf module, break import cycle
26
+
27
+ ### Perf
28
+
29
+ - cache palette CSS and report template loading
30
+ - cache language string loading
31
+ - add slots=True to frozen value types
32
+
33
+ ## v6.0.0 (2026-06-15)
34
+
35
+ ### BREAKING CHANGE
36
+
37
+ - Process.run() returns ProcessExecutionReport instead of
38
+ ProcessResult. Use report.successes / report.errored / report.skipped
39
+ instead of passed_tasks_results / errored_tasks / skipped_tasks, and
40
+ report.entries[name].result / .error instead of
41
+ passed_tasks_results[name] / failed_tasks_results[name].
42
+
43
+ ### Feat
44
+
45
+ - remove ProcessResult, have Process.run() return ProcessExecutionReport
46
+ - expand TaskStatus with PENDING and add status field to TaskResult
47
+ - add ProcessExecutionReport for per-task execution summaries
48
+ - track failed task results in ProcessRunner and ProcessResult
49
+ - promote ErrorData to public API and add timing/attempts to TaskResult
50
+
51
+ ### Fix
52
+
53
+ - make Task.run never propagate dependency-resolution failures
54
+
55
+ ### Refactor
56
+
57
+ - drop _is_unrunnable side effect and reuse TaskResult helpers
58
+
59
+ ## v5.0.0 (2026-06-14)
60
+
61
+ ### BREAKING CHANGE
62
+
63
+ - log_path and func swap positions; existing positional
64
+ Task(name, log_path, func, ...) calls must be updated to
65
+ Task(name, func, log_path, ...).
66
+
67
+ ### Feat
68
+
69
+ - add nest_under option to WebhookConfig for nested payload envelopes
70
+ - make Task.log_path optional, reorder constructor signature
71
+
72
+ ## v4.1.0 (2026-06-14)
73
+
74
+ ### Feat
75
+
76
+ - add extra_payload to WebhookConfig for service-specific routing keys
77
+ - include traced variables in task logfiles
78
+ - add generic WebhookChannel with optional HMAC body signing
79
+
80
+ ### Refactor
81
+
82
+ - make traced_vars a plain {name: repr(value)} dict
83
+
84
+ ## v4.0.0 (2026-06-14)
85
+
86
+ ### BREAKING CHANGE
87
+
88
+ - Task no longer accepts smtp_config or email_style.
89
+ Pass channels=[EmailChannel(smtp_config, style)] instead.
90
+
91
+ ### Feat
92
+
93
+ - add NotificationChannel abstraction with file and email channels
94
+
95
+ ### Refactor
96
+
97
+ - configure email alerts via channels instead of Task smtp_config
98
+ - keep file and email channel implementations internal
99
+ - build task handlers through notification channels
100
+
101
+ ## v3.1.1 (2026-06-13)
102
+
103
+ ### Refactor
104
+
105
+ - rename _log_formatting to _logfile_formatting and _TaskLogFormatter to _TaskLogfileFormatter
106
+
107
+ ## v3.1.0 (2026-06-13)
108
+
109
+ ### Feat
110
+
111
+ - **logging**: include failure context in task logfiles
112
+
113
+ ### Refactor
114
+
115
+ - extract typed _ErrorData from task_context via shared base formatter
116
+ - inline single-use _task_context_lines helper
117
+ - move task logfile formatting out of _email_internals
118
+
119
+ ## v3.0.1 (2026-06-13)
120
+
121
+ ### Refactor
122
+
123
+ - **process**: use bare raise and extract _is_done helper
124
+
125
+ ## v3.0.0 (2026-06-13)
126
+
127
+ ### BREAKING CHANGE
128
+
129
+ - html_mail_handler parameter removed from Task; use
130
+ smtp_config and email_style instead. HTMLSMTPHandler removed from public API.
131
+
132
+ ### Feat
133
+
134
+ - **html_logging**: expose last_path_traced_vars on HTMLSMTPHandler
135
+
136
+ ### Refactor
137
+
138
+ - **email**: replace HTMLSMTPHandler with SMTPConfig/HTMLEmailStyle
139
+
140
+ ## v2.0.1 (2026-06-12)
141
+
142
+ ### Fix
143
+
144
+ - **publish.yml**: remove unneeded step ruff format check in quality-gate
145
+
146
+ ## v2.0.0 (2026-06-12)
147
+
148
+ ### BREAKING CHANGE
149
+
150
+ - log records no longer carry
151
+ ``post_traceback_html_body``. Consumers introspecting that attribute
152
+ must read ``record.task_context`` instead.
153
+
154
+ ### Feat
155
+
156
+ - **email_alerting**: Traced Variables section with file:line reference in email body
157
+ - **email_alerting**: language alternatives for HTML email body
158
+ - **email_alerting**: template-driven HTML body from pure metadata
159
+
160
+ ### Fix
161
+
162
+ - **process**: parallel runner no longer raises on unrunnable tail
163
+
164
+ ## v1.0.5 (2026-01-19)
165
+
166
+ ### Fix
167
+
168
+ - **docs**: added urls to pyproject file
169
+
170
+ ## v1.0.4 (2026-01-19)
171
+
172
+ ### Fix
173
+
174
+ - **docs**: added pypi badge and pip install instruction to readme
175
+
176
+ ## v1.0.3 (2026-01-19)
177
+
178
+ ### Fix
179
+
180
+ - **docs**: changes in readme and index of docs to show banner
181
+
182
+ ## v1.0.2 (2026-01-19)
183
+
184
+ ### Fix
185
+
186
+ - **ci**: added a workflow for publishing to pypi
187
+
188
+ ## v1.0.1 (2026-01-19)
189
+
190
+ ### Fix
191
+
192
+ - **lint**: fix ruff formatting
193
+
194
+ ## v1.0.0 (2026-01-19)
195
+
196
+ ### BREAKING CHANGE
197
+
198
+ - Task.run method had one of its kwargs removed
199
+
200
+ ### Fix
201
+
202
+ - **Task-can-no-longer-pass-logger-to-its-function.-Changed-some-examples,-documentations-and-better-type-hints**: Task.run method no longer can pass logger to its function as kwarg
203
+
204
+ ## v0.1.0 (2026-01-18)