Markers

pytask uses markers to attach additional information to a task. You can see all available markers by using the pytask markers command.

$ pytask markers
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Marker                           ┃ Description                        ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ pytask.mark.persist              │ Prevent execution of a task if all │
│                                  │ products exist and even if         │
│                                  │ something has changed              │
│                                  │ (dependencies, source file,        │
│                                  │ products). This decorator might be │
│                                  │ useful for expensive tasks where   │
│                                  │ only the formatting of the file has│
│                                  │ changed. The state of the files    │
│                                  │ which have changed will also be    │
│                                  │ remembered and another run will    │
│                                  │ skip the task with success.        │
│                                  │                                    │
│ pytask.mark.skip                 │ Skip a task and all its dependent  │
│                                  │ tasks.                             │
│                                  │                                    │
│ pytask.mark.skip_ancestor_failed │ Internal decorator applied to tasks│
│                                  │ if any of its preceding tasks      │
│                                  │ failed.                            │
│                                  │                                    │
│ pytask.mark.skip_unchanged       │ Internal decorator applied to tasks│
│                                  │ which have already been executed   │
│                                  │ and have not been changed.         │
│                                  │                                    │
│ pytask.mark.skipif               │ Skip a task and all its dependent  │
│                                  │ tasks if a condition is met.       │
│                                  │                                    │
│ pytask.mark.try_first            │ Try to execute a task a early as   │
│                                  │ possible.                          │
│                                  │                                    │
│ pytask.mark.try_last             │ Try to execute a task a late as    │
│                                  │ possible.                          │
└──────────────────────────────────┴────────────────────────────────────┘

As explained in this tutorial, you can use markers to select tasks.

Register your marker in the configuration file with its name and description.

[tool.pytask.ini_options.markers]
wip = "A marker for tasks which are work-in-progress."