Skip to main content

Prudentia CLI - Development tools for Prudentia internal developers

Project description

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)

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

pevx-1.6.1.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

pevx-1.6.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file pevx-1.6.1.tar.gz.

File metadata

  • Download URL: pevx-1.6.1.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pevx-1.6.1.tar.gz
Algorithm Hash digest
SHA256 0277ecd5a4e0041c304c33b02b504dcaac87bfeba86b9972941daff2a1f8ee63
MD5 f6dc8774c58fb9c202ef29dcaf643bc2
BLAKE2b-256 71ccefc9c16d8f158f5efa3764013f174eab66e23a03ca9f44c0ce4fef64fb09

See more details on using hashes here.

File details

Details for the file pevx-1.6.1-py3-none-any.whl.

File metadata

  • Download URL: pevx-1.6.1-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pevx-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1a54b482ef8b1f224356fc727b07860c983d5be2a8b4dbb067727e701167b996
MD5 1b441aad3460525e8867a3141277740b
BLAKE2b-256 d09d8d1c7105f6c8b1bab42944e24a5d533dec1cfba02f7228b5af56f28e6ea3

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