Skip to main content

A modern Python development toolkit.

Project description

jbussdieker

A modern Python development toolkit — from project scaffolding to AI-powered commits with automated releases.

🚀 What it does

jbussdieker is your complete Python development toolkit:

Project Scaffolding:

  • 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

AI-Powered Development:

  • AI-powered commit messages with conventional commit format
  • ✅ Analyzes your changes and project context
  • ✅ Opens your editor for review and editing

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 commit --allow-empty -m "chore: init" # creates initial branch so you can push & configure settings
gh repo create --source=. --private --push
# ⏸️ IMPORTANT: Before pushing real code,
# ensure GitHub Actions permissions are set as described below!
git add .
git commit -m "feat: initial commit"
git push
# Make sure to configure PyPI Trusted Publisher before merging the release PR

🤖 AI-Powered Commits

jbussdieker can generate conventional commit messages using AI! Just stage your changes and let the AI craft the perfect commit message.

Install with AI support

pip install jbussdieker[ai]

Generate commit messages

# Stage your changes
git add .

# Generate and edit a commit message
jbussdieker commit

# Or preview the message without committing
jbussdieker commit --dry-run

The AI will:

  • 📝 Generate conventional commit messages (feat, fix, docs, etc.)
  • 🔍 Analyze your staged changes and project context
  • ✏️ Open your editor for final review and editing
  • 🚀 Create the commit with your approved message

Requirements:

  • OpenAI API key in OPENAI_API_KEY environment variable
  • Staged changes in your git repository
  • Your preferred editor (defaults to vim)

Example workflow:

# Make your changes
echo "new feature" >> myfile.txt
git add myfile.txt

# Let AI generate the commit message
jbussdieker commit
# Opens editor with: "feat: add new feature to myfile.txt"
# Edit if needed, save and close to commit

✅ 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 the project locally
jbussdieker create myproject
cd myproject

# 2️⃣ Init the repo with an empty commit to push just the structure
git init
git commit --allow-empty -m "chore: init"  # ensures a branch exists for first push
gh repo create --source=. --public --push

# ⏸️ This step ensures your repo exists on GitHub first,
# so you can safely configure required Actions + PyPI before any workflows run!

# 3️⃣ Now pause — go to GitHub and:
#    ✅ Set Workflow permissions to Read & Write
#    ✅ Allow Actions to create & approve PRs
#    ✅ Add PyPI Trusted Publisher if you like

# 4️⃣ Add the actual files
git add .
# Optionally use AI-powered commits:
# jbussdieker commit
# Or traditional commit:
git commit -m "feat: initial code"
git push

# 5️⃣ Merge your first release-please PR 🚀

📝 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.21.0.tar.gz (19.0 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.21.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for jbussdieker-0.21.0.tar.gz
Algorithm Hash digest
SHA256 987a451da7b2d76c0d89344d76a77144dd10acba05e62a89bd0505f88c893aa9
MD5 e308c3a1d24d4b05d9f57598a94f88b8
BLAKE2b-256 4c6ec7d1cc3a24720f4dd2382eafc297de2271b66d37fdbe3e72e65749aa24c6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: jbussdieker-0.21.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 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.21.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e3da7b9a02f7d927ac04e8a0284f38772c9a963c8b26ebaa93abeb75731423c2
MD5 cf3d820fdfcbf3f867c48145a23cd4aa
BLAKE2b-256 5321dc88bd5eae280379f342b455cdd13b84606bf784131b238d1695b27540b8

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