Skip to main content

Lightweight automation tool designed to streamline the transition from development to distribution.

Project description

pyforge-deploy

Note: This is a personal/educational project. It is not intended to compete with established tools

License: MIT

pyforge-deploy is a lightweight automation CLI for Python projects, streamlining the transition from development to distribution. It automates Docker image creation, version management, and PyPI publishing with a simple, intelligent interface.


Features

  • Docker Integration: Generates a project-specific Dockerfile from a Jinja2 template and detects the required Python version and dependencies.
  • Version Management: Increments the project version (patch, minor, major) and verifies the new version is greater than the latest release on PyPI.
  • PyPI Deployment: Builds source and wheel distributions and uploads them to PyPI or TestPyPI using token authentication.
  • Dependency Detection: Scans for dependencies using pyproject.toml, requirements.txt, or import analysis.
  • CLI Commands: Provides commands for building, deploying, and inspecting the project.

Installation

Available on PyPI: https://pypi.org/project/pyforge-deploy/.

pip install pyforge-deploy

Note: Docker must be installed and running for Docker-related features.


Usage

Get a list of all available commands and options:

pyforge-deploy --help

Common Commands

  • Initialize GitHub Action workflow:

    pyforge-deploy init
    
  • Build a Docker Image:

    pyforge-deploy docker-build --entry-point src/pyforge_deploy/cli.py --image-tag my-app:1.0.0
    
  • Deploy to PyPI (Test):

    pyforge-deploy deploy-pypi --test --bump patch
    
  • Deploy a Specific Version:

    pyforge-deploy deploy-pypi --version 2.1.0
    
  • Show Detected Dependencies:

    pyforge-deploy show-deps
    
  • Show Project Version:

    pyforge-deploy show-version
    

Configuration

For PyPI publishing, provide an API token. Create a .env file in your project root:

PYPI_TOKEN=pypi-your-token-here

Or export PYPI_TOKEN as an environment variable in your shell or CI/CD system.


How It Works

  • Version Engine: Resolves project version from pyproject.toml, __about__.py, or .version_cache. Fetches latest PyPI version to avoid conflicts, writes final version to src/<package_name>/__about__.py.
  • Docker Builder: Detects dependencies and Python version, renders Dockerfile.j2, and builds the image.
  • PyPI Distributor: Cleans build artifacts, runs python -m build, uploads distributions with twine.

Testing

Run the full test suite with:

pytest

Unit tests cover the CLI and builder components, located in the tests/ directory.

License

MIT License. See LICENSE for details..

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

pyforge_deploy-0.3.1.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

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

pyforge_deploy-0.3.1-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file pyforge_deploy-0.3.1.tar.gz.

File metadata

  • Download URL: pyforge_deploy-0.3.1.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for pyforge_deploy-0.3.1.tar.gz
Algorithm Hash digest
SHA256 fdde6137cfaf4b9e96d3d939a8c3dd59c1b0f6e36c7a315dce3045148f898e45
MD5 5955e929a3f86a9ad00459e2d4c7cbc1
BLAKE2b-256 0bc842caa9a010e7559e2ba17b145f72f11ab1a2793b85cf9aab5c6bed07c445

See more details on using hashes here.

File details

Details for the file pyforge_deploy-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: pyforge_deploy-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for pyforge_deploy-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e9a36acc93e0edd440f718e8488d3d11d4222ac1e25270fd7cc4ce59d59814d8
MD5 d7d2b6d7ad470ece12cfd6bca44a070f
BLAKE2b-256 3ca9b08a97ff1d6a5f8c472eaf674ba954d395421937876aba0cf530d81eee82

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