paperless-ngx (2.20.15)
Installation
pip install --index-url paperless-ngxAbout this package
A community-supported supercharged document management system: scan, index and archive all your physical documents
Wheeler
A containerized Python wheel builder and publisher for private registries.
Built on Alpine Linux, powered by uv, and tailored for publishing packages to Forgejo PyPI registries.
Overview
Wheeler packages Python applications into distributable wheels inside a reproducible Docker container. It handles dependency resolution, wheel building, and upload to private package registries — all in one image.
Key components:
| Component | Purpose |
|---|---|
uv |
Fast Python package installer and resolver |
uv-migrator |
Migrate legacy Python projects to uv |
buildah / podman |
OCI-compliant image building and pushing |
twine |
Secure wheel upload to PyPI-compatible registries |
Quick Start
Build the image
docker build -t wheeler:latest .
Run the builder
docker run --rm \
-v $(pwd):/build \
-e owner=your-org \
-e username=your-user \
-e password=your-token \
wheeler:latest
The builder will:
- Export locked dependencies from
pyproject.toml/uv.lock - Build wheels for all packages
- Upload them to the configured Forgejo PyPI registry
Project Layout
.
├── Dockerfile # Multi-stage Alpine-based builder image
├── builder.sh # Entrypoint script (export, build, upload)
├── cliff.toml # git-cliff changelog configuration
├── pypirc.tmpl # twine/auth template with envsubst
├── pyproject.toml # Primary project dependencies (PowerDNS-Admin)
├── pyproject.toml.paperless # Alternate project profile (paperless-ngx)
├── .forgejo/workflows/ # CI/CD workflow definitions
│ └── build_image.yml # Automated image build & registry push
└── .pre-commit-config.yaml # Conventional commit enforcement
Contributing
This repository follows Conventional Commits for automated changelog generation and versioning.
Commit Message Format
<type>(<scope>): <short summary>
[optional body]
[optional footer(s)]
Common types:
| Type | Description |
|---|---|
feat |
New feature or significant change |
fix |
Bug fix |
docs |
Documentation-only changes |
style |
Code style changes (formatting, no logic change) |
refactor |
Code restructuring without feature changes |
perf |
Performance improvements |
test |
Adding or correcting tests |
chore |
Maintenance tasks (build, deps, CI) |
Scopes used in this project:
alpine— Alpine Linux base image versionuv— uv tool version or configurationpython— Python runtime or package changesdocker— Dockerfile or image build changesci— Forgejo workflow or CI configurationchangelog— Changelog or release tooling
Pre-commit Hooks
Install hooks to enforce conventions locally:
pre-commit install
pre-commit install --hook-type commit-msg
Hooks include:
commitizen— Validate commit messagesconventional-pre-commit— Commit-msg lintinggitleaks— Secret scanningyamlfmt— YAML formatting
Changelog
The changelog is generated with git-cliff:
git-cliff --config cliff.toml --output CHANGELOG.md
CI/CD
The .forgejo/workflows/build_image.yml workflow:
- Builds the Wheeler image on every push to
main - Tags images with the Alpine version (e.g.,
3.24.0,3.24,3) - Pushes to
git.desord.re/desordre/forgejo/wheeler
License
SPDX-License-Identifier: MIT