SunSolve P90 Analysis Client
A Python client library for connecting to the SunSolve P90 analysis service via gRPC. This package enables photovoltaic system P90 analysis with comprehensive uncertainty modeling and Monte Carlo simulations.
Features
- Direct gRPC Connection: Secure, efficient communication with SunSolve P90 service
- Uncertainty Analysis: Apply probability distributions to solar resource, system losses, and operational parameters
- Multi-Year Simulations: Support for both Typical Mean Year (TMY) and multi-year actual datasets
- Comprehensive Error Handling: Custom exception classes for different error scenarios
- Type Safety: Full type annotations for better development experience
- Weather Data Support: Load data from PVW files and CSV formats
Quick Start
Installation
pip install sunsolve-p90-client
Prerequisites
- Python 3.12+
- SunSolve account with P90 Analysis subscription (sign up here)
- Network access to SunSolve servers
Basic Usage
from pvl_p90_client.client.p90_client import P90Client
from pvl_p90_client.grpcclient.uncertaintyMessages_pb2 import DistributionInput
from pvl_p90_client.helpers import pvl_login
from pvl_p90_client.helpers.request_helpers import (
build_distribution,
build_gaussian_distribution,
build_request,
load_weather_data_from_pvw_file,
)
# Connect to the P90 analysis service
with P90Client() as client:
# Authenticate with your SunSolve credentials (prompts for username/password)
credentials = pvl_login.login(client=client)
# Load weather data from a PVW file (Typical Mean Year format)
weather_data = load_weather_data_from_pvw_file("../data/sydney.pvw") or []
# Add uncertainty distribution for Global Horizontal Irradiance (GHI)
# This adds ±5% variation to solar irradiance values
distributions = [build_distribution(input=DistributionInput.GHI, sim_to_sim_distribution=build_gaussian_distribution(1.0, 0.05))]
# Create a minimal request with weather data and basic uncertainty
# This uses default system parameters and simulation settings
request = build_request(time_step_data=weather_data, distributions=distributions)
# Send the analysis request and receive results
summary, used_inputs = client.send_request(request, credentials, timeout=90.0)
# Display results
if summary:
print(f"Analysis complete! Generated {len(summary.YearlyPValue)} yearly P-values")
for pvalue in summary.YearlyPValue: # Show all years
print(f" Year {pvalue.Year}: P{pvalue.P} = {pvalue.P50Deviation:.4f}")
else:
print("No analysis results received")
What This Package Does
The SunSolve P90 Analysis Client enables you to:
- Run Monte Carlo Simulations: Calculate P-values (probability of exceedance) for photovoltaic energy production
- Apply Uncertainty Distributions: Model variability in solar resource, system performance, and operational factors
- Process Weather Data: Import and analyze weather datasets in multiple formats
- Get Probabilistic Results: Receive P5, P10, P50, P90, P95 confidence intervals for energy production
Uncertainty Modeling
Apply probability distributions to key parameters:
- Solar Resource: GHI, temperature, wind speed variations
- System Performance: Module mismatch, inverter efficiency, soiling losses
- Operational Factors: Degradation rates, availability, curtailment
Results
Get comprehensive probabilistic analysis including:
- P-Values: Probability of exceedance levels (P5, P10, P50, P90, P95)
- Yearly Projections: Multi-year degradation modeling
- Monte Carlo Statistics: Distribution analysis across thousands of simulations
Support & Documentation
- Documentation: docs.sunsolve.com/en/p90/
- Getting Started: P90 Analysis Guide
- Contact: sunsolve.info/contact/
Note: This package requires a SunSolve account with P90 Analysis subscription. Visit sunsolve.info to get started.
Metadata
Release files for sunsolve-p90-client 0.3.0.326
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| sunsolve_p90_client-0.3.0.326.tar.gz | 33.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sunsolve_p90_client-0.3.0.326-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.6 kB
Release files / sunsolve_p90_client-0.3.0.326.tar.gz
| Download URL | sunsolve_p90_client-0.3.0.326.tar.gz |
|---|---|
| Size | 33.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7372a48c89a3bf0bdd75692fa93c444246eb2e6b2f78749ecced7e6b07d9d11f
|
|
BLAKE2b-256 checksum How to use checksums |
cee616a43057c48e3984f1aac5f631e7c41c0e58eceab622521c053ebabb6729
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / sunsolve_p90_client-0.3.0.326-py3-none-any.whl
| Download URL | sunsolve_p90_client-0.3.0.326-py3-none-any.whl |
|---|---|
| Size | 37.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dcc0fc85d2fb7c62d7f6b9fbb70d3d177ca6db751b9a0e1208fdbb1f5060e1d6
|
|
BLAKE2b-256 checksum How to use checksums |
829ba4481a7728443c1544c4703a943810ab2c4fb4b1d6830b4abe81a47d8314
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for sunsolve-p90-client 0.3.0.326
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.