RdTools Change Log

v3.2.0 (X, X, 2026)

Enhancements

  • degradation_year_on_year() has new parameter label= to return the calc_info['YoY_values'] as either right labeled (default), left or center labeled. (GH #459)

  • degradation_timeseries_plot() now defaults to rolling median, centered on the timestamp (pd.rolling(center=True)), and reduces min_periods from rolling_days//2 to rolling_days//4. (GH #455)

  • degradation_year_on_year() has new parameter multi_yoy (default False) to trigger multiple YoY degradation calculations similar to Hugo Quest et al 2023. In this mode, instead of a series of 1-year duration slopes, 2-year, 3-year etc slopes are also included. calc_info['YoY_values'] returns a non-monotonic index in this mode due to multiple overlapping annual slopes. (GH #394)

  • degradation_timeseries_plot() now supports multi_yoy=True data by resampling overlapping YoY values to their mean. A warning is issued when this resampling occurs. (GH #394)

  • degradation_summary_plots() detailed=True mode now properly handles points used odd vs even number of times (not just 0, 1, 2). (GH #394)

  • degradation_year_on_year() now returns calc_info['YoY_times'] DataFrame with dt_right, dt_center, and dt_left columns for each YoY slope. (GH #459)

  • Added new example notebook docs/Multi-year_on_year_example.ipynb demonstrating the label='center' and multi_yoy=True features of degradation_year_on_year(). (GH #394)

  • sensor_analysis() and clearsky_analysis() now explicitly default yoy_kwargs={"label": "right"}.

Bug Fixes

Maintenance

  • Added _avg_timestamp_old_Pandas helper function for pandas <2.0 compatibility when calculating center labels.

  • Fixed nbval workflow command syntax (--sanitize-with to --nbval-sanitize-with).

  • Improved pandas 3.0 compatibility with datetime resolution handling.

  • Updated docs/notebook_requirements.txt to require numexpr>=2.10.2 and tabulate>=0.9.0 to satisfy pandas' optional dependency minimum versions and avoid related warnings/errors.

  • Removed trailing semicolons in example notebooks.

  • Added .coverage.* pattern to .gitignore.

Testing

  • Added tests for error handling paths in analysis_chains: filter_params and filter_params_aggregated setter validation, clearsky_rescale_index_mismatch, poa_filter_without_poa, tcell_filter_without_temperature, hour_angle_filter_without_location, clearsky_filter_without_poa, and degradation_timeseries_plot_invalid_case.

  • Added tests for error handling paths in degradation: classical_decomposition missing/irregular data, year_on_year circular block validation, no valid pairs error, and _mk_test edge cases (no trend, ties, decreasing).

  • Added test for multi_yoy=True parameter in degradation_year_on_year.

  • Added tests for degradation_timeseries_plot() covering label='center', label='left', multi-YoY duplicate index handling, and KeyError path.

  • Set matplotlib backend to Agg in test conftest.py to avoid tkinter issues.

Contributors

v3.1.1 (March 18, 2026)

Bug Fixes

  • Fixed floating-point imprecision in nanosecond calculations in normalization.py by rounding the results of total_seconds() * 1e9. On older pandas versions (e.g. 1.4.4), the float multiplication produced values like 60000000000.00001 instead of 60000000000, causing gap detection to incorrectly flag all data points as gaps. Affected functions: _t_step_nanoseconds, energy_from_power, and _aggregate. (GH #494)

Requirements

  • Bumped minimum pvlib from 0.11.0 to 0.13.1.

  • Bumped minimum xgboost from 1.6.0 to 1.7.0.post0.

  • Bumped minimum arch from 5.0 to 5.6.

Testing

  • Enabled minimum-dependency CI testing for Python 3.10 in pytest.yaml (previously excluded for all Python versions).

v3.1.0 (March 05, 2026)

Enhancements

  • Modified TrendAnalysis._filter() to allow clip_filter to use pv_energy when pv_power is not available. This enables clipping detection for energy-based analyses with sub-hourly data.

  • Added frequency validation for clip_filter in TrendAnalysis._filter() that raises a ValueError if the time series has a median time step greater than 60 minutes, as clipping detection requires higher resolution data.

Documentation

  • Updated temperature coefficient (gamma_pdc) in PVDAQ example notebooks from -0.005 to -0.0034 1/K to reflect modern silicon PV module specifications. Updated notebooks include degradation_and_soiling_example.ipynb, TrendAnalysis_example.ipynb, and TrendAnalysis_example_NSRDB.ipynb.

  • Added stacklevel parameter to all warnings.warn() calls so that warning messages point to user code rather than rdtools internals. Affected modules: analysis_chains, filtering, soiling, plotting, normalization, availability, and clearsky_temperature.

Requirements

  • Updated pvlib requirement in setup.py from "pvlib >= 0.11.0, <0.12.0" to "pvlib >= 0.12.0" (removed upper version restriction).

  • Updated pvlib version in requirements.txt from 0.11.0 to 0.14.0

  • Removed pandas upper version restriction in setup.py. Now "pandas >= 1.4.4" to support pandas 3.0.

  • Removed numpy upper version restriction in setup.py. Now "numpy >= 1.22.4" to support numpy 2.x.

  • Updated pandas version in requirements.txt from 2.2.2 to 2.2.3 for python 3.13 compatibility.

  • Updated scipy version in requirements.txt from 1.13.1 to 1.14.1 for python 3.13 compatibility.

  • Updated h5py version in requirements.txt from 3.11.0 to 3.12.0 for python 3.13 compatibility.

  • Updated scikit-learn version in requirements.txt from 1.5.1 to 1.7.2 for python 3.13 and xgboost compatibility.

  • Updated plotly version in requirements.txt from 5.23.0 to 6.1.1 for python 3.13 compatibility.

  • Updated setuptools-scm version in requirements.txt from 8.1.0 to 9.2.2 for python 3.13 compatibility.

  • Updated six version in requirements.txt from 1.16.0 to 1.17.0 for python 3.13 compatibility.

  • Updated statsmodels version in requirements.txt from 0.14.2 to 0.14.6 for python 3.13 compatibility.

  • Updated threadpoolctl version in requirements.txt from 3.5.0 to 3.6.0 for python 3.13 compatibility.

  • Updated tomli version in requirements.txt from 2.0.1 to 2.0.2 for python 3.13 compatibility.

  • Updated typing_extensions version in requirements.txt from 4.12.2 to 4.15.0 for python 3.13 compatibility.

  • Updated urllib3 version in requirements.txt from 2.5.0 to 2.6.3 for python 3.13 compatibility and to fix security issues.

  • Updated xgboost version in requirements.txt from 2.1.1 to 3.1.3 for python 3.13 compatibility.

  • Updated fonttools version in requirements.txt from 4.53.1 to 4.58.4 for python 3.13 compatibility.

  • Updated idna version in requirements.txt from 3.7 to 3.8 for python 3.13 compatibility.

  • Updated joblib version in requirements.txt from 1.4.2 to 1.5.2 for python 3.13 compatibility.

  • Updated kiwisolver version in requirements.txt from 1.4.5 to 1.4.6 for python 3.13 compatibility.

  • Updated matplotlib version in requirements.txt from 3.9.2 to 3.9.4 for python 3.13 compatibility.

  • Updated packaging version in requirements.txt from 24.1 to 26.0 for python 3.13 compatibility.

  • Updated patsy version in requirements.txt from 0.5.6 to 1.0.0 for python 3.13 compatibility.

  • Updated Pillow version in requirements.txt from 10.4.0 to 12.1.1 for python 3.13 compatibility.

  • Updated pyparsing version in requirements.txt from 3.1.2 to 3.2.0 for python 3.13 compatibility.

  • Updated pytz version in requirements.txt from 2024.1 to 2025.2 for python 3.13 compatibility.

  • Added python_requires='>=3.10' to setup.py to enforce minimum Python version at install time, matching the supported Python versions in classifiers.

  • Updated nbval test dependency from <=0.9.6 to >=0.10.0 to support pytest 7+ which requires pathlib.Path instead of the deprecated py.path.local.

Bug Fixes

  • Fixed pandas 3.0 compatibility in normalization.py by using .total_seconds() instead of .view('int64') with hardcoded nanosecond divisors. Pandas 3.0 changed the default datetime resolution from nanoseconds (datetime64[ns]) to microseconds (datetime64[us]). Affected functions: _delta_index, _t_step_nanoseconds, _aggregate, _interpolate_series.

  • Fixed datetime resolution preservation in normalization.interpolate() to ensure output maintains the same resolution as input (e.g., datetime64[us]).

  • Fixed numpy 2.x compatibility in soiling.py by using .item() and explicit indexing to extract scalar values from numpy arrays, as implicit array-to-scalar conversion is deprecated.

  • Fixed xgboost 3.x compatibility in filtering.xgboost_clip_filter() by using xgb.DMatrix with explicit feature names for model prediction.

  • Fixed pandas 4.0 deprecation warnings by changing lowercase 'd' to uppercase 'D' in Timedelta strings and using axis= keyword argument for DataFrame aggregation methods.

Warnings

  • Removed obsolete fspath deprecation warning filter from setup.cfg as it is no longer needed with nbval>=0.10.0.

Deprecations

  • Removed deprecated normalization.delta_index function (deprecated in v2.0.0). The private _delta_index helper remains available for internal use.

  • Removed deprecated normalization.check_series_frequency function (deprecated in v2.0.0). The private _check_series_frequency helper remains available for internal use.

v3.0.1 (August 21, 2025)

Requirements

  • Updated Jinja2==3.1.6 in notebook_requirements.txt (GH #465)

  • Updated tornado==6.5.1 in notebook_requirements.txt (GH #465)

  • Updated requests==2.32.4 in requirements.txt (GH #465)

  • Updated urllib3==2.5.0 in requirements.txt (GH #465)

  • Removed constraint that scipy<1.16.0 (GH #465)

v3.0.0 (January 22, 2025)

Breaking changes

These changes have the potential to change answers in existing scripts when compared with older versions of RdTools

  • Use the pvlib method for clear sky detection by default in TrendAnalysis() (GH #412)

  • Change default clipping filter model to logic (GH #425)

  • Turn on the two_way_window_filter by default in TrendAnalysis (GH #425)

  • Upgrade pvlib 0.9.0 to 0.11.0 (GH #428)

Enhancements

Deprecations

  • Removed sapm_dc_power() (GH #419)

  • Removed normalize_with_sapm() (GH #419)

  • Removed fail_on_rdtools_version() (GH #428)

Bug fixes

  • Set marker linewidth to zero in rdtools.plotting.degradation_summary_plots (GH #408, GH #433)

  • Fix energy_from_power() returns incorrect index for shifted hourly data (GH #370, GH #437)

  • Add warning to clearsky workflow when power_expected is passed by user (GH #271, GH #439)

  • Fix different results with Nan's and Zeros in power series (GH #313, GH #442)

  • Fix pandas deprecation warnings in tests (GH #444)

  • Fix typos in citation section of the readme file (GH #414, GH #421)

  • Fix deploy workflow to pypi (GH #416, GH #427)

  • Deploy workflow was replaced with trusted publisher workflow for pypi (GH #427)

  • Fix pandas 2.0.0 deprications and update syntax changes (GH #428)

  • Fix numpy 2.0.0 deprications and update syntax changes (GH #428)

  • Fix flake8 missing whitespaces bootstrap_test.py, soiling_cods_test.py (GH #400)

  • Specify dtype for seasonal samples soiling.py (GH #400)

  • Update deprecated check_less_precise to rtol soiling_cods_test.py (GH #400)

Requirements

  • Removed support for python<3.9

  • Updated tornado==6.4.2 in notebook_requirements.txt (GH #438)

  • Updated Jinja2==3.1.5 in notebook_requirements.txt (GH #447)

  • Specified versions in requirements.txt, requirements_min.txt and docs/notebook_requirements.txt have been updated (GH #412, GH #428, GH #429)

    • Updated certifi==2024.7.4 in requirements.txt (GH #428)

    • Updated chardet==5.2.0 in requirements.txt (GH #428)

    • Updated cycler==0.12.1 in requirements.txt (GH #428)

    • Updated fonttools==4.53.1 in requirements.txt (GH #428)

    • Updated h5py==3.11.0 in requirements.txt (GH #428)

    • Updated idna==3.7 in requirements.txt (GH #428)

    • Updated joblib==1.4.2 in requirements.txt (GH #428)

    • Updated kiwisolver==1.4.5 in requirements.txt (GH #428)

    • Updated matplotlib==3.9.2 in requirements.txt (GH #428)

    • Updated numpy==2.1.1 in requirements.txt (GH #428)

    • Updated packaging==24.1 in requirements.txt (GH #428)

    • Updated pandas==2.2.2 in requirements.txt (GH #428)

    • Updated patsy==0.5.6 in requirements.txt (GH #428)

    • Updated Pillow==10.4.0 in requirements.txt (GH #428)

    • Updated plotly==5.23.0 in requirements.txt (GH #428)

    • Updated pvlib==0.11.0 in requirements.txt (GH #428)

    • Updated pyparsing==3.1.2 in requirements.txt (GH #428)

    • Updated python-dateutil==2.9.0 in requirements.txt (GH #428)

    • Updated pytz==2024.1 in requirements.txt (GH #428)

    • Added arch==7.0.0 in requirements.txt (GH #428)

    • Added filterpy==1.4.5 in requirements.txt (GH #428)

    • Updated requests==2.32.3 in requirements.txt (GH #428)

    • Updated retrying==1.3.4 in requirements.txt (GH #428)

    • Updated scikit-learn==1.5.1 in requirements.txt (GH #428)

    • Updated scipy==1.13.1 in requirements.txt (GH #428)

    • Updated setuptools-scm==8.1.0 in requirements.txt (GH #428)

    • Updated six==1.16.0 in requirements.txt (GH #428)

    • Updated statsmodels==0.14.2 in requirements.txt (GH #428)

    • Updated threadpoolctl==3.5.0 in requirements.txt (GH #428)

    • Updated typing_extensions==4.12.2 in requirements.txt (GH #428)

    • Updated urllib3==2.2.2 in requirements.txt (GH #428)

    • Updated xgboost==2.1.1 in requirements.txt (GH #428)

    • Updated matplotlib==3.5.3 in requirements_min.txt (GH #428)

    • Updated numpy==1.22.4 in requirements_min.txt (GH #428)

    • Updated pandas==1.4.4 in requirements_min.txt (GH #428)

    • Updated statsmodels==0.13.5 in requirements_min.txt (GH #428)

    • Updated scipy==1.8.1 in requirements_min.txt (GH #428)

    • Updated h5py==3.7.0 in requirements_min.txt (GH #428)

    • Updated pvlib==0.11.0 in requirements_min.txt (GH #428)

    • Updated scikit-learn==1.1.3 in requirements_min.txt (GH #428)

    • Updated arch==5.0 in requirements_min.txt (GH #429)

    • Updated filterpy==1.4.5 in requirements_min.txt (GH #428)

    • Updated xgboost==1.6.0 in requirements_min.txt (GH #431)

    • Updated appnope==0.1.4 in notebook_requirements.txt (GH #428)

    • Updated argon2-cffi==23.1.0 in notebook_requirements.txt (GH #428)

    • Updated backcall==0.2.0 in notebook_requirements.txt (GH #428)

    • Updated beautifulsoup4==4.12.3 in notebook_requirements.txt (GH #428)

    • Updated bleach==6.1.0 in notebook_requirements.txt (GH #428)

    • Updated cffi==1.17.0 in notebook_requirements.txt (GH #428)

    • Updated colorama==0.4.6 in notebook_requirements.txt (GH #428)

    • Updated decorator==5.1.1 in notebook_requirements.txt (GH #428)

    • Updated entrypoints==0.4 in notebook_requirements.txt (GH #428)

    • Updated html5lib==1.1 in notebook_requirements.txt (GH #428)

    • Updated ipykernel==6.29.5 in notebook_requirements.txt (GH #428)

    • Updated ipython==8.26.0 in notebook_requirements.txt (GH #428)

    • Updated ipywidgets==8.1.3 in notebook_requirements.txt (GH #428)

    • Updated jedi==0.19.1 in notebook_requirements.txt (GH #428)

    • Updated Jinja2==3.1.4 in notebook_requirements.txt (GH #428)

    • Updated jsonschema==4.23.0 in notebook_requirements.txt (GH #428)

    • Updated jupyter-client==8.6.2 in notebook_requirements.txt (GH #428)

    • Updated jupyter-console==6.6.3 in notebook_requirements.txt (GH #428)

    • Updated jupyter-core==5.7.2 in notebook_requirements.txt (GH #428)

    • Updated jupyterlab-pygments==0.3.0 in notebook_requirements.txt (GH #428)

    • Updated lxml==5.3.0 in notebook_requirements.txt (GH #428)

    • Updated MarkupSafe==2.1.5 in notebook_requirements.txt (GH #428)

    • Updated mistune==3.0.2 in notebook_requirements.txt (GH #428)

    • Updated nbclient==0.10.0 in notebook_requirements.txt (GH #428)

    • Updated nbconvert==7.16.4 in notebook_requirements.txt (GH #428)

    • Updated nbformat==5.10.4 in notebook_requirements.txt (GH #428)

    • Updated nest-asyncio==1.6.0 in notebook_requirements.txt (GH #428)

    • Updated notebook==7.2.1 in notebook_requirements.txt (GH #428)

    • Updated numexpr==2.10.1 in notebook_requirements.txt (GH #428)

    • Updated pandocfilters==1.5.1 in notebook_requirements.txt (GH #428)

    • Updated parso==0.8.4 in notebook_requirements.txt (GH #428)

    • Updated pexpect==4.9.0 in notebook_requirements.txt (GH #428)

    • Updated prometheus-client==0.20.0 in notebook_requirements.txt (GH #428)

    • Updated prompt-toolkit==3.0.47 in notebook_requirements.txt (GH #428)

    • Updated ptyprocess==0.7.0 in notebook_requirements.txt (GH #428)

    • Updated pycparser==2.22 in notebook_requirements.txt (GH #428)

    • Updated Pygments==2.18.0 in notebook_requirements.txt (GH #428)

    • Updated pyzmq==26.1.1 in notebook_requirements.txt (GH #428)

    • Updated qtconsole==5.5.2 in notebook_requirements.txt (GH #428)

    • Updated Send2Trash==1.8.3 in notebook_requirements.txt (GH #428)

    • Updated soupsieve==2.6 in notebook_requirements.txt (GH #428)

    • Updated terminado==0.18.1 in notebook_requirements.txt (GH #428)

    • Updated testpath==0.6.0 in notebook_requirements.txt (GH #428)

    • Updated tinycss2==1.3.0 in notebook_requirements.txt (GH #428)

    • Updated tornado==6.4.1 in notebook_requirements.txt (GH #428)

    • Updated traitlets==5.14.3 in notebook_requirements.txt (GH #428)

    • Updated wcwidth==0.2.13 in notebook_requirements.txt (GH #428)

    • Updated widgetsnbextension==4.0.11 in notebook_requirements.txt (GH #428)

  • Update requirements in setup.py
    • Increase maximum version of pvlib to <0.12 (GH #423)

    • Updated classifiers to accomodate new python versions (GH #428)

    • Add pytest-cov to TESTS_REQUIRE (GH #420)

    • Add arch >= 5.0 to INSTALL_REQUIRES (GH #429)

    • Add filterpy >= 1.4.2 to INSTALL_REQUIRES (GH #428)

    • Updated matplotlib >= 3.5.3 in INSTALL_REQUIRES (GH #428)

    • Updated numpy >= 1.22.4 in INSTALL_REQUIRES (GH #428)

    • Updated pandas >= 1.4.4 in INSTALL_REQUIRES (GH #428)

    • Updated statsmodels >= 0.13.5 in INSTALL_REQUIRES (GH #428)

    • Updated scipy >= 1.8.1 in INSTALL_REQUIRES (GH #428)

    • Updated h5py >= 3.7.0 in INSTALL_REQUIRES (GH #428)

    • Updated plotly>=4.0.0 in INSTALL_REQUIRES (GH #428)

    • Updated xgboost >= 1.6.0 in INSTALL_REQUIRES (GH #431)

    • Updated pvlib >= 0.9.0, <0.12.0 in INSTALL_REQUIRES (GH #428)

    • Updated scikit-learn >= 1.1.3 in INSTALL_REQUIRES (GH #428)

    • Updated sphinx==7.4.7 in EXTRAS_REQUIRE (GH #390)

    • Updated nbsphinx==0.9.5 in EXTRAS_REQUIRE (GH #428)

    • Updated nbsphinx-link==1.3.1 in EXTRAS_REQUIRE (GH #428)

    • Updated sphinx_rtd_theme==3.0.1 in EXTRAS_REQUIRE (GH #428)

    • Updated sphinx==8.0.2 in EXTRAS_REQUIRE (GH #428)

    • Updated nbsphinx==0.9.5 in EXTRAS_REQUIRE (GH #428)

    • Updated nbsphinx-link==1.3.1 in EXTRAS_REQUIRE (GH #428)

    • Updated sphinx_rtd_theme==3.0.1 in EXTRAS_REQUIRE (GH #428)

    • Updated sphinx-gallery==0.18.0 in EXTRAS_REQUIRE (GH #428)

  • Updated Github actions in workflows (GH #428)

  • Updated versioneer to 0.29 (GH #428)

  • Updated os to ubuntu-24.04 and python to 3.12 in .readthedocs.yml (GH #428)

  • Bump arch to 5.6.0 in requirements.txt

  • Upgrade the notebook environment from python 3.7 to python 3.10. (GH #319, GH #326)

  • Bump sphinx version from 3.2 to 4.5 and nbsphinx version from 0.8.5 to 0.8.8 in the optional [doc] requirements (GH #317, GH #325)

  • arch and filterpy added as dependencies (GH #150)

  • minimum version of numpy increased to 1.16 and minimum version of statsmodels increased to 0.11.1 (GH #150)

  • A number of updates to the environments specified in requirements.txt, requirements-min.txt, and docs/notebook_requirements.txt (GH #326, GH #314, GH #337)

Tests

  • Add tests for pvlib clearsky fiter in analysis chain (GH #441)

  • Testing matrix was updated to include python = [3.9, 3.10, 3.11, 3.12] (GH #428)

  • nbval sanitization rules were added for date and time stamp (GH #428)

  • Added a CI notebook check (GH #270)

  • Improve test coverage, especially for the newly added filter capabilities (GH #413)

Documentation

  • External link syntax updated to avoid warnings with new versions (GH #428)

Contributors

v2.1.8 (November 17, 2023)

Bug fixes

Contributors

v2.1.7 (November 3, 2023)

Requirements

  • Limit pandas version to <2.1 (GH #395)

  • Several packages updated in``requirements.txt`` and docs/notebook_requirements.txt (GH #398)

Documentation

  • Update ReadTheDocs configuration (GH #395)

Contributors

v2.1.6 (July 31, 2023)

Bug Fixes

Enhancements

Requirements

  • Increased the minimum versions of several dependencies: (GH #371)

    • pandas increased to 1.3.0 (released July 2, 2021)

    • numpy to 1.17.3 (released October 17, 2019)

    • statsmodels to 0.11.0 (released February 21, 2020)

    • scipy to 1.2.0 (released December 17, 2018)

  • Add support for pvlib 0.10 (GH #378)

  • Updated notebook requirements (GH #360)

  • Bumps certifi from 2020.12.5 to 2022.12.7 (GH #357)

Testing

  • Extended pip timeout (GH #360)

  • Updated example notebooks with new figure sizes (GH #360)

Contributors

v2.1.5 (May 16, 2023)

Bug Fixes

Contributors

v2.1.4 (December 1, 2022)

Bug Fixes

Testing

  • Added a CI notebook check (GH #270)

Requirements

  • Upgrade the notebook environment from python 3.7 to python 3.10. Several dependency versions in docs/notebook_requirements.txt are updated as well. (GH #319, GH #326)

  • Bump ipython==7.16.3, jupyter-console==6.4.0, and prompt-toolkit==3.0.27 in docs/notebook_requirements.txt and bump Pillow==9.3.0 in requirements.txt (GH #314, GH #349)

  • Bump jupyter-core==4.11.2 in docs\notebook_requirements.txt (GH #350)

  • Bump sphinx version from 3.2 to 4.5 and nbsphinx version from 0.8.5 to 0.8.8 in the optional [doc] requirements (GH #317, GH #325)

  • A number of other requirements updates (GH #337)

Contributors

v2.1.3 (January 6, 2022)

Bug fixes

Requirements

  • Added support for python 3.10 and dropped support for python 3.6 (which reached end of life on Dec 23, 2021) (GH #302)

  • Bumped several minimum package versions (GH #302):

    • h5py increased to 2.8.0 (released June 4, 2018)

    • pandas increased to 0.23.2 (released July 6, 2018)

    • scipy increased to 1.1.0 (released May 5, 2018)

    • statsmodels increased to 0.9.0 (released May 14, 2018)

  • Update pinned versions of several dependencies in requirements.txt (GH #302)

Testing

  • Drop python 3.6 and add 3.10 to the CI configuration (GH #302)

  • Add new assert_warnings helper function to conftest.py (GH #302)

v2.1.2 (December 22, 2021)

Bug fixes

  • XGBoost model saved in a version-stable json. Removes the xgboost version restriction of version 2.1.1. (GH #301, GH #304)

Requirements

  • joblib removed as requirement (GH #304)

  • XGBoost version in requirements.txt updated to 1.5.1 (GH #304)

Documentation

v2.1.1 (November 30, 2021)

This patch release temporarily requires xgboost < 1.5.0. A future update will allow a wider version range. (GH #301, GH #297)

v2.1.0 (September 17, 2021)

API Changes

  • The calculations internal to the soiling SRR algorithm have changed such that consecutive cleaning events are no longer removed. (GH #199, GH #189)

  • The calculations internal to the soiling SRR algorithm have changed such that "invalid" intervals are retained at the beginning and end of the dataset for the purposes of the SRR Monte Carlo. Invalid intervals are those that do not qualify to be fit as soiling intervals based on min_interval_length, max_relative_slope_error, and max_negative_step. (GH #199, GH #272)

  • The default day_scale parameter in soiling functions and methods was changed from 14 to 13. A recommendation to use an odd value along with a warning for even values was also added. (GH #199, GH #189)

  • The default min_interval_length in soiling functions and methods was changed from 2 to 7. (GH #199)

Enhancements

Bug fixes

Documentation

  • Corrected a typo in the TrendAnalysis docstring (GH #264)

  • Enabled intersphinx so that function parameter types are linked to external documentation (GH #258)

Requirements

  • Installation (setup.py) now requires plotly, joblib, xgboost, and scikit-learn

  • Update pinned versions of several dependencies in requirements.txt and docs/notebook_requirements.txt (GH #289, GH #295)

  • Add support for pvlib 0.9 and remove the tables dependency added in v2.1.0b0 (GH #290)

Example Updates

  • TrendAnalysis_example_pvdaq4.ipynb added

  • degradation_and_soiling_example_pvdaq_4.ipynb updated to use the same artificial soiling signal imposed in new notebook TrendAnalysis_example_pvdaq4.ipynb throughout the analysis.

  • degradation_and_soiling_example_pvdaq_4.ipynb updated to illustrate new clipping models and filter-tuning plots.

Contributors

v2.0.6 (July 16, 2021)

Bug Fixes

  • Fix a failure of get_clearsky_tamb() with pandas 1.3.0 (GH #284)

  • Change internal casting of timestamps into integers to use .view() instead of pandas deprecated .astype() method (GH #284)

Requirements

  • Update specified versions of bleach in docs/notebook_requirements.txt and matplotlib in requirements.txt (GH #261)

Contributors

v2.0.5 (2020-12-30) and v2.1.0-beta.2 (2021-01-29)

Testing

  • Add a flake8 code style check to the continuous integration checks (GH #231)

  • Moved several pytest fixtures from soiling_test.py and availability_test.py to conftest.py so that they are shared across test files (GH #231)

  • Add Python 3.9 to CI testing (GH #249)

  • Fix test suite error raised when using pandas 1.2.0 (GH #251)

Documentation

  • Organized example notebooks into a sphinx gallery (GH #240)

Requirements

  • Add support for python 3.9 (GH #249)

  • Update requirements.txt versions for numpy, scipy, pandas, h5py and statsmodels to versions that have wheels available for python 3.6-3.9. Note that the minimum versions are unchanged. (GH #249).

Contributors

v2.0.4 and v2.1.0-beta.1 (December 4, 2020)

Bug Fixes

  • Fix bug related to leading NaN values with energy_from_power(). This fixed a small normalization error in degradation_and_soiling_example.ipynb and slightly changed the clear-sky degradation results (GH #244, GH #245)

Contributors

v2.1.0-beta.0 (November 20, 2020)

Enhancements

  • Add new analysis_chains module to focus on objected-oriented analysis workflows combining other RdTools modules. Includes TrendAnalysis class for sensor- and clear-sky-based soiling and degradation analyses (GH #117).

Requirements

  • tables added as a requirement (GH #196).

Example Updates

  • New example notebook based on PVDAQ system #4 for the new TrendAnalysis analysis work flow (GH #196 and GH #117).

  • Update degradation_and_soiling_example_pvdaq_4.ipynb example to match best practice, including pvlib.get_total_irradiance() in rdtools.interpolate (GH #196 and GH #117).

  • Update degradation_and_soiling_example_pvdaq_4.ipynb example to use a single soiling * ac_power signal (GH #196).

Contributors

v2.0.3 (November 20, 2020)

Requirements

  • Change to docs/notebook_requirements.txt: notebook version from 5.7.8 to 6.1.5 and terminado version from 0.8.1 to 0.8.3 (GH #239)

Contributors

v2.0.2 (November 17, 2020)

Examples

Contributors

v2.0.1 (October 30, 2020)

Deprecations

Contributors

v2.0.0 (October 20, 2020)

Version 2.0.0 adds experimental soiling and availability modules, plotting capability, and includes updates to normalization work flow. This major release introduces some breaking changes to the API. Details below.

API Changes

Deprecations

Enhancements

Bug fixes

Testing

  • Add Python 3.7 and 3.8 to CI testing (GH #135).

  • Add CI configuration based on the minimum dependency versions (GH #197)

Documentation

  • Create sphinx documentation and set up ReadTheDocs (GH #125).

  • Add guides on running tests and building sphinx docs (GH #136).

  • Improve module-level docstrings (GH #137).

  • Update landing page and add new "Inverter Downtime" documentation page based on the availability notebook (GH #131)

Requirements

  • Drop support for Python 2.7, minimum supported version is now 3.6 (GH #135).

  • Increase minimum pvlib version to 0.7.0 (GH #170)

  • Update requirements.txt and notebook_requirements.txt to avoid conflicting specifications. Taken together, they represent the complete environment for the notebook example (GH #164).

  • Add minimum matplotlib requirement of 3.0.0 (released September 18, 2018) (GH #197)

  • Increase minimum numpy version from 1.12 (released January 15, 2017) to 1.15 (released July 23, 2018) (GH #197)

Example Updates

  • Seed numpy.random to ensure repeatable results (GH #164).

  • Use normalized_filter() instead of manually filtering the normalized energy timeseries. Also updated the associated mask variable names (GH #139).

  • Add soiling section to the original example notebook.

  • Add a new example notebook that analyzes data from a PV system located at NREL's South Table Mountain campus (PVDAQ system #4) (GH #171).

  • Explicitly register pandas datetime converters which were deprecated.

  • Add new system_availability_example.ipynb notebook (GH #131)

Contributors

v1.2.3 (April 12, 2020)

  • Updates dependencies

  • Versioneer bug fix

  • Licence update

Contributors

v1.2.2 (October 12, 2018)

Patch that adds author email to enable pypi deployment

Contributors

v1.2.1 (October 12, 2018)

This update includes automated testing and deployment to support development along with some bug fixes to the library itself, a documented environment for the example notebook, and new example results to reflect changes in the example dataset. It addresses GH #49, GH #76, GH #78, GH #79, GH #80, GH #85, GH #86, and GH #92.

Contributors

v1.2.0 (March 30, 2018)

This incorporates changes including:

  • Enables users to control confidence intervals reported in degradation calculations (GH #59)

  • Adds python 3 support (GH #56 and GH #67)

  • Fixes bugs (GH #61 GH #57)

  • Improvements/typo fixes to docstrings

  • Fixes error in check for two years of data in degradation_year_on_year

  • Improves the calculations underlying irradiance_rescale

Contributors

v1.1.3 (December 6, 2017)

This patch includes the following changes:

  1. Update the notebook for improved plotting with Pandas v.0.21.0

  2. Fix installation bug related to package data

Contributors

v1.1.2 (November 6, 2017)

This patch includes the following changes:

  1. Fix bugs in installation

  2. Update requirements

  3. Notebook plots made compatible with pandas v.0.21.0

Contributors

v1.1.1 (November 1, 2017)

This patch:

  1. Improves documentation

  2. Fixes installation requirements

Contributors

v1.1.0 (September 30, 2017)

This update includes the addition of filters, functions to support a clear-sky workflow, and updates to the example notebook.

Contributors