pvlib 0.11.0__py3-none-any.whl → 0.11.1__py3-none-any.whl

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 (51) hide show
  1. pvlib/atmosphere.py +157 -1
  2. pvlib/bifacial/__init__.py +4 -4
  3. pvlib/bifacial/loss_models.py +163 -0
  4. pvlib/clearsky.py +18 -29
  5. pvlib/data/pvgis_tmy_meta.json +32 -93
  6. pvlib/data/pvgis_tmy_test.dat +8761 -8761
  7. pvlib/data/tmy_45.000_8.000_2005_2020.csv +8789 -0
  8. pvlib/data/tmy_45.000_8.000_2005_2020.epw +8768 -0
  9. pvlib/data/tmy_45.000_8.000_2005_2020.json +1 -0
  10. pvlib/data/tmy_45.000_8.000_2005_2020.txt +8761 -0
  11. pvlib/data/tmy_45.000_8.000_userhorizon.json +1 -1
  12. pvlib/data/variables_style_rules.csv +2 -1
  13. pvlib/iotools/pvgis.py +39 -3
  14. pvlib/irradiance.py +141 -120
  15. pvlib/location.py +5 -5
  16. pvlib/modelchain.py +1 -1
  17. pvlib/pvsystem.py +2 -2
  18. pvlib/shading.py +8 -8
  19. pvlib/singlediode.py +1 -1
  20. pvlib/solarposition.py +55 -50
  21. pvlib/spa.py +24 -22
  22. pvlib/spectrum/__init__.py +9 -4
  23. pvlib/spectrum/irradiance.py +272 -0
  24. pvlib/spectrum/mismatch.py +118 -508
  25. pvlib/spectrum/response.py +280 -0
  26. pvlib/spectrum/spectrl2.py +16 -16
  27. pvlib/tests/bifacial/test_losses_models.py +54 -0
  28. pvlib/tests/iotools/test_pvgis.py +57 -11
  29. pvlib/tests/spectrum/__init__.py +0 -0
  30. pvlib/tests/spectrum/conftest.py +40 -0
  31. pvlib/tests/spectrum/test_irradiance.py +138 -0
  32. pvlib/tests/{test_spectrum.py → spectrum/test_mismatch.py} +32 -306
  33. pvlib/tests/spectrum/test_response.py +124 -0
  34. pvlib/tests/spectrum/test_spectrl2.py +72 -0
  35. pvlib/tests/test_atmosphere.py +71 -0
  36. pvlib/tests/test_clearsky.py +37 -25
  37. pvlib/tests/test_irradiance.py +6 -6
  38. pvlib/tests/test_solarposition.py +84 -36
  39. pvlib/tests/test_spa.py +1 -1
  40. pvlib/tools.py +26 -2
  41. pvlib/tracking.py +53 -47
  42. {pvlib-0.11.0.dist-info → pvlib-0.11.1.dist-info}/METADATA +31 -29
  43. {pvlib-0.11.0.dist-info → pvlib-0.11.1.dist-info}/RECORD +47 -38
  44. {pvlib-0.11.0.dist-info → pvlib-0.11.1.dist-info}/WHEEL +1 -1
  45. pvlib/data/tmy_45.000_8.000_2005_2016.csv +0 -8789
  46. pvlib/data/tmy_45.000_8.000_2005_2016.epw +0 -8768
  47. pvlib/data/tmy_45.000_8.000_2005_2016.json +0 -1
  48. pvlib/data/tmy_45.000_8.000_2005_2016.txt +0 -8761
  49. {pvlib-0.11.0.dist-info → pvlib-0.11.1.dist-info}/AUTHORS.md +0 -0
  50. {pvlib-0.11.0.dist-info → pvlib-0.11.1.dist-info}/LICENSE +0 -0
  51. {pvlib-0.11.0.dist-info → pvlib-0.11.1.dist-info}/top_level.txt +0 -0
pvlib/tracking.py CHANGED
@@ -13,20 +13,20 @@ def singleaxis(apparent_zenith, apparent_azimuth,
13
13
  Determine the rotation angle of a single-axis tracker when given particular
14
14
  solar zenith and azimuth angles.
15
15
 
16
- See [1]_ for details about the equations. Backtracking may be specified,
17
- and if so, a ground coverage ratio is required.
16
+ See [1]_ and [2]_ for details about the equations. Backtracking may be
17
+ specified, in which case a ground coverage ratio is required.
18
18
 
19
19
  Rotation angle is determined in a right-handed coordinate system. The
20
- tracker `axis_azimuth` defines the positive y-axis, the positive x-axis is
21
- 90 degrees clockwise from the y-axis and parallel to the Earth's surface,
22
- and the positive z-axis is normal to both x & y-axes and oriented skyward.
23
- Rotation angle `tracker_theta` is a right-handed rotation around the y-axis
24
- in the x, y, z coordinate system and indicates tracker position relative to
25
- horizontal. For example, if tracker `axis_azimuth` is 180 (oriented south)
26
- and `axis_tilt` is zero, then a `tracker_theta` of zero is horizontal, a
27
- `tracker_theta` of 30 degrees is a rotation of 30 degrees towards the west,
28
- and a `tracker_theta` of -90 degrees is a rotation to the vertical plane
29
- facing east.
20
+ tracker ``axis_azimuth`` defines the positive y-axis, the positive x-axis
21
+ is 90 degrees clockwise from the y-axis and parallel to the Earth's
22
+ surface, and the positive z-axis is normal to both x and y-axes and
23
+ oriented skyward. Rotation angle ``tracker_theta`` is a right-handed
24
+ rotation around the y-axis in the x, y, z coordinate system and indicates
25
+ tracker position relative to horizontal. For example, if tracker
26
+ ``axis_azimuth`` is 180 (oriented south) and ``axis_tilt`` is zero, then a
27
+ ``tracker_theta`` of zero is horizontal, a ``tracker_theta`` of 30 degrees
28
+ is a rotation of 30 degrees towards the west, and a ``tracker_theta`` of
29
+ -90 degrees is a rotation to the vertical plane facing east.
30
30
 
31
31
  Parameters
32
32
  ----------
@@ -39,7 +39,7 @@ def singleaxis(apparent_zenith, apparent_azimuth,
39
39
  axis_tilt : float, default 0
40
40
  The tilt of the axis of rotation (i.e, the y-axis defined by
41
41
  ``axis_azimuth``) with respect to horizontal.
42
- ``axis_tilt`` must be >= 0 and <= 90. [degree]
42
+ ``axis_tilt`` must be >= 0 and <= 90. [degrees]
43
43
 
44
44
  axis_azimuth : float, default 0
45
45
  A value denoting the compass direction along which the axis of
@@ -53,13 +53,13 @@ def singleaxis(apparent_zenith, apparent_azimuth,
53
53
  opposite of the maximum angle. If a tuple of (min_angle, max_angle) is
54
54
  provided, it represents both the minimum and maximum rotation angles.
55
55
 
56
- A rotation to 'max_angle' is a counter-clockwise rotation about the
56
+ A rotation to ``max_angle`` is a counter-clockwise rotation about the
57
57
  y-axis of the tracker coordinate system. For example, for a tracker
58
- with 'axis_azimuth' oriented to the south, a rotation to 'max_angle'
59
- is towards the west, and a rotation toward 'min_angle' is in the
60
- opposite direction, toward the east. Hence a max_angle of 180 degrees
61
- (equivalent to max_angle = (-180, 180)) allows the tracker to achieve
62
- its full rotation capability.
58
+ with ``axis_azimuth`` oriented to the south, a rotation to
59
+ ``max_angle`` is towards the west, and a rotation toward ``-max_angle``
60
+ is in the opposite direction, toward the east. Hence, a ``max_angle``
61
+ of 180 degrees (equivalent to max_angle = (-180, 180)) allows the
62
+ tracker to achieve its full rotation capability.
63
63
 
64
64
  backtrack : bool, default True
65
65
  Controls whether the tracker has the capability to "backtrack"
@@ -67,23 +67,23 @@ def singleaxis(apparent_zenith, apparent_azimuth,
67
67
  capability. True denotes backtrack capability.
68
68
 
69
69
  gcr : float, default 2.0/7.0
70
- A value denoting the ground coverage ratio of a tracker system
71
- which utilizes backtracking; i.e. the ratio between the PV array
72
- surface area to total ground area. A tracker system with modules
73
- 2 meters wide, centered on the tracking axis, with 6 meters
74
- between the tracking axes has a gcr of 2/6=0.333. If gcr is not
75
- provided, a gcr of 2/7 is default. gcr must be <=1.
70
+ A value denoting the ground coverage ratio of a tracker system that
71
+ utilizes backtracking; i.e. the ratio between the PV array surface area
72
+ to the total ground area. A tracker system with modules 2 meters wide,
73
+ centered on the tracking axis, with 6 meters between the tracking axes
74
+ has a ``gcr`` of 2/6=0.333. If ``gcr`` is not provided, a ``gcr`` of
75
+ 2/7 is default. ``gcr`` must be <=1.
76
76
 
77
77
  cross_axis_tilt : float, default 0.0
78
78
  The angle, relative to horizontal, of the line formed by the
79
79
  intersection between the slope containing the tracker axes and a plane
80
- perpendicular to the tracker axes. Cross-axis tilt should be specified
81
- using a right-handed convention. For example, trackers with axis
82
- azimuth of 180 degrees (heading south) will have a negative cross-axis
83
- tilt if the tracker axes plane slopes down to the east and positive
84
- cross-axis tilt if the tracker axes plane slopes down to the west. Use
85
- :func:`~pvlib.tracking.calc_cross_axis_tilt` to calculate
86
- `cross_axis_tilt`. [degrees]
80
+ perpendicular to the tracker axes. The cross-axis tilt should be
81
+ specified using a right-handed convention. For example, trackers with
82
+ axis azimuth of 180 degrees (heading south) will have a negative
83
+ cross-axis tilt if the tracker axes plane slopes down to the east and
84
+ positive cross-axis tilt if the tracker axes plane slopes down to the
85
+ west. Use :func:`~pvlib.tracking.calc_cross_axis_tilt` to calculate
86
+ ``cross_axis_tilt``. [degrees]
87
87
 
88
88
  Returns
89
89
  -------
@@ -107,9 +107,11 @@ def singleaxis(apparent_zenith, apparent_azimuth,
107
107
 
108
108
  References
109
109
  ----------
110
- .. [1] Kevin Anderson and Mark Mikofski, "Slope-Aware Backtracking for
110
+ .. [1] Anderson, K., and Mikofski, M., "Slope-Aware Backtracking for
111
111
  Single-Axis Trackers", Technical Report NREL/TP-5K00-76626, July 2020.
112
112
  https://www.nrel.gov/docs/fy20osti/76626.pdf
113
+ .. [2] Lorenzo, E., Narvarte, L., and Muñoz, J. (2011). Tracking and
114
+ back-tracking 19(6), 747–753. :doi:`10.1002/pip.1085`
113
115
  """
114
116
 
115
117
  # MATLAB to Python conversion by
@@ -127,15 +129,16 @@ def singleaxis(apparent_zenith, apparent_azimuth,
127
129
  if apparent_azimuth.ndim > 1 or apparent_zenith.ndim > 1:
128
130
  raise ValueError('Input dimensions must not exceed 1')
129
131
 
130
- # The ideal tracking angle wid is the rotation to place the sun position
131
- # vector (xp, yp, zp) in the (x, z) plane, which is normal to the panel and
132
- # contains the axis of rotation. wid = 0 indicates that the panel is
133
- # horizontal. Here, our convention is that a clockwise rotation is
134
- # positive, to view rotation angles in the same frame of reference as
135
- # azimuth. For example, for a system with tracking axis oriented south, a
136
- # rotation toward the east is negative, and a rotation to the west is
137
- # positive. This is a right-handed rotation around the tracker y-axis.
138
- wid = shading.projected_solar_zenith_angle(
132
+ # The ideal tracking angle, omega_ideal, is the rotation to place the sun
133
+ # position vector (xp, yp, zp) in the (x, z) plane, which is normal to
134
+ # the panel and contains the axis of rotation. omega_ideal=0 indicates
135
+ # that the panel is horizontal. Here, our convention is that a clockwise
136
+ # rotation is positive, to view rotation angles in the same frame of
137
+ # reference as azimuth. For example, for a system with tracking
138
+ # axis oriented south, a rotation toward the east is negative, and a
139
+ # rotation to the west is positive. This is a right-handed rotation
140
+ # around the tracker y-axis.
141
+ omega_ideal = shading.projected_solar_zenith_angle(
139
142
  axis_tilt=axis_tilt,
140
143
  axis_azimuth=axis_azimuth,
141
144
  solar_zenith=apparent_zenith,
@@ -144,7 +147,7 @@ def singleaxis(apparent_zenith, apparent_azimuth,
144
147
 
145
148
  # filter for sun above panel horizon
146
149
  zen_gt_90 = apparent_zenith > 90
147
- wid[zen_gt_90] = np.nan
150
+ omega_ideal[zen_gt_90] = np.nan
148
151
 
149
152
  # Account for backtracking
150
153
  if backtrack:
@@ -153,19 +156,22 @@ def singleaxis(apparent_zenith, apparent_azimuth,
153
156
  axes_distance = 1/(gcr * cosd(cross_axis_tilt))
154
157
 
155
158
  # NOTE: account for rare angles below array, see GH 824
156
- temp = np.abs(axes_distance * cosd(wid - cross_axis_tilt))
159
+ temp = np.abs(axes_distance * cosd(omega_ideal - cross_axis_tilt))
157
160
 
158
161
  # backtrack angle using [1], Eq. 14
159
162
  with np.errstate(invalid='ignore'):
160
- wc = np.degrees(-np.sign(wid)*np.arccos(temp))
163
+ omega_correction = np.degrees(
164
+ -np.sign(omega_ideal)*np.arccos(temp))
161
165
 
162
166
  # NOTE: in the middle of the day, arccos(temp) is out of range because
163
167
  # there's no row-to-row shade to avoid, & backtracking is unnecessary
164
168
  # [1], Eqs. 15-16
165
169
  with np.errstate(invalid='ignore'):
166
- tracker_theta = wid + np.where(temp < 1, wc, 0)
170
+ tracker_theta = omega_ideal + np.where(
171
+ temp < 1, omega_correction,
172
+ 0)
167
173
  else:
168
- tracker_theta = wid
174
+ tracker_theta = omega_ideal
169
175
 
170
176
  # NOTE: max_angle defined relative to zero-point rotation, not the
171
177
  # system-plane normal
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pvlib
3
- Version: 0.11.0
3
+ Version: 0.11.1
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>
@@ -15,44 +15,46 @@ Classifier: Intended Audience :: Science/Research
15
15
  Classifier: Programming Language :: Python
16
16
  Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Topic :: Scientific/Engineering
18
- Requires-Python: >=3.8
18
+ Requires-Python: >=3.9
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
21
  License-File: AUTHORS.md
22
- Requires-Dist: numpy >=1.17.3
23
- Requires-Dist: pandas >=1.3.0
22
+ Requires-Dist: numpy>=1.19.3
23
+ Requires-Dist: pandas>=1.3.0
24
24
  Requires-Dist: pytz
25
25
  Requires-Dist: requests
26
- Requires-Dist: scipy >=1.6.0
26
+ Requires-Dist: scipy>=1.6.0
27
27
  Requires-Dist: h5py
28
28
  Provides-Extra: all
29
- Requires-Dist: pvlib[doc,optional,test] ; extra == 'all'
29
+ Requires-Dist: pvlib[doc,optional,test]; extra == "all"
30
30
  Provides-Extra: doc
31
- Requires-Dist: ipython ; extra == 'doc'
32
- Requires-Dist: matplotlib ; extra == 'doc'
33
- Requires-Dist: sphinx ==4.5.0 ; extra == 'doc'
34
- Requires-Dist: pydata-sphinx-theme ==0.8.1 ; extra == 'doc'
35
- Requires-Dist: sphinx-gallery ; extra == 'doc'
36
- Requires-Dist: docutils ==0.15.2 ; extra == 'doc'
37
- Requires-Dist: pillow ; extra == 'doc'
38
- Requires-Dist: sphinx-toggleprompt >=0.0.5 ; extra == 'doc'
39
- Requires-Dist: solarfactors ; extra == 'doc'
31
+ Requires-Dist: ipython; extra == "doc"
32
+ Requires-Dist: pickleshare; extra == "doc"
33
+ Requires-Dist: matplotlib; extra == "doc"
34
+ Requires-Dist: sphinx==7.3.7; extra == "doc"
35
+ Requires-Dist: pydata-sphinx-theme==0.15.4; extra == "doc"
36
+ Requires-Dist: sphinx-gallery; extra == "doc"
37
+ Requires-Dist: docutils==0.21; extra == "doc"
38
+ Requires-Dist: pillow; extra == "doc"
39
+ Requires-Dist: sphinx-toggleprompt==0.5.2; extra == "doc"
40
+ Requires-Dist: sphinx-favicon; extra == "doc"
41
+ Requires-Dist: solarfactors; extra == "doc"
40
42
  Provides-Extra: optional
41
- Requires-Dist: cython ; extra == 'optional'
42
- Requires-Dist: ephem ; extra == 'optional'
43
- Requires-Dist: nrel-pysam ; extra == 'optional'
44
- Requires-Dist: numba >=0.17.0 ; extra == 'optional'
45
- Requires-Dist: solarfactors ; extra == 'optional'
46
- Requires-Dist: statsmodels ; extra == 'optional'
43
+ Requires-Dist: cython; extra == "optional"
44
+ Requires-Dist: ephem; extra == "optional"
45
+ Requires-Dist: nrel-pysam; extra == "optional"
46
+ Requires-Dist: numba>=0.17.0; extra == "optional"
47
+ Requires-Dist: solarfactors; extra == "optional"
48
+ Requires-Dist: statsmodels; extra == "optional"
47
49
  Provides-Extra: test
48
- Requires-Dist: pytest ; extra == 'test'
49
- Requires-Dist: pytest-cov ; extra == 'test'
50
- Requires-Dist: pytest-mock ; extra == 'test'
51
- Requires-Dist: requests-mock ; extra == 'test'
52
- Requires-Dist: pytest-timeout ; extra == 'test'
53
- Requires-Dist: pytest-rerunfailures ; extra == 'test'
54
- Requires-Dist: pytest-remotedata ; extra == 'test'
55
- Requires-Dist: packaging ; extra == 'test'
50
+ Requires-Dist: pytest; extra == "test"
51
+ Requires-Dist: pytest-cov; extra == "test"
52
+ Requires-Dist: pytest-mock; extra == "test"
53
+ Requires-Dist: requests-mock; extra == "test"
54
+ Requires-Dist: pytest-timeout; extra == "test"
55
+ Requires-Dist: pytest-rerunfailures; extra == "test"
56
+ Requires-Dist: pytest-remotedata; extra == "test"
57
+ Requires-Dist: packaging; extra == "test"
56
58
 
57
59
  pvlib python is a community developed toolbox that provides a set of
58
60
  functions and classes for simulating the performance of photovoltaic
@@ -1,29 +1,30 @@
1
1
  pvlib/__init__.py,sha256=3uBDCDeNhPboYnHujJ1oUWjTqoaVph9aXjKVGTaU5C4,498
2
2
  pvlib/_deprecation.py,sha256=f1SulhOD36F3Cd92ZS3-NAgkDjvaBUpYKvav7vDREno,13140
3
3
  pvlib/albedo.py,sha256=MqrkDztnF6VWaM7W28AGGEgCyAK6X13bDvPk9YEaimU,6205
4
- pvlib/atmosphere.py,sha256=FX66fGf9WebMfcTLguw2AOx-kgojT9JkqRkSnB4wLi0,17738
5
- pvlib/clearsky.py,sha256=uB26zFv914f2BAWvo33sUESbNaWydaU28CfvyCyd0FY,38289
4
+ pvlib/atmosphere.py,sha256=g_X6FfLn-jSvGUTLadjCr0CkvHMjcD7xEdjjzKlG-Lo,24109
5
+ pvlib/clearsky.py,sha256=10iYQrEXwEqvs58kOYueQoZ9L8Rx_Ajp2Vxme_3LMPs,37985
6
6
  pvlib/iam.py,sha256=eQpa9ipTrxT6s1_TWYqYXaQubZHx7KBqHeHXQp4JGyk,44218
7
7
  pvlib/inverter.py,sha256=ZpSv3cjt-Qm_JundL_jkvhCUd3iGjmlKcnNJeJqA2Qw,19127
8
- pvlib/irradiance.py,sha256=07yHw9nN4RcRjatqlOjpH_e_WgiOzMCDZVwuCRZWHGs,144102
9
- pvlib/location.py,sha256=89Yis3boHugpKrhdWVghSDVcDlHdFi5F67TIOnZU_lU,15731
10
- pvlib/modelchain.py,sha256=cEm8Nt5hgcAnxtlSdE1At6yM5lhBkIbyxgvglRYPrCw,73807
8
+ pvlib/irradiance.py,sha256=aEEI04w05OWu9bDcZgY2LVk2gRZLjJyYqAMK-6ttfX4,145437
9
+ pvlib/location.py,sha256=uPTEOTkjmeELB7hdwMrwrRSVoWkqafqC6NWwzgiDYKM,15729
10
+ pvlib/modelchain.py,sha256=M2WXN4sOBZ2Vu1AZnRQjF-mbEh6Ee2LhcS7UmDA6bL4,73808
11
11
  pvlib/pvarray.py,sha256=r60sGTxFNlPiFQndusCJmlEIPX0dv9_7ozKw8zxh7IM,12677
12
- pvlib/pvsystem.py,sha256=EGIUHzF-WCC8XYxVBXlECIffHbNbRG_7wFzYCZ_ZwJs,108031
12
+ pvlib/pvsystem.py,sha256=pKXa8nBzs0N5-zgo5uKJhFounu-8SKGBP8itzVA_6b8,108033
13
13
  pvlib/scaling.py,sha256=SsQEmM4f4O1wC7e0amEV4SgaRTBX8nG5IiSV9Xs0i5o,10983
14
- pvlib/shading.py,sha256=U9_j-t6BVQlN8oSURUyA3Dh2uucZBaXxkOjx47QPCS8,26172
15
- pvlib/singlediode.py,sha256=Bsr4YlTFBcR1kIIgMbL-QelO5YF-20c2kJjSyql2FYs,35399
14
+ pvlib/shading.py,sha256=S1Av-oskqxQTyLKkmaVr854bve3StfbP_yF5isHF5zI,26172
15
+ pvlib/singlediode.py,sha256=wcq7QE68CNy04gOHzP-vrdYfZh_QHJcIzkDZXSkZsWQ,35399
16
16
  pvlib/snow.py,sha256=LYFEpU5AnP82o6q5v6kQfgopkYtHO-aEyYFV9knpNvM,12764
17
17
  pvlib/soiling.py,sha256=zDJ3N0uyeS1CoO0mxSdG16q2FCBLZSHbujJHgish54U,8799
18
- pvlib/solarposition.py,sha256=FFafBzWYdLgNOsJiQY4l1LuqTn1-TYMvgoaLW2bQstI,50502
19
- pvlib/spa.py,sha256=fTHdkU44M2d8hG9_i2MuBdDsqlgERBwVnsEMMPYLCuo,44802
18
+ pvlib/solarposition.py,sha256=wDFM4Xd4LVl76fGCKklMc-Dg7K9ni7B3u2Zjdge5zyk,50317
19
+ pvlib/spa.py,sha256=PSMf654Dx6Ia_LPOjBqoe1aPF7-eO26IW4suw9BMKU4,44823
20
20
  pvlib/temperature.py,sha256=cNdbMx_x38XK5YwyxdWVBlnKkfXDBSjb9X_KTHY2hV8,55424
21
- pvlib/tools.py,sha256=lVY9CcyIOVwqnDjrIqh_qwDUD6jiUxq-LgsHvQqWbxE,13339
22
- pvlib/tracking.py,sha256=fwssoO_9vi5_aLBl59G0KE_EmsB3Jt0yIJlllFcpb5s,15802
21
+ pvlib/tools.py,sha256=bcpkg8XavIufwGdtLI1s2Et93o-csMRwJjawjvYLIRg,13892
22
+ pvlib/tracking.py,sha256=YAgTSpT21GxOeTpow_cvD5njqJalwl-nHIr9KxuBHsQ,16152
23
23
  pvlib/transformer.py,sha256=FXyYaPPooFXAvAP3Ib5vENDVJocbo6kUuBAPzQdimHo,3437
24
24
  pvlib/version.py,sha256=0CONzyOSN34Jgbaj9JzemFuaEnbRON_yxp-ah6_KxxQ,165
25
- pvlib/bifacial/__init__.py,sha256=8uOiQ8cR0Wp62F-dLW25b1_xI3AxhwWlNagXqMyZUqA,412
25
+ pvlib/bifacial/__init__.py,sha256=64cyMvdne1gJJ-tSEetheorxEeMm-TOIad1u-0DSucA,460
26
26
  pvlib/bifacial/infinite_sheds.py,sha256=rbiluCon6Tqpa_FizUfk5zBc6tH3ubk7xRqRAXp2Xq0,23051
27
+ pvlib/bifacial/loss_models.py,sha256=RDl9TcKqFoYXnE3P88DjLVFODh2mHdKEFUUH-BnvH7E,5944
27
28
  pvlib/bifacial/pvfactors.py,sha256=QJXqjok4UcaUToNs6eR5ZDMsVf3HHT2AqW2u36hOOSI,5437
28
29
  pvlib/bifacial/utils.py,sha256=Q2KSzn-vltO13QHYEfLVEWkTqed8Q8f_Eu4tlyrK2Ts,14542
29
30
  pvlib/data/12839.tm2,sha256=6v86FhwMJeUJIEx8Mj9Rqp_OqmeaQ3rpObunQVaM6ss,1261501
@@ -72,8 +73,8 @@ pvlib/data/precise_iv_curves_parameter_sets1.csv,sha256=Ko34GG5IUJkcwoRJIR5bJQps
72
73
  pvlib/data/precise_iv_curves_parameter_sets2.csv,sha256=8bDzjzQFKte1hN1APUimEUCcaurgwCeOgi2ns_KhqX8,1059
73
74
  pvlib/data/pvgis_hourly_Timeseries_45.000_8.000_SA2_10kWp_CIS_5_2a_2013_2014.json,sha256=KgCDSeiq33_gGoPWpC9eEMfZeCM1f9R36x1HJ9drTA4,3466
74
75
  pvlib/data/pvgis_hourly_Timeseries_45.000_8.000_SA_30deg_0deg_2016_2016.csv,sha256=vBTKmB2WC9Y_QydX-oMXqahaEYtTKR1cVri4TU3asuA,1272
75
- pvlib/data/pvgis_tmy_meta.json,sha256=jxxOMzHlXvFx4TPbVZobcg7DR5OqyembbRCTpH5vzCY,2457
76
- pvlib/data/pvgis_tmy_test.dat,sha256=9IIBf7Rq0uucbo2IOsLwam_Ri2ZaNRedgJMx6e2crDc,678349
76
+ pvlib/data/pvgis_tmy_meta.json,sha256=0GY4iZKgqWh5V1aFdYqhTEyQuEDH7OURfmLf6oWgvp4,1813
77
+ pvlib/data/pvgis_tmy_test.dat,sha256=MxRDzfqxsBrknUccmK0IBVsEdfDMR_5jBuRPFblJ0xg,669496
77
78
  pvlib/data/pvwatts_8760_rackmount.csv,sha256=JwVBRW1f-RvhQJK9Dle4Kac51x2o8qEGZJl-ha-PQDA,329170
78
79
  pvlib/data/pvwatts_8760_roofmount.csv,sha256=umLN6Wa3lMGHjPv3sN-djaqisEdKZhqHVHOFQboF8Uo,329205
79
80
  pvlib/data/sam-library-cec-inverters-2019-03-05.csv,sha256=wZIlLw1hIE31j7DflVFKKqUp2ItFojbbfxZzdmHWFtg,568421
@@ -88,12 +89,12 @@ pvlib/data/test_psm3_2019_5min.csv,sha256=2_XLRC7O7KVMBDOcCbsnKyQdWYh8eq2pIrGd6K
88
89
  pvlib/data/test_psm3_tmy-2017.csv,sha256=s3X0FWEVz_sbHeDZQZQ0aigvQRJMTCMR0W2JY1tw53o,470325
89
90
  pvlib/data/test_read_psm3.csv,sha256=_dNpdqysKoheqBhnli6vc3ZMftZscx9pnU0p-rhitWQ,1781292
90
91
  pvlib/data/test_read_pvgis_horizon.csv,sha256=LhPsozGCc3_VN3HEoy9-kVhC87uRLt28KPzjJAzCFYY,431
91
- pvlib/data/tmy_45.000_8.000_2005_2016.csv,sha256=E5TG3J5b2GhQ-q-uYl2cFK0laoy5xZZ3tsHOqc-tH44,587053
92
- pvlib/data/tmy_45.000_8.000_2005_2016.epw,sha256=XdZcDKkpuSJ4khYoPGogdpJb5AZ0MkhEMvAxFDagGbo,1861160
93
- pvlib/data/tmy_45.000_8.000_2005_2016.json,sha256=dZmqXOE6-0AcBxAll97yYTWnB7fUwfw-ZkI3AdKMPGo,1442753
94
- pvlib/data/tmy_45.000_8.000_2005_2016.txt,sha256=1oWbUx3hwZ7VTBed2rpXg0tvJFNEDGaXwEnOzt_Ytc0,586345
95
- pvlib/data/tmy_45.000_8.000_userhorizon.json,sha256=UnwM9O_cGX-B6-ntglr4EIiLWv0CDi3dQxE6YeBNVRk,1435855
96
- pvlib/data/variables_style_rules.csv,sha256=_BD0EDdYu4ZhJd-D9Ya7Z8ZJdB3ruM5ggoKOA394LlY,2532
92
+ pvlib/data/tmy_45.000_8.000_2005_2020.csv,sha256=UbyFTgbZcCSPGvzUR3d9nKRW5hr0LDAhWo6ldSu0I8w,569401
93
+ pvlib/data/tmy_45.000_8.000_2005_2020.epw,sha256=eSnxEMAvLo2pPczWwyvuAs40aUHp7gq94wUZYkWUzUM,1851549
94
+ pvlib/data/tmy_45.000_8.000_2005_2020.json,sha256=ch2J7xh6CMfiHT-oX-G4xn2hdkluaVLLzN1WRg2TBZc,1433894
95
+ pvlib/data/tmy_45.000_8.000_2005_2020.txt,sha256=2aBiXJqf1HBgGTrlFPPyJA-F7sU3IqR3rl6DXeEJI2I,568727
96
+ pvlib/data/tmy_45.000_8.000_userhorizon.json,sha256=3ssVBebHHZz4aPf5R2wVh_aQVaJMa25vwp8yABdjYiE,1251811
97
+ pvlib/data/variables_style_rules.csv,sha256=WEbQVwDtv2BAOPQX2ZhvdxGpVb0P778jNA_l0sgxao0,2558
97
98
  pvlib/iotools/__init__.py,sha256=tVa9xjsWVMO5hC_-EEMzgXoz6XxKKCU5r6AnoBSpOW0,2219
98
99
  pvlib/iotools/acis.py,sha256=nzuH3SZBhMNoSk0fBr35O4YADDah6D02Acyj5RNUYeI,18449
99
100
  pvlib/iotools/bsrn.py,sha256=Y_-_7qdxu047oiCQLO6idu42MMCvh3Im5uBPxCa-YwU,21837
@@ -102,7 +103,7 @@ pvlib/iotools/epw.py,sha256=U35VKQE-bsttZp3QUZ2AsEqZpMQDIPj4IrhsWGGFJsI,17263
102
103
  pvlib/iotools/midc.py,sha256=xaIDVx5MYG2vIzWfY7XVWgCvuufD8A-g5BqyUeDzN2g,9577
103
104
  pvlib/iotools/panond.py,sha256=okK6zNh5r-H1gDPbZRmWEcYYaBmifPhp1ESR-P2YM9s,5262
104
105
  pvlib/iotools/psm3.py,sha256=QDNoLQznmhECb2pPnBi3EVno4d0jy-clDBPjKzJkX0o,14765
105
- pvlib/iotools/pvgis.py,sha256=_A3clvwLt63RTMxHdff19rpJrgJRFIDU2dX3t7yOomo,30169
106
+ pvlib/iotools/pvgis.py,sha256=QXUNHmqPQYhURk9LDQiW8erl3Rru90xRk6_Tffh1mCI,31638
106
107
  pvlib/iotools/sodapro.py,sha256=Hw4kOUorJ3olSjB5FBlZjdNxIrkjWtDIHZd1IugVsBs,15629
107
108
  pvlib/iotools/solaranywhere.py,sha256=_kDetQ0R8rQgcfTZjeQArq9nmCtVa4upF_KGrcipovQ,12535
108
109
  pvlib/iotools/solargis.py,sha256=6FeIsqs_bs2oNrUGvkv7Dc4AlIsDiwpCs5oFVcBheO8,8274
@@ -121,18 +122,20 @@ pvlib/spa_c_files/cspa_py.pxd,sha256=iJSd5KPC_pMSEGCMbYeTQjCE3I7Uv89oLpqli0H03H4
121
122
  pvlib/spa_c_files/setup.py,sha256=RcMEf0R2wKHJjvpUH5y6h22m86y6UrdXwkPkHKNme48,1102
122
123
  pvlib/spa_c_files/spa_py.pyx,sha256=XMjlxfcSPM2nXTWVbyGme0HFBvPhOxRFuQEnbhQfT3Q,809
123
124
  pvlib/spa_c_files/spa_py_example.py,sha256=p3ms0mhLycAuZJyaE3Wageqnd_56zh2EKxXK-jlTJfg,1179
124
- pvlib/spectrum/__init__.py,sha256=x5pe-MQvXmDadssRSAEryvYXn5Kyf670ULE9X9sC-7c,393
125
- pvlib/spectrum/mismatch.py,sha256=_ho4QMYoKUTH8RhaAyS_ngFfaSNR0J1_Go-80WELpcA,42951
126
- pvlib/spectrum/spectrl2.py,sha256=pTZxDrOUCdOpb2T1Mkvbwh6gQQ4AW1jcQXJRa2gkHXE,18932
125
+ pvlib/spectrum/__init__.py,sha256=ZRSmAwDBF0w1MsURdKxshnV6tCjy9bQ02WzYUysGGzc,531
126
+ pvlib/spectrum/irradiance.py,sha256=kATYzYTB9fLvCF-LlgOscAtvhXqZv2RjXaiIlRKCQw0,10095
127
+ pvlib/spectrum/mismatch.py,sha256=0emondq-Zr1LY6UtfVusIjDz5lzNEa4MAVXpBhaRIZ0,30488
128
+ pvlib/spectrum/response.py,sha256=k3FCoPPR_2yGrfXPGsZljJcgrQ7sckQn0CwiqERNntY,9413
129
+ pvlib/spectrum/spectrl2.py,sha256=3wqmM2QWpDfOjBqRPQR3_8NHGWoNZYh69pR65DjVyn8,18983
127
130
  pvlib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
131
  pvlib/tests/conftest.py,sha256=gqTLfGacGrfSYhhRCRkfjXQgdr50KfuwliZWQvPQfNc,13217
129
132
  pvlib/tests/test_albedo.py,sha256=Ef-yoAZxB5VUBdlWpElY_XDkZxb_4nUKzYjXRpbrFZQ,4117
130
- pvlib/tests/test_atmosphere.py,sha256=v36-rFPPCB0v5qWo-Bi2pzx0sYiUo0W2BXS4cLgOTik,4878
131
- pvlib/tests/test_clearsky.py,sha256=dYxSpFcxXv6XTTZ1R47nBtd4sMQL32TYlrHVf9VTza4,33293
133
+ pvlib/tests/test_atmosphere.py,sha256=HlAbivlPK8Rt2I-SBE-JqP0QnNTu_X0nSg6wb9o0shc,8019
134
+ pvlib/tests/test_clearsky.py,sha256=7Cvqhc16NmGtKaeemHMPGFcW_qHzyWskPXoKFvbITyU,33697
132
135
  pvlib/tests/test_conftest.py,sha256=jgSIL34Rp3fY2JoLVaVOupIew0Yclf5K9kgLGg1e3LU,2834
133
136
  pvlib/tests/test_iam.py,sha256=jdnEYrUEdN-4GqISGZfaeL0xct2MSnCNNweRzlIixyo,18815
134
137
  pvlib/tests/test_inverter.py,sha256=QtLvqVLsSG9p9vHQgv6xxY3LgWmoYk7vbsHIqsrsYCc,7440
135
- pvlib/tests/test_irradiance.py,sha256=XuYtscm_yB6ek9dkRQor28VtuJQFf_OqS1MdnLe9e7Y,56694
138
+ pvlib/tests/test_irradiance.py,sha256=b7NFpOloht5nRCx8VQfK7fy6g_gaHzzs9g1tJw-A3LA,56674
136
139
  pvlib/tests/test_location.py,sha256=UIQPw2yY5SeC0BedKkwz3KuUGulP-37Uc92aYO5bjRE,13673
137
140
  pvlib/tests/test_modelchain.py,sha256=S8vuTKt4cf1c0Ys6PCyyl3TwIBvEu1oXi9n_3GGe7O0,86805
138
141
  pvlib/tests/test_numerical_precision.py,sha256=hu9ebaykI3WxZhE1SOzbw0zjjcYjg79-T5oGQlBNzXo,4331
@@ -143,15 +146,15 @@ pvlib/tests/test_shading.py,sha256=dScCg30ohMwl_h3KF5UM6YE7t_zPYdydGp2Vr8su-aA,1
143
146
  pvlib/tests/test_singlediode.py,sha256=Cw8j4jhi65VQj_KZ0ovXv0EmP4rHySNRWTgYZ4rnA48,24414
144
147
  pvlib/tests/test_snow.py,sha256=YyPpF-_VwNadrsuUzv32UgRlzZHEDxSYpciLNga16P0,8590
145
148
  pvlib/tests/test_soiling.py,sha256=QepAr_jVS24l07EUx8rrTjG67t7_vltJ1si_MlOXAGE,8183
146
- pvlib/tests/test_solarposition.py,sha256=K4_EOZ4arSHRxbdiytjalANLQadASE4zFSpmTAr4QOg,41652
147
- pvlib/tests/test_spa.py,sha256=2qN69mz3lQwNOj4prfAEL-Y4SryO0wSL2E1FIeGoD0Q,16994
148
- pvlib/tests/test_spectrum.py,sha256=Q-j2lZj3MhmqA9fm5QZyJkOhDE2WqcHFEf6YU22-oDU,22699
149
+ pvlib/tests/test_solarposition.py,sha256=4FXAKxrtBlyQqGrHdXwTmDwKA76VAgXnNaPrEGFU2O8,43841
150
+ pvlib/tests/test_spa.py,sha256=J6cr3_B-Oo63UyNvvA9LmbyCIL6iidnl6snCpRgOgyk,16979
149
151
  pvlib/tests/test_temperature.py,sha256=WTXzDM7w_6wCaB0Fm-WnGW82y6ZIgtpny6hJU1DZTKM,18448
150
152
  pvlib/tests/test_tools.py,sha256=zfh_U1-VVRoQN-Ixl7K9CQc-YMA611lI3ukzJu4RL3o,5778
151
153
  pvlib/tests/test_tracking.py,sha256=tqnVv3wGagJetly9qwJFstuMHAiakweTi31sR0VZbSU,20543
152
154
  pvlib/tests/test_transformer.py,sha256=fxSskVgKnwYxXxJboX6q2gZ-NF_I8C2KdE-_ememBis,1499
153
155
  pvlib/tests/bifacial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
156
  pvlib/tests/bifacial/test_infinite_sheds.py,sha256=wYuJ8U7gEiG-lg0L3j2NaGOG6NhQWB2ZAUnrffH-n0Y,13549
157
+ pvlib/tests/bifacial/test_losses_models.py,sha256=6ekeUjCSUHY2MvVIutQGnVO5BX-Aof6AwN7j2tDnAKs,1936
155
158
  pvlib/tests/bifacial/test_pvfactors.py,sha256=vocfxIsBAZwaEeRDfRAZmvemuYIRXI0UVbuKqUXRU6g,3144
156
159
  pvlib/tests/bifacial/test_utils.py,sha256=c6Q9H_3pocHDNokxq26HCPiyoNvZGS1h9FmSLrWPPh4,8346
157
160
  pvlib/tests/iotools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -162,7 +165,7 @@ pvlib/tests/iotools/test_epw.py,sha256=7JkDYhKEE6yWZSyvDaHMFp_Nt5dZOT5vzyP3Sg-Nl
162
165
  pvlib/tests/iotools/test_midc.py,sha256=D86u7UxhoYsIXcKoE4yJI46tiC75xnwArmwRCQJmvHY,2878
163
166
  pvlib/tests/iotools/test_panond.py,sha256=1yH_5DKW2JXdVLL7Y769jAY0S-8UtYzlO-Sp9SuPwCk,1149
164
167
  pvlib/tests/iotools/test_psm3.py,sha256=yxQMLs4w_aGuAfUmd5QjxVDG4EWdbjWXGSQRx6lNwOo,8157
165
- pvlib/tests/iotools/test_pvgis.py,sha256=Nsle7lPKAgeju8CT8HRXHvorRXPpbku5WorXHvGm_e4,27434
168
+ pvlib/tests/iotools/test_pvgis.py,sha256=Q7a5TYHWQvqrSDT091kWgk8KkVLbsguk-W0LRrTf4eA,29713
166
169
  pvlib/tests/iotools/test_sodapro.py,sha256=QndGGTl-cj9YW-vM8qWoM6nswXqeqDf6P5_ML4kKlpA,14343
167
170
  pvlib/tests/iotools/test_solaranywhere.py,sha256=tQU2Rb8shSWOeRyGuUZr8XPUGiM3mB21IiIN7l91eqM,12404
168
171
  pvlib/tests/iotools/test_solargis.py,sha256=nQsRFB1yfWKFFs9ASm3b1dnNSbP0vSyZB6KsUn9nqUw,2575
@@ -175,9 +178,15 @@ pvlib/tests/ivtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
175
178
  pvlib/tests/ivtools/test_sde.py,sha256=dBJkk9tWskwc6Iyoziar9MoZESrOSkepOk51g5QOy1I,13844
176
179
  pvlib/tests/ivtools/test_sdm.py,sha256=5ioqsEJJE-JCSCGRLXj1zCuJzGIPNY622GyflJMU_MM,16406
177
180
  pvlib/tests/ivtools/test_utils.py,sha256=-BPEUgB5aCkJOv-apRkjeg0IraZ1Ebf5SmObk4Zusz4,6905
178
- pvlib-0.11.0.dist-info/AUTHORS.md,sha256=Fxk4p_lXlMeQ6g2A1-7oPrgpULDxuJuC9Ebc-3yyj_o,1474
179
- pvlib-0.11.0.dist-info/LICENSE,sha256=oC4S3araPPDV292K_91XfC7sZAdYqVhCowT3UTuMC-Q,1622
180
- pvlib-0.11.0.dist-info/METADATA,sha256=dMANV06IZebSUkRNkNi0ErEDwtcrptv1aTyc4N1RzJk,2785
181
- pvlib-0.11.0.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
182
- pvlib-0.11.0.dist-info/top_level.txt,sha256=eq9CH6YXUc3Fh3dyQ5hQXoGYfSm1SYEAlMygyR22MgE,6
183
- pvlib-0.11.0.dist-info/RECORD,,
181
+ pvlib/tests/spectrum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
+ pvlib/tests/spectrum/conftest.py,sha256=AO-s58RFhpQwxpD4R7SgoXUr41-aGDT2biQNDC37X_E,1162
183
+ pvlib/tests/spectrum/test_irradiance.py,sha256=CzUAJyqVephWMVY_VDm2rpx_k34eRbictp36CJbmDgA,5149
184
+ pvlib/tests/spectrum/test_mismatch.py,sha256=_REidx9hLNKWu6adHHTYvzMcskDkpl0HGouBCXSEblE,12866
185
+ pvlib/tests/spectrum/test_response.py,sha256=fhuUUammwaX79MEAkU9_Y4DuIRnmadU-L5o2IYkgn7g,4408
186
+ pvlib/tests/spectrum/test_spectrl2.py,sha256=onKLvX4HzpQsEXLN0VKrumoAOYucjBz-YEqw_XWqKy8,2604
187
+ pvlib-0.11.1.dist-info/AUTHORS.md,sha256=Fxk4p_lXlMeQ6g2A1-7oPrgpULDxuJuC9Ebc-3yyj_o,1474
188
+ pvlib-0.11.1.dist-info/LICENSE,sha256=oC4S3araPPDV292K_91XfC7sZAdYqVhCowT3UTuMC-Q,1622
189
+ pvlib-0.11.1.dist-info/METADATA,sha256=enZm_sT-Z3x7I3AgWcolVLTWjJr0lKiGW6IuuCE4fjo,2841
190
+ pvlib-0.11.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
191
+ pvlib-0.11.1.dist-info/top_level.txt,sha256=eq9CH6YXUc3Fh3dyQ5hQXoGYfSm1SYEAlMygyR22MgE,6
192
+ pvlib-0.11.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.0)
2
+ Generator: setuptools (75.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5