Collection of Python 3 utility modules.
| Module | Description |
|---|---|
| k3color | Terminal text coloring |
| k3confloader | Configuration loader |
| k3dict | Dictionary operations |
| k3down2 | Markdown to media converter |
| k3fmt | String formatting utilities |
| k3fs | File system utilities |
| k3git | Git command wrapper |
| k3handy | Common function aliases |
| k3heap | Binary min heap |
| k3jobq | Concurrent job processor |
| k3log | Logging utilities |
| k3math | Math implementations |
| k3net | Network utilities |
| k3num | Human-readable numbers |
| k3pattern | Pattern matching |
| k3portlock | TCP port-based locks |
| k3priorityqueue | Priority queue |
| k3proc | Process utilities |
| k3rangeset | Range operations |
| k3shell | Shell command management |
| k3str | String utilities |
| k3thread | Thread utilities |
| k3time | Time conversion |
| k3txutil | Transaction helpers |
| k3ut | Unit test utilities |
This repository manages the pykit3 module collection.
- Clarity first: Write code for humans, prioritize readability
- Correctness over performance: Focus on getting it right first
- Simplicity: Throw away what can't be done in a day, rewrite simpler tomorrow
- No smart code: Write straightforward, maintainable code
- Comment WHY, not HOW: Let code explain itself
- Fork repository
- Create feature branch
- Implement changes
- Open pull request with rebase to main
- CI: GitHub Actions (
.github/workflows/python-package.yml) - Testing:
pytestframework - Documentation: Sphinx with Google docstring style
- Build docs:
make doc
__init__.pymust define__name__and__version__(semantic versioning)- GitHub metadata managed via
.github/settings.yml
- Update
__version__in__init__.py - Commit and run
make build_setup_py - Push tag to trigger PyPI upload via GitHub Actions
k3module/
├── .github/workflows/ # CI/CD configurations
├── _building/ # Build utilities
├── docs/ # Sphinx documentation
├── test/ # Unit tests
├── __init__.py # Module metadata and exports
├── main_module.py # Primary implementation
├── LICENSE
├── Makefile # Build commands
├── README.md # Auto-generated, do not edit
├── requirements.txt # Dependencies
└── setup.py # Auto-generated for releases
Key files:
docs/source/index.rst: Update for new APIsREADME.md: Generated viamake readmesetup.py: Generated viamake build_setup_py
- Fork from tmpl (template repository)
- Choose name starting with
k3 - Clone:
git clone git@github.com:pykit3/k3newmodule.git - Generate skeleton:
python ./_building/populate.py
-
Populate it:
python ./_building/populate.py. This step generates a skeleton of a module:python ./_building/populate.py git status ... new file: .github/settings.yml new file: __init__.py new file: docs/source/index.rst new file: package.json new file: packages.txt new file: requirements.txt new file: test-requirements.txt new file: test/test_doctest.py new file: test/test_k3whatever.pyExamine the generated files and add them and make your first commit!
applytmpl.sh copies changes from repo tmpl to current dir.
It should be run in a repo dir, e.g., k3zkutil:
./tmpl
./k3zkutil
To apply tmlp chagnes to every repo:
run-script-in-repos.sh repo-apply-tmpl.sh
- Document all modules, classes, and methods
- Write comprehensive tests