A modern Python development toolkit.
Project description
jbussdieker
A modern Python development toolkit with a modular plugin architecture โ from project scaffolding to AI-powered commits with automated releases.
๐ What it does
jbussdieker is your complete Python development toolkit built with a modular plugin system:
Core CLI Framework:
- โ Lightweight CLI with plugin discovery via entry points
- โ Configurable logging and settings management
- โ Extensible command system for plugins
Plugin Ecosystem:
- โ
jbussdieker-projectโ Project scaffolding and templates - โ
jbussdieker-commitโ AI-powered conventional commit messages - โ
jbussdieker-appโ Application framework and utilities - โ
jbussdieker-serviceโ Service layer and API utilities - โ
jbussdieker-storageโ Data storage and persistence layer - โ
jbussdieker-configโ Configuration management (core dependency)
Modern Python Development:
- โ release-please workflow for versioning and changelogs
- โ Publish to PyPI using Trusted Publishers
- โ GitHub Actions CI for linting, typing, tests, and publishing
No tokens. No manual uploads. Just push, merge, and release.
๐ฆ Install
Core CLI
pip install jbussdieker
With all plugins
pip install jbussdieker[all]
Individual plugins
# Project scaffolding
pip install jbussdieker[project]
# AI-powered commits
pip install jbussdieker[commit]
# Application framework
pip install jbussdieker[app]
# Service layer
pip install jbussdieker[service]
# Storage layer
pip install jbussdieker[storage]
๐ Plugin Ecosystem
jbussdieker-project โ Project Scaffolding
Create modern Python projects with zero friction:
jbussdieker project create myproject
cd myproject
git init
git commit --allow-empty -m "chore: init"
gh repo create --source=. --private --push
git add .
git commit -m "feat: initial commit"
git push
Features:
- โ
pyproject.tomlusing PEP 621 - โ GitHub Actions CI for linting, typing, tests, and publishing
- โ
Makefilewith simple install, lint, test commands - โ
.gitignorefor Python best practices - โ release-please workflow for versioning and changelogs
- โ Publish to PyPI using Trusted Publishers
jbussdieker-commit โ AI-Powered Commits
Generate conventional commit messages using AI:
# Stage your changes
git add .
# Generate and edit a commit message
jbussdieker commit
# Or preview the message without committing
jbussdieker commit --dry-run
Features:
- ๐ 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_KEYenvironment variable - Staged changes in your git repository
- Your preferred editor (defaults to
vim)
jbussdieker-app โ Application Framework
Build modern Python applications with best practices:
jbussdieker app create myapp
cd myapp
# Start building your application
Features:
- ๐๏ธ Application scaffolding with proper structure
- ๐ง Configuration management integration
- ๐ฆ Dependency management and packaging
- ๐งช Testing framework setup
- ๐ Deployment-ready structure
jbussdieker-service โ Service Layer
Build robust service-oriented applications:
jbussdieker service create myservice
cd myservice
# Build your service layer
Features:
- ๐ Service discovery and registration
- ๐ก API utilities and middleware
- ๐ Authentication and authorization helpers
- ๐ Monitoring and health checks
- ๐ Scalable service architecture
jbussdieker-storage โ Data Storage
Manage data persistence across different backends:
jbussdieker storage create mystorage
cd mystorage
# Configure your storage layer
Features:
- ๐พ Multi-backend storage support
- ๐ Data migration utilities
- ๐ Query builders and ORM helpers
- ๐ก๏ธ Data validation and sanitization
- ๐ Performance monitoring
jbussdieker-config โ Configuration Management
Centralized configuration for all your applications:
# Configuration is automatically managed
# across all jbussdieker plugins
Features:
- โ๏ธ Environment-based configuration
- ๐ Secure secret management
- ๐ YAML/TOML/JSON support
- ๐ Hot-reload capabilities
- ๐งช Test configuration helpers
โ 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
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.
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.
๐งน 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
- โ Use Squash merge only โ keeps your history tidy and is required for a linear commit history. See why release-please recommends this.
- โ Enable Auto-delete branches after merge
๐ข Example workflow
# 1๏ธโฃ Scaffold the project locally
jbussdieker project 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 ๐
๐ Plugin Development
Want to extend jbussdieker with your own plugins? The CLI uses entry points for plugin discovery:
# In your plugin's setup.py or pyproject.toml
[project.entry-points."jbussdieker.cli"]
myplugin = "myplugin.cli:register"
# myplugin/cli.py
def register(subparsers):
parser = subparsers.add_parser("myplugin", help="My plugin command")
parser.add_argument("--option", help="My option")
parser.set_defaults(func=myplugin_command)
def myplugin_command(args, config):
# Your plugin logic here
pass
๐ 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 with a modular, extensible toolkit.
Enjoy! ๐
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jbussdieker-0.21.1.tar.gz.
File metadata
- Download URL: jbussdieker-0.21.1.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
881ab4db4b2a45ecc128836d8e293645d07992fd62bb4ca05fd35d2325e585f1
|
|
| MD5 |
e48a9cb426b09d67b90383a466c1f598
|
|
| BLAKE2b-256 |
54efcb906632a58a6d60841f3507a6d253362023951c5b6f0f8f2812599009a6
|
File details
Details for the file jbussdieker-0.21.1-py3-none-any.whl.
File metadata
- Download URL: jbussdieker-0.21.1-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3be7aeeb59c0dd61ec8b0663849322f6c5bf21f14ad2eff0a399b80542fb8eaf
|
|
| MD5 |
3a915c63cd9241df97aa2ea33d1a46d0
|
|
| BLAKE2b-256 |
410568e8704cc3a941ab8d7e1149c59fa9a4acd0cd4992ef3653e632847f1cab
|