tasktree 0.0.7__tar.gz → 0.0.8__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 (71) hide show
  1. tasktree-0.0.8/.claude/settings.local.json +20 -0
  2. tasktree-0.0.8/.github/workflows/claude-code-review.yml +57 -0
  3. tasktree-0.0.8/.github/workflows/claude.yml +50 -0
  4. {tasktree-0.0.7 → tasktree-0.0.8}/.github/workflows/test.yml +16 -2
  5. tasktree-0.0.8/PKG-INFO +1149 -0
  6. tasktree-0.0.8/README.md +1134 -0
  7. {tasktree-0.0.7 → tasktree-0.0.8}/pyproject.toml +1 -1
  8. tasktree-0.0.8/requirements/04-file-read-variables.md +240 -0
  9. tasktree-0.0.8/requirements/implemented/01-basic-variables.md +142 -0
  10. tasktree-0.0.8/requirements/implemented/02-env-variable-type.md +174 -0
  11. tasktree-0.0.8/requirements/implemented/03-direct-env-substitution.md +180 -0
  12. {tasktree-0.0.7 → tasktree-0.0.8}/schema/README.md +2 -2
  13. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/cli.py +24 -16
  14. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/docker.py +25 -0
  15. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/executor.py +261 -22
  16. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/hasher.py +36 -2
  17. tasktree-0.0.8/src/tasktree/parser.py +1541 -0
  18. tasktree-0.0.8/src/tasktree/substitution.py +195 -0
  19. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/types.py +11 -2
  20. tasktree-0.0.8/tests/e2e/__init__.py +79 -0
  21. tasktree-0.0.8/tests/e2e/test_docker_basic.py +172 -0
  22. tasktree-0.0.8/tests/e2e/test_docker_environment.py +171 -0
  23. tasktree-0.0.8/tests/e2e/test_docker_ownership.py +141 -0
  24. tasktree-0.0.8/tests/e2e/test_docker_volumes.py +222 -0
  25. tasktree-0.0.8/tests/integration/test_arg_choices.py +312 -0
  26. tasktree-0.0.8/tests/integration/test_arg_min_max.py +392 -0
  27. tasktree-0.0.8/tests/integration/test_builtin_variables.py +268 -0
  28. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_end_to_end.py +1 -1
  29. tasktree-0.0.8/tests/integration/test_exported_args.py +359 -0
  30. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_missing_outputs.py +2 -2
  31. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_state_persistence.py +2 -2
  32. tasktree-0.0.8/tests/integration/test_variables.py +698 -0
  33. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_docker.py +144 -0
  34. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_environment_tracking.py +2 -0
  35. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_executor.py +188 -42
  36. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_graph.py +14 -13
  37. tasktree-0.0.8/tests/unit/test_parser.py +2836 -0
  38. tasktree-0.0.8/tests/unit/test_substitution.py +518 -0
  39. tasktree-0.0.7/PKG-INFO +0 -654
  40. tasktree-0.0.7/README.md +0 -639
  41. tasktree-0.0.7/src/tasktree/parser.py +0 -540
  42. tasktree-0.0.7/tests/unit/test_parser.py +0 -1205
  43. {tasktree-0.0.7 → tasktree-0.0.8}/.github/workflows/release.yml +0 -0
  44. {tasktree-0.0.7 → tasktree-0.0.8}/.gitignore +0 -0
  45. {tasktree-0.0.7 → tasktree-0.0.8}/.python-version +0 -0
  46. {tasktree-0.0.7 → tasktree-0.0.8}/CLAUDE.md +0 -0
  47. {tasktree-0.0.7 → tasktree-0.0.8}/example/source.txt +0 -0
  48. {tasktree-0.0.7 → tasktree-0.0.8}/example/tasktree.yaml +0 -0
  49. {tasktree-0.0.7 → tasktree-0.0.8}/requirements/future/docker-task-environments.md +0 -0
  50. {tasktree-0.0.7/requirements → tasktree-0.0.8/requirements/implemented}/bug-report-dependency-triggering.md +0 -0
  51. {tasktree-0.0.7 → tasktree-0.0.8}/requirements/implemented/shell-environment-requirements.md +0 -0
  52. {tasktree-0.0.7 → tasktree-0.0.8}/schema/tasktree-schema.json +0 -0
  53. {tasktree-0.0.7 → tasktree-0.0.8}/schema/vscode-settings-snippet.json +0 -0
  54. {tasktree-0.0.7 → tasktree-0.0.8}/src/__init__.py +0 -0
  55. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/__init__.py +0 -0
  56. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/graph.py +0 -0
  57. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/state.py +0 -0
  58. {tasktree-0.0.7 → tasktree-0.0.8}/src/tasktree/tasks.py +0 -0
  59. {tasktree-0.0.7 → tasktree-0.0.8}/tasktree.yaml +0 -0
  60. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_clean_state.py +0 -0
  61. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_cli_options.py +0 -0
  62. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_dependency_execution.py +0 -0
  63. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_input_detection.py +0 -0
  64. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_nested_imports.py +0 -0
  65. {tasktree-0.0.7 → tasktree-0.0.8}/tests/integration/test_working_directory.py +0 -0
  66. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_cli.py +0 -0
  67. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_hasher.py +0 -0
  68. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_state.py +0 -0
  69. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_tasks.py +0 -0
  70. {tasktree-0.0.7 → tasktree-0.0.8}/tests/unit/test_types.py +0 -0
  71. {tasktree-0.0.7 → tasktree-0.0.8}/uv.lock +0 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python -m pytest:*)",
5
+ "Bash(python3 -m pytest:*)",
6
+ "Bash(uv run pytest:*)",
7
+ "Bash(uv run python:*)",
8
+ "Bash(uv pip install:*)",
9
+ "Bash(grep:*)",
10
+ "Bash(python3:*)",
11
+ "Bash(docker --version:*)",
12
+ "Bash(python -m tasktree:*)",
13
+ "Bash(python -m tasktree.cli:*)",
14
+ "Bash(ls:*)",
15
+ "Bash(cat:*)",
16
+ "Bash(tt --help:*)",
17
+ "Bash(head:*)"
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1,57 @@
1
+ name: Claude Code Review
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize]
6
+ # Optional: Only run on specific file changes
7
+ # paths:
8
+ # - "src/**/*.ts"
9
+ # - "src/**/*.tsx"
10
+ # - "src/**/*.js"
11
+ # - "src/**/*.jsx"
12
+
13
+ jobs:
14
+ claude-review:
15
+ # Optional: Filter by PR author
16
+ # if: |
17
+ # github.event.pull_request.user.login == 'external-contributor' ||
18
+ # github.event.pull_request.user.login == 'new-developer' ||
19
+ # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
20
+
21
+ runs-on: ubuntu-latest
22
+ permissions:
23
+ contents: read
24
+ pull-requests: read
25
+ issues: read
26
+ id-token: write
27
+
28
+ steps:
29
+ - name: Checkout repository
30
+ uses: actions/checkout@v4
31
+ with:
32
+ fetch-depth: 1
33
+
34
+ - name: Run Claude Code Review
35
+ id: claude-review
36
+ uses: anthropics/claude-code-action@v1
37
+ with:
38
+ claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
39
+ prompt: |
40
+ REPO: ${{ github.repository }}
41
+ PR NUMBER: ${{ github.event.pull_request.number }}
42
+
43
+ Please review this pull request and provide feedback on:
44
+ - Code quality and best practices
45
+ - Potential bugs or issues
46
+ - Performance considerations
47
+ - Security concerns
48
+ - Test coverage
49
+
50
+ Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback.
51
+
52
+ Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR.
53
+
54
+ # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
55
+ # or https://code.claude.com/docs/en/cli-reference for available options
56
+ claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"'
57
+
@@ -0,0 +1,50 @@
1
+ name: Claude Code
2
+
3
+ on:
4
+ issue_comment:
5
+ types: [created]
6
+ pull_request_review_comment:
7
+ types: [created]
8
+ issues:
9
+ types: [opened, assigned]
10
+ pull_request_review:
11
+ types: [submitted]
12
+
13
+ jobs:
14
+ claude:
15
+ if: |
16
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
17
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
18
+ (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
19
+ (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
20
+ runs-on: ubuntu-latest
21
+ permissions:
22
+ contents: read
23
+ pull-requests: read
24
+ issues: read
25
+ id-token: write
26
+ actions: read # Required for Claude to read CI results on PRs
27
+ steps:
28
+ - name: Checkout repository
29
+ uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 1
32
+
33
+ - name: Run Claude Code
34
+ id: claude
35
+ uses: anthropics/claude-code-action@v1
36
+ with:
37
+ claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38
+
39
+ # This is an optional setting that allows Claude to read CI results on PRs
40
+ additional_permissions: |
41
+ actions: read
42
+
43
+ # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
44
+ # prompt: 'Update the pull request description to include a summary of changes.'
45
+
46
+ # Optional: Add claude_args to customize behavior and configuration
47
+ # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
48
+ # or https://code.claude.com/docs/en/cli-reference for available options
49
+ # claude_args: '--allowed-tools Bash(gh pr:*)'
50
+
@@ -30,9 +30,23 @@ jobs:
30
30
  run: |
31
31
  uv pip install --system -e ".[dev]"
32
32
 
33
- - name: Run tests
33
+ - name: Pre-pull Docker images for E2E tests
34
+ if: runner.os == 'Linux'
34
35
  run: |
35
- python -m pytest tests/ -v --tb=short
36
+ docker pull alpine:latest
37
+
38
+ - name: Run unit tests
39
+ run: |
40
+ python -m pytest tests/unit/ -v --tb=short
41
+
42
+ - name: Run integration tests
43
+ run: |
44
+ python -m pytest tests/integration/ -v --tb=short
45
+
46
+ - name: Run E2E Docker tests
47
+ if: runner.os == 'Linux'
48
+ run: |
49
+ python -m pytest tests/e2e/ -v --tb=short
36
50
 
37
51
  - name: Test CLI commands
38
52
  run: |