- Added :py:func:`!pvlib.iotools.read_psm3` to read local NSRDB PSM3 files and :py:func:`!pvlib.iotools.parse_psm3` to parse local NSRDB PSM3 file-like objects. (:issue:`841`)
- Added leap_day parameter to iotools.get_psm3 instead of hardcoding it as False.
- Added :py:func:`~pvlib.iotools.get_pvgis_tmy` to get PVGIS TMY datasets. (:pull:`845`)
- Added :py:func:`~pvlib.iotools.parse_epw` to parse a file-like buffer containing weather data in the EPW format.
- Added a new module pvlib.losses for various loss models.
- Added the Humboldt State University soiling model :py:func:`~pvlib.losses.soiling_hsu`. (:issue:`739`)
- Fix error in logic for emitting deprecation warning in :py:func:`~pvlib.pvsystem.sapm` (:pull:`844`)
- Changed the PSM3 API endpoint for TMY requests in iotools.get_psm3.
- Added single-year PSM3 API test for iotools.get_psm3.
- Added tests for iotools.parse_psm3 and iotools.read_psm3.
- Change pvlib/test folder to pvlib/tests and reorganize tests into subfolders, e.g.: created pvlib/tests/iotools (:pull:`859`)
- replace os.path with pathlib and stringify path objects for Python<=3.5
- Created an Example Gallery. (:pull:`846`)
- Updated list of allowed years for iotools.get_psm3.
- Kevin Anderson (:ghuser:`kevinsa5`)
- Mark Mikofski (:ghuser:`mikofski`)
- :ghuser:`dzimmanck`
- Will Holmgren (:ghuser:`wholmgren`)
- Cliff Hansen (:ghuser:`cwhanse`)
- Valliappan CA (:ghuser:`nappaillav`)
- Anton Driesse (:ghuser:`adriesse`)