What’s New

These are new features and improvements of note in each release.

v0.5.1 (?, 2017)

API Changes

Bug fixes

  • Remove condition causing Overflow warning from clearsky.haurwitz
  • modelchain.basic_chain now correctly passes ‘solar_position_method’ arg to solarposition.get_solarposition

Enhancements

  • Improve clearsky.lookup_linke_turbidity speed. (GH368)

Documentation

  • Doc string of modelchain.basic_chain was updated to describe args more accurately

Testing

  • Changed test for clearsky.haurwitz to operate on zenith angles

Contributors

  • Cliff Hansen
  • KonstantinTr
  • Will Holmgren

v0.5.0 (August 11, 2017)

API Changes

  • Removed parameter w from _calc_d (GH344)
  • SingleAxisTracker.get_aoi and SingleAxisTracker.get_irradiance now require surface_zenith and surface_azimuth (GH351)
  • Changes calculation of the Incidence Angle Modifier to return 0 instead of np.nan for angles >= 90°. This improves the calculation of effective irradiance close to sunrise and sunset. (GH338)
  • Change the default ModelChain orientation strategy from ‘south_at_latitude_tilt’ to None. (GH290)

Bug fixes

  • Method of multi-inheritance has changed to make it possible to use kwargs in the parent classes of LocalizedPVSystem and LocalizedSingleAxisTracker (GH330)
  • Fix the __repr__ method of ModelChain, crashing when orientation_strategy is set to ‘None’ (GH352)
  • Fix the ModelChain’s angle of incidence calculation for SingleAxisTracker objects (GH351)
  • Fix issue with ForecastModel.cloud_cover_to_transmittance_linear method of forecast.py ignoring ‘offset’ parameter. (GH343)

Enhancements

  • Added default values to docstrings of all functions (GH336)
  • Added analytical method that calculates solar azimuth angle (GH291)

Documentation

  • Added ModelChain documentation page
  • Added nbsphinx to documentation build configuration.
  • Added a pull request template file (GH354)

Testing

  • Added explicit tests for aoi and aoi_projection functions.
  • Update test of ModelChain.__repr__ to take in account GH352
  • Added a test for solar_azimuth_analytical function.

Contributors

  • Johannes Kaufmann
  • Will Holmgren
  • Uwe Krien
  • Alaina Kafkes
  • Birgit Schachler
  • Jonathan Gaffiot
  • Siyan (Veronica) Guo
  • KonstantinTr

v0.4.5 (June 5, 2017)

Bug fixes

  • Fix pandas 0.20 incompatibilities in Location.get_clearsky, solarposition.ephemeris (GH325)
  • Fixes timezone issue in solarposition spa_c function (GH237)
  • Added NREL Bird clear sky model. (GH276)
  • Added lower accuracy formulas for equation of time, declination, hour angle and solar zenith.
  • Remove all instances of .ix (GH322)
  • Update docstring in pvlib.spa.solar_position - change units of pressure to millibars. NOTE: units of pressure in pvlib.solar_position.spa_python and pvlib.solar_position.spa_c are still Pascals. This update should have no effect on most users, since it only applies to the low-level spa.py module. (GH327)

Enhancements

  • Added irradiance.dni method that determines DNI from GHI and DHI and corrects unreasonable DNI values during sunrise/sunset transitions
  • ForecastModel will now only connect to the Unidata server when necessary, rather than when the object is created. This supports offline work and speeds up analysis of previously downloaded data.

Contributors

  • Will Holmgren
  • Marc Anoma
  • Mark Mikofski
  • Birgit Schachler

v0.4.4 (February 18, 2017)

Enhancements

  • Added Anton Driesse Inverter database and made compatible with pvsystem.retrieve_sam. (GH169)
  • Ported Anton Driesse Inverter model from PV_LIB Toolbox. (GH160)
  • Added Kasten pyrheliometric formula to calculate Linke turbidity factors with improvements by Ineichen and Perez to extend range of air mass (GH278)
  • Added coefficients for CIGS and a-Si modules types to the first_solar_spectral_correction function (GH308)

API Changes

  • Change PVSystem default module_parameters and inverter_parameters to empty dict. Code that relied on these attributes being None or raising a TypeError will need to be updated. (issue:294)

Documentation

  • Fixes the Forecasting page’s broken links to the tutorials.
  • Fixes the Forecasting page’s broken examples. (GH299)
  • Fixes broken Classes link in the v0.3.0 documentation.

Bug fixes

  • Resolved several issues with the forecast module tests. Library import errors were resolved by prioritizing the conda-forge channel over the default channel. Stalled ci runs were resolved by adding a timeout to the HRRR_ESRL test. (GH293)
  • Fixed issue with irradiance jupyter notebook tutorial. (GH309)

Contributors

  • Will Holmgren
  • Volker Beutner
  • Mark Mikofski
  • Anton Driesse
  • Mitchell Lee

v0.4.3 (December 28, 2016)

Enhancements

  • Adding implementation of Perez’s DIRINDEX model based on existing DIRINT model implementation. (GH282)
  • Added clearsky.detect_clearsky function to determine the clear times in a GHI time series. (GH284)

Other

  • Adds Python 3.6 to compatibility statement and pypi classifiers. (GH286)

Contributors

  • Marc Anoma
  • Will Holmgren
  • Cliff Hansen
  • Tony Lorenzo

v0.4.2 (December 7, 2016)

This is a minor release from 0.4.1.

Bug fixes

  • Fixed typo in __repr__ method of ModelChain and in its regarding test.
  • PVSystem.pvwatts_ac could not use the eta_inv_ref kwarg and PVSystem.pvwatts_dc could not use the temp_ref kwarg. Fixed. (GH252)
  • Fixed typo in ModelChain.infer_spectral_model error message. (GH251)
  • Fixed Linke turbdity factor out of bounds error at 90-degree latitude or at 180-degree longitude (GH262)
  • Fixed Linke turbidity factor grid spacing and centers (GH263)

API Changes

  • The run_model method of the ModelChain will use the weather parameter of all weather data instead of splitting it to irradiation and weather. The irradiation parameter still works but will be removed soon. (GH239)
  • delta_t kwarg is now 67.0 instead of None. IMPORTANT: Setting delta_t as None will break the code for the Numba accelerated calculations. This will be fixed in a future version. (GH165)

Enhancements

  • Adding a complete_irradiance method to the ModelChain to make it possible to calculate missing irradiation data from the existing columns [beta]. (GH239)
  • Added calculate_deltat method to the spa module to calculate the time difference between terrestrial time and UT1. Specifying a scalar is sufficient for most calculations. (GH165)
  • Added more attributes to ModelChain, PVSystem, and Location printed representations. (GH254)
  • Added name attribute to ModelChain and PVSystem. (GH254)
  • Restructured API section of the documentation so that there are separate pages for each function, class, or method. (GH258)
  • Improved Linke turbidity factor time interpolation with Python calendar month days and leap years (GH265)
  • Added option to return diffuse components from Perez transposition model.

Other

  • Typical modeling results could change by ~1%, depending on location, if they depend on the turbidity table
  • Fixed issues with pvsystem, tracking, and tmy_to_power jupyter notebooks (GH267, GH273)

Code Contributors

  • Uwe Krien
  • Will Holmgren
  • Volker Beutner
  • Mark Mikofski
  • Marc Anoma
  • Giuseppe Peronato

v0.4.1 (October 5, 2016)

This is a minor release from 0.4.0. We recommend that all users upgrade to this version, especially if they want to use the latest versions of pandas.

Bug fixes

  • Fixed an error in the irradiance.klucher transposition model. The error was introduced in version 0.4.0. (GH228)
  • Update RAP forecast model variable names. (GH241)
  • Fix incompatibility with pandas 0.19 and solar position calculations. (GH246)

Documentation

  • Fixed a typo in the pvsystem.sapm returns description. (GH234)
  • Replaced nosetests references with py.test. (GH232)
  • Improve the rendering of the snlinverter doc string. (GH242)

Code Contributors

  • Mark Mikofski
  • Johannes Dollinger
  • Will Holmgren

v0.4.0 (July 28, 2016)

This is a major release from 0.3.3. We recommend that all users upgrade to this version after reviewing the API Changes. Please see the Bug Fixes for changes that will result in slightly different modeling results.

API Changes

  • Remove unneeded module argument from singlediode function. (GH200)
  • In pvlib.irradiance.perez, renamed argument modelt to model. (GH196)
  • Functions in the irradiance module now work with scalar inputs in addition to arrays and Series. Furthermore, these functions no longer promote scalar or array input to Series output. Also applies to atmosphere.relativeairmass. (GH201, GH214)
  • Reorder the ashraeiam, physicaliam, and snlinverter arguments to put the most variable arguments first. Adds default arguments for the IAM functions. (GH197)
  • The irradiance.extraradiation function input/output type consistency across different methods has been dramatically improved. (GH217, GH219)
  • Updated to pvsystem.sapm to be consistent with the PVLIB MATLAB API. pvsystem.sapm now takes an effective irradiance argument instead of POA irradiances, airmass, and AOI. Implements closely related sapm_spectral_loss, sapm_aoi_loss, and sapm_effective_irradiance functions, as well as PVSystem methods. The sapm_aoi_loss function includes an optional argument to apply an upper limit to the output (output can be ~1% larger than 1 for AOI of ~30 degrees). (GH198, GH205, GH218)
  • The pvsystem.retrieve_sam keyword argument samfile has been replaced with path. A selection dialog window is now activated by not supplying any arguments to the function. The API for typical usage remains unchanged, however, the data will be loaded from a local file rather than the SAM website. (GH52)

Enhancements

  • Adds the First Solar spectral correction model. (GH115)
  • Adds the Gueymard 1994 integrated precipitable water model. (GH115)
  • Adds the PVWatts DC, AC, and system losses model. (GH195)
  • Improve PEP8 conformity in irradiance module. (GH214)
  • irradiance.disc is up to 10x faster. (GH214)
  • Add solarposition.nrel_earthsun_distance function and option to calculate extraterrestrial radiation using the NREL solar position algorithm. (GH211, GH215)
  • pvsystem.singlediode can now calculate IV curves if a user supplies an ivcurve_pnts keyword argument. (GH83)
  • Includes SAM data files in the distribution. (GH52)
  • ModelChain now implements SAPM, PVWatts, Single Diode and user-defined modeling options. See Will Holmgren’s ModelChain refactor gist for more discussion about new features in ModelChain. (GH143, GH194)
  • Added forecast.py module for solar power forecasts. (GH86, GH124, GH180)

Bug fixes

  • Fixed an error in pvsystem.singlediode’s i_mp, v_mp, and p_mp calculations when using array or Series input. The function wrongly returned solutions when any single point is within the error tolerance, rather than requiring that the solution for all points be within the error tolerance. Results in test scenarios changed by 1-10%. (GH221)
  • Fixed a numerical overflow error in pvsystem.singlediode’s v_oc determination for some combinations of parameters. (GH225)
  • dirint function yielded the wrong results for non-sea-level pressures. Fixed. (GH212)
  • Fixed a bug in the day angle calculation used by the ‘spencer’ and ‘asce’ extraterrestrial radiation options. Most modeling results will be changed by less than 1 part in 1000. (GH211)
  • irradiance.extraradiation now raises a ValueError for invalid method input. It previously failed silently. (GH215)

Documentation

  • Added new terms to the variables documentation. (GH195)
  • Added clear sky documentation page.
  • Fix documentation build warnings. (GH210)
  • Removed an unneeded note in irradiance.extraradiation. (GH216)

Other

  • pvlib-python is now available on the conda-forge channel: conda install pvlib-python -c conda-forge (GH154)
  • Switch to the py.test testing framework. (GH204)
  • Reconfigure Appveyor CI builds and resolve an issue in which the command line length was too long. (GH207)
  • Manually build numpy and pandas for the min requirements test. This is needed to avoid Continuum’s bad practice of bundling scipy with pandas. (GH214)

Requirements

  • pvlib now requires pandas >= 0.14.0 and numpy >= 1.9.0, both released in 2014. Most of pvlib will work with lesser versions. (GH214)

Code Contributors

  • Will Holmgren
  • Jonathan Chambers
  • Mitchell Lee
  • Derek Groenendyk

v0.3.3 (June 15, 2016)

This is a minor release from 0.3.2. We recommend that all users upgrade to this version.

API Changes

  • Renamed series_modules to modules_per_string and parallel_modules to strings_per_inverter. (GH176)
  • Changed two of the TMY3 data reader fields for consistency with the rest of the fields and with PVLIB MATLAB. Changed ‘PresWth source’ to ‘PresWthSource’, and ‘PresWth uncert’ to ‘PresWthUncertainty’. (GH193)

Enhancements

  • Adds the Erbs model. (GH2)
  • Adds the scale_voltage_current_power function and PVSystem method to support simple array modeling. (GH159)
  • Adds support for SingleAxisTracker objects in ModelChain. (GH169)
  • Add __repr__ method to PVSystem, LocalizedPVSystem, ModelChain, SingleAxisTracker, Location. (GH142)
  • Add v_from_i function for solving the single diode model. (GH190)
  • Improve speed of singlediode function by using v_from_i to determine v_oc. Speed is ~2x faster. (GH190)
  • Adds the Simplified Solis clear sky model. (GH148)

Bug fixes

  • Fix another bug with the Appveyor continuous integration builds. (GH170)
  • Add classifiers to setup.py. (GH181)
  • Fix snlinverter and singlediode documentation. They incorrectly said that inverter/module must be a DataFrame, when in reality they can be any dict-like object. (GH157)
  • Fix numpy 1.11 deprecation warnings caused by some functions using non-integer indices.
  • Propagate airmass data through ModelChain’s get_irradiance call so that the perez model can use it, if necessary. (GH172)
  • Fix problem in which the perez function dropped nighttime values. Nighttime values are now set to 0. (GH191)

Documentation

  • Localize datetime indices in package overview examples. (GH156)
  • Clarify that ModelChain and basic_chain currently only supports SAPM. (GH177)
  • Fix version number in 0.3.2 whatsnew file.
  • Shorten README.md file and move information to official documentation. (GH182)
  • Change authors to PVLIB Python Developers and clean up setup.py. (GH184)
  • Document the PresWth, PresWthSource, and PresWthUncertainty fields in the TMY3 data reader. (GH193)

Other

  • Removed test skip decorator functions for Linux + Python 3 and for pandas 0.18.0. (GH187)

Contributors

  • Will Holmgren
  • Mark Mikofski
  • Johannes Oos
  • Tony Lorenzo

v0.3.2 (May 3, 2016)

This is a minor release from 0.3.1. We recommend that all users upgrade to this version.

Bug fixes

  • Updates the SAM file URL. (GH152)

Contributors

  • Will Holmgren

v0.3.1 (April 19, 2016)

This is a minor release from 0.3.0. We recommend that all users upgrade to this version.

Enhancements

  • Added versioneer to keep track of version changes instead of manually updating pvlib/version.py. This will aid developers because the version string includes the specific git commit of the library code currently imported. (issue:150)

Bug fixes

  • Fixes night tare issue in snlinverter. When the DC input power (p_dc) to an inverter is below the inversion startup power (Ps0), the model should set the AC output (ac_power) to the night tare value (Pnt). The night tare power indicates the power consumed by the inverter to sense PV array voltage. The model was erroneously comparing Ps0 with the AC output power (ac_power), rather than the DC input power (p_dc). (GH140)
  • Fixed the azimuth calculation of rotated PV panel in function pvlib.tracking.singleaxis(…) so that the results are consistent with PVsyst. (GH144)

Contributors

  • ejmiller2
  • Yudong Ma
  • Tony Lorenzo
  • Will Holmgren

v0.3.0 (March 21, 2016)

This is a major release from 0.2.2. It will almost certainly break your code, but it’s worth it! We recommend that all users upgrade to this version after testing their code for compatibility and updating as necessary.

API changes

  • The location argument in solarposition.get_solarposition and clearsky.ineichen has been replaced with latitude, longitude, altitude, and tz as appropriate. This separates the object-oriented API from the procedural API. (GH17)
  • Location classes gain the get_solarposition, get_clearsky, and get_airmass functions.
  • Adds ModelChain, PVSystem, LocalizedPVSystem, SingleAxisTracker, and LocalizedSingleAxisTracker classes. (GH17)
  • Location objects can be created from TMY2/TMY3 metadata using the from_tmy constructor.
  • Change default Location timezone to 'UTC'.
  • The solar position calculators now assume UTC time if the input time is not localized. The calculators previously tried to infer the timezone from the now defunct location argument.
  • pvsystem.sapm_celltemp argument names now follow the variable conventions.
  • irradiance.total_irrad now follows the variable conventions. (GH105)
  • atmosphere.relativeairmass now raises a ValueError instead of assuming 'kastenyoung1989' if an invalid model is supplied. (GH119)

Enhancements

  • Added new sections to the documentation:

  • Adds support for Appveyor, a Windows continuous integration service. (GH111)

  • The readthedocs documentation build now uses conda packages instead of mock packages. This enables code to be run and figures to be generated during the documentation builds. (GH104)

  • Reconfigures TravisCI builds and adds e.g. has_numba decorators to the test suite. The result is that the TravisCI test suite runs almost 10x faster and users do not have to install all optional dependencies to run the test suite. (GH109)

  • Adds more unit tests that test that the return values are actually correct.

  • Add atmosphere.APPARENT_ZENITH_MODELS and atmosphere.TRUE_ZENITH_MODELS to enable code that can automatically determine which type of zenith data to use e.g. Location.get_airmass.

  • Modify sapm documentation to clarify that it does not work with the CEC database. (GH122)

  • Adds citation information to the documentation. (GH73)

  • Updates the Comparison with PVLIB MATLAB documentation. (GH116)

Bug fixes

  • Fixed the metadata key specification in documentation of the readtmy2 function.
  • Fixes the import of tkinter on Python 3 (GH112)
  • Add a decorator to skip test_calcparams_desoto on pandas 0.18.0. (GH130)
  • Fixes i_from_v documentation. (GH126)
  • Fixes two minor sphinx documentation errors: a too short heading underline in whatsnew/v0.2.2.txt and a table format in pvsystem. (GH123)

Contributors

  • Will Holmgren
  • pyElena21
  • DaCoEx
  • Uwe Krien

Will Holmgren, Jessica Forbess, bmu, Cliff Hansen, Tony Lorenzo, Uwe Krien, and bt- contributed to the object model discussion.

v0.2.2 (November 13, 2015)

This is a minor release from 0.2.1. We recommend that all users upgrade to this version.

Enhancements

  • Adds Python 3.5 compatibility (GH87)
  • Moves the Linke turbidity lookup into clearsky.lookup_linke_turbidity. The API for clearsky.ineichen remains the same. (GH95)

Bug fixes

  • irradiance.total_irrad had a typo that required the Klucher model to be accessed with 'klutcher'. Both spellings will work for the remaining 0.2.* versions of pvlib, but the misspelled method will be removed in 0.3. (GH97)
  • Fixes an import and KeyError in the IPython notebook tutorials (GH94).
  • Uses the logging module properly by replacing format calls with args. This results in a 5x speed increase for tracking.singleaxis (GH89).
  • Adds a link to the 2015 PVSC paper (GH81)

Contributors

  • Will Holmgren
  • jetheurer
  • dacoex

v0.2.1 (July 16, 2015)

This is a minor release from 0.2. It includes a large number of bug fixes for the IPython notebook tutorials. We recommend that all users upgrade to this version.

Enhancements

  • Update component info from SAM (csvs dated 2015-6-30) (GH75)

Bug fixes

  • Fix incorrect call to Perez irradiance function (GH76)
  • Fix numerous bugs in the IPython notebook tutorials (GH30)

Contributors

  • Will Holmgren
  • Jessica Forbess

v0.2.0 (July 6, 2015)

This is a major release from 0.1 and includes a large number of API changes, several new features and enhancements along with a number of bug fixes. We recommend that all users upgrade to this version.

Due to the large number of API changes, you will probably need to update your code.

API changes

  • Change variable names to conform with new Variables and style rules wiki. This impacts many function declarations and return values. Your existing code probably will not work! (GH37, GH54).
  • Move dirint and disc algorithms from clearsky.py to irradiance.py (GH42)
  • Mark some pvsystem.py methods as private (GH20)
  • Make output of pvsystem.sapm_celltemp a DataFrame (GH54)

Enhancements

  • Add conda installer
  • PEP8 fixups to solarposition.py and spa.py (GH50)
  • Add optional projection_ratio keyword argument to the haydavies calculator. Speeds calculations when irradiance changes but solar position remains the same (GH58)
  • Improved installation instructions in README.

Bug fixes

  • fix local build of the documentation (GH49, GH56)
  • The release date of 0.1 was fixed in the documentation (see v0.1.0 (April 20, 2015))
  • fix casting of DateTimeIndex to int64 epoch timestamp on machines with 32 bit python int (GH63)
  • fixed some docstrings with failing doctests (GH62)

Contributors

  • Will Holmgren
  • Rob Andrews
  • bmu
  • Tony Lorenzo

v0.1.0 (April 20, 2015)

This is the first official release of the pvlib-python project. As such, a “What’s new” document is a little hard to write. There will be significant overlap with the to-be-written document that describes the differences between pvlib-python and PVLIB_Matlab.

API changes

  • Remove pvl_ from module names.
  • Consolidation of similar modules. For example, functions from pvl_clearsky_ineichen.py and pvl_clearsky_haurwitz.py have been consolidated into clearsky.py.
  • Return one DataFrame instead of a tuple of DataFrames.
  • Change function and module names so that they do not conflict.

New features

  • Library is Python 3.3 and 3.4 compatible
  • Add What’s New section to docs (GH10)
  • Add PyEphem option to solar position calculations.
  • Add a Python translation of NREL’s SPA algorithm.
  • irradiance.py has more AOI, projection, and irradiance sum and calculation functions
  • TMY data import has a coerce_year option
  • TMY data can be loaded from a url (GH5)
  • Locations are now pvlib.location.Location objects, not “structs”.
  • Specify time zones using a string from the standard IANA Time Zone Database naming conventions or using a pytz.timezone instead of an integer GMT offset. We may add dateutils support in the future.
  • clearsky.ineichen supports interpolating monthly Linke Turbidities to daily resolution.

Other changes

  • Removed Vars=Locals(); Expect...; var=pvl\_tools.Parse(Vars,Expect); pattern. Very few tests of input validitity remain. Garbage in, garbage or nan out.
  • Removing unnecssary and sometimes undesired behavior such as setting maximum zenith=90 or airmass=0. Instead, we make extensive use of nan values.
  • Adding logging calls, removing print calls.
  • Improved PEP8 compliance.
  • Added /pvlib/data for lookup tables, test, and tutorial data.
  • Limited the scope of clearsky.py’s scipy dependency. clearsky.ineichen will work without scipy so long as the Linke Turbidity is supplied as a keyword argument. (GH13)
  • Removed NREL’s SPA code to comply with their license (GH9).
  • Revised the globalinplane function and added a test_globalinplane (GH21, GH33).

Documentation

  • Using readthedocs for documentation hosting.
  • Many typos and formatting errors corrected (GH16)
  • Documentation source code and tutorials live in / rather than /pvlib/docs.
  • Additional tutorials in /docs/tutorials.
  • Clarify pvsystem.systemdef input (GH17)

Testing

  • Tests are cleaner and more thorough. They are still nowhere near complete.
  • Using Coveralls to measure test coverage.
  • Using TravisCI for automated testing.
  • Using nosetests for more concise test code.

Bug fixes

  • Fixed DISC algorithm bugs concerning modifying input zenith Series (GH24), the Kt conditional evaluation (GH6), and ignoring the input pressure (GH25).
  • Many more bug fixes were made, but you’ll have to look at the detailed commit history.
  • Fixed inconsistent azimuth angle in the ephemeris function (GH40)

Contributors

This list includes all (I hope) contributors to pvlib/pvlib-python, Sandia-Labs/PVLIB_Python, and UARENForecasting/PVLIB_Python.

  • Rob Andrews
  • Will Holmgren
  • bmu
  • Tony Lorenzo
  • jforbess
  • Jorissup
  • dacoex
  • alexisph
  • Uwe Krien