Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Doc: Extending Context/Runners/etc.

Open
#924 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
30/100
Issue type
Documentation
Clarity
Needs clarification
Activity status
Stale
Tech stack
python
Domain
documentation

Research direction

Start with the existing fabric example and the Context, Config, and Runner extension points mentioned in the issue. Document the minimum implementation for each, including the Local wrapper and .invoke.yaml configuration example, then clarify task gathering, deferred execution, dynamic asynchronous commands, and completion checks for a slurm-style runner.

Written by the indexing model from the issue text.

Description

I am trying to extend invoke to be able to run slurm jobs, and I am slowly figuring out what I need to extend from the example of fabric. It would be nice to have this documented somewhere for other developers. So my understanding is that a common setup is to extend:

  • Context: The main entity to initialize the work environment and provide a user interface
  • Config: To add your own configurations to be parsed from .invoke.yaml
  • Runner: To define how to run a command

The issue currently is that it is not clear what is the minimum that we need to implement in each class. An example that could help illustrate is maybe a wrapper over Local that takes a "Hello world" message from Config, prints this message before each task/command, and prints a similar message at the start of the context setup.

Is there a matrix/IRC/Discord room to get some quick pointers for these?


Similarly, but more specific to the goal of the slurm wrapper:

  • How can I gather the tasks before a run command? Is that done automatically?
  • Is it possible to prepare run steps or postpone the execution of run in a context?
  • In an asynchronous runner, can I dynamically add tasks/run command (dependent or independent on a previous step)
  • For an asynchronous runner, where do I specify how to query if a run is finished or not?
Dominant language
Python
Stars
4.8k
Forks
412
PR merge metrics
No merged PRs in 30d

Getting set up

We have not checked this project's setup files yet. Start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pyinvoke/invoke

All issues in pyinvoke/invoke

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.