Prudentia CLI (pevx)
A development CLI tool for Prudentia internal developers.
Prerequisites
Git Hooks
This project uses pre-commit to enforce code quality and commit standards.
Configured Hooks
- pre-push: Validates that branch names contain a JIRA link for the PRVS project
- commit-msg: Ensures commit messages contain a JIRA link for the PRVS project
Setup
-
Install dependencies (including pre-commit):
uv sync --all-groups
-
Install hooks:
uv run pre-commit install --install-hooks
Manual Hook Management
- Run hooks manually:
uv run pre-commit run --all-files - Update hooks:
uv run pre-commit autoupdate
AWS CLI
The AWS CLI is a system requirement for pevx. Install it following the official AWS CLI installation guide.
AWS Configuration
Configure AWS CLI with Prudentia SSO:
aws configure sso
Follow the prompts to set up SSO authentication with your Prudentia credentials.
AWS Profile Behavior:
-
pevxuses the default AWS profile (from~/.aws/credentialsor~/.aws/config) unless otherwise specified -
To use a different profile, set the
AWS_PROFILEenvironment variable:export AWS_PROFILE=my-profile pevx uv sync
Or inline:
AWS_PROFILE=my-profile pevx uv sync
Installation
From PyPI (when published)
pip install pevx
Development Mode
Clone the repository and install in development mode using uv:
git clone https://github.com/Prudentia-Sciences/pevx
cd pevx
uv sync
Usage
After installation, you can use the CLI with the pevx command:
# Show help
pevx --help
# Show version
pevx --version
Available Commands
uv [args]
Proxy to uv with AWS CodeArtifact authentication.
pevx uv add [package] --domain custom-domain --domain-owner 123456789 --repo custom-repo --region us-west-2
Important: This command requires access to the Prudentia 'Shared-Infra' AWS account. Ensure your AWS profile is configured with appropriate permissions for this account.
Default values:
- Domain: prudentia-sciences
- Domain Owner: 728222516696
- Repository: pypi-store
- Region: us-east-1
docker [args]
Proxy to docker with AWS ECR authentication.
aws-each [args]
Assume a role in each target AWS account using OIDC and run an AWS CLI command.
pevx aws-each --accounts '["111111111111","222222222222"]' s3 ls
Options:
--accounts: JSON list of AWS account IDs (required, or setTARGET_ACCOUNTSenv var)--role-name: IAM Role name to assume (default:github-actions-backend-role)--continue-on-error/--fail-fast: Continue with remaining accounts on failure
pyclient
Generate a Python client from a FastAPI OpenAPI spec.
pevx pyclient --app-path app.main:app
Options:
--pyproject: Path to pyproject.toml (default:pyproject.toml)--app-path: Python path to FastAPI app (default:app.main:app)
Development
Adding New Commands
- Create a new file in the
src/pevx/commands/directory for your command - Implement your command using Click
- Import and register your command in
src/pevx/cli.py
Example:
# In src/pevx/commands/my_command.py
import click
@click.command()
def my_command():
"""Command description."""
click.echo("Running my command")
# In src/pevx/cli.py, add:
from pevx.commands.my_command import my_command
cli.add_command(my_command)
CI/CD and Versioning
This project uses semantic-release for automated versioning:
- Automated Testing: Runs tests on Python 3.12
- Semantic Versioning: Automatically determines version from commit messages
- Automated Publishing: Builds and publishes to PyPI on new versions
Commit Message Format
Use conventional commit messages:
<type>(<scope>): <description>
Common types:
fix: Bug fixes (PATCH bump)feat: New features (MINOR bump)feat!,fix!: Breaking changes (MAJOR bump)
Metadata
Release files for pevx 1.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pevx-1.6.3.tar.gz | 8.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pevx-1.6.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.1 kB
Release files / pevx-1.6.3.tar.gz
| Download URL | pevx-1.6.3.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0abd0d79d8e535d8a837452091a389d9068536738b2854fc3c37ca777ae23ae2
|
|
BLAKE2b-256 checksum How to use checksums |
283e7b10b645c8f3d1eb9d673a731dce2a641974f3b73e6e2c5d5f4515eea03c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pevx-1.6.3-py3-none-any.whl
| Download URL | pevx-1.6.3-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f269b54343770f2f2ec3f32b53abf9d56bd036a1ee15662297b45b3edbd1d667
|
|
BLAKE2b-256 checksum How to use checksums |
535541fe11085a83fdaa22c77074f5dcf9e75a80a8d4b248b73795eb393f0f8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|