Skip to main content

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

  1. Install dependencies (including pre-commit):

    uv sync --all-groups
    
  2. 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:

  • pevx uses the default AWS profile (from ~/.aws/credentials or ~/.aws/config) unless otherwise specified

  • To use a different profile, set the AWS_PROFILE environment 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 set TARGET_ACCOUNTS env 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

  1. Create a new file in the src/pevx/commands/ directory for your command
  2. Implement your command using Click
  3. 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:

  1. Automated Testing: Runs tests on Python 3.12
  2. Semantic Versioning: Automatically determines version from commit messages
  3. 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)

Source distribution for pevx 1.6.3
File Size Uploaded
pevx-1.6.3.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pevx 1.6.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

2.0.0

2 release files

1.7.0

2 release files

This release

1.6.3 This release

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page