python-deploy
Pre-flight checks
!git status --short
!git log --oneline -5
Deploy to: $ARGUMENTS
If $ARGUMENTS is empty, stop immediately. Report: “No environment specified. Invoke as: /python-deploy
Step 1: Abort if there are uncommitted changes
Check the git status output above. If it shows any lines (modified, untracked, staged, or deleted files), stop here.
Report: “Deploy aborted: there are uncommitted changes. Commit or stash them before deploying to $ARGUMENTS.”
A clean working tree shows no output from git status --short. Do not proceed unless the output is empty.
Step 2: Run the test suite
Run:
python -m pytestIf any tests fail, report the failing test names and count, then stop. Do not proceed.
If pytest is not installed, try:
python -m unittest discoverIf neither is available, report that no test runner was found and stop. Do not deploy without running tests.
Step 3: Build the distribution package
Run:
python -m buildThis requires the build package. If it is not installed, run:
pip install buildThen retry python -m build.
If the build fails, report the error output and stop.
On success, confirm the output: the dist/ directory should contain a .whl and a .tar.gz file.
Step 4: Create a deployment tag
Construct the tag name:
deploy-$ARGUMENTS-<YYYYMMDD>-<HHMMSS>Use current UTC date and time. Example: deploy-staging-20260513-143207.
Run:
git tag deploy-$ARGUMENTS-<YYYYMMDD>-<HHMMSS>Step 5: Push the tag
Run:
git push origin deploy-$ARGUMENTS-<YYYYMMDD>-<HHMMSS>If the push fails, report the error and stop.
Step 6: Report success
Print a final summary:
Deploy initiated.Environment: $ARGUMENTSTag: deploy-$ARGUMENTS-<YYYYMMDD>-<HHMMSS>Time: <YYYY-MM-DD HH:MM:SS UTC>Build artifacts: dist/