Skip to main content

Python Program Stability Score

Project description

pypss

PyPI version Downloads Python Versions License: MIT Docs Status Code Style: Ruff Type Checked: Mypy Tests Coverage

Python systems often fail not because they are slow — but because they are unstable. pypss gives you the first metric that measures runtime flakiness, reliability, and stability in a single score.

A zero-config runtime stability analyzer that scores your Python program’s reliability (0–100).


💡 Why Use pypss?

Real Benefits for Your Engineering Team

Benefit Impact Example
📉 Catch Flakiness Detect intermittent issues early Identify jittery API calls before production
📊 Quantify Reliability A single score for stability "Service A has a PSS of 92, Service B is 45"
🚀 CI/CD Gates Block unstable builds automatically Fail build if PSS < 80
🧠 Memory Insights Spot uncontrolled growth Detect memory leaks in long-running jobs
⚡ Performance Consistency Measure variance, not just speed Ensure p95 latency is stable under load
🔧 Zero Config Works out of the box Just add @monitor_function and run

🤔 When Should You Use pypss?

  • Flaky test suites
  • Microservices with unpredictable latency
  • Long-running ETL jobs with memory uncertainty
  • API clients with intermittent failures
  • CI pipelines needing release gating
  • Any project where “performance varies a lot”

🏗️ High-Level Architecture

+-------------------------+
|   Instrumentation       |  (@monitor_function, etc.)
| (Your Code)             |
+-----------|-------------+
            | (Traces)
            v
+-----------|-------------+
|   Trace Collector       |  (In-Memory Buffer)
+-----------|-------------+
            |
            v
+-----------|-------------+
|   PSS Analyzer          |  (5 Stability Scores)
+-----------|-------------+
            | (Report)
            v
+-----------|-------------+
|   Reporting             |  (CLI, JSON, HTML)
+-------------------------+

📚 Documentation

For full documentation, please visit our ReadTheDocs page.

  • :package: Installation <docs/source/installation.rst>_
  • :zap: Quick Start <docs/source/quick_start.rst>_
  • :rocket: Key Features <docs/source/features.rst>_
  • :chart_with_upwards_trend: Benchmarks & Overhead <docs/source/benchmarks.rst>_
  • :scroll: Sample PSS Reports <docs/source/reports.rst>_
  • :bar_chart: Interactive Dashboard <docs/source/dashboard.rst>_
  • :gear: Configuration <docs/source/configuration.rst>_
  • :computer: CLI Usage <docs/source/cli_usage.rst>_
  • :date: Historical Trends & Regression Detection <docs/source/history_regression.rst>_
  • :link: Integrations <docs/source/integrations.rst>_
  • :balance_scale: Understanding the Metrics <docs/source/metrics_explained.rst>_
  • :puzzle_piece: Plugin System & Extensions <docs/source/plugins.rst>_
  • :control_knobs: Adaptive Sampling Modes <docs/source/adaptive_sampling.rst>_

🔒 Safety for Production Use

Designed for minimal overhead and safe integration into production environments.

⚖️ Comparison with Existing Tools

Tool Purpose pypss Difference
pytest Unit/Integration testing Measures stability during tests, not just pass/fail.
timeit/cProfile Performance measurement (speed) Measures consistency (jitter), not just average speed.
memory-profiler Memory usage analysis Focuses on stability and spikes, not just total allocation.
pypss Holistic Stability Scoring Combines timing, memory, errors, and more into a single reliability score.

🛠️ Development

We use make to manage common development tasks.

make install     # Install dependencies
make test        # Run tests with coverage
make lint-fix    # Auto-fix linting issues
make check       # Run full suite (lint, type-check, test)
make docs        # Build HTML documentation

🤝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

👥 Contributors

Contributors

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • The Data Migration Company Team & Be-Wagile India Team for their support.
  • Inspired by the need for better observability in complex Python systems.

Package Name: pypss | CLI Command: pypss | Import: import pypss

TheDataMigrationCompany @2025 | BWI @2025

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

pypss-1.3.1.tar.gz (86.0 kB view details)

Uploaded Source

Built Distribution

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

pypss-1.3.1-py3-none-any.whl (99.4 kB view details)

Uploaded Python 3

File details

Details for the file pypss-1.3.1.tar.gz.

File metadata

  • Download URL: pypss-1.3.1.tar.gz
  • Upload date:
  • Size: 86.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pypss-1.3.1.tar.gz
Algorithm Hash digest
SHA256 04884b80362bd06146ff062a178a9c132d88394fefa14ddc1d99c2ecc03427ab
MD5 b424d204272021400a1aeb45cf29d57e
BLAKE2b-256 4957505b264c3bd05f83d75c1454975bd9c3b1bee28e1524d3db4c019885cdee

See more details on using hashes here.

File details

Details for the file pypss-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: pypss-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 99.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pypss-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9375fa93c9911a25ef4ba389d0e380d7c529e5723c0af34bf5764fb8edf6bad8
MD5 0d18052588c9a38c41323c5befdee799
BLAKE2b-256 11680d9e323c5eaeb3e4d18c260cf96d4d7b9c75aec748d691c9ea38c3f2fdeb

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