Skip to main content

A Python-first command runner

Project description

drawing pyplz

Python-first Friction-free Task Runner.

⚠️ Please note ⚠️

pyplz is currently in early development. While it is already usable, some features are still missing, incomplete or not fully documented. Feel free to open an issue if you have any feedback or suggestions.

build coverage

Python Versions PyPI - Version Downloads

Ruff

pip install pyplz

Why use a task runner?

A task runner automates tasks like building, testing, and deploying, making them faster and more reliable. It ensures consistent execution and simplifies collaboration by providing clear, reusable commands.

Why pyplz?

pyplz aims to be a friction-free task runner. While many task runners simplify development, they can also add friction with unfamiliar syntax, extra tools, or difficult integrations.

🐍 Python-first: Leverage familiar Python syntax—if you know Python, you know pyplz.

🤗 Author-friendly: Intuitive and ready to use out of the box, with built-in support for development & debugging.

💻 CLI-compliant: Enjoy a command-line interface that adheres to GNU and POSIX conventions, ensuring a seamless terminal experience.

🔗 Integration-ready: Whether you're running Python locally, in containers, or in a CI/CD pipeline, pyplz fits seamlessly into your environment.

📚 Documented: Access extensive documentation and automatically generated task-specific help, ensuring you always have the information you need.

Getting Started

Installation

  1. Using python 3.9 or later, run pip install pyplz
  2. Create a plzfile.py in the root of your project
  3. Using your terminal, execute plz in the root of your project

!!! tip "Development Dependencies" For best practice, include development dependencies (e.g., pytest) in a dedicated file (such as requirements.dev.txt). Add pyplz to your dev dependencies to ensure it's available out of the box for every project contributor.

Quick Start

Create your first task by making a plzfile.py in your project root:

from pyplz import plz

@plz.task()
def test():
    """Test the project."""
    plz.run("pytest")

To add options for test unit tests only (e.g., without integration tests), or adding test coverage, update your task as follows:

from pyplz import plz

@plz.task()
def test(unit_only: bool = False, coverage: bool = False):
    """Test the project."""
    marks = "-m unit" if unit_only else ""
    cov = "--cov" if coverage else ""
    plz.run(f"pytest {marks} {cov}")

You can view task-specific help with:

 plz test -h
usage: plz [-h] [--unit-only] [--coverage]

Test the project.

system options:
  -h, --help   Show this help message and exit.

optional arguments:
  --unit-only  Set unit_only to True (bool, default: false)
  --coverage   Set coverage to True (bool, default: false)

Now, your test task can continue to evolve, without needing some special documentation in a separate file, or a slack message to update your team members!

Read through our documentation to learn how you can use environment variables, define task dependencies and much more!

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

pyplz-0.12.2.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

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

pyplz-0.12.2-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file pyplz-0.12.2.tar.gz.

File metadata

  • Download URL: pyplz-0.12.2.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyplz-0.12.2.tar.gz
Algorithm Hash digest
SHA256 985d768905d16d3055586b8b96c35ee6a03ba1c2a8fe902c20e96d69df9d8714
MD5 7a51e04915120436bb41a55187fe9596
BLAKE2b-256 412e87433ed66393c3fa2e35a79f96e83b7ec66a8beb886da7d1e1e9d91fe771

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyplz-0.12.2.tar.gz:

Publisher: package_release.yml on oribarilan/pyplz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyplz-0.12.2-py3-none-any.whl.

File metadata

  • Download URL: pyplz-0.12.2-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyplz-0.12.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3c43d849fe0456877fd4c4744c9269bf103ac9a8b261033bd962a313456b2508
MD5 4dbb20d3f8cf877cbb3a44cd23bdcde3
BLAKE2b-256 8a31496aa4e3dac66a06772411eb6b5059e00890cb783a630271068713c87c46

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyplz-0.12.2-py3-none-any.whl:

Publisher: package_release.yml on oribarilan/pyplz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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