pvlib 0.14.0__tar.gz → 0.15.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. {pvlib-0.14.0/pvlib.egg-info → pvlib-0.15.0}/PKG-INFO +1 -1
  2. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/adr-pvarray/plot_fit_to_matrix.py +1 -1
  3. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/agrivoltaics/plot_diffuse_PAR_Spitters_relationship.py +1 -1
  4. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/bifacial/plot_bifi_model_mc.py +1 -1
  5. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/bifacial/plot_bifi_model_pvwatts.py +1 -1
  6. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/bifacial/plot_pvfactors_fixed_tilt.py +1 -1
  7. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/floating-pv/plot_floating_pv_cell_temperature.py +1 -1
  8. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-decomposition/plot_diffuse_fraction.py +1 -1
  9. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_seasonal_tilt.py +1 -1
  10. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_transposition_gain.py +3 -3
  11. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/shading/plot_simple_irradiance_adjustment_for_horizon_shading.py +1 -1
  12. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-position/plot_sunpath_diagrams.py +2 -2
  13. pvlib-0.15.0/docs/sphinx/source/whatsnew/v0.15.0.rst +28 -0
  14. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew.rst +1 -0
  15. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/irradiance.py +1 -21
  16. {pvlib-0.14.0 → pvlib-0.15.0/pvlib.egg-info}/PKG-INFO +1 -1
  17. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib.egg-info/SOURCES.txt +1 -1
  18. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_meteonorm.py +8 -8
  19. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_irradiance.py +0 -46
  20. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_solarposition.py +29 -19
  21. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_spa.py +31 -42
  22. pvlib-0.14.0/docs/sphinx/source/whatsnew/v0.14.1.rst +0 -45
  23. {pvlib-0.14.0 → pvlib-0.15.0}/AUTHORS.md +0 -0
  24. {pvlib-0.14.0 → pvlib-0.15.0}/LICENSE +0 -0
  25. {pvlib-0.14.0 → pvlib-0.15.0}/MANIFEST.in +0 -0
  26. {pvlib-0.14.0 → pvlib-0.15.0}/README.md +0 -0
  27. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/README.rst +0 -0
  28. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/adr-pvarray/README.rst +0 -0
  29. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/adr-pvarray/plot_simulate_fast.py +0 -0
  30. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/adr-pvarray/plot_simulate_system.py +0 -0
  31. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/agrivoltaics/README.rst +0 -0
  32. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/agrivoltaics/plot_agrivoltaics_ground_irradiance.py +0 -0
  33. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/bifacial/README.rst +0 -0
  34. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/bifacial/plot_irradiance_nonuniformity_loss.py +0 -0
  35. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/floating-pv/README.rst +0 -0
  36. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-decomposition/README.rst +0 -0
  37. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/README.rst +0 -0
  38. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_ghi_transposition.py +0 -0
  39. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_interval_transposition_error.py +0 -0
  40. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_mixed_orientation.py +0 -0
  41. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_rtranpose_limitations.py +0 -0
  42. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/plot_rtranpose_year.py +0 -0
  43. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/irradiance-transposition/use_perez_modelchain.py +0 -0
  44. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/iv-modeling/README.rst +0 -0
  45. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/iv-modeling/plot_singlediode.py +0 -0
  46. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/reflections/README.rst +0 -0
  47. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/reflections/plot_convert_iam_models.py +0 -0
  48. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/reflections/plot_diffuse_aoi_correction.py +0 -0
  49. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/reflections/plot_fit_iam_models.py +0 -0
  50. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/shading/README.rst +0 -0
  51. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/shading/plot_martinez_shade_loss.py +0 -0
  52. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/shading/plot_partial_module_shading_simple.py +0 -0
  53. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/shading/plot_passias_diffuse_shading.py +0 -0
  54. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/shading/plot_shaded_fraction1d_ns_hsat_example.py +0 -0
  55. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/soiling/README.rst +0 -0
  56. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/soiling/plot_fig3A_hsu_soiling_example.py +0 -0
  57. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/soiling/plot_greensboro_kimber_soiling.py +0 -0
  58. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-position/README.rst +0 -0
  59. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-tracking/README.rst +0 -0
  60. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-tracking/plot_discontinuous_tracking.py +0 -0
  61. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-tracking/plot_dual_axis_tracking.py +0 -0
  62. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-tracking/plot_single_axis_tracking.py +0 -0
  63. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/solar-tracking/plot_single_axis_tracking_on_sloped_terrain.py +0 -0
  64. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/spectrum/README.rst +0 -0
  65. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/spectrum/average_photon_energy.py +0 -0
  66. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/spectrum/plot_spectrl2_fig51A.py +0 -0
  67. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/spectrum/plot_standard_ASTM_G173-03.py +0 -0
  68. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/spectrum/spectral_factor.py +0 -0
  69. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/system-models/README.rst +0 -0
  70. {pvlib-0.14.0 → pvlib-0.15.0}/docs/examples/system-models/plot_oedi_9068.py +0 -0
  71. {pvlib-0.14.0 → pvlib-0.15.0}/docs/notes/Determining the average view factor from a module.pdf +0 -0
  72. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/Makefile +0 -0
  73. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/make.bat +0 -0
  74. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/Anderson_Jensen_2024_Fig3.png +0 -0
  75. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/Anderson_Mikofski_2020_Fig5.jpg +0 -0
  76. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/Coello_Boyle_2019_Fig3.png +0 -0
  77. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/OEDI_9068_daily_timeseries.png +0 -0
  78. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/OEDI_9068_inverter1_comparison.png +0 -0
  79. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/OEDI_9068_inverter2_comparison.png +0 -0
  80. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/PV_module_layout_cesardd.jpg +0 -0
  81. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/agrivoltaics_system.jpg +0 -0
  82. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/clonebutton.png +0 -0
  83. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/example_function_screenshot.png +0 -0
  84. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/ground_slope_angle_convention.png +0 -0
  85. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/pvlib_logo_horiz.png +0 -0
  86. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/pvlib_logo_vert.png +0 -0
  87. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/pvlib_powered_logo_horiz.png +0 -0
  88. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/pvlib_powered_logo_vert.png +0 -0
  89. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/tracker_azimuth_angle_convention.png +0 -0
  90. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_images/tracker_rotation_angle_convention.png +0 -0
  91. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_static/favicon-16x16.png +0 -0
  92. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_static/favicon-32x32.png +0 -0
  93. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_static/no_scrollbars.css +0 -0
  94. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_static/reference_format.css +0 -0
  95. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_static/tooltipster_color_theming.css +0 -0
  96. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_static/version-alert.js +0 -0
  97. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_templates/autosummary/class.rst +0 -0
  98. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_templates/autosummary/function.rst +0 -0
  99. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_templates/autosummary/method.rst +0 -0
  100. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/_templates/edit-this-page.html +0 -0
  101. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/conf.py +0 -0
  102. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/contributing/how_to_contribute_new_code.rst +0 -0
  103. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/contributing/index.rst +0 -0
  104. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/contributing/introduction_to_contributing.rst +0 -0
  105. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/contributing/style_guide.rst +0 -0
  106. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/contributing/testing.rst +0 -0
  107. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/index.rst +0 -0
  108. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/airmass_atmospheric.rst +0 -0
  109. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/bifacial.rst +0 -0
  110. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/classes.rst +0 -0
  111. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/clearsky.rst +0 -0
  112. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/effects_on_pv_system_output/index.rst +0 -0
  113. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/effects_on_pv_system_output/loss-models.rst +0 -0
  114. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/effects_on_pv_system_output/shading.rst +0 -0
  115. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/effects_on_pv_system_output/snow.rst +0 -0
  116. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/effects_on_pv_system_output/soiling.rst +0 -0
  117. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/effects_on_pv_system_output/spectrum.rst +0 -0
  118. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/index.rst +0 -0
  119. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/iotools.rst +0 -0
  120. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/angle-of-incidence.rst +0 -0
  121. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/clearness-index.rst +0 -0
  122. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/decomposition.rst +0 -0
  123. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/extraterrestrial-radiation.rst +0 -0
  124. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/index.rst +0 -0
  125. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/other.rst +0 -0
  126. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/reverse-transposition.rst +0 -0
  127. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/irradiance/transposition.rst +0 -0
  128. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/location.rst +0 -0
  129. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/modelchain.rst +0 -0
  130. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/iam.rst +0 -0
  131. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/index.rst +0 -0
  132. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/inverter.rst +0 -0
  133. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/other.rst +0 -0
  134. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/parameters.rst +0 -0
  135. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/sdm.rst +0 -0
  136. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/system_models.rst +0 -0
  137. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/pv_modeling/temperature.rst +0 -0
  138. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/scaling.rst +0 -0
  139. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/solarposition.rst +0 -0
  140. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/tracking.rst +0 -0
  141. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/reference/transformer.rst +0 -0
  142. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/extras/faq.rst +0 -0
  143. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/extras/nomenclature.rst +0 -0
  144. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/getting_started/installation.rst +0 -0
  145. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/getting_started/introtutorial.rst +0 -0
  146. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/getting_started/package_overview.rst +0 -0
  147. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/index.rst +0 -0
  148. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/bifacial.rst +0 -0
  149. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/clearsky.rst +0 -0
  150. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/modelchain.rst +0 -0
  151. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/pvsystem.rst +0 -0
  152. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/singlediode.rst +0 -0
  153. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/spectrum.rst +0 -0
  154. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/temperature.rst +0 -0
  155. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/timetimezones.rst +0 -0
  156. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/user_guide/modeling_topics/weather_data.rst +0 -0
  157. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.1.0.txt +0 -0
  158. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.10.0.rst +0 -0
  159. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.10.1.rst +0 -0
  160. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.10.2.rst +0 -0
  161. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.10.3.rst +0 -0
  162. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.10.4.rst +0 -0
  163. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.10.5.rst +0 -0
  164. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.11.0.rst +0 -0
  165. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.11.1.rst +0 -0
  166. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.11.2.rst +0 -0
  167. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.12.0.rst +0 -0
  168. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.13.0.rst +0 -0
  169. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.13.1.rst +0 -0
  170. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.14.0.rst +0 -0
  171. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.2.0.txt +0 -0
  172. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.2.1.txt +0 -0
  173. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.2.2.txt +0 -0
  174. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.3.0.txt +0 -0
  175. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.3.1.txt +0 -0
  176. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.3.2.txt +0 -0
  177. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.3.3.txt +0 -0
  178. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.4.0.txt +0 -0
  179. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.4.1.txt +0 -0
  180. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.4.2.txt +0 -0
  181. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.4.3.txt +0 -0
  182. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.4.4.txt +0 -0
  183. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.4.5.txt +0 -0
  184. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.5.0.rst +0 -0
  185. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.5.1.rst +0 -0
  186. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.5.2.rst +0 -0
  187. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.6.0.rst +0 -0
  188. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.6.1.rst +0 -0
  189. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.6.2.rst +0 -0
  190. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.6.3.rst +0 -0
  191. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.7.0.rst +0 -0
  192. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.7.1.rst +0 -0
  193. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.7.2.rst +0 -0
  194. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.8.0.rst +0 -0
  195. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.8.1.rst +0 -0
  196. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.9.0.rst +0 -0
  197. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.9.1.rst +0 -0
  198. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.9.2.rst +0 -0
  199. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.9.3.rst +0 -0
  200. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.9.4.rst +0 -0
  201. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.9.5.rst +0 -0
  202. {pvlib-0.14.0 → pvlib-0.15.0}/docs/sphinx/source/whatsnew/v0.X.Y-example.rst +0 -0
  203. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/atmosphere.ipynb +0 -0
  204. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/irradiance.ipynb +0 -0
  205. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/pvsystem.ipynb +0 -0
  206. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/solarposition.ipynb +0 -0
  207. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/tmy.ipynb +0 -0
  208. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/tmy_and_diffuse_irrad_models.ipynb +0 -0
  209. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/tmy_to_power.ipynb +0 -0
  210. {pvlib-0.14.0 → pvlib-0.15.0}/docs/tutorials/tracking.ipynb +0 -0
  211. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/__init__.py +0 -0
  212. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/_deprecation.py +0 -0
  213. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/albedo.py +0 -0
  214. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/atmosphere.py +0 -0
  215. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/bifacial/__init__.py +0 -0
  216. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/bifacial/infinite_sheds.py +0 -0
  217. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/bifacial/loss_models.py +0 -0
  218. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/bifacial/pvfactors.py +0 -0
  219. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/bifacial/utils.py +0 -0
  220. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/clearsky.py +0 -0
  221. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/12839.tm2 +0 -0
  222. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/703165TY.csv +0 -0
  223. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/723170TYA.CSV +0 -0
  224. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/ASTMG173.csv +0 -0
  225. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/Altitude.h5 +0 -0
  226. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/LinkeTurbidities.h5 +0 -0
  227. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/adr-library-cec-inverters-2019-03-05.csv +0 -0
  228. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/sam-library-cec-inverters-2019-03-05.csv +0 -0
  229. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/sam-library-cec-modules-2019-03-05.csv +0 -0
  230. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/sam-library-sandia-modules-2015-6-30.csv +0 -0
  231. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/data/soiling_hsu_example_inputs.csv +0 -0
  232. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iam.py +0 -0
  233. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/inverter.py +0 -0
  234. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/__init__.py +0 -0
  235. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/acis.py +0 -0
  236. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/bsrn.py +0 -0
  237. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/crn.py +0 -0
  238. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/epw.py +0 -0
  239. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/era5.py +0 -0
  240. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/merra2.py +0 -0
  241. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/meteonorm.py +0 -0
  242. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/midc.py +0 -0
  243. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/nasa_power.py +0 -0
  244. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/panond.py +0 -0
  245. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/psm4.py +0 -0
  246. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/pvgis.py +0 -0
  247. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/sodapro.py +0 -0
  248. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/solaranywhere.py +0 -0
  249. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/solargis.py +0 -0
  250. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/solcast.py +0 -0
  251. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/solrad.py +0 -0
  252. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/srml.py +0 -0
  253. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/surfrad.py +0 -0
  254. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/iotools/tmy.py +0 -0
  255. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/__init__.py +0 -0
  256. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/sde.py +0 -0
  257. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/sdm/__init__.py +0 -0
  258. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/sdm/_fit_desoto_pvsyst_sandia.py +0 -0
  259. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/sdm/cec.py +0 -0
  260. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/sdm/desoto.py +0 -0
  261. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/sdm/pvsyst.py +0 -0
  262. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/ivtools/utils.py +0 -0
  263. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/location.py +0 -0
  264. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/modelchain.py +0 -0
  265. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/pvarray.py +0 -0
  266. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/pvsystem.py +0 -0
  267. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/scaling.py +0 -0
  268. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/shading.py +0 -0
  269. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/singlediode.py +0 -0
  270. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/snow.py +0 -0
  271. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/soiling.py +0 -0
  272. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/solarposition.py +0 -0
  273. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa.py +0 -0
  274. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa_c_files/README.md +0 -0
  275. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa_c_files/__init__.py +0 -0
  276. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa_c_files/cspa_py.pxd +0 -0
  277. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa_c_files/setup.py +0 -0
  278. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa_c_files/spa_py.pyx +0 -0
  279. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spa_c_files/spa_py_example.py +0 -0
  280. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spectrum/__init__.py +0 -0
  281. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spectrum/irradiance.py +0 -0
  282. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spectrum/mismatch.py +0 -0
  283. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spectrum/response.py +0 -0
  284. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/spectrum/spectrl2.py +0 -0
  285. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/temperature.py +0 -0
  286. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/tools.py +0 -0
  287. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/tracking.py +0 -0
  288. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/transformer.py +0 -0
  289. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib/version.py +0 -0
  290. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib.egg-info/dependency_links.txt +0 -0
  291. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib.egg-info/requires.txt +0 -0
  292. {pvlib-0.14.0 → pvlib-0.15.0}/pvlib.egg-info/top_level.txt +0 -0
  293. {pvlib-0.14.0 → pvlib-0.15.0}/pyproject.toml +0 -0
  294. {pvlib-0.14.0 → pvlib-0.15.0}/setup.cfg +0 -0
  295. {pvlib-0.14.0 → pvlib-0.15.0}/setup.py +0 -0
  296. {pvlib-0.14.0 → pvlib-0.15.0}/tests/__init__.py +0 -0
  297. {pvlib-0.14.0 → pvlib-0.15.0}/tests/bifacial/__init__.py +0 -0
  298. {pvlib-0.14.0 → pvlib-0.15.0}/tests/bifacial/test_infinite_sheds.py +0 -0
  299. {pvlib-0.14.0 → pvlib-0.15.0}/tests/bifacial/test_losses_models.py +0 -0
  300. {pvlib-0.14.0 → pvlib-0.15.0}/tests/bifacial/test_pvfactors.py +0 -0
  301. {pvlib-0.14.0 → pvlib-0.15.0}/tests/bifacial/test_utils.py +0 -0
  302. {pvlib-0.14.0 → pvlib-0.15.0}/tests/conftest.py +0 -0
  303. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/BIRD_08_16_2012.csv +0 -0
  304. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/BIRD_08_16_2012_patm.csv +0 -0
  305. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/Burlington, United States SolarAnywhere Time Series 2021 Lat_44_465 Lon_-73_205 TMY3 format.csv +0 -0
  306. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/Burlington, United States SolarAnywhere Time Series 20210101 to 20210103 Lat_44_4675 Lon_-73_2075 SA format.csv +0 -0
  307. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/Burlington, United States SolarAnywhere Typical GHI Year Lat_44_465 Lon_-73_205 SA format.csv +0 -0
  308. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/CPS SCH275KTL-DO-US-800-250kW_275kVA_1.OND +0 -0
  309. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/CRNS0101-05-2019-AZ_Tucson_11_W.txt +0 -0
  310. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/CRN_with_problems.txt +0 -0
  311. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/ET-M772BH550GL.PAN +0 -0
  312. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/NLD_Amsterdam062400_IWEC.epw +0 -0
  313. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/PVsyst_demo.csv +0 -0
  314. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/PVsyst_demo_model.csv +0 -0
  315. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/SRML-day-EUPO1801.txt +0 -0
  316. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/abq19056.dat +0 -0
  317. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/bishop88_numerical_precision.csv +0 -0
  318. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/bsrn-lr0100-pay0616.dat +0 -0
  319. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/bsrn-pay0616.dat.gz +0 -0
  320. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/cams_mcclear_1min_verbose.csv +0 -0
  321. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/cams_mcclear_monthly.csv +0 -0
  322. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/cams_radiation_1min_verbose.csv +0 -0
  323. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/cams_radiation_monthly.csv +0 -0
  324. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/detect_clearsky_data.csv +0 -0
  325. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/detect_clearsky_threshold_data.csv +0 -0
  326. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/greensboro_kimber_soil_manwash.dat +0 -0
  327. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/greensboro_kimber_soil_nowash.dat +0 -0
  328. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/inverter_fit_snl_meas.csv +0 -0
  329. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/inverter_fit_snl_sim.csv +0 -0
  330. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/ivtools_numdiff.csv +0 -0
  331. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/midc_20181014.txt +0 -0
  332. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/midc_raw_20181018.txt +0 -0
  333. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/midc_raw_short_header_20191115.txt +0 -0
  334. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/msn19056.dat +0 -0
  335. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/precise_iv_curves1.json +0 -0
  336. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/precise_iv_curves2.json +0 -0
  337. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/precise_iv_curves_parameter_sets1.csv +0 -0
  338. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/precise_iv_curves_parameter_sets2.csv +0 -0
  339. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/pvgis_hourly_Timeseries_45.000_8.000_SA2_10kWp_CIS_5_2a_2013_2014.json +0 -0
  340. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/pvgis_hourly_Timeseries_45.000_8.000_SA_30deg_0deg_2016_2016.csv +0 -0
  341. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/pvgis_tmy_meta.json +0 -0
  342. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/pvgis_tmy_test.csv +0 -0
  343. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/pvwatts_8760_rackmount.csv +0 -0
  344. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/pvwatts_8760_roofmount.csv +0 -0
  345. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/singleaxis_tracker_wslope.csv +0 -0
  346. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/spectrl2_example_spectra.csv +0 -0
  347. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/surfrad-slv16001.dat +0 -0
  348. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm3_2017.csv +0 -0
  349. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm3_2019_5min.csv +0 -0
  350. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm3_tmy-2017.csv +0 -0
  351. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm4_2023.csv +0 -0
  352. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm4_2023_5min.csv +0 -0
  353. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm4_full_disc_2023.csv +0 -0
  354. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_psm4_tmy-2023.csv +0 -0
  355. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_read_psm3.csv +0 -0
  356. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_read_psm4.csv +0 -0
  357. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/test_read_pvgis_horizon.csv +0 -0
  358. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/tmy_45.000_8.000_2005_2023.csv +0 -0
  359. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/tmy_45.000_8.000_2005_2023.epw +0 -0
  360. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/tmy_45.000_8.000_2005_2023.json +0 -0
  361. {pvlib-0.14.0 → pvlib-0.15.0}/tests/data/tmy_45.000_8.000_userhorizon.json +0 -0
  362. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/__init__.py +0 -0
  363. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_acis.py +0 -0
  364. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_bsrn.py +0 -0
  365. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_crn.py +0 -0
  366. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_epw.py +0 -0
  367. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_era5.py +0 -0
  368. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_merra2.py +0 -0
  369. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_midc.py +0 -0
  370. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_nasa_power.py +0 -0
  371. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_panond.py +0 -0
  372. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_psm4.py +0 -0
  373. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_pvgis.py +0 -0
  374. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_sodapro.py +0 -0
  375. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_solaranywhere.py +0 -0
  376. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_solargis.py +0 -0
  377. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_solcast.py +0 -0
  378. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_solrad.py +0 -0
  379. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_srml.py +0 -0
  380. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_surfrad.py +0 -0
  381. {pvlib-0.14.0 → pvlib-0.15.0}/tests/iotools/test_tmy.py +0 -0
  382. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/__init__.py +0 -0
  383. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/sdm/conftest.py +0 -0
  384. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/sdm/test__fit_desoto_pvsyst_sandia.py +0 -0
  385. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/sdm/test_cec.py +0 -0
  386. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/sdm/test_desoto.py +0 -0
  387. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/sdm/test_pvsyst.py +0 -0
  388. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/test_sde.py +0 -0
  389. {pvlib-0.14.0 → pvlib-0.15.0}/tests/ivtools/test_utils.py +0 -0
  390. {pvlib-0.14.0 → pvlib-0.15.0}/tests/spectrum/__init__.py +0 -0
  391. {pvlib-0.14.0 → pvlib-0.15.0}/tests/spectrum/conftest.py +0 -0
  392. {pvlib-0.14.0 → pvlib-0.15.0}/tests/spectrum/test_irradiance.py +0 -0
  393. {pvlib-0.14.0 → pvlib-0.15.0}/tests/spectrum/test_mismatch.py +0 -0
  394. {pvlib-0.14.0 → pvlib-0.15.0}/tests/spectrum/test_response.py +0 -0
  395. {pvlib-0.14.0 → pvlib-0.15.0}/tests/spectrum/test_spectrl2.py +0 -0
  396. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test__deprecation.py +0 -0
  397. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_albedo.py +0 -0
  398. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_atmosphere.py +0 -0
  399. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_clearsky.py +0 -0
  400. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_conftest.py +0 -0
  401. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_iam.py +0 -0
  402. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_inverter.py +0 -0
  403. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_location.py +0 -0
  404. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_modelchain.py +0 -0
  405. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_numerical_precision.py +0 -0
  406. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_pvarray.py +0 -0
  407. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_pvsystem.py +0 -0
  408. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_scaling.py +0 -0
  409. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_shading.py +0 -0
  410. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_singlediode.py +0 -0
  411. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_snow.py +0 -0
  412. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_soiling.py +0 -0
  413. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_temperature.py +0 -0
  414. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_tools.py +0 -0
  415. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_tracking.py +0 -0
  416. {pvlib-0.14.0 → pvlib-0.15.0}/tests/test_transformer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pvlib
3
- Version: 0.14.0
3
+ Version: 0.15.0
4
4
  Summary: A set of functions and classes for simulating the performance of photovoltaic energy systems.
5
5
  Home-page: https://github.com/pvlib/pvlib-python
6
6
  Author-email: pvlib python Developers <pvlib-admin@googlegroups.com>
@@ -51,7 +51,7 @@ iec61853data = '''
51
51
  25 1000 75.0 273.651
52
52
  26 1100 75.0 301.013
53
53
  '''
54
- df = pd.read_csv(StringIO(iec61853data), delim_whitespace=True)
54
+ df = pd.read_csv(StringIO(iec61853data), sep=r"\s+")
55
55
 
56
56
  # %%
57
57
  #
@@ -57,7 +57,7 @@ tmy = tmy["2002-09-06":"2002-09-21"] # select some days
57
57
 
58
58
  solar_position = pvlib.solarposition.get_solarposition(
59
59
  # TMY timestamp is at end of hour, so shift to center of interval
60
- tmy.index.shift(freq="-30T"),
60
+ tmy.index.shift(freq="-30min"),
61
61
  latitude=metadata["latitude"],
62
62
  longitude=metadata["longitude"],
63
63
  altitude=metadata["altitude"],
@@ -40,7 +40,7 @@ warnings.filterwarnings(action='ignore', module='pvfactors')
40
40
  # create site location and times characteristics
41
41
  lat, lon = 36.084, -79.817
42
42
  tz = 'Etc/GMT+5'
43
- times = pd.date_range('2021-06-21', '2021-6-22', freq='1T', tz=tz)
43
+ times = pd.date_range('2021-06-21', '2021-6-22', freq='1min', tz=tz)
44
44
 
45
45
  # create site system characteristics
46
46
  axis_tilt = 0
@@ -32,7 +32,7 @@ warnings.filterwarnings(action='ignore', module='pvfactors')
32
32
  # using Greensboro, NC for this example
33
33
  lat, lon = 36.084, -79.817
34
34
  tz = 'Etc/GMT+5'
35
- times = pd.date_range('2021-06-21', '2021-06-22', freq='1T', tz=tz)
35
+ times = pd.date_range('2021-06-21', '2021-06-22', freq='1min', tz=tz)
36
36
 
37
37
  # create location object and get clearsky data
38
38
  site_location = location.Location(lat, lon, tz=tz, name='Greensboro, NC')
@@ -30,7 +30,7 @@ warnings.filterwarnings(action='ignore', module='pvfactors')
30
30
  # %%
31
31
  # First, generate the usual modeling inputs:
32
32
 
33
- times = pd.date_range('2021-06-21', '2021-06-22', freq='1T', tz='Etc/GMT+5')
33
+ times = pd.date_range('2021-06-21', '2021-06-22', freq='1min', tz='Etc/GMT+5')
34
34
  loc = location.Location(latitude=40, longitude=-80, tz=times.tz)
35
35
  sp = loc.get_solarposition(times)
36
36
  cs = loc.get_clearsky(times)
@@ -140,7 +140,7 @@ tmy = tmy['2002-06-06 00:00':'2002-06-06 23:59'] # select period
140
140
 
141
141
  solar_position = pvlib.solarposition.get_solarposition(
142
142
  # TMY timestamp is at end of hour, so shift to center of interval
143
- tmy.index.shift(freq='-30T'),
143
+ tmy.index.shift(freq='-30min'),
144
144
  latitude=metadata['latitude'],
145
145
  longitude=metadata['longitude'],
146
146
  altitude=metadata['altitude'],
@@ -35,7 +35,7 @@ greensboro, metadata = read_tmy3(DATA_DIR / '723170TYA.CSV', coerce_year=1990,
35
35
  # NOTE: TMY3 files timestamps indicate the end of the hour, so shift indices
36
36
  # back 30-minutes to calculate solar position at center of the interval
37
37
  solpos = get_solarposition(
38
- greensboro.index.shift(freq="-30T"), latitude=metadata['latitude'],
38
+ greensboro.index.shift(freq="-30min"), latitude=metadata['latitude'],
39
39
  longitude=metadata['longitude'], altitude=metadata['altitude'],
40
40
  pressure=greensboro.pressure*100, # convert from millibar to Pa
41
41
  temperature=greensboro.temp_air)
@@ -96,6 +96,6 @@ results = pd.DataFrame({
96
96
  'Seasonal 20/40 Production': mc.results.ac,
97
97
  'Fixed 30 Production': mc2.results.ac,
98
98
  })
99
- results.resample('m').sum().plot()
99
+ results.resample('ME').sum().plot()
100
100
  plt.ylabel('Monthly Production')
101
101
  plt.show()
@@ -80,7 +80,7 @@ for tilt in range(0, 50, 10):
80
80
  column_name = f"FT-{tilt}"
81
81
  # TMYs are hourly, so we can just sum up irradiance [W/m^2] to get
82
82
  # insolation [Wh/m^2]:
83
- df_monthly[column_name] = poa_irradiance.resample('m').sum()
83
+ df_monthly[column_name] = poa_irradiance.resample('ME').sum()
84
84
 
85
85
  # single-axis tracking:
86
86
  orientation = tracking.singleaxis(solar_position['apparent_zenith'],
@@ -95,10 +95,10 @@ poa_irradiance = calculate_poa(tmy,
95
95
  solar_position,
96
96
  orientation['surface_tilt'],
97
97
  orientation['surface_azimuth'])
98
- df_monthly['SAT-0.4'] = poa_irradiance.resample('m').sum()
98
+ df_monthly['SAT-0.4'] = poa_irradiance.resample('ME').sum()
99
99
 
100
100
  # calculate the percent difference from GHI
101
- ghi_monthly = tmy['ghi'].resample('m').sum()
101
+ ghi_monthly = tmy['ghi'].resample('ME').sum()
102
102
  df_monthly = 100 * (df_monthly.divide(ghi_monthly, axis=0) - 1)
103
103
 
104
104
  df_monthly.plot()
@@ -27,7 +27,7 @@ tz = 'MST'
27
27
 
28
28
  # Set times in the morning of the December solstice.
29
29
  times = pd.date_range(
30
- '2020-12-20 6:30', '2020-12-20 9:00', freq='1T', tz=tz
30
+ '2020-12-20 6:30', '2020-12-20 9:00', freq='1min', tz=tz
31
31
  )
32
32
 
33
33
  # Create location object, and get solar position and clearsky irradiance data.
@@ -24,7 +24,7 @@ import matplotlib.pyplot as plt
24
24
  tz = 'Asia/Calcutta'
25
25
  lat, lon = 28.6, 77.2
26
26
 
27
- times = pd.date_range('2019-01-01 00:00:00', '2020-01-01', freq='H', tz=tz)
27
+ times = pd.date_range('2019-01-01 00:00:00', '2020-01-01', freq='h', tz=tz)
28
28
  solpos = solarposition.get_solarposition(times, lat, lon)
29
29
  # remove nighttime
30
30
  solpos = solpos.loc[solpos['apparent_elevation'] > 0, :]
@@ -112,7 +112,7 @@ import matplotlib.pyplot as plt
112
112
 
113
113
  tz = 'Asia/Calcutta'
114
114
  lat, lon = 28.6, 77.2
115
- times = pd.date_range('2019-01-01 00:00:00', '2020-01-01', freq='H', tz=tz)
115
+ times = pd.date_range('2019-01-01 00:00:00', '2020-01-01', freq='h', tz=tz)
116
116
 
117
117
  solpos = solarposition.get_solarposition(times, lat, lon)
118
118
  # remove nighttime
@@ -0,0 +1,28 @@
1
+ .. _whatsnew_0_15_0:
2
+
3
+
4
+ v0.15.0 (Feb 3, 2026)
5
+ ---------------------
6
+
7
+ Breaking Changes
8
+ ~~~~~~~~~~~~~~~~
9
+ * Removed expired parameter name deprecations (:issue:`2662`, :pull:`2666`):
10
+
11
+ - Parameter ``clearsky_ghi`` in :py:func:`pvlib.irradiance.clearsky_index`
12
+ - Parameters ``ghi_clearsky`` and ``dni_clearsky`` in :py:func:`pvlib.irradiance.dirindex`
13
+ - Parameter ``clearsky_dni`` in :py:func:`pvlib.irradiance.dni`
14
+
15
+ Documentation
16
+ ~~~~~~~~~~~~~
17
+ - Update gallery examples to work with ``pandas==3`` (:pull:`2664`).
18
+
19
+ Contributors
20
+ ~~~~~~~~~~~~
21
+ * Echedey Luis (:ghuser:`echedey-ls`)
22
+ * Aman Srivastava (:ghuser:`aman-coder03`)
23
+ * Cliff Hansen (:ghuser:`cwhanse`)
24
+ * Adam R. Jensen (:ghuser:`adamrjensen`)
25
+ * Will Holmgren (:ghuser:`wholmgren`)
26
+ * Rajiv Daxini (:ghuser:`RDaxini`)
27
+ * Anton Driesse (:ghuser:`adriesse`)
28
+ * Kevin Anderson (:ghuser:`kandersolar`)
@@ -6,6 +6,7 @@ What's New
6
6
 
7
7
  These are new features and improvements of note in each release.
8
8
 
9
+ .. include:: whatsnew/v0.15.0.rst
9
10
  .. include:: whatsnew/v0.14.0.rst
10
11
  .. include:: whatsnew/v0.13.1.rst
11
12
  .. include:: whatsnew/v0.13.0.rst
@@ -16,7 +16,7 @@ from scipy.optimize import bisect
16
16
  from pvlib import atmosphere, solarposition, tools
17
17
  import pvlib # used to avoid dni name collision in complete_irradiance
18
18
 
19
- from pvlib._deprecation import pvlibDeprecationWarning, renamed_kwarg_warning
19
+ from pvlib._deprecation import pvlibDeprecationWarning
20
20
  import warnings
21
21
 
22
22
 
@@ -1613,11 +1613,6 @@ def ghi_from_poa_driesse_2023(surface_tilt, surface_azimuth,
1613
1613
  return ghi
1614
1614
 
1615
1615
 
1616
- @renamed_kwarg_warning(
1617
- since='0.11.2',
1618
- old_param_name='clearsky_ghi',
1619
- new_param_name='ghi_clear',
1620
- removal="0.14.0")
1621
1616
  def clearsky_index(ghi, ghi_clear, max_clearsky_index=2.0):
1622
1617
  """
1623
1618
  Calculate the clearsky index.
@@ -2156,16 +2151,6 @@ def _dirint_bins(times, kt_prime, zenith, w, delta_kt_prime):
2156
2151
  return kt_prime_bin, zenith_bin, w_bin, delta_kt_prime_bin
2157
2152
 
2158
2153
 
2159
- @renamed_kwarg_warning(
2160
- since='0.11.2',
2161
- old_param_name='ghi_clearsky',
2162
- new_param_name='ghi_clear',
2163
- removal="0.14.0")
2164
- @renamed_kwarg_warning(
2165
- since='0.11.2',
2166
- old_param_name='dni_clearsky',
2167
- new_param_name='dni_clear',
2168
- removal="0.14.0")
2169
2154
  def dirindex(ghi, ghi_clear, dni_clear, zenith, times, pressure=101325.,
2170
2155
  use_delta_kt_prime=True, temp_dew=None, min_cos_zenith=0.065,
2171
2156
  max_zenith=87):
@@ -3662,11 +3647,6 @@ def _get_dirint_coeffs():
3662
3647
  return coeffs[1:, 1:, :, :]
3663
3648
 
3664
3649
 
3665
- @renamed_kwarg_warning(
3666
- since='0.11.2',
3667
- old_param_name='clearsky_dni',
3668
- new_param_name='dni_clear',
3669
- removal="0.14.0")
3670
3650
  def dni(ghi, dhi, zenith, dni_clear=None, clearsky_tolerance=1.1,
3671
3651
  zenith_threshold_for_zero_dni=88.0,
3672
3652
  zenith_threshold_for_clearsky_limit=80.0):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pvlib
3
- Version: 0.14.0
3
+ Version: 0.15.0
4
4
  Summary: A set of functions and classes for simulating the performance of photovoltaic energy systems.
5
5
  Home-page: https://github.com/pvlib/pvlib-python
6
6
  Author-email: pvlib python Developers <pvlib-admin@googlegroups.com>
@@ -161,7 +161,7 @@ docs/sphinx/source/whatsnew/v0.12.0.rst
161
161
  docs/sphinx/source/whatsnew/v0.13.0.rst
162
162
  docs/sphinx/source/whatsnew/v0.13.1.rst
163
163
  docs/sphinx/source/whatsnew/v0.14.0.rst
164
- docs/sphinx/source/whatsnew/v0.14.1.rst
164
+ docs/sphinx/source/whatsnew/v0.15.0.rst
165
165
  docs/sphinx/source/whatsnew/v0.2.0.txt
166
166
  docs/sphinx/source/whatsnew/v0.2.1.txt
167
167
  docs/sphinx/source/whatsnew/v0.2.2.txt
@@ -53,7 +53,7 @@ def expected_meta():
53
53
  @pytest.fixture
54
54
  def expected_meteonorm_index():
55
55
  expected_meteonorm_index = \
56
- pd.date_range('2023-01-01', '2023-12-31 23:59', freq='1h', tz='UTC') \
56
+ pd.date_range('2025-01-01', '2025-12-31 23:59', freq='1h', tz='UTC') \
57
57
  + pd.Timedelta(minutes=30)
58
58
  expected_meteonorm_index.freq = None
59
59
  return expected_meteonorm_index
@@ -71,13 +71,13 @@ def expected_meteonorm_data():
71
71
  [0.0, 0.0],
72
72
  [0.0, 0.0],
73
73
  [0.0, 0.0],
74
- [2.5, 2.68],
75
- [77.5, 77.48],
76
- [165.0, 164.99],
77
- [210.75, 210.75],
78
- [221.0, 220.99],
74
+ [3.75, 3.74],
75
+ [57.25, 57.20],
76
+ [149.0, 148.96],
77
+ [242.25, 242.24],
78
+ [228.0, 227.98],
79
79
  ]
80
- index = pd.date_range('2023-01-01 00:30', periods=12, freq='1h', tz='UTC')
80
+ index = pd.date_range('2025-01-01 00:30', periods=12, freq='1h', tz='UTC')
81
81
  index.freq = None
82
82
  expected = pd.DataFrame(expected, index=index, columns=columns)
83
83
  return expected
@@ -116,7 +116,7 @@ def test_get_meteonorm_training(
116
116
  expected_meteonorm_data):
117
117
  data, meta = pvlib.iotools.get_meteonorm_observation_training(
118
118
  latitude=50, longitude=10,
119
- start='2023-01-01', end='2024-01-01',
119
+ start='2025-01-01', end='2026-01-01',
120
120
  api_key=demo_api_key,
121
121
  parameters=['ghi', 'global_horizontal_irradiance_with_shading'],
122
122
  time_step='1h',
@@ -16,7 +16,6 @@ from .conftest import (
16
16
  assert_series_equal,
17
17
  requires_ephem,
18
18
  requires_numba,
19
- fail_on_pvlib_version,
20
19
  )
21
20
 
22
21
  from pvlib._deprecation import pvlibDeprecationWarning
@@ -1110,20 +1109,6 @@ def test_dirindex(times):
1110
1109
  equal_nan=True)
1111
1110
 
1112
1111
 
1113
- @fail_on_pvlib_version("0.14")
1114
- def test_dirindex_ghi_clearsky_deprecation():
1115
- times = pd.DatetimeIndex(['2014-06-24T18-1200'])
1116
- ghi = pd.Series([1038.62], index=times)
1117
- ghi_clearsky = pd.Series([1042.48031487], index=times)
1118
- dni_clearsky = pd.Series([939.95469881], index=times)
1119
- zenith = pd.Series([10.56413562], index=times)
1120
- pressure, tdew = 93193, 10
1121
- with pytest.warns(pvlibDeprecationWarning, match='ghi_clear'):
1122
- irradiance.dirindex(
1123
- ghi=ghi, ghi_clearsky=ghi_clearsky, dni_clear=dni_clearsky,
1124
- zenith=zenith, times=times, pressure=pressure, temp_dew=tdew)
1125
-
1126
-
1127
1112
  def test_dirindex_min_cos_zenith_max_zenith():
1128
1113
  # map out behavior under difficult conditions with various
1129
1114
  # limiting kwargs settings
@@ -1155,19 +1140,6 @@ def test_dirindex_min_cos_zenith_max_zenith():
1155
1140
  assert_series_equal(out, expected)
1156
1141
 
1157
1142
 
1158
- @fail_on_pvlib_version("0.14")
1159
- def test_dirindex_dni_clearsky_deprecation():
1160
- times = pd.DatetimeIndex(['2014-06-24T12-0700', '2014-06-24T18-0700'])
1161
- ghi = pd.Series([0, 1], index=times)
1162
- ghi_clearsky = pd.Series([0, 1], index=times)
1163
- dni_clear = pd.Series([0, 5], index=times)
1164
- solar_zenith = pd.Series([90, 89.99], index=times)
1165
- with pytest.warns(pvlibDeprecationWarning, match='dni_clear'):
1166
- irradiance.dirindex(ghi, ghi_clearsky, dni_clearsky=dni_clear,
1167
- zenith=solar_zenith, times=times,
1168
- min_cos_zenith=0)
1169
-
1170
-
1171
1143
  def test_dni():
1172
1144
  ghi = pd.Series([90, 100, 100, 100, 100])
1173
1145
  dhi = pd.Series([100, 90, 50, 50, 50])
@@ -1186,17 +1158,6 @@ def test_dni():
1186
1158
  146.190220008, 573.685662283]))
1187
1159
 
1188
1160
 
1189
- @fail_on_pvlib_version("0.14")
1190
- def test_dni_dni_clearsky_deprecation():
1191
- ghi = pd.Series([90, 100, 100, 100, 100])
1192
- dhi = pd.Series([100, 90, 50, 50, 50])
1193
- zenith = pd.Series([80, 100, 85, 70, 85])
1194
- dni_clear = pd.Series([50, 50, 200, 50, 300])
1195
- with pytest.warns(pvlibDeprecationWarning, match='dni_clear'):
1196
- irradiance.dni(ghi, dhi, zenith,
1197
- clearsky_dni=dni_clear, clearsky_tolerance=2)
1198
-
1199
-
1200
1161
  @pytest.mark.parametrize(
1201
1162
  'surface_tilt,surface_azimuth,solar_zenith,' +
1202
1163
  'solar_azimuth,aoi_expected,aoi_proj_expected',
@@ -1289,13 +1250,6 @@ def test_clearsky_index():
1289
1250
  assert_series_equal(out, expected)
1290
1251
 
1291
1252
 
1292
- @fail_on_pvlib_version("0.14")
1293
- def test_clearsky_index_clearsky_ghi_deprecation():
1294
- with pytest.warns(pvlibDeprecationWarning, match='ghi_clear'):
1295
- ghi, clearsky_ghi = 200, 300
1296
- irradiance.clearsky_index(ghi, clearsky_ghi=clearsky_ghi)
1297
-
1298
-
1299
1253
  def test_clearness_index():
1300
1254
  ghi = np.array([-1, 0, 1, 1000])
1301
1255
  solar_zenith = np.array([180, 90, 89.999, 0])
@@ -142,20 +142,15 @@ def test_spa_python_numpy_physical_dst(expected_solpos, golden):
142
142
 
143
143
  @pytest.mark.parametrize('delta_t', [65.0, None, np.array([65, 65])])
144
144
  def test_sun_rise_set_transit_spa(expected_rise_set_spa, golden, delta_t):
145
- # solution from NREL SAP web calculator
145
+ # solution from NREL SPA web calculator
146
146
  south = Location(-35.0, 0.0, tz='UTC')
147
- times = pd.DatetimeIndex([datetime.datetime(1996, 7, 5, 0),
148
- datetime.datetime(2004, 12, 4, 0)]
149
- ).tz_localize('UTC')
150
- sunrise = pd.DatetimeIndex([datetime.datetime(1996, 7, 5, 7, 8, 15),
151
- datetime.datetime(2004, 12, 4, 4, 38, 57)]
152
- ).tz_localize('UTC').tolist()
153
- sunset = pd.DatetimeIndex([datetime.datetime(1996, 7, 5, 17, 1, 4),
154
- datetime.datetime(2004, 12, 4, 19, 2, 3)]
155
- ).tz_localize('UTC').tolist()
156
- transit = pd.DatetimeIndex([datetime.datetime(1996, 7, 5, 12, 4, 36),
157
- datetime.datetime(2004, 12, 4, 11, 50, 22)]
158
- ).tz_localize('UTC').tolist()
147
+ times = pd.to_datetime(["1996-07-05", "2004-12-04"], utc=True)
148
+ sunrise = pd.to_datetime(["1996-07-05 07:08:15", "2004-12-04 04:38:57"],
149
+ utc=True)
150
+ sunset = pd.to_datetime(["1996-07-05 17:01:04", "2004-12-04 19:02:03"],
151
+ utc=True)
152
+ transit = pd.to_datetime(["1996-07-05 12:04:36", "2004-12-04 11:50:22"],
153
+ utc=True)
159
154
  frame = pd.DataFrame({'sunrise': sunrise,
160
155
  'sunset': sunset,
161
156
  'transit': transit}, index=times)
@@ -169,7 +164,9 @@ def test_sun_rise_set_transit_spa(expected_rise_set_spa, golden, delta_t):
169
164
  for col, data in result.items():
170
165
  result_rounded[col] = data.dt.round('1s')
171
166
 
172
- assert_frame_equal(frame, result_rounded)
167
+ assert_frame_equal(frame, result_rounded,
168
+ check_dtype=False # ignore us/ns dtypes
169
+ )
173
170
 
174
171
  # test for Golden, CO compare to NREL SPA
175
172
  result = solarposition.sun_rise_set_transit_spa(
@@ -182,7 +179,9 @@ def test_sun_rise_set_transit_spa(expected_rise_set_spa, golden, delta_t):
182
179
  for col, data in result.items():
183
180
  result_rounded[col] = data.dt.round('s').tz_convert('MST')
184
181
 
185
- assert_frame_equal(expected_rise_set_spa, result_rounded)
182
+ assert_frame_equal(expected_rise_set_spa, result_rounded,
183
+ check_dtype=False # ignore us/ns dtypes
184
+ )
186
185
 
187
186
 
188
187
  @requires_ephem
@@ -726,7 +725,10 @@ def test_hour_angle_with_tricky_timezones():
726
725
  '2014-09-07 02:00:00',
727
726
  ]).tz_localize('America/Santiago', nonexistent='shift_forward')
728
727
 
729
- with pytest.raises(pytz.exceptions.NonExistentTimeError):
728
+ with pytest.raises((
729
+ pytz.exceptions.NonExistentTimeError, # pandas 1.x, 2.x
730
+ ValueError, # pandas 3.x
731
+ )):
730
732
  times.normalize()
731
733
 
732
734
  # should not raise `pytz.exceptions.NonExistentTimeError`
@@ -740,7 +742,10 @@ def test_hour_angle_with_tricky_timezones():
740
742
  '2014-11-02 02:00:00',
741
743
  ]).tz_localize('America/Havana', ambiguous=[True, True, False, False])
742
744
 
743
- with pytest.raises(pytz.exceptions.AmbiguousTimeError):
745
+ with pytest.raises((
746
+ pytz.exceptions.AmbiguousTimeError, # pandas 1.x, 2.x
747
+ ValueError, # pandas 3.x
748
+ )):
744
749
  solarposition.hour_angle(times, longitude, eot)
745
750
 
746
751
 
@@ -798,8 +803,13 @@ def test_sun_rise_set_transit_geometric(expected_rise_set_spa, golden_mst):
798
803
  @pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
799
804
  def test__datetime_to_unixtime(tz):
800
805
  # for pandas < 2.0 where "unit" doesn't exist in pd.date_range. note that
801
- # unit of ns is the only option in pandas<2, and the default in pandas 2.x
802
- times = pd.date_range(start='2019-01-01', freq='h', periods=3, tz=tz)
806
+ # unit of ns is the only option in pandas<2, and the default in pandas 2.x,
807
+ # but the default is us in pandas 3.x
808
+ kwargs = dict(start='2019-01-01', freq='h', periods=3, tz=tz)
809
+ try:
810
+ times = pd.date_range(**kwargs, unit='ns') # pandas 2.x, 3.x
811
+ except TypeError:
812
+ times = pd.date_range(**kwargs) # pandas 1.x
803
813
  expected = times.view(np.int64)/10**9
804
814
  actual = solarposition._datetime_to_unixtime(times)
805
815
  np.testing.assert_equal(expected, actual)
@@ -3,6 +3,7 @@ import datetime as dt
3
3
  import warnings
4
4
  import pytest
5
5
  import pvlib
6
+ from pvlib.solarposition import _datetime_to_unixtime
6
7
 
7
8
  try:
8
9
  from importlib import reload
@@ -19,9 +20,13 @@ import pandas as pd
19
20
  import unittest
20
21
  from .conftest import requires_numba
21
22
 
23
+ kwargs = dict(start='2003-10-17 12:30:30', periods=1, freq='D')
24
+ try:
25
+ times = pd.date_range(**kwargs, unit='ns') # pandas 2.x, 3.x
26
+ except TypeError:
27
+ times = pd.date_range(**kwargs) # pandas 1.x
22
28
 
23
- times = (pd.date_range('2003-10-17 12:30:30', periods=1, freq='D')
24
- .tz_localize('MST'))
29
+ times = times.tz_localize('MST')
25
30
  unixtimes = np.array(times.tz_convert('UTC').view(np.int64)*1.0/10**9)
26
31
 
27
32
  lat = 39.742476
@@ -258,35 +263,29 @@ class SpaBase:
258
263
  # tests at greenwich
259
264
  times = pd.DatetimeIndex([dt.datetime(1996, 7, 5, 0),
260
265
  dt.datetime(2004, 12, 4, 0)]
261
- ).tz_localize(
262
- 'UTC').view(np.int64)*1.0/10**9
266
+ ).tz_localize('UTC')
263
267
  sunrise = pd.DatetimeIndex([dt.datetime(1996, 7, 5, 7, 8, 15),
264
268
  dt.datetime(2004, 12, 4, 4, 38, 57)]
265
- ).tz_localize(
266
- 'UTC').view(np.int64)*1.0/10**9
269
+ ).tz_localize('UTC')
267
270
  sunset = pd.DatetimeIndex([dt.datetime(1996, 7, 5, 17, 1, 4),
268
271
  dt.datetime(2004, 12, 4, 19, 2, 2)]
269
- ).tz_localize(
270
- 'UTC').view(np.int64)*1.0/10**9
271
- times = np.array(times)
272
- sunrise = np.array(sunrise)
273
- sunset = np.array(sunset)
272
+ ).tz_localize('UTC')
273
+ times = _datetime_to_unixtime(times)
274
+ sunrise = _datetime_to_unixtime(sunrise)
275
+ sunset = _datetime_to_unixtime(sunset)
274
276
  result = self.spa.transit_sunrise_sunset(times, -35.0, 0.0, 64.0, 1)
275
277
  assert_almost_equal(sunrise/1e3, result[1]/1e3, 3)
276
278
  assert_almost_equal(sunset/1e3, result[2]/1e3, 3)
277
279
 
278
280
  times = pd.DatetimeIndex([dt.datetime(1994, 1, 2), ]
279
- ).tz_localize(
280
- 'UTC').view(np.int64)*1.0/10**9
281
+ ).tz_localize('UTC')
281
282
  sunset = pd.DatetimeIndex([dt.datetime(1994, 1, 2, 16, 59, 55), ]
282
- ).tz_localize(
283
- 'UTC').view(np.int64)*1.0/10**9
283
+ ).tz_localize('UTC')
284
284
  sunrise = pd.DatetimeIndex([dt.datetime(1994, 1, 2, 7, 8, 12), ]
285
- ).tz_localize(
286
- 'UTC').view(np.int64)*1.0/10**9
287
- times = np.array(times)
288
- sunrise = np.array(sunrise)
289
- sunset = np.array(sunset)
285
+ ).tz_localize('UTC')
286
+ times = _datetime_to_unixtime(times)
287
+ sunrise = _datetime_to_unixtime(sunrise)
288
+ sunset = _datetime_to_unixtime(sunset)
290
289
  result = self.spa.transit_sunrise_sunset(times, 35.0, 0.0, 64.0, 1)
291
290
  assert_almost_equal(sunrise/1e3, result[1]/1e3, 3)
292
291
  assert_almost_equal(sunset/1e3, result[2]/1e3, 3)
@@ -297,23 +296,20 @@ class SpaBase:
297
296
  dt.datetime(2015, 4, 2),
298
297
  dt.datetime(2015, 8, 2),
299
298
  dt.datetime(2015, 12, 2)],
300
- ).tz_localize(
301
- 'UTC').view(np.int64)*1.0/10**9
299
+ ).tz_localize('UTC')
302
300
  sunrise = pd.DatetimeIndex([dt.datetime(2015, 1, 2, 7, 19),
303
301
  dt.datetime(2015, 4, 2, 5, 43),
304
302
  dt.datetime(2015, 8, 2, 5, 1),
305
303
  dt.datetime(2015, 12, 2, 7, 1)],
306
- ).tz_localize(
307
- 'MST').view(np.int64)*1.0/10**9
304
+ ).tz_localize('MST')
308
305
  sunset = pd.DatetimeIndex([dt.datetime(2015, 1, 2, 16, 49),
309
306
  dt.datetime(2015, 4, 2, 18, 24),
310
307
  dt.datetime(2015, 8, 2, 19, 10),
311
308
  dt.datetime(2015, 12, 2, 16, 38)],
312
- ).tz_localize(
313
- 'MST').view(np.int64)*1.0/10**9
314
- times = np.array(times)
315
- sunrise = np.array(sunrise)
316
- sunset = np.array(sunset)
309
+ ).tz_localize('MST')
310
+ times = _datetime_to_unixtime(times)
311
+ sunrise = _datetime_to_unixtime(sunrise)
312
+ sunset = _datetime_to_unixtime(sunset)
317
313
  result = self.spa.transit_sunrise_sunset(times, 39.0, -105.0, 64.0, 1)
318
314
  assert_almost_equal(sunrise/1e3, result[1]/1e3, 1)
319
315
  assert_almost_equal(sunset/1e3, result[2]/1e3, 1)
@@ -323,33 +319,26 @@ class SpaBase:
323
319
  dt.datetime(2015, 4, 2),
324
320
  dt.datetime(2015, 8, 2),
325
321
  dt.datetime(2015, 12, 2)],
326
- ).tz_localize(
327
- 'UTC').view(np.int64)*1.0/10**9
322
+ ).tz_localize('UTC')
328
323
  sunrise = pd.DatetimeIndex([dt.datetime(2015, 1, 2, 7, 36),
329
324
  dt.datetime(2015, 4, 2, 5, 58),
330
325
  dt.datetime(2015, 8, 2, 5, 13),
331
326
  dt.datetime(2015, 12, 2, 7, 17)],
332
- ).tz_localize('Asia/Shanghai').view(
333
- np.int64)*1.0/10**9
327
+ ).tz_localize('Asia/Shanghai')
334
328
  sunset = pd.DatetimeIndex([dt.datetime(2015, 1, 2, 17, 0),
335
329
  dt.datetime(2015, 4, 2, 18, 39),
336
330
  dt.datetime(2015, 8, 2, 19, 28),
337
331
  dt.datetime(2015, 12, 2, 16, 50)],
338
- ).tz_localize('Asia/Shanghai').view(
339
- np.int64)*1.0/10**9
340
- times = np.array(times)
341
- sunrise = np.array(sunrise)
342
- sunset = np.array(sunset)
332
+ ).tz_localize('Asia/Shanghai')
333
+ times = _datetime_to_unixtime(times)
334
+ sunrise = _datetime_to_unixtime(sunrise)
335
+ sunset = _datetime_to_unixtime(sunset)
343
336
  result = self.spa.transit_sunrise_sunset(
344
337
  times, 39.917, 116.383, 64.0, 1)
345
338
  assert_almost_equal(sunrise/1e3, result[1]/1e3, 1)
346
339
  assert_almost_equal(sunset/1e3, result[2]/1e3, 1)
347
340
 
348
341
  def test_earthsun_distance(self):
349
- times = (pd.date_range('2003-10-17 12:30:30', periods=1, freq='D')
350
- .tz_localize('MST'))
351
- unixtimes = times.tz_convert('UTC').view(np.int64)*1.0/10**9
352
- unixtimes = np.array(unixtimes)
353
342
  result = self.spa.earthsun_distance(unixtimes, 64.0, 1)
354
343
  assert_almost_equal(R, result, 6)
355
344
 
@@ -1,45 +0,0 @@
1
- .. _whatsnew_0_14_1:
2
-
3
-
4
- v0.14.1 (Month XX, 20YY)
5
- -----------------------
6
-
7
- Breaking Changes
8
- ~~~~~~~~~~~~~~~~
9
-
10
-
11
- Deprecations
12
- ~~~~~~~~~~~~
13
-
14
-
15
- Bug fixes
16
- ~~~~~~~~~
17
-
18
-
19
- Enhancements
20
- ~~~~~~~~~~~~
21
-
22
-
23
- Documentation
24
- ~~~~~~~~~~~~~
25
-
26
-
27
- Testing
28
- ~~~~~~~
29
-
30
-
31
- Benchmarking
32
- ~~~~~~~~~~~~
33
-
34
-
35
- Requirements
36
- ~~~~~~~~~~~~
37
-
38
-
39
- Maintenance
40
- ~~~~~~~~~~~
41
-
42
-
43
- Contributors
44
- ~~~~~~~~~~~~
45
-
File without changes
File without changes
File without changes
File without changes