Python Program Stability Score
Project description
pypss
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
📄 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04884b80362bd06146ff062a178a9c132d88394fefa14ddc1d99c2ecc03427ab
|
|
| MD5 |
b424d204272021400a1aeb45cf29d57e
|
|
| BLAKE2b-256 |
4957505b264c3bd05f83d75c1454975bd9c3b1bee28e1524d3db4c019885cdee
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9375fa93c9911a25ef4ba389d0e380d7c529e5723c0af34bf5764fb8edf6bad8
|
|
| MD5 |
0d18052588c9a38c41323c5befdee799
|
|
| BLAKE2b-256 |
11680d9e323c5eaeb3e4d18c260cf96d4d7b9c75aec748d691c9ea38c3f2fdeb
|