Skip to main content

Python + CLI helpers for GitHub Projects task ownership

Project description

gh-task

Python + CLI helpers for taking, moving, and releasing GitHub Project (v2) issues using a lightweight ownership label protocol.

Install (local)

pip install -e .

Auth

Uses GH_TOKEN or GITHUB_TOKEN if set, otherwise falls back to gh auth token. Ensure the token has the project scope for Project v2 access.

Python usage

from gh_task import Project

project = Project(project="https://github.com/users/yieldthought/projects/3/views/1", name="my-name")

# list status columns
print(project.list())

# list issue numbers in Backlog
print(project.list("Backlog"))

# take a specific issue
issue_id = project.take(2)

# take the first available issue in Backlog
issue_id = project.take("Backlog")

# move and release
project.move(2, "In review")
project.release(2)

# context-managed lease (auto-release on exit)
with project.lease("Backlog") as issue:
    print(issue.number)

CLI

# list status columns
 gh-task list -p yieldthought/projects/3 -n my-name

# list issues in Backlog
 gh-task list -p yieldthought/projects/3 -n my-name Backlog

# take a specific issue
 gh-task take -p yieldthought/projects/3 -n my-name -i 2

# take the first available issue in Backlog
 gh-task take -p yieldthought/projects/3 -n my-name Backlog

# move and release
 gh-task move -p yieldthought/projects/3 -n my-name -i 2 -s "In review"
 gh-task release -p yieldthought/projects/3 -n my-name -i 2

Ownership protocol

take() performs the following:

  1. Verify there is no label starting with owner:.
  2. Add a comment Taking: <name>.
  3. Wait 1s (configurable) and fetch all comments beginning with Taking:.
  4. If the earliest Taking: comment is yours, add owner: <name> label.
  5. Remove your Taking: comment (best-effort).

If any step fails, the comment is removed and a TakeError is raised.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gh_task-0.1.2.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gh_task-0.1.2-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file gh_task-0.1.2.tar.gz.

File metadata

  • Download URL: gh_task-0.1.2.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gh_task-0.1.2.tar.gz
Algorithm Hash digest
SHA256 97e5acc293f734de6419022f794aebfba240784ad58593eed0524d04b3faa20e
MD5 ed36825bc949bfac0622521e10d95022
BLAKE2b-256 2b0e86c35a92a0593f60d055e77a6d1cb1ae2927b687f236265d56830fcccf45

See more details on using hashes here.

Provenance

The following attestation bundles were made for gh_task-0.1.2.tar.gz:

Publisher: workflow.yml on yieldthought/gh-task

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gh_task-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: gh_task-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gh_task-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 eea8af11d68b6cf7774fcd895f19a8f0ad7649990788422b0b8ee03a731e2980
MD5 e6eea75a1bd238c423360e889b331e8d
BLAKE2b-256 1d9ec5143464ba8e52bbae6c619b2998382ff4c453aa2f3e27ca680bc6d03c99

See more details on using hashes here.

Provenance

The following attestation bundles were made for gh_task-0.1.2-py3-none-any.whl:

Publisher: workflow.yml on yieldthought/gh-task

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page