Skip to main content

PertDist

CI (main) PyPI version

PertDist is a SciPy-style implementation of the Beta-PERT distribution.

Overview

The package exposes a PERT class with an API modeled after scipy.stats distributions. It supports scalar and array-based parameters and computes both distribution functions and descriptive statistics.

Installation

pip install pertdist

Python Version

  • Python >= 3.11

Support

Quick Start

from pert import PERT

dist = PERT(min_val=10, ml_val=190, max_val=200, lamb=4.0)

samples = dist.rvs(size=10_000, random_state=42)
mean = dist.mean
median = dist.median()
p90 = dist.ppf(0.90)

Implemented API

Constructor

  • PERT(min_val, ml_val, max_val, lamb=4.0)

Properties / Attributes

  • a, b, c, lamb
  • alpha, beta
  • mean, var, skew, kurt
  • range (property)

Methods

  • median()
  • rvs(size=1, random_state=None) where size can be int or tuple[int, ...]
  • pdf(x), logpdf(x)
  • cdf(x), logcdf(x)
  • sf(x), logsf(x)
  • ppf(q), isf(q)
  • interval(alpha)
  • ci(z)
  • stats()

Input Validation

The constructor enforces:

  • lamb > 0
  • strict ordering for each element: min_val < ml_val < max_val
  • no adjacent equal values (min_val == ml_val or ml_val == max_val)

Testing

The project includes a pytest suite under tests/, including coverage for:

  • initialization and validation
  • distribution identities and boundary behavior
  • sampling behavior and reproducibility
  • vectorized inputs/outputs
  • median, ci, and __repr__

Run tests with:

uv run pytest -q

Development Setup

Install development dependencies:

uv sync --all-extras --dev

Run lint and tests:

uv run ruff check .
uv run pytest -q

Roadmap

  • Add additional SciPy-like analogues:
    • moment
    • entropy
    • fit
    • expect
    • std

Version History

See VersionHistory.md.

Contributing

  • Community and core-developer contribution workflow is documented in CONTRIBUTING.md.
  • Repository guardrails and policy details are defined in AGENTS.md.

Release Process (High-Level)

  • Pull requests from release/* and hotfix/* into main run publish dry-run checks.
  • Merged release/* / hotfix/* PRs to main trigger publish, tagging, release metadata, and post-release verification workflows.
  • Recovery actions (including yank/unyank verification with runbook guidance) are run manually when needed.

Reporting Issues

  • Bug reports and feature requests: GitHub Issues
  • Security-sensitive concerns can be reported privately using GitHub repository security reporting.

Repository Policy

High-level development policy summary (full details in AGENTS.md):

  • GitFlow is used: feature/* -> dev, release/*|hotfix/* -> main, with PR-based merges.
  • Community contributions are welcome through feature/* -> dev pull requests; release/* and hotfix/* flows are core-developer managed.
  • CI runs on PRs to dev and main; release dry-runs run on release/*/hotfix/* PRs to main; release publish runs after merge to main.
  • Semantic Versioning is required (MAJOR.MINOR.PATCH) and versioning must be intentional.
  • Some defaults are guidance (for example draft PR by default) and developer discretion is explicitly supported.
  • uv.lock is developer-local and is not tracked in this repository.
  • Functional library code is authored manually.
  • AI tooling may assist with test authoring, documentation drafting/editing, GitHub Actions/workflow authoring and maintenance, and development guidance for planning/decision support.

For release notes and historical change context, see VersionHistory.md.

License

This project is licensed under the GNU GPL. See LICENSE.

Metadata

Release files for pertdist 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pertdist 0.1.5
File Size Uploaded
pertdist-0.1.5.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pertdist 0.1.5
File Interpreter ABI Platform
pertdist-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 10.4 kB

Release files / pertdist-0.1.5.tar.gz

Download URL pertdist-0.1.5.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3dd62594a3bf61f95d74ee80f658ff3daced4a55746efbae76c670225f5550fb
BLAKE2b-256 checksum
How to use checksums
d377310740819cbf82fdcbf50448c7e74e4201f0054b12237f3f509a6ba8ff01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pertdist-0.1.5-py3-none-any.whl

Download URL pertdist-0.1.5-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ebcb9dee65eda03fa7f646b91cbdf2e123df9ee583190c6e97313bab84700bcf
BLAKE2b-256 checksum
How to use checksums
d9b4e863200404fa24c452ec3338289cb26a46ae64dacbd46c1ac0ce54db0c16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

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