taskmaestro 0.1.0__tar.gz → 0.3.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 (75) hide show
  1. taskmaestro-0.3.0/.github/workflows/ci.yml +49 -0
  2. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/.github/workflows/publish.yml +11 -1
  3. taskmaestro-0.3.0/PKG-INFO +771 -0
  4. taskmaestro-0.3.0/README.md +740 -0
  5. taskmaestro-0.3.0/docs/agent-quickstart.md +102 -0
  6. taskmaestro-0.3.0/examples/agent_quickstart/input.yaml +2 -0
  7. taskmaestro-0.3.0/examples/agent_quickstart/tasks.py +19 -0
  8. taskmaestro-0.3.0/examples/agent_quickstart/workflow.yaml +9 -0
  9. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/image_processing/input.yaml +3 -1
  10. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/image_processing/pipeline.py +22 -12
  11. taskmaestro-0.3.0/examples/release_pipeline/input.yaml +27 -0
  12. taskmaestro-0.3.0/examples/release_pipeline/pipeline.py +379 -0
  13. taskmaestro-0.3.0/examples/release_pipeline/workflow.yaml +44 -0
  14. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/resinsight/pipeline.py +13 -4
  15. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/text_analysis/pipeline.py +8 -1
  16. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/text_analysis/workflow.yaml +0 -1
  17. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/pyproject.toml +7 -3
  18. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/__init__.py +34 -2
  19. taskmaestro-0.3.0/taskmaestro/__main__.py +8 -0
  20. taskmaestro-0.3.0/taskmaestro/cli.py +484 -0
  21. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/context.py +20 -0
  22. taskmaestro-0.3.0/taskmaestro/dependencies.py +131 -0
  23. taskmaestro-0.3.0/taskmaestro/discovery.py +96 -0
  24. taskmaestro-0.3.0/taskmaestro/exceptions.py +82 -0
  25. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/hooks/base.py +23 -0
  26. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/hooks/logging.py +13 -0
  27. taskmaestro-0.3.0/taskmaestro/hooks/persistence.py +44 -0
  28. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/hooks/timing.py +20 -0
  29. taskmaestro-0.3.0/taskmaestro/job.py +185 -0
  30. taskmaestro-0.3.0/taskmaestro/mapping.py +37 -0
  31. taskmaestro-0.3.0/taskmaestro/runner.py +550 -0
  32. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/visualization.py +84 -23
  33. taskmaestro-0.3.0/taskmaestro/workflow.py +948 -0
  34. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/workflow_task.py +20 -19
  35. taskmaestro-0.3.0/taskmaestro/yaml_config.py +626 -0
  36. taskmaestro-0.3.0/tests/test_agent_quickstart.py +39 -0
  37. taskmaestro-0.3.0/tests/test_cli.py +837 -0
  38. taskmaestro-0.3.0/tests/test_collections.py +593 -0
  39. taskmaestro-0.3.0/tests/test_discovery.py +148 -0
  40. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_exceptions.py +12 -0
  41. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_hooks.py +74 -0
  42. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_job.py +47 -0
  43. taskmaestro-0.3.0/tests/test_mapping.py +914 -0
  44. taskmaestro-0.3.0/tests/test_runner.py +963 -0
  45. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_visualization.py +52 -3
  46. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_workflow.py +417 -0
  47. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_workflow_task.py +82 -0
  48. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_yaml_config.py +735 -48
  49. taskmaestro-0.1.0/.github/workflows/ci.yml +0 -40
  50. taskmaestro-0.1.0/PKG-INFO +0 -358
  51. taskmaestro-0.1.0/README.md +0 -328
  52. taskmaestro-0.1.0/taskmaestro/exceptions.py +0 -37
  53. taskmaestro-0.1.0/taskmaestro/hooks/persistence.py +0 -24
  54. taskmaestro-0.1.0/taskmaestro/job.py +0 -116
  55. taskmaestro-0.1.0/taskmaestro/runner.py +0 -201
  56. taskmaestro-0.1.0/taskmaestro/workflow.py +0 -484
  57. taskmaestro-0.1.0/taskmaestro/yaml_config.py +0 -455
  58. taskmaestro-0.1.0/tests/test_runner.py +0 -432
  59. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/.gitignore +0 -0
  60. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/LICENSE +0 -0
  61. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/image_processing/inner_workflow.yaml +0 -0
  62. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/image_processing/workflow.yaml +0 -0
  63. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/resinsight/input.yaml +0 -0
  64. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/resinsight/workflow.yaml +0 -0
  65. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/examples/text_analysis/input.yaml +0 -0
  66. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/hooks/__init__.py +0 -0
  67. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/object_model.py +0 -0
  68. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/py.typed +0 -0
  69. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro/task.py +0 -0
  70. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/taskmaestro.png +0 -0
  71. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/__init__.py +0 -0
  72. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/conftest.py +0 -0
  73. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_context.py +0 -0
  74. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_object_model.py +0 -0
  75. {taskmaestro-0.1.0 → taskmaestro-0.3.0}/tests/test_task.py +0 -0
@@ -0,0 +1,49 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ # Least privilege: the CI job only reads the repository.
9
+ permissions:
10
+ contents: read
11
+
12
+ # Cancel superseded runs for the same ref (e.g. force-pushes to a PR).
13
+ concurrency:
14
+ group: ci-${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ ci:
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 15
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ python-version: ["3.12", "3.13", "3.14"]
25
+
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+
29
+ - name: Set up Python ${{ matrix.python-version }}
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: ${{ matrix.python-version }}
33
+ cache: pip
34
+ cache-dependency-path: pyproject.toml
35
+
36
+ - name: Install dependencies
37
+ run: pip install -e ".[dev]"
38
+
39
+ - name: Ruff check
40
+ run: ruff check taskmaestro/ tests/ examples/
41
+
42
+ - name: Ruff format check
43
+ run: ruff format --check taskmaestro/ tests/ examples/
44
+
45
+ - name: Mypy type check
46
+ run: mypy taskmaestro
47
+
48
+ - name: Run tests with coverage
49
+ run: pytest --cov=taskmaestro --cov-report=term-missing --cov-fail-under=100
@@ -4,10 +4,15 @@ on:
4
4
  push:
5
5
  tags: ["v*"]
6
6
 
7
+ # Default to read-only; the publish job opts into id-token below.
8
+ permissions:
9
+ contents: read
10
+
7
11
  jobs:
8
12
  build:
9
13
  name: Build distributions
10
14
  runs-on: ubuntu-latest
15
+ timeout-minutes: 10
11
16
  steps:
12
17
  - uses: actions/checkout@v4
13
18
 
@@ -15,6 +20,8 @@ jobs:
15
20
  uses: actions/setup-python@v5
16
21
  with:
17
22
  python-version: "3.12"
23
+ cache: pip
24
+ cache-dependency-path: pyproject.toml
18
25
 
19
26
  - name: Install build
20
27
  run: pip install build
@@ -32,6 +39,7 @@ jobs:
32
39
  name: Publish to PyPI
33
40
  needs: build
34
41
  runs-on: ubuntu-latest
42
+ timeout-minutes: 10
35
43
  environment: pypi
36
44
  permissions:
37
45
  id-token: write
@@ -43,4 +51,6 @@ jobs:
43
51
  path: dist/
44
52
 
45
53
  - name: Publish via trusted publishing
46
- uses: pypa/gh-action-pypi-publish@release/v1
54
+ # Third-party action pinned to a full commit SHA (tag v1.14.2); the
55
+ # `release/v1` branch is mutable and could be repointed.
56
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2