Skip to main content

Quick local status snapshots for developer workspaces.

Project description

qstatus

Quick local status snapshots for developer workspaces.

Installation

Recommended with uv:

uv sync --extra dev

Standard Python fallback:

python -m pip install -e ".[dev]"

Usage

qstatus
qstatus repo
qstatus repo --json
qstatus repo --github
qstatus repo --cwd /path/to/repo
qstatus repo --verbose
qstatus repo --plain
qstatus repo --non-compact
qstatus repo --color=always
qstatus env
qstatus env --cwd /path/to/project
qstatus env --json
qstatus --version

qstatus is an alias for qstatus repo. By default it performs a fast local Git snapshot only. It does not fetch, push, pull, run tests, run builds, or call network services.

Example human output:

REPO qstatus /home/ali/Projects/qstatus
BRANCH main 6acc81f origin/main synced ahead=0 behind=0
STATE clean staged=0 unstaged=0 untracked=0 conflicts=0 stash=0
REMOTE origin git@github.com:alik-git/qstatus.git
SUBMODULES none
PR not-requested
CI not-requested

Repo output is compact by default. Use --non-compact when you want the sectioned human summary.

Use --json when another tool or agent should consume the snapshot:

qstatus repo --json

Use --github only when you want read-only GitHub context through the gh CLI:

qstatus repo --github
qstatus repo --json --github

GitHub mode reports PR, CI/check, and package-release facts when available. If gh is missing, unauthenticated, offline, or rate-limited, the local snapshot still succeeds and the GitHub section is marked unavailable.

For human output, --github prints and flushes the local Git facts before running GitHub checks, then appends PR, CI, and release facts when they are ready. JSON output remains a single complete object printed at the end.

qstatus reports facts and neutral summaries only. It intentionally does not decide whether a repo is ready to commit, push, merge, or release.

Human output uses color automatically when stdout is an interactive terminal. Machine-readable JSON is never colorized. To control ANSI color explicitly:

qstatus repo --plain        # no ANSI color
qstatus repo --color=never  # no ANSI color
qstatus repo --color=always # force ANSI color

--plain overrides --color. Automatic color also honors the standard NO_COLOR environment variable and disables color when TERM=dumb.

Environment Snapshots

Use qstatus env to inspect Python, conda, venv, devpy, uv, and py_runner facts without activating or modifying anything:

qstatus env
qstatus env --cwd ~/Projects/motion_data_processing_worktree1
qstatus env --show-all
qstatus env --show-tools --show-hints
qstatus env --abs-paths
qstatus env --compact
qstatus env --json
qstatus env --verbose

Example for a normal Python project:

SHELL
  cwd  ~/Projects/qstatus
  kind=neutral  conda=none  venv=none
PYTHON
  runtime  ~/.local/share/uv/tools/qstatus/bin/python3
  python   missing
  python3  /usr/bin/python3
  version=3.14.4  venv_like=yes
PROJECT
  root  ~/Projects/qstatus
  pyproject=ok  uv.lock=yes  devpy=no  .venv=yes

Example for a devpy-backed worktree:

PROJECT
  root  ~/Projects/motion_data_processing_worktree1
  name=motion-data-processing  pyproject=ok  uv.lock=yes  devpy=yes  .venv=yes
DEVPY
  venv  ~/Projects/motion_data_processing_worktree1/.venv
  base=mdp_shared  status=ok  venv_python=yes  editables=3

Use --show-all, --show-tools, --show-hints, or --show-home when you need those extra sections:

TOOLS
  uv  ~/.local/bin/uv
  conda  ~/miniconda3/condabin/conda
  devpy  ~/.local/bin/devpy
  py_runner  ~/.agent_files/py_runner/run
HINTS devpy_python=devpy python
      py_runner_overlay:
        ~/.agent_files/py_runner/run \
          --env mdp_shared \
          --python .venv/bin/python

qstatus env treats tools like python, python3, pip, conda, devpy, uv, and py_runner as optional facts. Missing tools are reported as missing instead of crashing the command. Human output compacts home-relative paths with ~; pass --abs-paths when exact absolute paths are more useful. Default env collection is path-based and avoids slow --version subprocesses; use --verbose when you want those command records and version probes. qstatus repo still requires git, but reports a missing Git executable directly instead of confusing it with a non-repository path.

Development

Run the standard checks before opening a PR:

uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytest
uv build

If you are using standard Python tools instead of uv:

python -m ruff format --check .
python -m ruff check .
python -m mypy
python -m pytest
python -m build

Publishing

This repo publishes to PyPI through GitHub Actions Trusted Publishing. The release workflow is .github/workflows/release.yml.

Use these values in PyPI's pending trusted publisher form:

PyPI project name: qstatus
Owner: alik-git
Repository name: qstatus
Workflow name: release.yml
Environment name: pypi

The workflow filename is release.yml; the display name inside that file is Release, but PyPI wants the filename. The pypi environment should also exist under the GitHub repository's environment settings.

Publishing is release-driven: normal pushes and pull requests build and test the package, but publishing happens when a GitHub Release is published or the release workflow is manually dispatched.

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

qstatus-0.3.4.tar.gz (61.9 kB view details)

Uploaded Source

Built Distribution

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

qstatus-0.3.4-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file qstatus-0.3.4.tar.gz.

File metadata

  • Download URL: qstatus-0.3.4.tar.gz
  • Upload date:
  • Size: 61.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qstatus-0.3.4.tar.gz
Algorithm Hash digest
SHA256 f706060a87bb8c71c7d4244f74bdfe2687a89917ca8b862ad3bfddd1a88b4e99
MD5 1194292284c3b884702170ebe8c69a50
BLAKE2b-256 a58b19383a1be5e85a42afefe20015b500a15f4f3de71ce7eaa2be814def8b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for qstatus-0.3.4.tar.gz:

Publisher: release.yml on alik-git/qstatus

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

File details

Details for the file qstatus-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: qstatus-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qstatus-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2dfd4cf2284b96cb7bd351f0f9fdc3002c2813d32eaa65ffae0c7b1fefe88800
MD5 75d80631085a9507a7341969cb0e81fe
BLAKE2b-256 39a81e1edcb778d9e795de6894f1e705e266a1c20172e9bae1c5b4b61b2b9491

See more details on using hashes here.

Provenance

The following attestation bundles were made for qstatus-0.3.4-py3-none-any.whl:

Publisher: release.yml on alik-git/qstatus

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