Bug description
Two functions emit RuntimeWarning for valid but edge-case inputs:
1. pvanalytics/features/snow.py:229
RuntimeWarning: invalid value encountered in divide when modeled_voltage_with_snow_copy contains zeros.
The function already uses np.errstate(divide='ignore') but does not suppress invalid which fires on 0/0.
2. pvanalytics/quality/outliers.py:78
RuntimeWarning: Precision loss occurred in moment calculation when all input values are identical (constant data). This comes from scipy.stats.zscore internally.
To reproduce
# snow.py warning
pytest pvanalytics/tests/features/test_snow.py::test_categorize -W error::RuntimeWarning
# outliers.py warning
pytest pvanalytics/tests/quality/test_outliers.py::test_zscore_all_same -W error::RuntimeWarning
Fix
# snow.py — added 'invalid' to existing errstate
with np.errstate(divide='ignore', invalid='ignore'):
vmp_ratio = measured_voltage / modeled_voltage_with_snow_copy
# outliers.py — wraped zscore call
with np.errstate(invalid='ignore'):
is_outlier.loc[~nan_mask] = abs(stats.zscore(data[~nan_mask])) > zmax
Bug description
Two functions emit
RuntimeWarningfor valid but edge-case inputs:1.
pvanalytics/features/snow.py:229RuntimeWarning: invalid value encountered in dividewhenmodeled_voltage_with_snow_copycontains zeros.The function already uses
np.errstate(divide='ignore')but does not suppressinvalidwhich fires on0/0.2.
pvanalytics/quality/outliers.py:78RuntimeWarning: Precision loss occurred in moment calculationwhen all input values are identical (constant data). This comes fromscipy.stats.zscoreinternally.To reproduce
Fix