whatnext 3.0__tar.gz → 3.2__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 (121) hide show
  1. {whatnext-3.0 → whatnext-3.2}/.github/workflows/tests.yml +1 -1
  2. {whatnext-3.0 → whatnext-3.2}/CHANGELOG.md +19 -0
  3. {whatnext-3.0 → whatnext-3.2}/PKG-INFO +6 -5
  4. {whatnext-3.0 → whatnext-3.2}/README.md +4 -4
  5. {whatnext-3.0 → whatnext-3.2}/docs/usage.md +109 -26
  6. {whatnext-3.0 → whatnext-3.2}/pyproject.toml +1 -0
  7. {whatnext-3.0 → whatnext-3.2}/tasks/deferring.md +6 -0
  8. whatnext-3.2/tasks/ignoring.md +3 -0
  9. whatnext-3.2/tasks/summaries.md +3 -0
  10. {whatnext-3.0 → whatnext-3.2}/tests/deferring.bats +87 -0
  11. {whatnext-3.0 → whatnext-3.2}/tests/list.bats +3 -0
  12. {whatnext-3.0 → whatnext-3.2}/tests/matching.bats +78 -0
  13. {whatnext-3.0 → whatnext-3.2}/tests/summary.bats +13 -13
  14. {whatnext-3.0 → whatnext-3.2}/tests/usage.bats +9 -3
  15. {whatnext-3.0 → whatnext-3.2}/whatnext/models.py +0 -12
  16. {whatnext-3.0 → whatnext-3.2}/whatnext/summary.py +6 -1
  17. {whatnext-3.0 → whatnext-3.2}/whatnext/whatnext.py +41 -8
  18. {whatnext-3.0 → whatnext-3.2}/.flake8 +0 -0
  19. {whatnext-3.0 → whatnext-3.2}/.github/dependabot.yml +0 -0
  20. {whatnext-3.0 → whatnext-3.2}/.github/workflows/publish.yml +0 -0
  21. {whatnext-3.0 → whatnext-3.2}/.gitignore +0 -0
  22. {whatnext-3.0 → whatnext-3.2}/.whatnext +0 -0
  23. {whatnext-3.0 → whatnext-3.2}/LICENCE +0 -0
  24. {whatnext-3.0 → whatnext-3.2}/LICENSE +0 -0
  25. {whatnext-3.0 → whatnext-3.2}/Makefile +0 -0
  26. {whatnext-3.0 → whatnext-3.2}/archive/done/tasks.md +0 -0
  27. {whatnext-3.0 → whatnext-3.2}/docs/annotations.md +0 -0
  28. {whatnext-3.0 → whatnext-3.2}/docs/basics.md +0 -0
  29. {whatnext-3.0 → whatnext-3.2}/docs/deadlines.md +0 -0
  30. {whatnext-3.0 → whatnext-3.2}/docs/deferring.md +0 -0
  31. {whatnext-3.0 → whatnext-3.2}/docs/exclusions.md +0 -0
  32. {whatnext-3.0 → whatnext-3.2}/docs/index.md +0 -0
  33. {whatnext-3.0 → whatnext-3.2}/docs/installation.md +0 -0
  34. {whatnext-3.0 → whatnext-3.2}/docs/next.md +0 -0
  35. {whatnext-3.0 → whatnext-3.2}/docs/prioritisation.md +0 -0
  36. {whatnext-3.0 → whatnext-3.2}/docs/sequential.md +0 -0
  37. {whatnext-3.0 → whatnext-3.2}/example/archived/projects/tangerine.md +0 -0
  38. {whatnext-3.0 → whatnext-3.2}/example/projects/curtain.md +0 -0
  39. {whatnext-3.0 → whatnext-3.2}/example/projects/fountain.md +0 -0
  40. {whatnext-3.0 → whatnext-3.2}/example/projects/harvest.md +0 -0
  41. {whatnext-3.0 → whatnext-3.2}/example/projects/obelisk.md +0 -0
  42. {whatnext-3.0 → whatnext-3.2}/example/projects/tinsel.md +0 -0
  43. {whatnext-3.0 → whatnext-3.2}/example/tasks.md +0 -0
  44. {whatnext-3.0 → whatnext-3.2}/example/template.md +0 -0
  45. {whatnext-3.0 → whatnext-3.2}/scripts/update-usage-examples.py +0 -0
  46. {whatnext-3.0 → whatnext-3.2}/tasks/documentation.md +0 -0
  47. {whatnext-3.0 → whatnext-3.2}/tasks/listing.md +0 -0
  48. {whatnext-3.0 → whatnext-3.2}/tasks/next.md +0 -0
  49. {whatnext-3.0 → whatnext-3.2}/tasks/test_refactor.md +0 -0
  50. {whatnext-3.0 → whatnext-3.2}/tasks/version_0.1.md +0 -0
  51. {whatnext-3.0 → whatnext-3.2}/tasks/version_0.2.md +0 -0
  52. {whatnext-3.0 → whatnext-3.2}/tasks/version_0.3.md +0 -0
  53. {whatnext-3.0 → whatnext-3.2}/tasks/version_0.4.md +0 -0
  54. {whatnext-3.0 → whatnext-3.2}/tasks/version_0.5.md +0 -0
  55. {whatnext-3.0 → whatnext-3.2}/tasks/version_1.0.md +0 -0
  56. {whatnext-3.0 → whatnext-3.2}/tasks/version_1.1.md +0 -0
  57. {whatnext-3.0 → whatnext-3.2}/tasks/version_1.2.md +0 -0
  58. {whatnext-3.0 → whatnext-3.2}/tasks/version_1.3.md +0 -0
  59. {whatnext-3.0 → whatnext-3.2}/tasks.md +0 -0
  60. {whatnext-3.0 → whatnext-3.2}/tests/colour.bats +0 -0
  61. {whatnext-3.0 → whatnext-3.2}/tests/config/.whatnext +0 -0
  62. {whatnext-3.0 → whatnext-3.2}/tests/config/.whatnext.alt +0 -0
  63. {whatnext-3.0 → whatnext-3.2}/tests/config/apples.md +0 -0
  64. {whatnext-3.0 → whatnext-3.2}/tests/config/oranges.md +0 -0
  65. {whatnext-3.0 → whatnext-3.2}/tests/config-external +0 -0
  66. {whatnext-3.0 → whatnext-3.2}/tests/config.bats +0 -0
  67. {whatnext-3.0 → whatnext-3.2}/tests/deadline.bats +0 -0
  68. {whatnext-3.0 → whatnext-3.2}/tests/deferring/bare-after.md +0 -0
  69. {whatnext-3.0 → whatnext-3.2}/tests/deferring/circular-a.md +0 -0
  70. {whatnext-3.0 → whatnext-3.2}/tests/deferring/circular-b.md +0 -0
  71. {whatnext-3.0 → whatnext-3.2}/tests/deferring/deferred.md +0 -0
  72. {whatnext-3.0 → whatnext-3.2}/tests/deferring/duplicate-warnings.md +0 -0
  73. {whatnext-3.0 → whatnext-3.2}/tests/deferring/missing-dep.md +0 -0
  74. {whatnext-3.0 → whatnext-3.2}/tests/deferring/needs-absolute.md +0 -0
  75. {whatnext-3.0 → whatnext-3.2}/tests/deferring/needs-subdir.md +0 -0
  76. {whatnext-3.0 → whatnext-3.2}/tests/deferring/phase-misplaced.md +0 -0
  77. {whatnext-3.0 → whatnext-3.2}/tests/deferring/phases-empty.md +0 -0
  78. {whatnext-3.0 → whatnext-3.2}/tests/deferring/phases-partial.md +0 -0
  79. {whatnext-3.0 → whatnext-3.2}/tests/deferring/phases-queue.md +0 -0
  80. {whatnext-3.0 → whatnext-3.2}/tests/deferring/phases.md +0 -0
  81. {whatnext-3.0 → whatnext-3.2}/tests/deferring/regular.md +0 -0
  82. {whatnext-3.0 → whatnext-3.2}/tests/deferring/root-target.md +0 -0
  83. {whatnext-3.0 → whatnext-3.2}/tests/deferring/samename.md +0 -0
  84. {whatnext-3.0 → whatnext-3.2}/tests/deferring/subdir/needs-parent.md +0 -0
  85. {whatnext-3.0 → whatnext-3.2}/tests/deferring/subdir/needs-sibling.md +0 -0
  86. {whatnext-3.0 → whatnext-3.2}/tests/deferring/subdir/samename.md +0 -0
  87. {whatnext-3.0 → whatnext-3.2}/tests/deferring/subdir/target.md +0 -0
  88. {whatnext-3.0 → whatnext-3.2}/tests/edit.bats +0 -0
  89. {whatnext-3.0 → whatnext-3.2}/tests/headerless/annotation.md +0 -0
  90. {whatnext-3.0 → whatnext-3.2}/tests/headerless/deadline.md +0 -0
  91. {whatnext-3.0 → whatnext-3.2}/tests/housekeeping.bats +0 -0
  92. {whatnext-3.0 → whatnext-3.2}/tests/invalid.md +0 -0
  93. {whatnext-3.0 → whatnext-3.2}/tests/next/alternate.md +0 -0
  94. {whatnext-3.0 → whatnext-3.2}/tests/next/append-after.md +0 -0
  95. {whatnext-3.0 → whatnext-3.2}/tests/next/append.md +0 -0
  96. {whatnext-3.0 → whatnext-3.2}/tests/next/empty.md +0 -0
  97. {whatnext-3.0 → whatnext-3.2}/tests/next/insert.md +0 -0
  98. {whatnext-3.0 → whatnext-3.2}/tests/next/projects/alpha/tasks/things.md +0 -0
  99. {whatnext-3.0 → whatnext-3.2}/tests/next/projects/alpha/tasks.md +0 -0
  100. {whatnext-3.0 → whatnext-3.2}/tests/next/projects/beta/things.md +0 -0
  101. {whatnext-3.0 → whatnext-3.2}/tests/next/something.txt +0 -0
  102. {whatnext-3.0 → whatnext-3.2}/tests/next/tasks.md +0 -0
  103. {whatnext-3.0 → whatnext-3.2}/tests/next.bats +0 -0
  104. {whatnext-3.0 → whatnext-3.2}/tests/notnext.bats +0 -0
  105. {whatnext-3.0 → whatnext-3.2}/tests/queue/all-complete.md +0 -0
  106. {whatnext-3.0 → whatnext-3.2}/tests/queue/blocked.md +0 -0
  107. {whatnext-3.0 → whatnext-3.2}/tests/queue/in-progress.md +0 -0
  108. {whatnext-3.0 → whatnext-3.2}/tests/queue/normal.md +0 -0
  109. {whatnext-3.0 → whatnext-3.2}/tests/queue/prioritised.md +0 -0
  110. {whatnext-3.0 → whatnext-3.2}/tests/queue.bats +0 -0
  111. {whatnext-3.0 → whatnext-3.2}/tests/test_defer.py +0 -0
  112. {whatnext-3.0 → whatnext-3.2}/tests/test_edit.py +0 -0
  113. {whatnext-3.0 → whatnext-3.2}/tests/test_file.py +0 -0
  114. {whatnext-3.0 → whatnext-3.2}/tests/test_limit.py +0 -0
  115. {whatnext-3.0 → whatnext-3.2}/tests/test_output.py +0 -0
  116. {whatnext-3.0 → whatnext-3.2}/tests/test_summary.py +0 -0
  117. {whatnext-3.0 → whatnext-3.2}/tests/test_task.py +0 -0
  118. {whatnext-3.0 → whatnext-3.2}/tests/version.bats +0 -0
  119. {whatnext-3.0 → whatnext-3.2}/whatnext/__init__.py +0 -0
  120. {whatnext-3.0 → whatnext-3.2}/whatnext/guide.txt +0 -0
  121. {whatnext-3.0 → whatnext-3.2}/whatnext/next.py +0 -0
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- python-version: ['3.10', '3.11', '3.12']
14
+ python-version: ['3.10', '3.11', '3.12', '3.13']
15
15
 
16
16
  steps:
17
17
  - uses: actions/checkout@v6
@@ -1,6 +1,25 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [v3.2] - 2026-04-09
5
+
6
+ **Added:**
7
+ - Summary view now shows a progress bar on the totals line.
8
+ - `--ignore-queue` flag to ignore `@queue` constraints.
9
+ - `--ignore-phase` flag to ignore `@phase` constraints.
10
+ - `--ignore-all` flag to ignore all deferral constraints.
11
+
12
+ **Fixes:**
13
+ - Directories are now properly ignored without requiring wildcards,
14
+ (`example/` and `example` both now work, `example/**` continues to work).
15
+
16
+
17
+ ## [v3.1] - 2026-03-14
18
+
19
+ **Fixes:**
20
+ - `@after` ignoring dependencies not explicitly in search terms.
21
+
22
+
4
23
  ## [v3.0] - 2026-02-14
5
24
 
6
25
  **Breaking change:** `@after` filenames are now resolved relative to the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: whatnext
3
- Version: 3.0
3
+ Version: 3.2
4
4
  Summary: A lister of tasks found in Markdown files
5
5
  Project-URL: Homepage, https://github.com/norm/whatnext
6
6
  Project-URL: Repository, https://github.com/norm/whatnext
@@ -14,6 +14,7 @@ Classifier: Development Status :: 3 - Alpha
14
14
  Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
17
18
  Requires-Python: >=3.10
18
19
  Requires-Dist: termcolor
19
20
  Requires-Dist: toml
@@ -62,15 +63,15 @@ Now run it and it'll tell you what's next, sorting by priority and state:
62
63
  ```bash
63
64
  (computer)% whatnext
64
65
  README.md:
65
- # What next? / HIGH
66
- - [ ] a lot more important
66
+ # Make apple pie from scratch / HIGH
67
+ - [ ] invent the universe
67
68
 
68
69
  README.md:
69
70
  # What next? / MEDIUM
70
- - [ ] a little more important
71
+ - [ ] an important task
71
72
 
72
73
  README.md:
73
- # What next? / IMMINENT 6d
74
+ # Things for later / IMMINENT 6d
74
75
  - [ ] get NYE fireworks tickets
75
76
 
76
77
  README.md:
@@ -38,15 +38,15 @@ Now run it and it'll tell you what's next, sorting by priority and state:
38
38
  ```bash
39
39
  (computer)% whatnext
40
40
  README.md:
41
- # What next? / HIGH
42
- - [ ] a lot more important
41
+ # Make apple pie from scratch / HIGH
42
+ - [ ] invent the universe
43
43
 
44
44
  README.md:
45
45
  # What next? / MEDIUM
46
- - [ ] a little more important
46
+ - [ ] an important task
47
47
 
48
48
  README.md:
49
- # What next? / IMMINENT 6d
49
+ # Things for later / IMMINENT 6d
50
50
  - [ ] get NYE fireworks tickets
51
51
 
52
52
  README.md:
@@ -15,23 +15,52 @@ projects/obelisk.md:
15
15
  # Project Obelisk / Discovery / OVERDUE 31y 2m
16
16
  Mess with Jackson
17
17
  - [<] watch archaeologists discover (needs time machine)
18
-
18
+ projects/tinsel.md:
19
+ # Project Tinsel / OVERDUE 2w 6d
20
+ - [ ] send Christmas cards
21
+ # Project Tinsel / Christmas dinner / OVERDUE 2d
22
+ - [ ] book Christmas delivery
23
+
24
+ projects/harvest.md:
25
+ # Project Harvest / HIGH
26
+ - [ ] order squash seeds
27
+ # Project Harvest / Spring planting / HIGH
28
+ - [ ] sow tomato seeds indoors
29
+ - [ ] direct sow carrots
19
30
  projects/obelisk.md:
20
31
  # Project Obelisk / HIGH
21
32
  Something something star gate
22
33
  - [ ] bury obelisk in desert
34
+ projects/tinsel.md:
35
+ # Project Tinsel / Christmas dinner / HIGH
36
+ - [ ] roast the potatoes
23
37
 
24
38
  tasks.md:
25
39
  # Get S Done / MEDIUM
26
40
  - [ ] question entire existence
41
+ projects/harvest.md:
42
+ # Project Harvest / MEDIUM
43
+ - [ ] buy copper tape for slugs
44
+ projects/tinsel.md:
45
+ # Project Tinsel / Christmas dinner / MEDIUM
46
+ - [ ] prep the make-ahead gravy
27
47
 
28
48
  tasks.md:
29
49
  # Get S Done / IMMINENT 11d
30
50
  - [ ] start third project
51
+ projects/tinsel.md:
52
+ # Project Tinsel / Christmas dinner / IMMINENT TODAY
53
+ - [ ] prep sprouts
31
54
 
32
55
  projects/curtain.md:
33
56
  # Project Curtain / Final bow
34
57
  - [ ] Take a bow
58
+ projects/fountain.md:
59
+ - [ ] nigredo, the blackening or melanosis
60
+ projects/harvest.md:
61
+ # Project Harvest
62
+ - [/] turn compost heap
63
+ - [ ] plan raised bed layout
35
64
  projects/obelisk.md:
36
65
  # Project Obelisk
37
66
  Something something star gate
@@ -91,11 +120,9 @@ projects/obelisk.md:
91
120
  # Project Obelisk / Discovery / OVERDUE 31y 2m
92
121
  Mess with Jackson
93
122
  - [<] watch archaeologists discover (needs time machine)
94
-
95
- projects/obelisk.md:
96
- # Project Obelisk / HIGH
97
- Something something star gate
98
- - [ ] bury obelisk in desert
123
+ projects/tinsel.md:
124
+ # Project Tinsel / OVERDUE 2w 6d
125
+ - [ ] send Christmas cards
99
126
  ```
100
127
 
101
128
  Tasks are shown in priority order, so the limit returns the most urgent first.
@@ -120,19 +147,42 @@ To show a random selection of tasks rather than by priority, use `5r`.
120
147
  # Project Obelisk / Discovery / OVERDUE 31y 2m
121
148
  Mess with Jackson
122
149
  - [<] watch archaeologists discover (needs time machine)
123
-
150
+ projects/tinsel.md:
151
+ # Project Tinsel / OVERDUE 2w 6d
152
+ - [ ] send Christmas cards
153
+ # Project Tinsel / Christmas dinner / OVERDUE 2d
154
+ - [ ] book Christmas delivery
155
+
156
+ projects/harvest.md:
157
+ # Project Harvest / HIGH
158
+ - [ ] order squash seeds
159
+ # Project Harvest / Spring planting / HIGH
160
+ - [ ] sow tomato seeds indoors
161
+ - [ ] direct sow carrots
124
162
  projects/obelisk.md:
125
163
  # Project Obelisk / HIGH
126
164
  Something something star gate
127
165
  - [ ] bury obelisk in desert
166
+ projects/tinsel.md:
167
+ # Project Tinsel / Christmas dinner / HIGH
168
+ - [ ] roast the potatoes
128
169
 
129
170
  tasks.md:
130
171
  # Get S Done / MEDIUM
131
172
  - [ ] question entire existence
173
+ projects/harvest.md:
174
+ # Project Harvest / MEDIUM
175
+ - [ ] buy copper tape for slugs
176
+ projects/tinsel.md:
177
+ # Project Tinsel / Christmas dinner / MEDIUM
178
+ - [ ] prep the make-ahead gravy
132
179
 
133
180
  tasks.md:
134
181
  # Get S Done / IMMINENT 11d
135
182
  - [ ] start third project
183
+ projects/tinsel.md:
184
+ # Project Tinsel / Christmas dinner / IMMINENT TODAY
185
+ - [ ] prep sprouts
136
186
 
137
187
  projects/curtain.md:
138
188
  # Project Curtain / Final bow
@@ -142,12 +192,30 @@ To show a random selection of tasks rather than by priority, use `5r`.
142
192
  # Project Curtain / Close the theatre
143
193
  - [ ] Escort everyone out
144
194
  - [ ] Shut up shop
195
+ projects/fountain.md:
196
+ - [ ] nigredo, the blackening or melanosis
197
+ - [ ] albedo, the whitening or leucosis
198
+ - [ ] citrinitas, the yellowing or xanthosis
199
+ - [ ] rubedo, the reddening, purpling, or iosis
200
+ projects/harvest.md:
201
+ # Project Harvest
202
+ - [/] turn compost heap
203
+ - [ ] plan raised bed layout
145
204
  projects/obelisk.md:
146
205
  # Project Obelisk
147
206
  Something something star gate
148
207
  - [/] carve runes into obelisk
149
208
  - [ ] research into runic meaning
150
209
 
210
+ projects/harvest.md:
211
+ # Project Harvest / Hardening off / FINISHED
212
+ - [X] move seedlings to cold frame
213
+ # Project Harvest / Autumn / FINISHED
214
+ - [#] enter giant marrow contest (too late)
215
+ projects/obelisk.md:
216
+ # Project Obelisk / FINISHED
217
+ Something something star gate
218
+ - [X] secure desert burial site
151
219
  archived/projects/tangerine.md:
152
220
  # Project Tangerine / FINISHED
153
221
  - [X] acquire trebuchet plans
@@ -156,7 +224,13 @@ To show a random selection of tasks rather than by priority, use `5r`.
156
224
  - [#] throw fruit at neighbours (they moved away)
157
225
  ```
158
226
 
159
- - `--ignore-after` — show all tasks, ignoring `@after` constraints.
227
+ - `--ignore-after` — ignore `@after` constraints.
228
+
229
+ - `--ignore-queue` — ignore `@queue` constraints.
230
+
231
+ - `--ignore-phase` — ignore `@phase` constraints.
232
+
233
+ - `--ignore-all` — ignore all deferral constraints (`@after`, `@phase`, `@queue`).
160
234
 
161
235
  - `-o` / `--open` — show only open tasks.
162
236
 
@@ -176,12 +250,15 @@ To show a random selection of tasks rather than by priority, use `5r`.
176
250
 
177
251
  ```bash
178
252
  (computer)% whatnext --summary
179
- B P O
180
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 3 tasks.md
181
- ░░░░░░░░░░░░ 0 0 1 projects/curtain.md
182
- ▚▚▚▚▚▚▚▚▚▚▚▚▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░ 1 1 2 projects/obelisk.md
183
- ─────
184
- 1 1 6 8, of 15 total
253
+ B P O
254
+ ░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 3 tasks.md
255
+ ░░░░░░░░ 0 0 1 projects/curtain.md
256
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 4 projects/fountain.md
257
+ ▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 1 5 projects/harvest.md
258
+ ▚▚▚▚▚▚▚▚▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ 1 1 2 projects/obelisk.md
259
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 5 projects/tinsel.md
260
+ ──────
261
+ ▚▚▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1 2 20 23, of 33 total
185
262
 
186
263
  ▚ Blocked ▓ Partial ░ Open
187
264
  ```
@@ -194,13 +271,16 @@ To show a random selection of tasks rather than by priority, use `5r`.
194
271
 
195
272
  ```bash
196
273
  (computer)% whatnext --summary --all
197
- C D B P O
198
- ░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 0 0 3 tasks.md
199
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 0 0 4 projects/curtain.md
200
- ▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░ 0 0 1 1 2 projects/obelisk.md
201
- ▚▚▚▚▚▚▚▚▚██████████████████████████ 1 3 0 0 0 archived/projects/tangerine.md
202
- ─────────
203
- 1 3 1 1 9 15, of 15 total
274
+ C D B P O
275
+ ░░░░░░░░░░░░░ 0 0 0 0 3 tasks.md
276
+ ░░░░░░░░░░░░░░░░░ 0 0 0 0 4 projects/curtain.md
277
+ ░░░░░░░░░░░░░░░░░ 0 0 0 0 4 projects/fountain.md
278
+ ▚▚▚▚████▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░ 1 1 0 1 5 projects/harvest.md
279
+ ████▓▓▓▓▒▒▒▒▒░░░░░░░░ 0 1 1 1 2 projects/obelisk.md
280
+ ░░░░░░░░░░░░░░░░░░░░░ 0 0 0 0 5 projects/tinsel.md
281
+ ▚▚▚▚█████████████ 1 3 0 0 0 archived/projects/tangerine.md
282
+ ──────────
283
+ ▚▚█████▓▒▒░░░░░░░░░░░░░░░░░░░░░░░░ 2 5 1 2 23 33, of 33 total
204
284
 
205
285
  ▚ Cancelled █ Done ▓ Blocked ▒ Partial ░ Open
206
286
  ```
@@ -220,12 +300,15 @@ To show a random selection of tasks rather than by priority, use `5r`.
220
300
  ```bash
221
301
  (computer)% whatnext --summary --relative --priority high
222
302
  H ~
223
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 3 tasks.md
224
- ░░░░░░░░░░ 0 1 projects/curtain.md
225
- ██████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1 3 projects/obelisk.md
226
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
303
+ ░░░░░░░░░░░░░░░ 0 3 tasks.md
304
+ ░░░░░ 0 1 projects/curtain.md
305
+ ░░░░░░░░░░░░░░░░░░░░ 0 4 projects/fountain.md
306
+ ███████████████░░░░░░░░░░░░░░░░░░░░░░░░░ 3 5 projects/harvest.md
307
+ █████░░░░░░░░░░░░░░░░░░░░ 1 4 projects/obelisk.md
308
+ █████░░░░░░░░░░░░░░░░░░░░ 1 4 projects/tinsel.md
309
+ ░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
227
310
  ────
228
- 1 11 12, of 15 total
311
+ ███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 5 25 30, of 33 total
229
312
 
230
313
  █ High ░ (Overdue/Imminent/Medium/Normal)
231
314
  ```
@@ -15,6 +15,7 @@ classifiers = [
15
15
  "Programming Language :: Python :: 3.10",
16
16
  "Programming Language :: Python :: 3.11",
17
17
  "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
18
19
  ]
19
20
  dependencies = [
20
21
  "termcolor",
@@ -22,3 +22,9 @@ Later sections also tagged with phase are not shown when earlier phases
22
22
  are incomplete. Non-tagged sections are shown as normal.
23
23
 
24
24
  - [X] implement \@phase directive for section-level sequencing
25
+
26
+ Be able to ignore deferring controls to list all incomplete tasks.
27
+
28
+ - [X] implement --ignore-queue
29
+ - [X] implement --ignore-phase
30
+ - [X] implement catch-all ignore flag
@@ -0,0 +1,3 @@
1
+ Ignoring files.
2
+
3
+ - [X] be able to ignore entire directories, not just files
@@ -0,0 +1,3 @@
1
+ Improvements to `--summary` output.
2
+
3
+ - [X] show total %age progression across project, not just column totals
@@ -218,6 +218,21 @@ teardown_file() {
218
218
  [ $status -eq 0 ]
219
219
  }
220
220
 
221
+ @test "dependencies checked when not in search" {
222
+ expected_output=$(sed -e 's/^ //' <<" EOF"
223
+ tests/deferring/subdir/needs-parent.md:
224
+ - [ ] depends on parent file
225
+ EOF
226
+ )
227
+
228
+ run --separate-stderr \
229
+ whatnext \
230
+ tests/deferring/subdir/needs-parent.md
231
+
232
+ diff -u <(echo "$expected_output") <(echo "$output")
233
+ [ $status -eq 0 ]
234
+ }
235
+
221
236
  @test "phase shows next when previous complete" {
222
237
  expected_output=$(sed -e 's/^ //' <<" EOF"
223
238
  tests/deferring/phases-partial.md:
@@ -305,3 +320,75 @@ teardown_file() {
305
320
  diff -u <(echo "$expected_stderr") <(echo "$stderr")
306
321
  [ $status -eq 0 ]
307
322
  }
323
+
324
+ @test "queue can be ignored" {
325
+ expected_output=$(sed -e 's/^ //' <<" EOF"
326
+ example/projects/fountain.md:
327
+ - [ ] nigredo, the blackening or melanosis
328
+ - [ ] albedo, the whitening or leucosis
329
+ - [ ] citrinitas, the yellowing or xanthosis
330
+ - [ ] rubedo, the reddening, purpling, or iosis
331
+ EOF
332
+ )
333
+
334
+ WHATNEXT_TODAY=2025-01-01 \
335
+ run whatnext --ignore-queue example/projects/fountain.md
336
+ diff -u <(echo "$expected_output") <(echo "$output")
337
+ [ $status -eq 0 ]
338
+ }
339
+
340
+ @test "phase can be ignored" {
341
+ expected_output=$(sed -e 's/^ //' <<" EOF"
342
+ tests/deferring/phases.md:
343
+ # Bugs
344
+ - [ ] fix bug
345
+ # New feature [phase 1/3]
346
+ - [ ] install dependencies
347
+ # New feature / Implement [phase 2/3]
348
+ - [ ] write code
349
+ # New feature / Test [phase 3/3]
350
+ - [ ] run tests
351
+ EOF
352
+ )
353
+
354
+ run --separate-stderr \
355
+ whatnext \
356
+ --ignore-phase \
357
+ tests/deferring/phases.md
358
+
359
+ diff -u <(echo "$expected_output") <(echo "$output")
360
+ [ $status -eq 0 ]
361
+ }
362
+
363
+ @test "all deferral constraints can be ignored" {
364
+ expected_output=$(sed -e 's/^ //' <<" EOF"
365
+ example/projects/fountain.md:
366
+ - [ ] nigredo, the blackening or melanosis
367
+ - [ ] albedo, the whitening or leucosis
368
+ - [ ] citrinitas, the yellowing or xanthosis
369
+ - [ ] rubedo, the reddening, purpling, or iosis
370
+ tests/deferring/deferred.md:
371
+ - [ ] wait for regular
372
+ tests/deferring/phases.md:
373
+ # Bugs
374
+ - [ ] fix bug
375
+ # New feature [phase 1/3]
376
+ - [ ] install dependencies
377
+ # New feature / Implement [phase 2/3]
378
+ - [ ] write code
379
+ # New feature / Test [phase 3/3]
380
+ - [ ] run tests
381
+ EOF
382
+ )
383
+
384
+ WHATNEXT_TODAY=2025-01-01 \
385
+ run --separate-stderr \
386
+ whatnext \
387
+ --ignore-all \
388
+ example/projects/fountain.md \
389
+ tests/deferring/deferred.md \
390
+ tests/deferring/phases.md
391
+
392
+ diff -u <(echo "$expected_output") <(echo "$output")
393
+ [ $status -eq 0 ]
394
+ }
@@ -252,6 +252,9 @@ function setup {
252
252
  # Project Harvest / MEDIUM
253
253
  - [ ] buy copper tape for slugs
254
254
 
255
+ curtain.md:
256
+ # Project Curtain / Final bow
257
+ - [ ] Take a bow
255
258
  fountain.md:
256
259
  - [ ] nigredo, the blackening or melanosis
257
260
  harvest.md:
@@ -161,6 +161,9 @@ function setup {
161
161
  # Project Harvest / MEDIUM
162
162
  - [ ] buy copper tape for slugs
163
163
 
164
+ curtain.md:
165
+ # Project Curtain / Final bow
166
+ - [ ] Take a bow
164
167
  fountain.md:
165
168
  - [ ] nigredo, the blackening or melanosis
166
169
  harvest.md:
@@ -322,6 +325,9 @@ function setup {
322
325
  # Project Harvest / MEDIUM
323
326
  - [ ] buy copper tape for slugs
324
327
 
328
+ curtain.md:
329
+ # Project Curtain / Final bow
330
+ - [ ] Take a bow
325
331
  fountain.md:
326
332
  - [ ] nigredo, the blackening or melanosis
327
333
  harvest.md:
@@ -546,3 +552,75 @@ function setup {
546
552
  [ -n "$(echo "$output" | grep tasks.md)" ]
547
553
  [ $status -eq 0 ]
548
554
  }
555
+
556
+ @test "ignore patterns without wildcard only match on whole names" {
557
+ expected_output=$(sed -e 's/^ //' <<" EOF"
558
+ tasks.md:
559
+ # Get S Done / MEDIUM
560
+ - [ ] question entire existence
561
+
562
+ tasks.md:
563
+ # Get S Done
564
+ - [ ] come up with better projects
565
+ - [ ] start third project
566
+
567
+ archived/projects/tangerine.md:
568
+ # Project Tangerine / FINISHED
569
+ - [X] acquire trebuchet plans
570
+ - [X] source counterweight materials
571
+ - [X] build it
572
+ - [#] throw fruit at neighbours (they moved away)
573
+ EOF
574
+ )
575
+
576
+ echo "ignore = ['projects', 'task']" > "$BATS_TEST_TMPDIR/.whatnext"
577
+
578
+ run --separate-stderr \
579
+ whatnext \
580
+ --config "$BATS_TEST_TMPDIR/.whatnext" \
581
+ --all
582
+
583
+ diff -u <(echo "$expected_output") <(echo "$output")
584
+ [ $status -eq 0 ]
585
+
586
+ echo "ignore = ['projects/', 'tasks']" > "$BATS_TEST_TMPDIR/.whatnext"
587
+
588
+ run --separate-stderr \
589
+ whatnext \
590
+ --config "$BATS_TEST_TMPDIR/.whatnext" \
591
+ --all
592
+
593
+ diff -u <(echo "$expected_output") <(echo "$output")
594
+ [ $status -eq 0 ]
595
+ }
596
+
597
+ @test "glob patterns still work with directory patterns" {
598
+ expected_output=$(sed -e 's/^ //' <<" EOF"
599
+ tasks.md:
600
+ # Get S Done / MEDIUM
601
+ - [ ] question entire existence
602
+
603
+ tasks.md:
604
+ # Get S Done
605
+ - [ ] come up with better projects
606
+ - [ ] start third project
607
+
608
+ archived/projects/tangerine.md:
609
+ # Project Tangerine / FINISHED
610
+ - [X] acquire trebuchet plans
611
+ - [X] source counterweight materials
612
+ - [X] build it
613
+ - [#] throw fruit at neighbours (they moved away)
614
+ EOF
615
+ )
616
+
617
+ echo "ignore = ['projects/**']" > "$BATS_TEST_TMPDIR/.whatnext"
618
+
619
+ run --separate-stderr \
620
+ whatnext \
621
+ --config "$BATS_TEST_TMPDIR/.whatnext" \
622
+ --all
623
+
624
+ diff -u <(echo "$expected_output") <(echo "$output")
625
+ [ $status -eq 0 ]
626
+ }
@@ -19,7 +19,7 @@ function setup {
19
19
  ▚▚▚▚▚▚▚▚▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░░ 1 1 2 projects/obelisk.md
20
20
  ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0 0 5 projects/tinsel.md
21
21
  ──────
22
- 1 2 20 23, of 33 total
22
+ ▚▚▓▓▓▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1 2 20 23, of 33 total
23
23
 
24
24
  ▚ Blocked ▓ Partial ░ Open
25
25
  EOF
@@ -45,7 +45,7 @@ function setup {
45
45
  ░░░░░░░░░░░░░░░░░░░░░ 0 0 0 0 5 projects/tinsel.md
46
46
  ▚▚▚▚█████████████ 1 3 0 0 0 archived/projects/tangerine.md
47
47
  ──────────
48
- 2 5 1 2 23 33, of 33 total
48
+ ▚▚█████▓▒▒░░░░░░░░░░░░░░░░░░░░░░░░ 2 5 1 2 23 33, of 33 total
49
49
 
50
50
  ▚ Cancelled █ Done ▓ Blocked ▒ Partial ░ Open
51
51
  EOF
@@ -101,7 +101,7 @@ function setup {
101
101
  ░░░░░░ 0 0 0 0 5 projects/tinsel.md
102
102
  ▚████ 1 3 0 0 0 archived/projects/tangerine.md
103
103
  ──────────
104
- 2 5 1 2 23 33, of 33 total
104
+ ▚█▒░░░░░░░ 2 5 1 2 23 33, of 33 total
105
105
 
106
106
  ▚ Cancelled █ Done ▓ Blocked ▒ Partial ░ Open
107
107
  EOF
@@ -126,7 +126,7 @@ function setup {
126
126
  █████████████████████ 2 projects/obelisk.md
127
127
  ████████████████████████████████████████████████████ 5 projects/tinsel.md
128
128
  ──
129
- 20 20, of 33 total
129
+ ████████████████████████████████████████████████████ 20 20, of 33 total
130
130
 
131
131
  █ Open
132
132
  EOF
@@ -153,7 +153,7 @@ function setup {
153
153
  ████████████████████████ 5 0 projects/tinsel.md
154
154
  ░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
155
155
  ─────
156
- 20 10 30, of 33 total
156
+ ██████████████████████████░░░░░░░░░░░░░ 20 10 30, of 33 total
157
157
 
158
158
  █ Open ░ (Cancelled/Done/Blocked/Partial)
159
159
  EOF
@@ -180,7 +180,7 @@ function setup {
180
180
  ░░░░░░░░░░░░░░░░░░░░░░░░░ 0 5 projects/tinsel.md
181
181
  ░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
182
182
  ────
183
- 2 28 30, of 33 total
183
+ ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2 28 30, of 33 total
184
184
 
185
185
  █ Partial ░ (Cancelled/Done/Blocked/Open)
186
186
  EOF
@@ -207,7 +207,7 @@ function setup {
207
207
  ░░░░░░░░░░░░░░░░░░░░░░░░░ 0 5 projects/tinsel.md
208
208
  ░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
209
209
  ────
210
- 1 29 30, of 33 total
210
+ █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1 29 30, of 33 total
211
211
 
212
212
  █ Blocked ░ (Cancelled/Done/Partial/Open)
213
213
  EOF
@@ -234,7 +234,7 @@ function setup {
234
234
  ░░░░░░░░░░░░░░░░░░░░░░░░░ 0 5 projects/tinsel.md
235
235
  ███████████████░░░░░ 3 1 archived/projects/tangerine.md
236
236
  ────
237
- 5 25 30, of 33 total
237
+ ███████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 5 25 30, of 33 total
238
238
 
239
239
  █ Done ░ (Cancelled/Blocked/Partial/Open)
240
240
  EOF
@@ -261,7 +261,7 @@ function setup {
261
261
  ░░░░░░░░░░░░░░░░░░░░░░░░░ 0 5 projects/tinsel.md
262
262
  █████░░░░░░░░░░░░░░░ 1 3 archived/projects/tangerine.md
263
263
  ────
264
- 2 28 30, of 33 total
264
+ ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2 28 30, of 33 total
265
265
 
266
266
  █ Cancelled ░ (Done/Blocked/Partial/Open)
267
267
  EOF
@@ -289,7 +289,7 @@ function setup {
289
289
  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 0 5 0 projects/tinsel.md
290
290
  ▚▚▚▚▚░░░░░░░░░░░░░░ 1 0 3 archived/projects/tangerine.md
291
291
  ──────
292
- 2 20 8 30, of 33 total
292
+ ▚▚▚▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░ 2 20 8 30, of 33 total
293
293
 
294
294
  ▚ Cancelled ▓ Open ░ (Done/Blocked/Partial)
295
295
  EOF
@@ -316,7 +316,7 @@ function setup {
316
316
  ░░░░░░░░░░░░░░░░░░░░░░░░░ 0 5 projects/tinsel.md
317
317
  ░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
318
318
  ────
319
- 3 27 30, of 33 total
319
+ ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 3 27 30, of 33 total
320
320
 
321
321
  █ High ░ (Overdue/Imminent/Medium/Normal)
322
322
  EOF
@@ -343,7 +343,7 @@ function setup {
343
343
  ░░░░░░░░░░░░░░░░░░░░░░░░░ 0 5 projects/tinsel.md
344
344
  ░░░░░░░░░░░░░░░░░░░░ 0 4 archived/projects/tangerine.md
345
345
  ────
346
- 2 28 30, of 33 total
346
+ ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 2 28 30, of 33 total
347
347
 
348
348
  █ Medium ░ (Overdue/Imminent/High/Normal)
349
349
  EOF
@@ -371,7 +371,7 @@ function setup {
371
371
  ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 0 5 0 projects/tinsel.md
372
372
  ░░░░░░░░░░░░░░░░░░ 0 0 4 archived/projects/tangerine.md
373
373
  ───────
374
- 3 17 10 30, of 33 total
374
+ ▚▚▚▚▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░ 3 17 10 30, of 33 total
375
375
 
376
376
  ▚ High ▓ Normal ░ (Overdue/Imminent/Medium)
377
377
  EOF
@@ -7,7 +7,8 @@ bats_require_minimum_version 1.5.0
7
7
 
8
8
  expected_output=$(sed -e 's/^ //' <<" EOF"
9
9
  Usage: whatnext [-h] [--help] [--version] [--guide] [--dir DIR] [-s] [-e]
10
- [--relative] [-a] [--ignore-after] [--config CONFIG]
10
+ [--relative] [-a] [--ignore-after] [--ignore-queue]
11
+ [--ignore-phase] [--ignore-all] [--config CONFIG]
11
12
  [--ignore PATTERN] [-q] [-o] [-p] [-b] [-d] [-c]
12
13
  [--priority LEVEL] [--color | --no-color]
13
14
  [match ...]
@@ -24,7 +25,8 @@ bats_require_minimum_version 1.5.0
24
25
 
25
26
  expected_output=$(sed -e 's/^ //' <<" EOF"
26
27
  Usage: whatnext [-h] [--help] [--version] [--guide] [--dir DIR] [-s] [-e]
27
- [--relative] [-a] [--ignore-after] [--config CONFIG]
28
+ [--relative] [-a] [--ignore-after] [--ignore-queue]
29
+ [--ignore-phase] [--ignore-all] [--config CONFIG]
28
30
  [--ignore PATTERN] [-q] [-o] [-p] [-b] [-d] [-c]
29
31
  [--priority LEVEL] [--color | --no-color]
30
32
  [match ...]
@@ -51,7 +53,11 @@ bats_require_minimum_version 1.5.0
51
53
  --relative Show selected states relative to all others (use with
52
54
  --summary)
53
55
  -a, --all Include all tasks and files, not just incomplete
54
- --ignore-after Show all tasks, ignoring @after constraints
56
+ --ignore-after Ignore @after constraints
57
+ --ignore-queue Ignore @queue constraints
58
+ --ignore-phase Ignore @phase constraints
59
+ --ignore-all Ignore all deferral constraints (@after, @phase,
60
+ @queue)
55
61
  --config CONFIG Path to config file (default: WHATNEXT_CONFIG, or
56
62
  '.whatnext' in --dir)
57
63
  --ignore PATTERN Ignore files matching pattern (can be specified
@@ -658,18 +658,6 @@ class MarkdownFile:
658
658
  return self.path
659
659
  return os.path.relpath(self.path, self.base_dir)
660
660
 
661
- @property
662
- def incomplete(self):
663
- outstanding_states = {
664
- State.IN_PROGRESS,
665
- State.OPEN,
666
- State.BLOCKED,
667
- }
668
- return self.sort_by_state(
669
- task for task in self.tasks
670
- if task.state in outstanding_states
671
- )
672
-
673
661
  def sort_by_state(self, tasks):
674
662
  by_heading = {}
675
663
  for task in tasks:
@@ -244,8 +244,13 @@ def format_summary(
244
244
  if all_tasks_total is None:
245
245
  all_tasks_total = displayed_total
246
246
  lines.append(f"{' ' * bar_width}{gap}{'─' * count_width}")
247
+ total_bar = build_bar(
248
+ total_counts, displayed_total, bar_width, char_map, bar_order
249
+ )
250
+ if use_colour:
251
+ total_bar = colored(total_bar, "blue", force_color=True)
247
252
  lines.append(
248
- f"{' ' * bar_width}{gap}{total_str.rjust(count_width)}{gap}"
253
+ f"{total_bar}{gap}{total_str.rjust(count_width)}{gap}"
249
254
  f"{displayed_total}, of {all_tasks_total} total"
250
255
  )
251
256
 
@@ -125,9 +125,12 @@ def filter_deferred(data, ignore_patterns):
125
125
  basename = os.path.basename(path)
126
126
  if is_dependency_ignored(basename, ignore_patterns):
127
127
  return True
128
- if path not in file_by_path:
128
+ if path in file_by_path:
129
+ file = file_by_path[path]
130
+ elif os.path.exists(path):
131
+ file = MarkdownFile(source=path, today=all_files[0].today)
132
+ else:
129
133
  return False
130
- file = file_by_path[path]
131
134
  return all(task.state in COMPLETE_STATES for task in file.tasks)
132
135
 
133
136
  def should_show_task(task):
@@ -246,8 +249,18 @@ def load_config(config_path=None, directory="."):
246
249
 
247
250
  def is_ignored(filepath, ignore_patterns):
248
251
  for pattern in ignore_patterns:
249
- if fnmatch.fnmatch(filepath, pattern):
250
- return True
252
+ if pattern.endswith('/'):
253
+ dir_name = pattern.rstrip('/')
254
+ if filepath.startswith(dir_name + '/'):
255
+ return True
256
+ elif not any(c in pattern for c in ['*', '?', '[']):
257
+ if filepath == pattern:
258
+ return True
259
+ if filepath.startswith(pattern + '/'):
260
+ return True
261
+ else:
262
+ if fnmatch.fnmatch(filepath, pattern):
263
+ return True
251
264
  return False
252
265
 
253
266
 
@@ -484,7 +497,22 @@ def main():
484
497
  parser.add_argument(
485
498
  "--ignore-after",
486
499
  action="store_true",
487
- help="Show all tasks, ignoring @after constraints",
500
+ help="Ignore @after constraints",
501
+ )
502
+ parser.add_argument(
503
+ "--ignore-queue",
504
+ action="store_true",
505
+ help="Ignore @queue constraints",
506
+ )
507
+ parser.add_argument(
508
+ "--ignore-phase",
509
+ action="store_true",
510
+ help="Ignore @phase constraints",
511
+ )
512
+ parser.add_argument(
513
+ "--ignore-all",
514
+ action="store_true",
515
+ help="Ignore all deferral constraints (@after, @phase, @queue)",
488
516
  )
489
517
  parser.add_argument(
490
518
  "--config",
@@ -637,13 +665,18 @@ def main():
637
665
  for file in task_files
638
666
  ]
639
667
 
640
- if not args.all and not args.ignore_after:
668
+ if not args.all and not args.ignore_after and not args.ignore_all:
641
669
  filtered_data = filter_deferred(filtered_data, ignore_patterns)
642
670
 
643
- if not args.all:
671
+ if not args.all and not args.ignore_phase and not args.ignore_all:
644
672
  filtered_data = filter_phases(filtered_data)
645
673
 
646
- if not args.all and not args.summary:
674
+ if (
675
+ not args.all
676
+ and not args.ignore_queue
677
+ and not args.ignore_all
678
+ and not args.summary
679
+ ):
647
680
  filtered_data = filter_queue(filtered_data)
648
681
 
649
682
  if args.summary:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes