gstack-pregate now finds the tests for your Python files

1 hour ago

gstack 1.91.131.0 to 1.91.132.0: gstack-pregate follows Python imports to pick the pytest files a change reaches, a checkout without node_modules reports missing dependencies instead of stale files, the gstack repo's test tier clears on one Ubicloud VM in about 7 minutes, and gstack-next-version reads open PRs' claims in parallel. 1.91.131.0 notes: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911310---2026-10-18 1.91.132.0 notes: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911320---2026-10-18 Remote gate: https://github.com/garrytan/gstack/blob/main/docs/pregate.md#remote-gate Python imports PR: https://github.com/garrytan/gstack/pull/3201

Ask

Ask about this presentation

Answers are generated from this presentation.

Chapters

  1. 0:00Python
  2. 0:15Deps
  3. 0:29Remote gate
  4. 0:44Fixes
  5. 1:01Your repo
Show transcript

Python

gstack logo

gstack-pregate now finds the tests for your Python files

from app.billing import chargeapp/billing.py
from . import utilsrelative to the package
1,473
unmapped modules before, in a FastAPI service
780
unmapped now, mostly migrations and scripts
PythonDepsRemote gateFixesYour repo
garrytan/gstack · CHANGELOG.md 1.91.131.0 · #3201, thanks @scottgigante-hubflow

gstack-pregate now follows Python imports, so a changed module picks the pytest files that import it. In one FastAPI service, unmapped modules fell from almost fifteen hundred to 780.

Deps

A checkout without node_modules now says dependencies are missing

BeforeREGEN_STALE
Now, with the install command to runREGEN_DEPS_MISSING
The check reports incomplete until dependencies are installed.
PythonDepsRemote gateFixesYour repo
garrytan/gstack · CHANGELOG.md 1.91.131.0

A fresh checkout without node_modules used to report stale generated files and send you to rerun the generator. Now the pre-gate says dependencies are missing, prints the install command, and marks the check incomplete.

Remote gate

In the gstack repo, a small machine clears the test tier on one Ubicloud VM

7 min
all 1,280 free test files on one VM, for $0.06
59 min
798 files run locally on 4 cores
Without an API key it runs the same files locally in parallel shards.
PythonDepsRemote gateFixesYour repo
garrytan/gstack · CHANGELOG.md 1.91.132.0

In the gstack repo, a machine under eight cores now clears the test tier on one Ubicloud VM, in about seven minutes for six cents. Locally, a smaller set took about an hour. Without a key, it shards the run locally.

Fixes

Version picks run faster and flag a claim they couldn't read

gstack-next-version fetches open PRs' claims in parallel: 8 PRs in about 0.5 s, down from 4.2 s1.91.132.0
An unreadable claim marks the pick provisional with complete: false, and gstack-restamp reports claims: incomplete1.91.132.0
The Python scanner stays linear on hostile input and keeps the imports after an escaped triple quote1.91.131.0
PythonDepsRemote gateFixesYour repo
garrytan/gstack · CHANGELOG.md 1.91.132.0 · 1.91.131.0

Picking the next version now reads open pull requests in parallel, about half a second for eight. A claim it can't read marks the pick provisional, so rerun before stamping. And the Python scanner stays fast on hostile input.

Your repo

Does your Python repo use a src layout, or packages at the root?

conftest.py, src/ layouts and importlib calls still need dependencies declarations in .gstack/pregate.json.
CHANGELOG.md"If you…" notes for both releases
docs/pregate.mdremote gate and its refusal codes
PythonDepsRemote gateFixesYour repo
garrytan/gstack · CHANGELOG.md 1.91.131.0 · 1.91.132.0

Some Python setups still need declarations: conftest.py files, src layouts and importlib calls. So, does your Python repo use a src layout, or packages at the root?