Skip to main content

A helpful CLI and project generator.

Project description

python-jbussdieker

A modern Python project generator — zero to PyPI with automated releases.

🚀 What it does

jbussdieker scaffolds a best-practice Python project with:

  • pyproject.toml using PEP 621
  • ✅ GitHub Actions CI for linting, typing, tests, and publishing
  • Makefile with simple install, lint, test commands
  • .gitignore for Python best practices
  • release-please workflow for versioning and changelogs
  • ✅ Publish to PyPI using Trusted Publishers

No tokens. No manual uploads. Just push, merge, and release.

📦 Install

pip install jbussdieker --upgrade

🧑‍💻 Create a new project

jbussdieker create myproject
cd myproject
git init
git add .
git commit -m "feat: initial commit"
gh repo create --source=. --public --push

✅ Set up automated releases

1️⃣ Ensure GitHub Actions has required permissions

For release-please to work, your repository’s Actions must have write access and permission to create PRs.

  • Allow workflows to write to your repo:

    • Go to your repo’s Settings → Actions → General (GitHub Actions settings)
    • Under Workflow permissions, select Read and write permissions
  • Allow Actions to create PRs:

    • In the same Actions settings
    • Check Allow GitHub Actions to create and approve pull requests

These are required so the workflows can open changelog PRs and publish your releases automatically.

2️⃣ Add a Trusted Publisher on PyPI

Configure PyPI to trust your GitHub repo for publishing

  • Visit PyPI Publishing

  • Scroll down to “Add a new pending publisher”

  • Fill out:

    • GitHub Owner → your username or org

    • Repository Name → your repo name (myproject)

    • Workflow Name

      publish.yml
      
    • Environment Name

      release
      
  • Click Add.

Note: The generated publish.yml uses an environment named release by default. You can edit or remove this later — just keep it in sync with your PyPI settings.

3️⃣ Push your first tag

Once release-please opens a version bump PR, merging it will automatically publish your package. No API keys needed — PyPI trusts your GitHub Action.

Want to learn more? See the release-please GitHub repo.

🧹 Local development

Your project includes a simple Makefile:

make venv    # create .venv
make install # pip install -e .
make lint    # black + mypy
make format  # run black
make test    # run unittest
make clean   # remove .venv

🔒 Recommended GitHub repo settings

📢 Example workflow

# 1. Scaffold
jbussdieker create myproject

# 2. Init and push
cd myproject
git init
git add .
git commit -m "chore: initial commit"
gh repo create --source=. --public --push

# 3. Configure GitHub Actions permissions (required!)
# 4. Link Trusted Publisher on PyPI
# 5. Merge your first release-please PR
# 6. Done! 🚀

📝 License

This project is licensed under MIT.

🎉 Ship faster

No config sprawl. No secrets rotation. Just git push and publish Python packages the modern way.


Enjoy! 🚀

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

jbussdieker-0.11.4.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

jbussdieker-0.11.4-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file jbussdieker-0.11.4.tar.gz.

File metadata

  • Download URL: jbussdieker-0.11.4.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for jbussdieker-0.11.4.tar.gz
Algorithm Hash digest
SHA256 bdd817d21a832a82ff7d63c15c352870ec53623fb11efa80f9d783731b20d1f3
MD5 69185d65e7be674d7452d3edba1d9747
BLAKE2b-256 6769ebaf7d5f738350eea20bc4f3ef21004de6338271cc7d459ffb3321f59dbf

See more details on using hashes here.

File details

Details for the file jbussdieker-0.11.4-py3-none-any.whl.

File metadata

  • Download URL: jbussdieker-0.11.4-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for jbussdieker-0.11.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d3c986635df424a41322d5d815064028a343bc844c505af5c810c81cb1ab17b5
MD5 ec3e6aeafb047f432a20214dc2069e3d
BLAKE2b-256 ce335a1f50787615c5ece1686847fcbeb66a3455cb56a491feefd765eaf4110e

See more details on using hashes here.

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