- The pvlib.location.Location.pytz attribute is now read only. The pytz attribute is now set internally to be consistent with the pvlib.location.Location.tz attribute. (:issue:`2340`, :pull:`2341`)
- Users must now provide ModelChain.spectral_model, or the 'no_loss' spectral model is assumed. pvlib.modelchain.ModelChain no longer attempts to infer the spectral model from PVSystem attributes. (:issue:`2017`, :pull:`2253`)
- :py:func:`~pvlib.iotools.read_tmy3` now defaults to
map_variables=True. Additionally, the deprecatedrecolumnparameter is now removed. (:issue:`2324`, :pull:`2408`)
- Add a check to :py:func:`~pvlib.snow.fully_covered_nrel` and :py:func:`~pvlib.snow.coverage_nrel`. The check uses snow depth on the ground to improve modeling for systems with shallow tilt angles. The check adds a new, optional parameter snow_depth. (:issue:`1171`, :pull:`2292`)
- Fix a bug in :py:func:`pvlib.bifacial.get_irradiance_poa` which may have yielded non-zero ground irradiance when the sun was below the horizon. (:issue:`2245`, :pull:`2359`)
- Fix a bug where :py:func:`pvlib.transformer.simple_efficiency` could only be imported using the from pvlib.transformer syntax (:pull:`2388`)
- :py:class:`~pvlib.modelchain.ModelChain` now requires only a minimal set of parameters to run the SAPM electrical model. (:issue:`2369`, :pull:`2393`)
- Correct keys for First Solar modules in ~pvlib.spectrum.spectral_factor_pvspec (:issue:`2398`, :pull:`2400`)
- Ensure proper tz and pytz types in pvlib.location.Location. To ensure that the time zone in pvlib.location.Location remains internally consistent if/when the time zone is updated, the tz attribute is now the single source of time-zone truth, is the single time-zone setter interface, and its getter returns an IANA string. (:issue:`2340`, :pull:`2341`)
- :py:func:`~pvlib.iotools.get_pvgis_tmy` with
outputformat='csv'now works with the updated data format returned by PVGIS. (:issue:`2344`, :pull:`2395`)
- :py:func:`~pvlib.irradiance.gti_dirint` now raises an informative message when input data don't include values with AOI<90 (:issue:`1342`, :pull:`2347`)
- Reduced space requirements by excluding tests and test files from wheel. Zipped wheel is now 66% of the previous size, and installed size is 50% of the previous size. (:issue:`2271`, :pull:`2277`)
- Fix Procedural and Object Oriented simulation examples having slightly different results, in :ref:`introtutorial`. (:issue:`2366`, :pull:`2367`)
- Restructure the user guide with subsections (:issue:`2302`, :pull:`2310`)
- Add references for :py:func:`pvlib.snow.loss_townsend`. (:issue:`2383`, :pull:`2384`)
- Add :term:`ghi_clear` to the :ref:`nomenclature` page (:issue:`2272`, :pull:`2397`)
- Add output variable naming clarifaction to :py:func:`pvlib.pvsystem.calcparams_desoto` and :py:func:`pvlib.pvsystem.calcparams_pvsyst` (:issue:`716`, :pull:`2405`)
- Moved tests folder to /tests and data exclusively used for testing to /tests/data. (:issue:`2271`, :pull:`2277`)
- Added Python 3.13 to test suite. (:pull:`2258`)
- Add tests for all input types for the pvlib.location.Location.tz attribute. (:issue:`2340`, :pull:`2341`)
- Add tests for time-conversion functions in pvlib.tools. (:issue:`2340`, :pull:`2341`)
- Fix ReadTheDocs builds by upgrading readthedocs.yml configuration (:issue:`2357`, :pull:`2358`)
- asv 0.4.2 upgraded to asv 0.6.4 to fix CI failure due to pinned older conda. (:pull:`2352`)
- Rajiv Daxini (:ghuser:`RDaxini`)
- Cliff Hansen (:ghuser:`cwhanse`)
- Jason Lun Leung (:ghuser:`jason-rpkt`)
- Manoj K S (:ghuser:`manojks1999`)
- Kurt Rhee (:ghuser:`kurt-rhee`)
- Ayush jariyal (:ghuser:`ayushjariyal`)
- Kevin Anderson (:ghuser:`kandersolar`)
- Echedey Luis (:ghuser:`echedey-ls`)
- Mark Campanelli (:ghuser:`markcampanelli`)
- Max Jackson (:ghuser:`MaxJackson`)