processes 1.0.5__tar.gz → 3.0.1__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 (88) hide show
  1. processes-3.0.1/.github/PULL_REQUEST_TEMPLATE.md +10 -0
  2. {processes-1.0.5 → processes-3.0.1}/.github/workflows/docs.yml +11 -0
  3. {processes-1.0.5 → processes-3.0.1}/.github/workflows/lint.yml +4 -0
  4. {processes-1.0.5 → processes-3.0.1}/.github/workflows/mypy.yml +4 -0
  5. {processes-1.0.5 → processes-3.0.1}/.github/workflows/publish.yml +0 -3
  6. {processes-1.0.5 → processes-3.0.1}/.gitignore +2 -0
  7. processes-3.0.1/CHANGELOG.md +86 -0
  8. processes-3.0.1/CONTRIBUTING.md +135 -0
  9. processes-3.0.1/PKG-INFO +407 -0
  10. processes-3.0.1/README.md +383 -0
  11. {processes-1.0.5 → processes-3.0.1}/assets/banner.svg +53 -22
  12. processes-3.0.1/assets/logo.png +0 -0
  13. processes-3.0.1/assets/logo.svg +71 -0
  14. processes-3.0.1/assets/social_banner.png +0 -0
  15. processes-3.0.1/assets/social_banner.svg +100 -0
  16. processes-3.0.1/docs/assets/favicon.svg +26 -0
  17. processes-3.0.1/docs/examples/advanced.md +220 -0
  18. processes-3.0.1/docs/examples/basic.md +160 -0
  19. processes-3.0.1/docs/examples/intro.md +13 -0
  20. processes-1.0.5/PKG-INFO → processes-3.0.1/docs/index.md +57 -30
  21. processes-3.0.1/docs/reference.md +10 -0
  22. {processes-1.0.5 → processes-3.0.1}/examples/02_task_dependencies_result_passing/README.md +1 -1
  23. processes-3.0.1/examples/README.md +40 -0
  24. processes-3.0.1/mkdocs.yml +53 -0
  25. {processes-1.0.5 → processes-3.0.1}/src/processes/__init__.py +6 -7
  26. processes-3.0.1/src/processes/_email_internals.py +173 -0
  27. processes-3.0.1/src/processes/_tb_utils.py +79 -0
  28. processes-3.0.1/src/processes/email_config.py +99 -0
  29. processes-3.0.1/src/processes/exceptions.py +36 -0
  30. {processes-1.0.5 → processes-3.0.1}/src/processes/process.py +79 -54
  31. processes-3.0.1/src/processes/task.py +434 -0
  32. processes-3.0.1/src/processes/themes/languages/de.json +15 -0
  33. processes-3.0.1/src/processes/themes/languages/en.json +15 -0
  34. processes-3.0.1/src/processes/themes/languages/es.json +15 -0
  35. processes-3.0.1/src/processes/themes/languages/fr.json +15 -0
  36. processes-3.0.1/src/processes/themes/languages/it.json +15 -0
  37. processes-3.0.1/src/processes/themes/languages/pt.json +15 -0
  38. processes-3.0.1/src/processes/themes/palettes/catppuccin.css +11 -0
  39. processes-3.0.1/src/processes/themes/palettes/neobones.css +11 -0
  40. processes-3.0.1/src/processes/themes/palettes/neutral.css +11 -0
  41. processes-3.0.1/src/processes/themes/palettes/slate.css +11 -0
  42. processes-3.0.1/src/processes/themes/styles/classic.html +49 -0
  43. processes-3.0.1/src/processes/themes/styles/compact.html +67 -0
  44. processes-3.0.1/src/processes/themes/styles/modern.html +115 -0
  45. processes-3.0.1/tests/base_test.py +62 -0
  46. processes-3.0.1/tests/manual_tests/__init__.py +0 -0
  47. processes-3.0.1/tests/manual_tests/manual_pipeline_inspect.py +423 -0
  48. processes-3.0.1/tests/manual_tests/manual_themed_tracebacks.py +306 -0
  49. processes-3.0.1/tests/test_args_kwargs.py +125 -0
  50. processes-3.0.1/tests/test_complex_dag_failures.py +295 -0
  51. processes-3.0.1/tests/test_dependencies.py +232 -0
  52. processes-3.0.1/tests/test_email_themes.py +530 -0
  53. processes-3.0.1/tests/test_logfiles.py +84 -0
  54. processes-3.0.1/tests/test_normal_run_no_errors.py +125 -0
  55. processes-3.0.1/tests/test_parallel_race_conditions.py +239 -0
  56. processes-3.0.1/tests/test_timeout_retry.py +337 -0
  57. processes-3.0.1/tests/test_unique_name.py +40 -0
  58. processes-1.0.5/CHANGELOG.md +0 -41
  59. processes-1.0.5/README.md +0 -143
  60. processes-1.0.5/docs/index.md +0 -127
  61. processes-1.0.5/docs/reference.md +0 -6
  62. processes-1.0.5/examples/README.md +0 -112
  63. processes-1.0.5/mkdocs.yml +0 -31
  64. processes-1.0.5/src/processes/html_logging.py +0 -201
  65. processes-1.0.5/src/processes/task.py +0 -302
  66. processes-1.0.5/tests/log_cleaner.py +0 -8
  67. processes-1.0.5/tests/mail_config.example.toml +0 -13
  68. processes-1.0.5/tests/manual_test_email.py +0 -103
  69. processes-1.0.5/tests/test_args_kwargs.py +0 -166
  70. processes-1.0.5/tests/test_dependencies.py +0 -266
  71. processes-1.0.5/tests/test_examples.py +0 -17
  72. processes-1.0.5/tests/test_logfiles.py +0 -130
  73. processes-1.0.5/tests/test_normal_run_no_errors.py +0 -166
  74. processes-1.0.5/tests/test_unique_name.py +0 -45
  75. {processes-1.0.5 → processes-3.0.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  76. {processes-1.0.5 → processes-3.0.1}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  77. {processes-1.0.5 → processes-3.0.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  78. {processes-1.0.5 → processes-3.0.1}/.github/workflows/lint-pr.yml +0 -0
  79. {processes-1.0.5 → processes-3.0.1}/.github/workflows/tags.yml +0 -0
  80. {processes-1.0.5 → processes-3.0.1}/.github/workflows/tests.yml +0 -0
  81. {processes-1.0.5 → processes-3.0.1}/LICENSE +0 -0
  82. {processes-1.0.5 → processes-3.0.1}/examples/01_basic_tasks_and_dependencies/README.md +0 -0
  83. {processes-1.0.5 → processes-3.0.1}/examples/01_basic_tasks_and_dependencies/example1.py +0 -0
  84. {processes-1.0.5 → processes-3.0.1}/examples/02_task_dependencies_result_passing/example2.py +0 -0
  85. {processes-1.0.5 → processes-3.0.1}/pyproject.toml +0 -0
  86. {processes-1.0.5 → processes-3.0.1}/pytest.ini +0 -0
  87. {processes-1.0.5 → processes-3.0.1}/tests/__init__.py +0 -0
  88. {processes-1.0.5 → processes-3.0.1}/uv.lock +0 -0
@@ -0,0 +1,10 @@
1
+ ## What and why
2
+ <!-- Describe the change and the motivation behind it -->
3
+
4
+ ## Type of change
5
+ - [ ] `feat` — new feature
6
+ - [ ] `fix` — bug fix
7
+ - [ ] `refactor` — no behavior change
8
+ - [ ] `docs` — documentation only
9
+ - [ ] `test` — tests only
10
+ - [ ] `chore` / `ci` / `build`
@@ -3,6 +3,17 @@ on:
3
3
  push:
4
4
  branches:
5
5
  - main
6
+ paths:
7
+ - "**.py"
8
+ - "docs/**"
9
+ - "mkdocs.yml"
10
+ pull_request:
11
+ branches:
12
+ - main
13
+ paths:
14
+ - "**.py"
15
+ - "docs/**"
16
+ - "mkdocs.yml"
6
17
  permissions:
7
18
  contents: write
8
19
  jobs:
@@ -3,8 +3,12 @@ name: Lint
3
3
  on:
4
4
  push:
5
5
  branches: [main]
6
+ paths:
7
+ - "**.py"
6
8
  pull_request:
7
9
  branches: [main]
10
+ paths:
11
+ - "**.py"
8
12
 
9
13
  jobs:
10
14
  lint:
@@ -3,8 +3,12 @@ name: mypy-check
3
3
  on:
4
4
  push:
5
5
  branches: [main]
6
+ paths:
7
+ - "**.py"
6
8
  pull_request:
7
9
  branches: [main]
10
+ paths:
11
+ - "**.py"
8
12
 
9
13
  jobs:
10
14
  lint:
@@ -18,9 +18,6 @@ jobs:
18
18
  - name: Ruff Check
19
19
  run: uv run ruff check .
20
20
 
21
- - name: Ruff Format
22
- run: uv run ruff format --check .
23
-
24
21
  - name: Mypy
25
22
  run: uv run mypy src
26
23
 
@@ -54,6 +54,8 @@ cover/
54
54
  # Translations
55
55
  *.mo
56
56
  *.pot
57
+ CLAUDE.md
58
+ /.claude
57
59
 
58
60
  # Django stuff:
59
61
  *.log
@@ -0,0 +1,86 @@
1
+ ## v3.0.1 (2026-06-13)
2
+
3
+ ### Refactor
4
+
5
+ - **process**: use bare raise and extract _is_done helper
6
+
7
+ ## v3.0.0 (2026-06-13)
8
+
9
+ ### BREAKING CHANGE
10
+
11
+ - html_mail_handler parameter removed from Task; use
12
+ smtp_config and email_style instead. HTMLSMTPHandler removed from public API.
13
+
14
+ ### Feat
15
+
16
+ - **html_logging**: expose last_path_traced_vars on HTMLSMTPHandler
17
+
18
+ ### Refactor
19
+
20
+ - **email**: replace HTMLSMTPHandler with SMTPConfig/HTMLEmailStyle
21
+
22
+ ## v2.0.1 (2026-06-12)
23
+
24
+ ### Fix
25
+
26
+ - **publish.yml**: remove unneeded step ruff format check in quality-gate
27
+
28
+ ## v2.0.0 (2026-06-12)
29
+
30
+ ### BREAKING CHANGE
31
+
32
+ - log records no longer carry
33
+ ``post_traceback_html_body``. Consumers introspecting that attribute
34
+ must read ``record.task_context`` instead.
35
+
36
+ ### Feat
37
+
38
+ - **email_alerting**: Traced Variables section with file:line reference in email body
39
+ - **email_alerting**: language alternatives for HTML email body
40
+ - **email_alerting**: template-driven HTML body from pure metadata
41
+
42
+ ### Fix
43
+
44
+ - **process**: parallel runner no longer raises on unrunnable tail
45
+
46
+ ## v1.0.5 (2026-01-19)
47
+
48
+ ### Fix
49
+
50
+ - **docs**: added urls to pyproject file
51
+
52
+ ## v1.0.4 (2026-01-19)
53
+
54
+ ### Fix
55
+
56
+ - **docs**: added pypi badge and pip install instruction to readme
57
+
58
+ ## v1.0.3 (2026-01-19)
59
+
60
+ ### Fix
61
+
62
+ - **docs**: changes in readme and index of docs to show banner
63
+
64
+ ## v1.0.2 (2026-01-19)
65
+
66
+ ### Fix
67
+
68
+ - **ci**: added a workflow for publishing to pypi
69
+
70
+ ## v1.0.1 (2026-01-19)
71
+
72
+ ### Fix
73
+
74
+ - **lint**: fix ruff formatting
75
+
76
+ ## v1.0.0 (2026-01-19)
77
+
78
+ ### BREAKING CHANGE
79
+
80
+ - Task.run method had one of its kwargs removed
81
+
82
+ ### Fix
83
+
84
+ - **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
85
+
86
+ ## v0.1.0 (2026-01-18)
@@ -0,0 +1,135 @@
1
+ # Contributing to Processes
2
+
3
+ Thanks for your interest in contributing! This document covers the two
4
+ contributor paths, project conventions, and how to submit a change.
5
+
6
+ ## Contributor paths
7
+
8
+ **Maintainer** (direct push access): clone the repository directly.
9
+
10
+ ```bash
11
+ git clone https://github.com/oliverm91/processes.git
12
+ cd processes
13
+ uv sync
14
+ ```
15
+
16
+ **External contributor** (everyone else): fork first, then clone your fork.
17
+
18
+ ```bash
19
+ # 1. Fork on GitHub (button top-right of the repo page)
20
+ # 2. Clone your fork
21
+ git clone https://github.com/<your-username>/processes.git
22
+ cd processes
23
+ uv sync
24
+ ```
25
+
26
+ Both paths use [uv](https://docs.astral.sh/uv/) for dependency management.
27
+ `uv sync` installs all dev dependencies (pytest, mypy, ruff, mkdocs, commitizen).
28
+
29
+ ## Project layout
30
+
31
+ ```
32
+ src/processes/ # library source (the public package)
33
+ tests/ # pytest test suite
34
+ examples/ # runnable usage examples
35
+ docs/ # mkdocs documentation source
36
+ ```
37
+
38
+ Keep new public symbols in `src/processes/` and re-export them from
39
+ `src/processes/__init__.py` if they are part of the stable API.
40
+
41
+ ## Running checks locally
42
+
43
+ Before opening a pull request, make sure the following pass:
44
+
45
+ ```bash
46
+ uv run pytest # test suite
47
+ uv run mypy # strict type checking
48
+ uv run ruff check . # linting
49
+ uv run ruff format . # formatting
50
+ ```
51
+
52
+ CI runs the same checks on every push and pull request.
53
+
54
+ ## Style guide
55
+
56
+ - Python >= 3.10 syntax.
57
+ - Type hints on all new code. `mypy` is configured with `strict = true` and
58
+ `disallow_untyped_defs = true`.
59
+ - Ruff rules: `F`, `E`, `W`, `I`, `B`, `UP`. Line length is 100.
60
+ - Prefer the standard library — the library has zero runtime dependencies.
61
+ - No comments that just restate the code. A comment is welcome only when it
62
+ captures a non-obvious *why*.
63
+
64
+ ## Tests
65
+
66
+ - Add or update tests in `tests/` for any behavior change.
67
+ - Keep tests focused and deterministic; avoid sleeps where possible.
68
+ - If you fix a bug, add a regression test that fails before the fix.
69
+
70
+ ## Commit messages
71
+
72
+ This project follows [Conventional Commits](https://www.conventionalcommits.org/),
73
+ enforced by [commitizen](https://commitizen-tools.github.io/commitizen/). Use
74
+ `uv run cz commit` to be prompted through an interactive commit, or write the
75
+ message by hand:
76
+
77
+ ```
78
+ <type>(<scope>): <short description>
79
+
80
+ <optional body>
81
+
82
+ <optional footer>
83
+ ```
84
+
85
+ Common types: `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`,
86
+ `build`, `ci`.
87
+
88
+ ## Submitting a pull request
89
+
90
+ 1. Create a feature branch: `git checkout -b feat/my-change`.
91
+ 2. Make your changes, add tests, and confirm all checks pass.
92
+ 3. Push the branch to your fork (or directly, if you're a maintainer) and open
93
+ a PR against `main` on the upstream repository.
94
+ 4. Fill in a clear description of the *what* and the *why*.
95
+ 5. Make sure CI is green and the changelog preview looks reasonable for
96
+ user-visible changes.
97
+ 6. Be ready to revise — code review is a normal part of the process.
98
+
99
+ Prefer several small, focused PRs over one large one.
100
+
101
+ ## Documentation
102
+
103
+ User-facing changes should be reflected in the docs under `docs/`. To preview
104
+ locally:
105
+
106
+ ```bash
107
+ uv run mkdocs serve
108
+ ```
109
+
110
+ ## Versioning and releases
111
+
112
+ Versions are derived from git tags via `hatch-vcs` (`v$version`, e.g. `v2.0.1`).
113
+ Do not edit the version in `pyproject.toml` manually. To cut a release, the
114
+ maintainer runs:
115
+
116
+ ```bash
117
+ uv run cz bump
118
+ ```
119
+
120
+ This updates the version, regenerates the changelog, creates a tag, and
121
+ triggers the `publish.yml` workflow to push the release to PyPI.
122
+
123
+ ## Reporting issues
124
+
125
+ Use the GitHub issue tracker. Please include:
126
+
127
+ - A minimal, self-contained reproduction.
128
+ - The Python version, library version, and operating system.
129
+ - The full traceback for crashes, and the smallest possible task graph that
130
+ triggers the problem.
131
+
132
+ ## License
133
+
134
+ By contributing, you agree that your contributions will be licensed under the
135
+ MIT License.