No description
Find a file
2026-06-27 02:08:08 -05:00
src/pypit robust name (pyproject [project].name, no setuptools) + self-heal ~/.ssh perms (600/700) 2026-06-27 02:08:08 -05:00
.gitignore Release ==0.0.2 @ 2026-06-27 06:53:48 UTC 2026-06-27 01:53:48 -05:00
PKG-INFO baseline: abstract_pypit 0.0.1 (from PyPI sdist) 2026-06-26 20:04:33 -05:00
pyproject.toml Release ==0.0.2 @ 2026-06-27 06:53:48 UTC 2026-06-27 01:53:48 -05:00
README.md baseline: abstract_pypit 0.0.1 (from PyPI sdist) 2026-06-26 20:04:33 -05:00
setup.cfg baseline: abstract_pypit 0.0.1 (from PyPI sdist) 2026-06-26 20:04:33 -05:00
setup.py Release ==0.0.2 @ 2026-06-27 06:53:48 UTC 2026-06-27 01:53:48 -05:00

abstract_pypit

One-command PyPI publisher + GitHub pusher.

Finds the next free version above whatever is on PyPI, bumps setup.py and pyproject.toml, builds sdist + wheel, uploads to PyPI via twine, commits and pushes to GitHub, then syncs the local install — all in one call.

Zero dependencies outside the stdlib except requests.

Install

pip install abstract_pypit

Usage

# from any package directory that has setup.py + pyproject.toml:
from pypit import runit
runit()
# or from the command line:
abstract-pypit

Credentials

PyPI: twine reads ~/.pypirc or TWINE_USERNAME / TWINE_PASSWORD env vars.

GitHub: create pypit/src/envs/.env on the machine running pypit:

GITHUB_OWNER_1=your-username
GITPASS_1=<your-github-pat>
GITHUB_OWNER_2=your-org
GITPASS_2=<org-github-pat>

SSH key at ~/.ssh/github/githubssh_nopass must be registered with GitHub.

Per-package config

Add to the package's own pyproject.toml:

[tool.pypit]
github_owner = "your-org-or-username"   # which org/user owns the repo
github_push  = true                      # set false to skip GitHub entirely

License

MIT