From 249443bc439476bd5a40af713b0f619adea35a6e Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 10:06:35 +0200 Subject: [PATCH 01/10] rough merge of v0.15.3 and 0.16.0 whatsnews --- docs/sphinx/source/whatsnew.rst | 2 +- docs/sphinx/source/whatsnew/v0.15.3.rst | 122 ------------------------ docs/sphinx/source/whatsnew/v0.16.0.rst | 83 +++++++++++++++- 3 files changed, 80 insertions(+), 127 deletions(-) delete mode 100644 docs/sphinx/source/whatsnew/v0.15.3.rst diff --git a/docs/sphinx/source/whatsnew.rst b/docs/sphinx/source/whatsnew.rst index 106312943c..d9a24a219e 100644 --- a/docs/sphinx/source/whatsnew.rst +++ b/docs/sphinx/source/whatsnew.rst @@ -6,7 +6,7 @@ What's New These are new features and improvements of note in each release. -.. include:: whatsnew/v0.15.3.rst +.. include:: whatsnew/v0.16.0.rst .. include:: whatsnew/v0.15.2.rst .. include:: whatsnew/v0.15.1.rst .. include:: whatsnew/v0.15.0.rst diff --git a/docs/sphinx/source/whatsnew/v0.15.3.rst b/docs/sphinx/source/whatsnew/v0.15.3.rst deleted file mode 100644 index 8cf8515577..0000000000 --- a/docs/sphinx/source/whatsnew/v0.15.3.rst +++ /dev/null @@ -1,122 +0,0 @@ -.. _whatsnew_0_15_3: - - -v0.15.3 (Anticipated September, 2026) -------------------------------------- - -Breaking Changes -~~~~~~~~~~~~~~~~ -* Changed output type of :py:func:`pvlib.irradiance.get_total_irradiance`, - :py:func:`pvlib.irradiance.get_sky_diffuse`, and :py:func:`pvlib.irradiance.poa_components` - from ``OrderedDict`` to ``dict``. (:issue:`2750`, :pull:`2800`) - - -Deprecations -~~~~~~~~~~~~ -* Parameters ``npoints`` and ``vectorize`` in the following functions - are now unnecessary and are deprecated (:pull:`2740`): - - - :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance` - - :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance_poa` - - :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` - -* Parameter ``surface_tilt`` is deprecated and renamed to ``tracker_rotation`` - in :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` (:pull:`2740`). -* Deprecate non-polynomial interpolation options in :py:func:`pvlib.iam.interp` (:issue:`2394`, :pull:`2741`) - - -Bug fixes -~~~~~~~~~ -* Fix asymmetry in how ``max_rows`` is interpreted in - :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d`. The difference - should be negligible for typical simulations. (:issue:`1867`, :pull:`2740`) -* :py:func:`~pvlib.solarposition.sun_rise_set_transit_spa` now returns - sunrise, sunset, and transit for the *local* calendar day of each input - timestamp, restoring the behavior from before v0.11.1. Evening-local - timestamps, which fall on the next calendar day in UTC, previously - returned the following day's values. (:issue:`2238`) -* Fixed ``irradiance.dirint`` so that an interior missing value in the input - series no longer halves the single valid neighbor difference when computing - the stability index ``delta_kt_prime`` (Perez eqn 3). (:issue:`1847`, :pull:`2821`) - - -Enhancements -~~~~~~~~~~~~ -* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.isotropic`. - (:issue:`2750`, :pull:`2787`) -* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.reindl` to - support returning the components of sky diffuse irradiance. - (:issue:`2750`, :pull:`2775`) -* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.get_sky_diffuse` - and ``diffuse_components`` kwarg to :py:func:`pvlib.irradiance.get_total_irradiance` - to support returning the components of sky diffuse irradiance. - (:issue:`2750`, :pull:`2800`) -* Add iotools functions to retrieve irradiance and weather data from NSRDB PSM4 Polar, - which provides satellite-derived irradiance data above 60 degree latitude. - :py:func:`~pvlib.iotools.get_nsrdb_psm4_polar` and - :py:func:`~pvlib.iotools.get_nsrdb_psm4_polar_tmy`. - (:issue:`2639`, :pull:`2807`) -* Ensure all timezones are available in all OSs. (:issue:`2795`, :pull:`2809`) -* Add :py:func:`pvlib.iotools.get_surfrad` for retrieving irradiance data - from NOAA's SURFRAD network. - (:issue:`1155`, :pull:`2836`) -* Implement the ANTS-2D bifacial irradiance model in - :py:func:`pvlib.bifacial.ants2d.get_irradiance`. (:pull:`2740`) -* Add parameters ``g0`` and ``g1`` to allow segmented ground surfaces in - :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` and - :py:func:`~pvlib.bifacial.utils.vf_row_ground_2d_integ`. (:pull:`2740`) -* Accelerate :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` by one or - two orders of magnitude. This also makes :py:mod:`pvlib.bifacial.infinite_sheds` faster. - (:pull:`2740`) - - -Documentation -~~~~~~~~~~~~~ -* Fix broken link in GitHub Contributing tab. (:issue:`2628`, :pull:`2806`) -* Fixed broken ``interval`` keyword argument in the ``oedi_9068`` gallery - example; the correct parameter name is ``time_step``. (:issue:`2791`) -* Fixed several broken/outdated links: NREL clear-sky and spectral data - pages, EnergyPlus documentation, git-scm.com, and a malformed Wikipedia - URL. (:issue:`2489`, :pull:`2818`) -* Standardized diffuse component names and descriptions in the docstrings of - multiple functions in :py:mod:`pvlib.irradiance`. (:pull:`2827`) -* Clarifies the variable naming, comments and references in - :py:func:`pvlib.atmosphere.rh_from_tdew` (and the related comments in - :py:func:`pvlib.atmosphere.tdew_from_rh`) related to the actual - and saturation vapor pressures. Function output is - unchanged. (:issue:`2734`, :pull:`2782`) - - -Testing -~~~~~~~ - - -Benchmarking -~~~~~~~~~~~~ - - -Requirements -~~~~~~~~~~~~ - - -Maintenance -~~~~~~~~~~~ -* Fix some gallery examples not being run. Only gallery examples whose filename begins with ``noplot_`` will be excluded. (:issue:`2790`, :pull:`2792`) -* Removed unused internal function ``clearsky._is_leap_year`` (:issue:`2768`, :pull:`2813`) -* Fix documentation builds on runner images lacking link-type timezones. (:issue:`2795`, :pull:`2809`) - - -Contributors -~~~~~~~~~~~~ -* Adam R. Jensen (:ghuser:`AdamRJensen`) -* Erin Tonita (:ghuser:`etoni044`) -* Eesh Saxena (:ghuser:`eeshsaxena`) -* Karl Hill (:ghuser:`karlhillx`) -* Mathias Aschwanden (:ghuser:`maschwanden`) -* Yonry Zhu (:ghuser:`yonryzhu`) -* Aditya (:ghuser:`adi-IL`) -* Darshan Gowda (:ghuser:`dgowdaan-cmyk`) -* Jason Lun Leung (:ghuser:`jason-rpkt`) -* Leonardo Scappatura (:ghuser:`Leonard013`) -* Carolina Crespo (:ghuser:`cbcrespo`) -* Ioannis Sifnaios (:ghuser:`IoannisSifnaios`) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index babb5b34a6..3cd1a67a5a 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -1,8 +1,8 @@ .. _whatsnew_0_16_0: -v0.16.0 (Month XX, 20YY) ------------------------ +v0.16.0 (September 23, 2026) +---------------------------- Breaking Changes ~~~~~~~~~~~~~~~~ @@ -34,6 +34,9 @@ Breaking Changes and :py:func:`pvlib.iam.schlick_diffuse` from tuple to ``dict``, to be consistent with :py:func:`pvlib.iam.marion_diffuse`. (:issue:`2837`, :pull:`2842`) +* Changed output type of :py:func:`pvlib.irradiance.get_total_irradiance`, + :py:func:`pvlib.irradiance.get_sky_diffuse`, and :py:func:`pvlib.irradiance.poa_components` + from ``OrderedDict`` to ``dict``. (:issue:`2750`, :pull:`2800`) * All ``OrderedDict`` outputs are now ``dict``. The following functions are affected (:issue:`1684`, :pull:`2856`): @@ -59,6 +62,16 @@ Deprecations * Deprecate :py:func:`pvlib.irradiance.king`. Use other diffuse transposition models in :py:mod:`pvlib.irradiance` instead. (:issue:`2636`, :pull:`2783`) +* Parameters ``npoints`` and ``vectorize`` in the following functions + are now unnecessary and are deprecated (:pull:`2740`): + + - :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance` + - :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance_poa` + - :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` + +* Parameter ``surface_tilt`` is deprecated and renamed to ``tracker_rotation`` + in :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` (:pull:`2740`). +* Deprecate non-polynomial interpolation options in :py:func:`pvlib.iam.interp` (:issue:`2394`, :pull:`2741`) Bug fixes @@ -83,6 +96,17 @@ Bug fixes :py:func:`~pvlib.atmosphere.get_relative_airmass` since v0.9.5 but was not added to ``pvlib.atmosphere.APPARENT_ZENITH_MODELS``, so passing it raised ``ValueError``. (:pull:`2857`) +* Fix asymmetry in how ``max_rows`` is interpreted in + :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d`. The difference + should be negligible for typical simulations. (:issue:`1867`, :pull:`2740`) +* :py:func:`~pvlib.solarposition.sun_rise_set_transit_spa` now returns + sunrise, sunset, and transit for the *local* calendar day of each input + timestamp, restoring the behavior from before v0.11.1. Evening-local + timestamps, which fall on the next calendar day in UTC, previously + returned the following day's values. (:issue:`2238`) +* Fixed ``irradiance.dirint`` so that an interior missing value in the input + series no longer halves the single valid neighbor difference when computing + the stability index ``delta_kt_prime`` (Perez eqn 3). (:issue:`1847`, :pull:`2821`) Enhancements @@ -98,7 +122,32 @@ Enhancements * Add support for diffuse IAM in the :py:class:`pvlib.pvsystem.Array` and :py:class:`pvlib.pvsystem.PVSystem` classes (see `pvlib.pvsystem.Array.get_iam_diffuse` and `pvlib.pvsystem.PVSystem.get_iam_diffuse`). (:issue:`2812`, :pull:`2845`) - +* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.isotropic`. + (:issue:`2750`, :pull:`2787`) +* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.reindl` to + support returning the components of sky diffuse irradiance. + (:issue:`2750`, :pull:`2775`) +* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.get_sky_diffuse` + and ``diffuse_components`` kwarg to :py:func:`pvlib.irradiance.get_total_irradiance` + to support returning the components of sky diffuse irradiance. + (:issue:`2750`, :pull:`2800`) +* Add iotools functions to retrieve irradiance and weather data from NSRDB PSM4 Polar, + which provides satellite-derived irradiance data above 60 degree latitude. + :py:func:`~pvlib.iotools.get_nsrdb_psm4_polar` and + :py:func:`~pvlib.iotools.get_nsrdb_psm4_polar_tmy`. + (:issue:`2639`, :pull:`2807`) +* Ensure all timezones are available in all OSs. (:issue:`2795`, :pull:`2809`) +* Add :py:func:`pvlib.iotools.get_surfrad` for retrieving irradiance data + from NOAA's SURFRAD network. + (:issue:`1155`, :pull:`2836`) +* Implement the ANTS-2D bifacial irradiance model in + :py:func:`pvlib.bifacial.ants2d.get_irradiance`. (:pull:`2740`) +* Add parameters ``g0`` and ``g1`` to allow segmented ground surfaces in + :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` and + :py:func:`~pvlib.bifacial.utils.vf_row_ground_2d_integ`. (:pull:`2740`) +* Accelerate :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` by one or + two orders of magnitude. This also makes :py:mod:`pvlib.bifacial.infinite_sheds` faster. + (:pull:`2740`) Documentation ~~~~~~~~~~~~~ @@ -110,7 +159,19 @@ Documentation :py:func:`pvlib.atmosphere.windspeed_powerlaw` docstring, which disagreed with :py:data:`pvlib.atmosphere.HELLMANN_SURFACE_EXPONENTS` in four of its nine cells. (:pull:`2853`) - +* Fix broken link in GitHub Contributing tab. (:issue:`2628`, :pull:`2806`) +* Fixed broken ``interval`` keyword argument in the ``oedi_9068`` gallery + example; the correct parameter name is ``time_step``. (:issue:`2791`) +* Fixed several broken/outdated links: NREL clear-sky and spectral data + pages, EnergyPlus documentation, git-scm.com, and a malformed Wikipedia + URL. (:issue:`2489`, :pull:`2818`) +* Standardized diffuse component names and descriptions in the docstrings of + multiple functions in :py:mod:`pvlib.irradiance`. (:pull:`2827`) +* Clarifies the variable naming, comments and references in + :py:func:`pvlib.atmosphere.rh_from_tdew` (and the related comments in + :py:func:`pvlib.atmosphere.tdew_from_rh`) related to the actual + and saturation vapor pressures. Function output is + unchanged. (:issue:`2734`, :pull:`2782`) Testing ~~~~~~~ @@ -132,6 +193,9 @@ Requirements Maintenance ~~~~~~~~~~~ +* Fix some gallery examples not being run. Only gallery examples whose filename begins with ``noplot_`` will be excluded. (:issue:`2790`, :pull:`2792`) +* Removed unused internal function ``clearsky._is_leap_year`` (:issue:`2768`, :pull:`2813`) +* Fix documentation builds on runner images lacking link-type timezones. (:issue:`2795`, :pull:`2809`) Contributors @@ -143,3 +207,14 @@ Contributors * Kevin Anderson (:ghuser:`kandersolar`) * Johann Loux (:ghuser:`JoLo90`) * Dylan Pulver (:ghuser:`dylanpulver`) +* Adam R. Jensen (:ghuser:`AdamRJensen`) +* Erin Tonita (:ghuser:`etoni044`) +* Eesh Saxena (:ghuser:`eeshsaxena`) +* Karl Hill (:ghuser:`karlhillx`) +* Mathias Aschwanden (:ghuser:`maschwanden`) +* Yonry Zhu (:ghuser:`yonryzhu`) +* Aditya (:ghuser:`adi-IL`) +* Darshan Gowda (:ghuser:`dgowdaan-cmyk`) +* Jason Lun Leung (:ghuser:`jason-rpkt`) +* Leonardo Scappatura (:ghuser:`Leonard013`) +* Ioannis Sifnaios (:ghuser:`IoannisSifnaios`) From 19d6105d50cd9103327f6ace8eff837fd7ee4d97 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 10:11:06 +0200 Subject: [PATCH 02/10] fix backticks --- docs/sphinx/source/whatsnew/v0.16.0.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index 3cd1a67a5a..877abb8660 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -6,9 +6,9 @@ v0.16.0 (September 23, 2026) Breaking Changes ~~~~~~~~~~~~~~~~ -* Remove support for the `g_poa_effective` keyword argument in +* Remove support for the ``g_poa_effective`` keyword argument in :py:func:`pvlib.pvsystem.pvwatts_dc`. Users must now use - `effective_irradiance`. (:issue:`2703`, :pull:`2704`) + ```effective_irradiance``. (:issue:`2703`, :pull:`2704`) * Change output type of :py:func:`pvlib.irradiance.perez` and :py:func:`pvlib.irradiance.perez_driesse` from ``OrderedDict`` to ``dict`` when ``return_components=True`` to be consistent with other models. @@ -151,7 +151,7 @@ Enhancements Documentation ~~~~~~~~~~~~~ -* Remove `g_poa_effective` from the :ref:`nomenclature` page (:pull:`2704`) +* Remove ``g_poa_effective`` from the :ref:`nomenclature` page (:pull:`2704`) * Clarify in the ``Notes`` section of :py:func:`pvlib.soiling.hsu` that the default ``depo_veloc`` values correspond to the settling velocity of particulates. (:issue:`2535`) From d8112a4ac1d8bcad98a7550a2e8b494dba85e59a Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 10:49:30 +0200 Subject: [PATCH 03/10] miscellaneous cleanup --- docs/sphinx/source/whatsnew/v0.16.0.rst | 102 +++++++++++------------- 1 file changed, 46 insertions(+), 56 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index 877abb8660..b0f77f2333 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -8,42 +8,41 @@ Breaking Changes ~~~~~~~~~~~~~~~~ * Remove support for the ``g_poa_effective`` keyword argument in :py:func:`pvlib.pvsystem.pvwatts_dc`. Users must now use - ```effective_irradiance``. (:issue:`2703`, :pull:`2704`) + ``effective_irradiance``. (:issue:`2703`, :pull:`2704`) * Change output type of :py:func:`pvlib.irradiance.perez` and :py:func:`pvlib.irradiance.perez_driesse` from ``OrderedDict`` to ``dict`` when ``return_components=True`` to be consistent with other models. (:pull:`2789`) * Remove empty ``poa_horizon`` key from the ``diffuse_components`` output of - :py:func:`pvlib.irradiance.haydavies`. - (:pull:`2788`) -* Removed private function :py:func:`pvlib.irradiance._liujordan`. + :py:func:`pvlib.irradiance.haydavies`. (:pull:`2788`) +* Remove private function :py:func:`pvlib.irradiance._liujordan`. (:issue:`2764`, :pull:`2766`) -* Removed deprecated iotools functions :py:func:`pvlib.iotools.parse_bsrn`, - :py:func:`pvlib.iotools.parse_epw`, and - :py:func:`pvlib.iotools.parse_cams`. Use - :py:func:`pvlib.iotools.read_bsrn`, :py:func:`pvlib.iotools.read_epw`, - and :py:func:`pvlib.iotools.read_cams` instead. +* Remove deprecated iotools functions :py:func:`~pvlib.iotools.parse_bsrn`, + :py:func:`~pvlib.iotools.parse_epw`, and + :py:func:`~pvlib.iotools.parse_cams`. Use + :py:func:`~pvlib.iotools.read_bsrn`, :py:func:`~pvlib.iotools.read_epw`, + and :py:func:`~pvlib.iotools.read_cams` instead. (:issue:`2767`, :pull:`2766`) -* Removed deprecated modelchain function +* Remove deprecated modelchain function :py:func:`pvlib.modelchain.get_orientation`. (:issue:`2767`, :pull:`2766`) -* Removed the deprecated ``server`` keyword argument from - :py:func:`pvlib.iotools.sodapro.get_cams`. Use ``url`` instead. +* Remove the deprecated ``server`` keyword argument from + :py:func:`~pvlib.iotools.get_cams`. Use ``url`` instead. (:issue:`2767`, :pull:`2766`) -* Changed the output type of :py:func:`pvlib.iam.marion_ruiz_diffuse` - and :py:func:`pvlib.iam.schlick_diffuse` from tuple to ``dict``, to be +* Change the output type of :py:func:`pvlib.iam.marion_ruiz_diffuse` + and :py:func:`pvlib.iam.schlick_diffuse` from ``tuple`` to ``dict``, to be consistent with :py:func:`pvlib.iam.marion_diffuse`. (:issue:`2837`, :pull:`2842`) -* Changed output type of :py:func:`pvlib.irradiance.get_total_irradiance`, - :py:func:`pvlib.irradiance.get_sky_diffuse`, and :py:func:`pvlib.irradiance.poa_components` - from ``OrderedDict`` to ``dict``. (:issue:`2750`, :pull:`2800`) * All ``OrderedDict`` outputs are now ``dict``. The following functions - are affected (:issue:`1684`, :pull:`2856`): + are affected (:issue:`1684`, :issue:`2750`, :pull:`2800`, :pull:`2856`): * :py:func:`~pvlib.clearsky.ineichen` * :py:func:`~pvlib.clearsky.simplified_solis` * :py:func:`~pvlib.clearsky.detect_clearsky` * :py:func:`~pvlib.clearsky.bird` + * :py:func:`~pvlib.irradiance.get_total_irradiance` + * :py:func:`~pvlib.irradiance.get_sky_diffuse` + * :py:func:`~pvlib.irradiance.poa_components` * :py:func:`~pvlib.irradiance.disc` * :py:func:`~pvlib.irradiance.gti_dirint` * :py:func:`~pvlib.irradiance.erbs` @@ -56,7 +55,6 @@ Breaking Changes * :py:func:`~pvlib.pvsystem.max_power_point` - Deprecations ~~~~~~~~~~~~ * Deprecate :py:func:`pvlib.irradiance.king`. @@ -78,12 +76,11 @@ Bug fixes ~~~~~~~~~ * Fix incorrect column naming when parsing data from logical record 0500 using :py:func:`~pvlib.iotools.read_bsrn` or - :py:func:`~pvlib.iotools.get_bsrn`. - (:issue:`2835`, :pull:`2841`) + :py:func:`~pvlib.iotools.get_bsrn`. (:issue:`2835`, :pull:`2841`) * :py:func:`~pvlib.irradiance.perez` no longer raises ``ZeroDivisionError`` on scalar ``dhi=0`` input (e.g. nighttime); the scalar path now returns the same finite value as the array path. (:pull:`2826`) -* Fixed a ``TypeError`` in :py:class:`~pvlib.modelchain.ModelChain` when +* Fix a ``TypeError`` in :py:class:`~pvlib.modelchain.ModelChain` when ``dc_ohmic_model="dc_ohms_from_percent"`` is used with a single-Array system and the weather/irradiance input is passed as a length-1 list or tuple. (:issue:`2829`) @@ -91,11 +88,8 @@ Bug fixes now that the previous one is retired. Format of returned data and metadata is slightly different. (:pull:`2839`) * ``model='gueymard2003'`` is now accepted by - :py:meth:`~pvlib.location.Location.get_airmass` and, through it, by - :py:class:`~pvlib.modelchain.ModelChain`. The model has been available in - :py:func:`~pvlib.atmosphere.get_relative_airmass` since v0.9.5 but was not - added to ``pvlib.atmosphere.APPARENT_ZENITH_MODELS``, so passing it raised - ``ValueError``. (:pull:`2857`) + :py:meth:`~pvlib.location.Location.get_airmass` and + :py:class:`~pvlib.modelchain.ModelChain`. (:pull:`2857`) * Fix asymmetry in how ``max_rows`` is interpreted in :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d`. The difference should be negligible for typical simulations. (:issue:`1867`, :pull:`2740`) @@ -104,9 +98,9 @@ Bug fixes timestamp, restoring the behavior from before v0.11.1. Evening-local timestamps, which fall on the next calendar day in UTC, previously returned the following day's values. (:issue:`2238`) -* Fixed ``irradiance.dirint`` so that an interior missing value in the input +* Fix ``irradiance.dirint`` so that an interior missing value in the input series no longer halves the single valid neighbor difference when computing - the stability index ``delta_kt_prime`` (Perez eqn 3). (:issue:`1847`, :pull:`2821`) + the stability index ``delta_kt_prime``. (:issue:`1847`, :pull:`2821`) Enhancements @@ -114,39 +108,38 @@ Enhancements * Map beam horizontal irradiance to ``bhi`` when :py:func:`~pvlib.iotools.get_era5` is called with ``map_variables=True``. (:pull:`2819`) -* Add support for :py:func:`pvlib.iam.schlick` to :py:class:`pvlib.modelchain.ModelChain`, +* Add support for :py:func:`pvlib.iam.schlick` to :py:class:`~pvlib.modelchain.ModelChain`, :py:meth:`pvlib.pvsystem.PVSystem.get_iam`, and :py:meth:`pvlib.pvsystem.Array.get_iam`. (:issue:`2828`, :pull:`2832`) * Allow variables from multiple datasets to be requested at once in :py:func:`~pvlib.iotools.get_merra2`. (:pull:`2839`) -* Add support for diffuse IAM in the :py:class:`pvlib.pvsystem.Array` and - :py:class:`pvlib.pvsystem.PVSystem` classes (see `pvlib.pvsystem.Array.get_iam_diffuse` - and `pvlib.pvsystem.PVSystem.get_iam_diffuse`). (:issue:`2812`, :pull:`2845`) -* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.isotropic`. - (:issue:`2750`, :pull:`2787`) -* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.reindl` to - support returning the components of sky diffuse irradiance. - (:issue:`2750`, :pull:`2775`) -* Add ``return_components`` kwarg to :py:func:`pvlib.irradiance.get_sky_diffuse` - and ``diffuse_components`` kwarg to :py:func:`pvlib.irradiance.get_total_irradiance` +* Add support for diffuse IAM in the :py:class:`~pvlib.pvsystem.Array` and + :py:class:`~pvlib.pvsystem.PVSystem` classes (see :py:meth:`pvlib.pvsystem.Array.get_iam_diffuse` + and :py:meth:`pvlib.pvsystem.PVSystem.get_iam_diffuse`). (:issue:`2812`, :pull:`2845`) +* Add ``return_components`` kwarg to the following transposition functions (:issue:`2750`): + + * :py:func:`pvlib.irradiance.isotropic` (:pull:`2787`) + * :py:func:`pvlib.irradiance.reindl` (:pull:`2775`) + * :py:func:`pvlib.irradiance.get_sky_diffuse` (:pull:`2800`) + +* Add ``diffuse_components`` kwarg to :py:func:`pvlib.irradiance.get_total_irradiance` to support returning the components of sky diffuse irradiance. (:issue:`2750`, :pull:`2800`) * Add iotools functions to retrieve irradiance and weather data from NSRDB PSM4 Polar, - which provides satellite-derived irradiance data above 60 degree latitude. + which provides satellite-derived irradiance data above 60 degree latitude: :py:func:`~pvlib.iotools.get_nsrdb_psm4_polar` and :py:func:`~pvlib.iotools.get_nsrdb_psm4_polar_tmy`. (:issue:`2639`, :pull:`2807`) * Ensure all timezones are available in all OSs. (:issue:`2795`, :pull:`2809`) * Add :py:func:`pvlib.iotools.get_surfrad` for retrieving irradiance data - from NOAA's SURFRAD network. - (:issue:`1155`, :pull:`2836`) + from NOAA's SURFRAD network. (:issue:`1155`, :pull:`2836`) * Implement the ANTS-2D bifacial irradiance model in :py:func:`pvlib.bifacial.ants2d.get_irradiance`. (:pull:`2740`) * Add parameters ``g0`` and ``g1`` to allow segmented ground surfaces in :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` and :py:func:`~pvlib.bifacial.utils.vf_row_ground_2d_integ`. (:pull:`2740`) * Accelerate :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d_integ` by one or - two orders of magnitude. This also makes :py:mod:`pvlib.bifacial.infinite_sheds` faster. + two orders of magnitude. This also makes :py:mod:`~pvlib.bifacial.infinite_sheds` faster. (:pull:`2740`) Documentation @@ -155,19 +148,15 @@ Documentation * Clarify in the ``Notes`` section of :py:func:`pvlib.soiling.hsu` that the default ``depo_veloc`` values correspond to the settling velocity of particulates. (:issue:`2535`) -* Correct the transposed table of Hellmann exponents in the - :py:func:`pvlib.atmosphere.windspeed_powerlaw` docstring, which disagreed - with :py:data:`pvlib.atmosphere.HELLMANN_SURFACE_EXPONENTS` in four of its - nine cells. (:pull:`2853`) +* Correct Hellmann exponents in the + :py:func:`~pvlib.atmosphere.windspeed_powerlaw` docstring. (:pull:`2853`) * Fix broken link in GitHub Contributing tab. (:issue:`2628`, :pull:`2806`) -* Fixed broken ``interval`` keyword argument in the ``oedi_9068`` gallery +* Fix broken ``interval`` keyword argument in the ``oedi_9068`` gallery example; the correct parameter name is ``time_step``. (:issue:`2791`) -* Fixed several broken/outdated links: NREL clear-sky and spectral data - pages, EnergyPlus documentation, git-scm.com, and a malformed Wikipedia - URL. (:issue:`2489`, :pull:`2818`) -* Standardized diffuse component names and descriptions in the docstrings of +* Fix several broken/outdated links. (:issue:`2489`, :pull:`2818`) +* Standardize diffuse component names and descriptions in the docstrings of multiple functions in :py:mod:`pvlib.irradiance`. (:pull:`2827`) -* Clarifies the variable naming, comments and references in +* Clarify the variable naming, comments and references in :py:func:`pvlib.atmosphere.rh_from_tdew` (and the related comments in :py:func:`pvlib.atmosphere.tdew_from_rh`) related to the actual and saturation vapor pressures. Function output is @@ -193,8 +182,9 @@ Requirements Maintenance ~~~~~~~~~~~ -* Fix some gallery examples not being run. Only gallery examples whose filename begins with ``noplot_`` will be excluded. (:issue:`2790`, :pull:`2792`) -* Removed unused internal function ``clearsky._is_leap_year`` (:issue:`2768`, :pull:`2813`) +* Fix some gallery examples not being run. Only gallery examples whose filename + begins with ``noplot_`` will be excluded. (:issue:`2790`, :pull:`2792`) +* Remove unused internal function ``clearsky._is_leap_year`` (:issue:`2768`, :pull:`2813`) * Fix documentation builds on runner images lacking link-type timezones. (:issue:`2795`, :pull:`2809`) From 9eb4600f389822da60a67124cf61b54667b650e7 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 11:01:08 +0200 Subject: [PATCH 04/10] push out some deprecation removals --- pvlib/iam.py | 2 +- pvlib/iotools/meteonorm.py | 2 +- tests/iotools/test_meteonorm.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pvlib/iam.py b/pvlib/iam.py index 4c7c4adc91..cc9c8daae8 100644 --- a/pvlib/iam.py +++ b/pvlib/iam.py @@ -497,7 +497,7 @@ def interp(aoi, theta_ref, iam_ref, method='linear', normalize=True): msg = ( f"Interpolation method {method} is deprecated in pvlib" ) - warn_deprecated(since="0.15.3", removal="0.16.0", addendum=msg) + warn_deprecated(since="0.16.0", removal="0.17.0", addendum=msg) interpolator = interp1d(theta_ref, iam_ref, kind=method, fill_value='extrapolate') else: diff --git a/pvlib/iotools/meteonorm.py b/pvlib/iotools/meteonorm.py index 61bf72be5d..c8784d661f 100644 --- a/pvlib/iotools/meteonorm.py +++ b/pvlib/iotools/meteonorm.py @@ -501,7 +501,7 @@ def get_meteonorm_tmy( "This parameter was removed from the Meteonorm API " "and now has no effect." ) - warn_deprecated(since="0.15.2", removal="0.16.0", name="data_version", + warn_deprecated(since="0.15.2", removal="0.17.0", name="data_version", addendum=msg) additional_params = { "situation": terrain_situation, diff --git a/tests/iotools/test_meteonorm.py b/tests/iotools/test_meteonorm.py index 64866fe0c6..7a41109467 100644 --- a/tests/iotools/test_meteonorm.py +++ b/tests/iotools/test_meteonorm.py @@ -271,7 +271,7 @@ def test_get_meteonorm_tmy( assert (data.isna().mean() <= 0.2).all() # meteonorm guarantees <=20% NaN -@fail_on_pvlib_version('0.16.0') +@fail_on_pvlib_version('0.17.0') @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_get_meteonorm_tmy_data_version_deprecation(demo_url, demo_api_key): From 8f842d5f4de551b8a3033df802bafced96ffe176 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 11:22:44 +0200 Subject: [PATCH 05/10] a bit more cleanup --- docs/sphinx/source/whatsnew/v0.16.0.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index b0f77f2333..cc5fca3142 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -9,10 +9,6 @@ Breaking Changes * Remove support for the ``g_poa_effective`` keyword argument in :py:func:`pvlib.pvsystem.pvwatts_dc`. Users must now use ``effective_irradiance``. (:issue:`2703`, :pull:`2704`) -* Change output type of :py:func:`pvlib.irradiance.perez` and - :py:func:`pvlib.irradiance.perez_driesse` from ``OrderedDict`` to ``dict`` when - ``return_components=True`` to be consistent with other models. - (:pull:`2789`) * Remove empty ``poa_horizon`` key from the ``diffuse_components`` output of :py:func:`pvlib.irradiance.haydavies`. (:pull:`2788`) * Remove private function :py:func:`pvlib.irradiance._liujordan`. @@ -34,7 +30,7 @@ Breaking Changes consistent with :py:func:`pvlib.iam.marion_diffuse`. (:issue:`2837`, :pull:`2842`) * All ``OrderedDict`` outputs are now ``dict``. The following functions - are affected (:issue:`1684`, :issue:`2750`, :pull:`2800`, :pull:`2856`): + are affected (:issue:`1684`, :issue:`2750`, :pull:`2789`, :pull:`2800`, :pull:`2856`): * :py:func:`~pvlib.clearsky.ineichen` * :py:func:`~pvlib.clearsky.simplified_solis` @@ -44,6 +40,9 @@ Breaking Changes * :py:func:`~pvlib.irradiance.get_sky_diffuse` * :py:func:`~pvlib.irradiance.poa_components` * :py:func:`~pvlib.irradiance.disc` + * :py:func:`~pvlib.irradiance.perez` + * :py:func:`~pvlib.irradiance.perez_driesse` + * :py:func:`~pvlib.irradiance.disc` * :py:func:`~pvlib.irradiance.gti_dirint` * :py:func:`~pvlib.irradiance.erbs` * :py:func:`~pvlib.irradiance.erbs_driesse` From 632a71484bf2e782e95cf5f035283ff999c1aea7 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 11:22:52 +0200 Subject: [PATCH 06/10] add missing contributors --- docs/sphinx/source/whatsnew/v0.16.0.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index cc5fca3142..ef26074891 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -207,3 +207,9 @@ Contributors * Jason Lun Leung (:ghuser:`jason-rpkt`) * Leonardo Scappatura (:ghuser:`Leonard013`) * Ioannis Sifnaios (:ghuser:`IoannisSifnaios`) +* Echedey Luis (:ghuser:`echedey-ls`) +* Cliff Hansen (:ghuser:`cwhanse`) +* Mark Campanelli (:ghuser:`markcampanelli`) +* Will Holmgren (:ghuser:`wholmgren`) +* Anton Driesse (:ghuser:`adriesse`) +* Mark Mikofski (:ghuser:`mikofski`) From cb983242ef375449dbcb7496583a50aaf1209f98 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Wed, 23 Sep 2026 12:02:22 +0200 Subject: [PATCH 07/10] final tweaks --- docs/sphinx/source/whatsnew/v0.16.0.rst | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index ef26074891..e5f34830fa 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -25,7 +25,7 @@ Breaking Changes * Remove the deprecated ``server`` keyword argument from :py:func:`~pvlib.iotools.get_cams`. Use ``url`` instead. (:issue:`2767`, :pull:`2766`) -* Change the output type of :py:func:`pvlib.iam.marion_ruiz_diffuse` +* Change the output type of :py:func:`pvlib.iam.martin_ruiz_diffuse` and :py:func:`pvlib.iam.schlick_diffuse` from ``tuple`` to ``dict``, to be consistent with :py:func:`pvlib.iam.marion_diffuse`. (:issue:`2837`, :pull:`2842`) @@ -97,7 +97,7 @@ Bug fixes timestamp, restoring the behavior from before v0.11.1. Evening-local timestamps, which fall on the next calendar day in UTC, previously returned the following day's values. (:issue:`2238`) -* Fix ``irradiance.dirint`` so that an interior missing value in the input +* Fix :py:func:`~pvlib.irradiance.dirint` so that an interior missing value in the input series no longer halves the single valid neighbor difference when computing the stability index ``delta_kt_prime``. (:issue:`1847`, :pull:`2821`) @@ -141,6 +141,7 @@ Enhancements two orders of magnitude. This also makes :py:mod:`~pvlib.bifacial.infinite_sheds` faster. (:pull:`2740`) + Documentation ~~~~~~~~~~~~~ * Remove ``g_poa_effective`` from the :ref:`nomenclature` page (:pull:`2704`) @@ -161,13 +162,6 @@ Documentation and saturation vapor pressures. Function output is unchanged. (:issue:`2734`, :pull:`2782`) -Testing -~~~~~~~ - - -Benchmarking -~~~~~~~~~~~~ - Requirements ~~~~~~~~~~~~ @@ -206,6 +200,7 @@ Contributors * Darshan Gowda (:ghuser:`dgowdaan-cmyk`) * Jason Lun Leung (:ghuser:`jason-rpkt`) * Leonardo Scappatura (:ghuser:`Leonard013`) +* Rodrigo Amaro e Silva (:ghuser:`ramaroesilva`) * Ioannis Sifnaios (:ghuser:`IoannisSifnaios`) * Echedey Luis (:ghuser:`echedey-ls`) * Cliff Hansen (:ghuser:`cwhanse`) @@ -213,3 +208,12 @@ Contributors * Will Holmgren (:ghuser:`wholmgren`) * Anton Driesse (:ghuser:`adriesse`) * Mark Mikofski (:ghuser:`mikofski`) +* Will Hobbs (:ghuser:`whobbs`) +* Bing Gao (:ghuser:`binggao1230`) +* Jean-Baptiste Pasquier (:ghuser:`pasquierjb`) +* :ghuser:`Aditya-myst` +* :ghuser:`amandadiniz-eng` +* Mohammad Kazemi (:ghuser:`mokazemi`) +* :ghuser:`FrancoisFEM` +* :ghuser:`weixuan-song` + From 59f214d92b20224729cd333b5d1084315fe5b790 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 24 Sep 2026 08:51:15 +0200 Subject: [PATCH 08/10] Increment release date --- docs/sphinx/source/whatsnew/v0.16.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index e5f34830fa..319d70e06f 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -1,7 +1,7 @@ .. _whatsnew_0_16_0: -v0.16.0 (September 23, 2026) +v0.16.0 (September 24, 2026) ---------------------------- Breaking Changes From 37f3e0a00d5b6ec6f3ab13837205d0a3dd24551d Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Sat, 26 Sep 2026 08:39:38 +0200 Subject: [PATCH 09/10] increment release date --- docs/sphinx/source/whatsnew/v0.16.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index 319d70e06f..1afc055c69 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -1,7 +1,7 @@ .. _whatsnew_0_16_0: -v0.16.0 (September 24, 2026) +v0.16.0 (September 26, 2026) ---------------------------- Breaking Changes From 44e06baedadb9211bf96e764620aac123ebb6973 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Sat, 26 Sep 2026 08:51:01 +0200 Subject: [PATCH 10/10] changes from review Co-Authored-By: Echedey Luis <80125792+echedey-ls@users.noreply.github.com> --- docs/sphinx/source/reference/bifacial.rst | 6 ++++ .../source/reference/irradiance/index.rst | 2 ++ docs/sphinx/source/whatsnew/v0.16.0.rst | 35 +++++++++---------- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/docs/sphinx/source/reference/bifacial.rst b/docs/sphinx/source/reference/bifacial.rst index 2f6366a1af..74b7d51106 100644 --- a/docs/sphinx/source/reference/bifacial.rst +++ b/docs/sphinx/source/reference/bifacial.rst @@ -1,3 +1,7 @@ +.. py:module:: pvlib.bifacial.infinite_sheds +.. py:module:: pvlib.bifacial.pvfactors +.. py:module:: pvlib.bifacial.ants2d + .. currentmodule:: pvlib Bifacial @@ -20,6 +24,8 @@ Loss models that are specific to bifacial PV systems bifacial.power_mismatch_deline +.. py:module:: pvlib.bifacial.utils + Utility functions for bifacial modeling .. autosummary:: diff --git a/docs/sphinx/source/reference/irradiance/index.rst b/docs/sphinx/source/reference/irradiance/index.rst index b2d5917a0e..1c5a8ab3e2 100644 --- a/docs/sphinx/source/reference/irradiance/index.rst +++ b/docs/sphinx/source/reference/irradiance/index.rst @@ -1,3 +1,5 @@ +.. py:module:: pvlib.irradiance + .. currentmodule:: pvlib Irradiance diff --git a/docs/sphinx/source/whatsnew/v0.16.0.rst b/docs/sphinx/source/whatsnew/v0.16.0.rst index 1afc055c69..bbb6ed0b32 100644 --- a/docs/sphinx/source/whatsnew/v0.16.0.rst +++ b/docs/sphinx/source/whatsnew/v0.16.0.rst @@ -6,13 +6,11 @@ v0.16.0 (September 26, 2026) Breaking Changes ~~~~~~~~~~~~~~~~ -* Remove support for the ``g_poa_effective`` keyword argument in +* Remove support for the deprecated ``g_poa_effective`` keyword argument in :py:func:`pvlib.pvsystem.pvwatts_dc`. Users must now use ``effective_irradiance``. (:issue:`2703`, :pull:`2704`) * Remove empty ``poa_horizon`` key from the ``diffuse_components`` output of :py:func:`pvlib.irradiance.haydavies`. (:pull:`2788`) -* Remove private function :py:func:`pvlib.irradiance._liujordan`. - (:issue:`2764`, :pull:`2766`) * Remove deprecated iotools functions :py:func:`~pvlib.iotools.parse_bsrn`, :py:func:`~pvlib.iotools.parse_epw`, and :py:func:`~pvlib.iotools.parse_cams`. Use @@ -59,14 +57,14 @@ Deprecations * Deprecate :py:func:`pvlib.irradiance.king`. Use other diffuse transposition models in :py:mod:`pvlib.irradiance` instead. (:issue:`2636`, :pull:`2783`) -* Parameters ``npoints`` and ``vectorize`` in the following functions - are now unnecessary and are deprecated (:pull:`2740`): +* Deprecate parameters ``npoints`` and ``vectorize`` in the following functions + as they are now unnecessary (:pull:`2740`): - :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance` - :py:func:`pvlib.bifacial.infinite_sheds.get_irradiance_poa` - :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` -* Parameter ``surface_tilt`` is deprecated and renamed to ``tracker_rotation`` +* Rename parameter ``surface_tilt`` to ``tracker_rotation`` in :py:func:`pvlib.bifacial.utils.vf_ground_sky_2d_integ` (:pull:`2740`). * Deprecate non-polynomial interpolation options in :py:func:`pvlib.iam.interp` (:issue:`2394`, :pull:`2741`) @@ -76,9 +74,8 @@ Bug fixes * Fix incorrect column naming when parsing data from logical record 0500 using :py:func:`~pvlib.iotools.read_bsrn` or :py:func:`~pvlib.iotools.get_bsrn`. (:issue:`2835`, :pull:`2841`) -* :py:func:`~pvlib.irradiance.perez` no longer raises ``ZeroDivisionError`` on - scalar ``dhi=0`` input (e.g. nighttime); the scalar path now returns the same - finite value as the array path. (:pull:`2826`) +* Fix :py:func:`~pvlib.irradiance.perez` raising ``ZeroDivisionError`` on + scalar ``dhi=0`` input. (:pull:`2826`) * Fix a ``TypeError`` in :py:class:`~pvlib.modelchain.ModelChain` when ``dc_ohmic_model="dc_ohms_from_percent"`` is used with a single-Array system and the weather/irradiance input is passed as a length-1 list or tuple. @@ -86,14 +83,14 @@ Bug fixes * Fix :py:func:`~pvlib.iotools.get_merra2` to work with a new API endpoint now that the previous one is retired. Format of returned data and metadata is slightly different. (:pull:`2839`) -* ``model='gueymard2003'`` is now accepted by +* Fix ``model='gueymard2003'`` not being available in :py:meth:`~pvlib.location.Location.get_airmass` and :py:class:`~pvlib.modelchain.ModelChain`. (:pull:`2857`) * Fix asymmetry in how ``max_rows`` is interpreted in :py:func:`~pvlib.bifacial.utils.vf_ground_sky_2d`. The difference should be negligible for typical simulations. (:issue:`1867`, :pull:`2740`) -* :py:func:`~pvlib.solarposition.sun_rise_set_transit_spa` now returns - sunrise, sunset, and transit for the *local* calendar day of each input +* Fix regression in :py:func:`~pvlib.solarposition.sun_rise_set_transit_spa`. It now + returns sunrise, sunset, and transit for the *local* calendar day of each input timestamp, restoring the behavior from before v0.11.1. Evening-local timestamps, which fall on the next calendar day in UTC, previously returned the following day's values. (:issue:`2238`) @@ -115,13 +112,13 @@ Enhancements * Add support for diffuse IAM in the :py:class:`~pvlib.pvsystem.Array` and :py:class:`~pvlib.pvsystem.PVSystem` classes (see :py:meth:`pvlib.pvsystem.Array.get_iam_diffuse` and :py:meth:`pvlib.pvsystem.PVSystem.get_iam_diffuse`). (:issue:`2812`, :pull:`2845`) -* Add ``return_components`` kwarg to the following transposition functions (:issue:`2750`): +* Add ``return_components`` parameter to the following transposition functions (:issue:`2750`): * :py:func:`pvlib.irradiance.isotropic` (:pull:`2787`) * :py:func:`pvlib.irradiance.reindl` (:pull:`2775`) * :py:func:`pvlib.irradiance.get_sky_diffuse` (:pull:`2800`) -* Add ``diffuse_components`` kwarg to :py:func:`pvlib.irradiance.get_total_irradiance` +* Add ``diffuse_components`` parameter to :py:func:`pvlib.irradiance.get_total_irradiance` to support returning the components of sky diffuse irradiance. (:issue:`2750`, :pull:`2800`) * Add iotools functions to retrieve irradiance and weather data from NSRDB PSM4 Polar, @@ -145,9 +142,8 @@ Enhancements Documentation ~~~~~~~~~~~~~ * Remove ``g_poa_effective`` from the :ref:`nomenclature` page (:pull:`2704`) -* Clarify in the ``Notes`` section of :py:func:`pvlib.soiling.hsu` that the - default ``depo_veloc`` values correspond to the settling velocity of - particulates. (:issue:`2535`) +* Clarify :py:func:`pvlib.soiling.hsu` default ``depo_veloc`` values correspond + to the settling velocity of particulates (see its ``Notes`` section). (:issue:`2535`) * Correct Hellmann exponents in the :py:func:`~pvlib.atmosphere.windspeed_powerlaw` docstring. (:pull:`2853`) * Fix broken link in GitHub Contributing tab. (:issue:`2628`, :pull:`2806`) @@ -172,12 +168,15 @@ Requirements - pandas: 1.5.0 - scipy: 1.9.2 +* Add dependency on the tzdata package. (:pull:`2809`) Maintenance ~~~~~~~~~~~ * Fix some gallery examples not being run. Only gallery examples whose filename begins with ``noplot_`` will be excluded. (:issue:`2790`, :pull:`2792`) -* Remove unused internal function ``clearsky._is_leap_year`` (:issue:`2768`, :pull:`2813`) +* Remove unused internal function :py:func:`pvlib.clearsky._is_leap_year`. (:issue:`2768`, :pull:`2813`) +* Remove private function :py:func:`pvlib.irradiance._liujordan`. + (:issue:`2764`, :pull:`2766`) * Fix documentation builds on runner images lacking link-type timezones. (:issue:`2795`, :pull:`2809`)