A Python-first command runner
Project description
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.
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
- Using python 3.9 or later, run
pip install pyplz - Create a
plzfile.pyin the root of your project - Using your terminal, execute
plzin 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
985d768905d16d3055586b8b96c35ee6a03ba1c2a8fe902c20e96d69df9d8714
|
|
| MD5 |
7a51e04915120436bb41a55187fe9596
|
|
| BLAKE2b-256 |
412e87433ed66393c3fa2e35a79f96e83b7ec66a8beb886da7d1e1e9d91fe771
|
Provenance
The following attestation bundles were made for pyplz-0.12.2.tar.gz:
Publisher:
package_release.yml on oribarilan/pyplz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyplz-0.12.2.tar.gz -
Subject digest:
985d768905d16d3055586b8b96c35ee6a03ba1c2a8fe902c20e96d69df9d8714 - Sigstore transparency entry: 192342420
- Sigstore integration time:
-
Permalink:
oribarilan/pyplz@a98335807960f6764fe70f1de25b6336831a123e -
Branch / Tag:
refs/tags/v0.12.2 - Owner: https://github.com/oribarilan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
package_release.yml@a98335807960f6764fe70f1de25b6336831a123e -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c43d849fe0456877fd4c4744c9269bf103ac9a8b261033bd962a313456b2508
|
|
| MD5 |
4dbb20d3f8cf877cbb3a44cd23bdcde3
|
|
| BLAKE2b-256 |
8a31496aa4e3dac66a06772411eb6b5059e00890cb783a630271068713c87c46
|
Provenance
The following attestation bundles were made for pyplz-0.12.2-py3-none-any.whl:
Publisher:
package_release.yml on oribarilan/pyplz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyplz-0.12.2-py3-none-any.whl -
Subject digest:
3c43d849fe0456877fd4c4744c9269bf103ac9a8b261033bd962a313456b2508 - Sigstore transparency entry: 192342422
- Sigstore integration time:
-
Permalink:
oribarilan/pyplz@a98335807960f6764fe70f1de25b6336831a123e -
Branch / Tag:
refs/tags/v0.12.2 - Owner: https://github.com/oribarilan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
package_release.yml@a98335807960f6764fe70f1de25b6336831a123e -
Trigger Event:
release
-
Statement type: