pvlib 0.10.3__py3-none-any.whl → 0.10.5__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.
- pvlib/__init__.py +1 -0
- pvlib/bifacial/utils.py +2 -1
- pvlib/clearsky.py +7 -8
- pvlib/iam.py +3 -3
- pvlib/inverter.py +3 -3
- pvlib/iotools/__init__.py +2 -0
- pvlib/iotools/solargis.py +214 -0
- pvlib/iotools/solcast.py +2 -7
- pvlib/iotools/solrad.py +121 -23
- pvlib/iotools/srml.py +12 -12
- pvlib/iotools/surfrad.py +2 -2
- pvlib/irradiance.py +28 -22
- pvlib/location.py +3 -1
- pvlib/modelchain.py +10 -9
- pvlib/pvarray.py +127 -0
- pvlib/pvsystem.py +52 -43
- pvlib/scaling.py +4 -2
- pvlib/shading.py +110 -0
- pvlib/singlediode.py +37 -9
- pvlib/snow.py +3 -1
- pvlib/solarposition.py +38 -30
- pvlib/spa.py +3 -11
- pvlib/spectrum/mismatch.py +2 -1
- pvlib/temperature.py +3 -2
- pvlib/tests/bifacial/test_utils.py +6 -5
- pvlib/tests/conftest.py +13 -14
- pvlib/tests/iotools/test_sodapro.py +2 -1
- pvlib/tests/iotools/test_solargis.py +68 -0
- pvlib/tests/iotools/test_solcast.py +2 -2
- pvlib/tests/iotools/test_solrad.py +58 -7
- pvlib/tests/iotools/test_srml.py +7 -14
- pvlib/tests/test_clearsky.py +1 -1
- pvlib/tests/test_irradiance.py +24 -8
- pvlib/tests/test_location.py +1 -1
- pvlib/tests/test_modelchain.py +37 -26
- pvlib/tests/test_pvarray.py +25 -0
- pvlib/tests/test_pvsystem.py +76 -104
- pvlib/tests/test_shading.py +130 -11
- pvlib/tests/test_singlediode.py +68 -10
- pvlib/tests/test_snow.py +1 -1
- pvlib/tests/test_solarposition.py +121 -7
- pvlib/tests/test_spa.py +5 -15
- pvlib/tests/test_temperature.py +4 -4
- pvlib/tests/test_tracking.py +2 -2
- pvlib/tracking.py +8 -38
- pvlib/version.py +1 -5
- {pvlib-0.10.3.dist-info → pvlib-0.10.5.dist-info}/METADATA +9 -33
- {pvlib-0.10.3.dist-info → pvlib-0.10.5.dist-info}/RECORD +52 -51
- {pvlib-0.10.3.dist-info → pvlib-0.10.5.dist-info}/WHEEL +1 -1
- pvlib/spa_c_files/SPA_NOTICE.md +0 -39
- {pvlib-0.10.3.dist-info → pvlib-0.10.5.dist-info}/AUTHORS.md +0 -0
- {pvlib-0.10.3.dist-info → pvlib-0.10.5.dist-info}/LICENSE +0 -0
- {pvlib-0.10.3.dist-info → pvlib-0.10.5.dist-info}/top_level.txt +0 -0
|
@@ -12,12 +12,13 @@ import pytest
|
|
|
12
12
|
from pvlib.location import Location
|
|
13
13
|
from pvlib import solarposition, spa
|
|
14
14
|
|
|
15
|
-
from .conftest import
|
|
16
|
-
|
|
15
|
+
from .conftest import (
|
|
16
|
+
requires_ephem, requires_spa_c, requires_numba, requires_pandas_2_0
|
|
17
|
+
)
|
|
17
18
|
|
|
18
19
|
# setup times and locations to be tested.
|
|
19
20
|
times = pd.date_range(start=datetime.datetime(2014, 6, 24),
|
|
20
|
-
end=datetime.datetime(2014, 6, 26), freq='
|
|
21
|
+
end=datetime.datetime(2014, 6, 26), freq='15min')
|
|
21
22
|
|
|
22
23
|
tus = Location(32.2, -111, 'US/Arizona', 700) # no DST issues possible
|
|
23
24
|
times_localized = times.tz_localize(tus.tz)
|
|
@@ -546,7 +547,7 @@ def test_nrel_earthsun_distance():
|
|
|
546
547
|
|
|
547
548
|
def test_equation_of_time():
|
|
548
549
|
times = pd.date_range(start="1/1/2015 0:00", end="12/31/2015 23:00",
|
|
549
|
-
freq="
|
|
550
|
+
freq="h")
|
|
550
551
|
output = solarposition.spa_python(times, 37.8, -122.25, 100)
|
|
551
552
|
eot = output['equation_of_time']
|
|
552
553
|
eot_rng = eot.max() - eot.min() # range of values, around 30 minutes
|
|
@@ -558,7 +559,7 @@ def test_equation_of_time():
|
|
|
558
559
|
|
|
559
560
|
def test_declination():
|
|
560
561
|
times = pd.date_range(start="1/1/2015 0:00", end="12/31/2015 23:00",
|
|
561
|
-
freq="
|
|
562
|
+
freq="h")
|
|
562
563
|
atmos_refract = 0.5667
|
|
563
564
|
delta_t = spa.calculate_deltat(times.year, times.month)
|
|
564
565
|
unixtime = np.array([calendar.timegm(t.timetuple()) for t in times])
|
|
@@ -577,7 +578,7 @@ def test_declination():
|
|
|
577
578
|
|
|
578
579
|
def test_analytical_zenith():
|
|
579
580
|
times = pd.date_range(start="1/1/2015 0:00", end="12/31/2015 23:00",
|
|
580
|
-
freq="
|
|
581
|
+
freq="h").tz_localize('Etc/GMT+8')
|
|
581
582
|
lat, lon = 37.8, -122.25
|
|
582
583
|
lat_rad = np.deg2rad(lat)
|
|
583
584
|
output = solarposition.spa_python(times, lat, lon, 100)
|
|
@@ -598,7 +599,7 @@ def test_analytical_zenith():
|
|
|
598
599
|
|
|
599
600
|
def test_analytical_azimuth():
|
|
600
601
|
times = pd.date_range(start="1/1/2015 0:00", end="12/31/2015 23:00",
|
|
601
|
-
freq="
|
|
602
|
+
freq="h").tz_localize('Etc/GMT+8')
|
|
602
603
|
lat, lon = 37.8, -122.25
|
|
603
604
|
lat_rad = np.deg2rad(lat)
|
|
604
605
|
output = solarposition.spa_python(times, lat, lon, 100)
|
|
@@ -717,6 +718,119 @@ def test_sun_rise_set_transit_geometric(expected_rise_set_spa, golden_mst):
|
|
|
717
718
|
atol=np.abs(expected_transit_error).max())
|
|
718
719
|
|
|
719
720
|
|
|
721
|
+
@pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
|
|
722
|
+
def test__datetime_to_unixtime(tz):
|
|
723
|
+
# for pandas < 2.0 where "unit" doesn't exist in pd.date_range. note that
|
|
724
|
+
# unit of ns is the only option in pandas<2, and the default in pandas 2.x
|
|
725
|
+
times = pd.date_range(start='2019-01-01', freq='h', periods=3, tz=tz)
|
|
726
|
+
expected = times.view(np.int64)/10**9
|
|
727
|
+
actual = solarposition._datetime_to_unixtime(times)
|
|
728
|
+
np.testing.assert_equal(expected, actual)
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
@requires_pandas_2_0
|
|
732
|
+
@pytest.mark.parametrize('unit', ['ns', 'us', 's'])
|
|
733
|
+
@pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
|
|
734
|
+
def test__datetime_to_unixtime_units(unit, tz):
|
|
735
|
+
kwargs = dict(start='2019-01-01', freq='h', periods=3)
|
|
736
|
+
times = pd.date_range(**kwargs, unit='ns', tz='UTC')
|
|
737
|
+
expected = times.view(np.int64)/10**9
|
|
738
|
+
|
|
739
|
+
times = pd.date_range(**kwargs, unit=unit, tz='UTC').tz_convert(tz)
|
|
740
|
+
actual = solarposition._datetime_to_unixtime(times)
|
|
741
|
+
np.testing.assert_equal(expected, actual)
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
@requires_pandas_2_0
|
|
745
|
+
@pytest.mark.parametrize('method', [
|
|
746
|
+
'nrel_numpy',
|
|
747
|
+
'ephemeris',
|
|
748
|
+
pytest.param('pyephem', marks=requires_ephem),
|
|
749
|
+
pytest.param('nrel_numba', marks=requires_numba),
|
|
750
|
+
pytest.param('nrel_c', marks=requires_spa_c),
|
|
751
|
+
])
|
|
752
|
+
@pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
|
|
753
|
+
def test_get_solarposition_microsecond_index(method, tz):
|
|
754
|
+
# https://github.com/pvlib/pvlib-python/issues/1932
|
|
755
|
+
|
|
756
|
+
kwargs = dict(start='2019-01-01', freq='h', periods=24, tz=tz)
|
|
757
|
+
|
|
758
|
+
index_ns = pd.date_range(unit='ns', **kwargs)
|
|
759
|
+
index_us = pd.date_range(unit='us', **kwargs)
|
|
760
|
+
|
|
761
|
+
sp_ns = solarposition.get_solarposition(index_ns, 40, -80, method=method)
|
|
762
|
+
sp_us = solarposition.get_solarposition(index_us, 40, -80, method=method)
|
|
763
|
+
|
|
764
|
+
assert_frame_equal(sp_ns, sp_us, check_index_type=False)
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
@requires_pandas_2_0
|
|
768
|
+
@pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
|
|
769
|
+
def test_nrel_earthsun_distance_microsecond_index(tz):
|
|
770
|
+
# https://github.com/pvlib/pvlib-python/issues/1932
|
|
771
|
+
|
|
772
|
+
kwargs = dict(start='2019-01-01', freq='h', periods=24, tz=tz)
|
|
773
|
+
|
|
774
|
+
index_ns = pd.date_range(unit='ns', **kwargs)
|
|
775
|
+
index_us = pd.date_range(unit='us', **kwargs)
|
|
776
|
+
|
|
777
|
+
esd_ns = solarposition.nrel_earthsun_distance(index_ns)
|
|
778
|
+
esd_us = solarposition.nrel_earthsun_distance(index_us)
|
|
779
|
+
|
|
780
|
+
assert_series_equal(esd_ns, esd_us, check_index_type=False)
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
@requires_pandas_2_0
|
|
784
|
+
@pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
|
|
785
|
+
def test_hour_angle_microsecond_index(tz):
|
|
786
|
+
# https://github.com/pvlib/pvlib-python/issues/1932
|
|
787
|
+
|
|
788
|
+
kwargs = dict(start='2019-01-01', freq='h', periods=24, tz=tz)
|
|
789
|
+
|
|
790
|
+
index_ns = pd.date_range(unit='ns', **kwargs)
|
|
791
|
+
index_us = pd.date_range(unit='us', **kwargs)
|
|
792
|
+
|
|
793
|
+
ha_ns = solarposition.hour_angle(index_ns, -80, 0)
|
|
794
|
+
ha_us = solarposition.hour_angle(index_us, -80, 0)
|
|
795
|
+
|
|
796
|
+
np.testing.assert_equal(ha_ns, ha_us)
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
@requires_pandas_2_0
|
|
800
|
+
@pytest.mark.parametrize('tz', ['utc', 'US/Eastern'])
|
|
801
|
+
def test_rise_set_transit_spa_microsecond_index(tz):
|
|
802
|
+
# https://github.com/pvlib/pvlib-python/issues/1932
|
|
803
|
+
|
|
804
|
+
kwargs = dict(start='2019-01-01', freq='h', periods=24, tz=tz)
|
|
805
|
+
|
|
806
|
+
index_ns = pd.date_range(unit='ns', **kwargs)
|
|
807
|
+
index_us = pd.date_range(unit='us', **kwargs)
|
|
808
|
+
|
|
809
|
+
rst_ns = solarposition.sun_rise_set_transit_spa(index_ns, 40, -80)
|
|
810
|
+
rst_us = solarposition.sun_rise_set_transit_spa(index_us, 40, -80)
|
|
811
|
+
|
|
812
|
+
assert_frame_equal(rst_ns, rst_us, check_index_type=False)
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
@requires_pandas_2_0
|
|
816
|
+
@pytest.mark.parametrize('tz', [None, 'utc', 'US/Eastern'])
|
|
817
|
+
def test_rise_set_transit_geometric_microsecond_index(tz):
|
|
818
|
+
# https://github.com/pvlib/pvlib-python/issues/1932
|
|
819
|
+
|
|
820
|
+
kwargs = dict(start='2019-01-01', freq='h', periods=24, tz=tz)
|
|
821
|
+
|
|
822
|
+
index_ns = pd.date_range(unit='ns', **kwargs)
|
|
823
|
+
index_us = pd.date_range(unit='us', **kwargs)
|
|
824
|
+
|
|
825
|
+
args = (40, -80, 0, 0)
|
|
826
|
+
rst_ns = solarposition.sun_rise_set_transit_geometric(index_ns, *args)
|
|
827
|
+
rst_us = solarposition.sun_rise_set_transit_geometric(index_us, *args)
|
|
828
|
+
|
|
829
|
+
for times_ns, times_us in zip(rst_ns, rst_us):
|
|
830
|
+
# can't use a fancy assert function here since the units are different
|
|
831
|
+
assert all(times_ns == times_us)
|
|
832
|
+
|
|
833
|
+
|
|
720
834
|
# put numba tests at end of file to minimize reloading
|
|
721
835
|
|
|
722
836
|
@requires_numba
|
pvlib/tests/test_spa.py
CHANGED
|
@@ -15,15 +15,7 @@ from numpy.testing import assert_almost_equal
|
|
|
15
15
|
import pandas as pd
|
|
16
16
|
|
|
17
17
|
import unittest
|
|
18
|
-
import
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
try:
|
|
22
|
-
from numba import __version__ as numba_version
|
|
23
|
-
numba_version_int = int(numba_version.split('.')[0] +
|
|
24
|
-
numba_version.split('.')[1])
|
|
25
|
-
except ImportError:
|
|
26
|
-
numba_version_int = 0
|
|
18
|
+
from .conftest import requires_numba
|
|
27
19
|
|
|
28
20
|
|
|
29
21
|
times = (pd.date_range('2003-10-17 12:30:30', periods=1, freq='D')
|
|
@@ -390,17 +382,15 @@ class NumpySpaTest(unittest.TestCase, SpaBase):
|
|
|
390
382
|
assert_almost_equal(JD, self.spa.julian_day(unixtimes)[0], 6)
|
|
391
383
|
|
|
392
384
|
|
|
393
|
-
@
|
|
394
|
-
reason='Numba not installed or version not >= 0.17.0')
|
|
385
|
+
@requires_numba
|
|
395
386
|
class NumbaSpaTest(unittest.TestCase, SpaBase):
|
|
396
387
|
"""Import spa, compiling to numba, and run tests"""
|
|
397
388
|
@classmethod
|
|
398
389
|
def setUpClass(self):
|
|
399
390
|
os.environ['PVLIB_USE_NUMBA'] = '1'
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
self.spa = spa
|
|
391
|
+
import pvlib.spa as spa
|
|
392
|
+
spa = reload(spa)
|
|
393
|
+
self.spa = spa
|
|
404
394
|
|
|
405
395
|
@classmethod
|
|
406
396
|
def tearDownClass(self):
|
pvlib/tests/test_temperature.py
CHANGED
|
@@ -52,7 +52,7 @@ def test_sapm_ndarray(sapm_default):
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
def test_sapm_series(sapm_default):
|
|
55
|
-
times = pd.date_range(start='2015-01-01', end='2015-01-02', freq='
|
|
55
|
+
times = pd.date_range(start='2015-01-01', end='2015-01-02', freq='12h')
|
|
56
56
|
temps = pd.Series([0, 10, 5], index=times)
|
|
57
57
|
irrads = pd.Series([0, 500, 0], index=times)
|
|
58
58
|
winds = pd.Series([10, 5, 0], index=times)
|
|
@@ -89,7 +89,7 @@ def test_pvsyst_cell_ndarray():
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
def test_pvsyst_cell_series():
|
|
92
|
-
times = pd.date_range(start="2015-01-01", end="2015-01-02", freq="
|
|
92
|
+
times = pd.date_range(start="2015-01-01", end="2015-01-02", freq="12h")
|
|
93
93
|
temps = pd.Series([0, 10, 5], index=times)
|
|
94
94
|
irrads = pd.Series([0, 500, 0], index=times)
|
|
95
95
|
winds = pd.Series([10, 5, 0], index=times)
|
|
@@ -161,7 +161,7 @@ def test_ross():
|
|
|
161
161
|
|
|
162
162
|
|
|
163
163
|
def test_faiman_series():
|
|
164
|
-
times = pd.date_range(start="2015-01-01", end="2015-01-02", freq="
|
|
164
|
+
times = pd.date_range(start="2015-01-01", end="2015-01-02", freq="12h")
|
|
165
165
|
temps = pd.Series([0, 10, 5], index=times)
|
|
166
166
|
irrads = pd.Series([0, 500, 0], index=times)
|
|
167
167
|
winds = pd.Series([10, 5, 0], index=times)
|
|
@@ -255,7 +255,7 @@ def test_noct_sam():
|
|
|
255
255
|
np.array(module_efficiency))
|
|
256
256
|
assert_allclose(result, expected)
|
|
257
257
|
dr = pd.date_range(start='2020-01-01 12:00:00', end='2020-01-01 13:00:00',
|
|
258
|
-
freq='
|
|
258
|
+
freq='1h')
|
|
259
259
|
result = temperature.noct_sam(pd.Series(index=dr, data=poa_global),
|
|
260
260
|
pd.Series(index=dr, data=temp_air),
|
|
261
261
|
pd.Series(index=dr, data=wind_speed),
|
pvlib/tests/test_tracking.py
CHANGED
|
@@ -316,7 +316,7 @@ def test_calc_axis_tilt():
|
|
|
316
316
|
starttime = '2017-01-01T00:30:00-0300'
|
|
317
317
|
stoptime = '2017-12-31T23:59:59-0300'
|
|
318
318
|
lat, lon = -27.597300, -48.549610
|
|
319
|
-
times = pd.DatetimeIndex(pd.date_range(starttime, stoptime, freq='
|
|
319
|
+
times = pd.DatetimeIndex(pd.date_range(starttime, stoptime, freq='h'))
|
|
320
320
|
solpos = pvlib.solarposition.get_solarposition(times, lat, lon)
|
|
321
321
|
# singleaxis tracker w/slope data
|
|
322
322
|
slope_azimuth, slope_tilt = 77.34, 10.1149
|
|
@@ -394,7 +394,7 @@ def test_singleaxis_aoi_gh1221():
|
|
|
394
394
|
# vertical tracker
|
|
395
395
|
loc = pvlib.location.Location(40.1134, -88.3695)
|
|
396
396
|
dr = pd.date_range(
|
|
397
|
-
start='02-Jun-1998 00:00:00', end='02-Jun-1998 23:55:00', freq='
|
|
397
|
+
start='02-Jun-1998 00:00:00', end='02-Jun-1998 23:55:00', freq='5min',
|
|
398
398
|
tz='Etc/GMT+6')
|
|
399
399
|
sp = loc.get_solarposition(dr)
|
|
400
400
|
tr = pvlib.tracking.singleaxis(
|
pvlib/tracking.py
CHANGED
|
@@ -3,6 +3,7 @@ import pandas as pd
|
|
|
3
3
|
|
|
4
4
|
from pvlib.tools import cosd, sind, tand, acosd, asind
|
|
5
5
|
from pvlib import irradiance
|
|
6
|
+
from pvlib import shading
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
def singleaxis(apparent_zenith, apparent_azimuth,
|
|
@@ -126,51 +127,20 @@ def singleaxis(apparent_zenith, apparent_azimuth,
|
|
|
126
127
|
if apparent_azimuth.ndim > 1 or apparent_zenith.ndim > 1:
|
|
127
128
|
raise ValueError('Input dimensions must not exceed 1')
|
|
128
129
|
|
|
129
|
-
# Calculate sun position x, y, z using coordinate system as in [1], Eq 1.
|
|
130
|
-
|
|
131
|
-
# NOTE: solar elevation = 90 - solar zenith, then use trig identities:
|
|
132
|
-
# sin(90-x) = cos(x) & cos(90-x) = sin(x)
|
|
133
|
-
sin_zenith = sind(apparent_zenith)
|
|
134
|
-
x = sin_zenith * sind(apparent_azimuth)
|
|
135
|
-
y = sin_zenith * cosd(apparent_azimuth)
|
|
136
|
-
z = cosd(apparent_zenith)
|
|
137
|
-
|
|
138
|
-
# Assume the tracker reference frame is right-handed. Positive y-axis is
|
|
139
|
-
# oriented along tracking axis; from north, the y-axis is rotated clockwise
|
|
140
|
-
# by the axis azimuth and tilted from horizontal by the axis tilt. The
|
|
141
|
-
# positive x-axis is 90 deg clockwise from the y-axis and parallel to
|
|
142
|
-
# horizontal (e.g., if the y-axis is south, the x-axis is west); the
|
|
143
|
-
# positive z-axis is normal to the x and y axes, pointed upward.
|
|
144
|
-
|
|
145
|
-
# Calculate sun position (xp, yp, zp) in tracker coordinate system using
|
|
146
|
-
# [1] Eq 4.
|
|
147
|
-
|
|
148
|
-
cos_axis_azimuth = cosd(axis_azimuth)
|
|
149
|
-
sin_axis_azimuth = sind(axis_azimuth)
|
|
150
|
-
cos_axis_tilt = cosd(axis_tilt)
|
|
151
|
-
sin_axis_tilt = sind(axis_tilt)
|
|
152
|
-
xp = x*cos_axis_azimuth - y*sin_axis_azimuth
|
|
153
|
-
# not necessary to calculate y'
|
|
154
|
-
# yp = (x*cos_axis_tilt*sin_axis_azimuth
|
|
155
|
-
# + y*cos_axis_tilt*cos_axis_azimuth
|
|
156
|
-
# - z*sin_axis_tilt)
|
|
157
|
-
zp = (x*sin_axis_tilt*sin_axis_azimuth
|
|
158
|
-
+ y*sin_axis_tilt*cos_axis_azimuth
|
|
159
|
-
+ z*cos_axis_tilt)
|
|
160
|
-
|
|
161
130
|
# The ideal tracking angle wid is the rotation to place the sun position
|
|
162
|
-
# vector (xp, yp, zp) in the (
|
|
131
|
+
# vector (xp, yp, zp) in the (x, z) plane, which is normal to the panel and
|
|
163
132
|
# contains the axis of rotation. wid = 0 indicates that the panel is
|
|
164
133
|
# horizontal. Here, our convention is that a clockwise rotation is
|
|
165
134
|
# positive, to view rotation angles in the same frame of reference as
|
|
166
135
|
# azimuth. For example, for a system with tracking axis oriented south, a
|
|
167
136
|
# rotation toward the east is negative, and a rotation to the west is
|
|
168
137
|
# positive. This is a right-handed rotation around the tracker y-axis.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
138
|
+
wid = shading.projected_solar_zenith_angle(
|
|
139
|
+
axis_tilt=axis_tilt,
|
|
140
|
+
axis_azimuth=axis_azimuth,
|
|
141
|
+
solar_zenith=apparent_zenith,
|
|
142
|
+
solar_azimuth=apparent_azimuth,
|
|
143
|
+
)
|
|
174
144
|
|
|
175
145
|
# filter for sun above panel horizon
|
|
176
146
|
zen_gt_90 = apparent_zenith > 90
|
pvlib/version.py
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
from importlib.metadata import PackageNotFoundError, version
|
|
3
|
-
except ImportError:
|
|
4
|
-
# for python < 3.8
|
|
5
|
-
from importlib_metadata import PackageNotFoundError, version
|
|
1
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
6
2
|
|
|
7
3
|
try:
|
|
8
4
|
__version__ = version(__package__)
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pvlib
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.5
|
|
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
|
-
Author: pvlib python Developers
|
|
7
|
-
|
|
8
|
-
License: BSD 3-Clause
|
|
6
|
+
Author-email: pvlib python Developers <pvlib-admin@googlegroups.com>
|
|
7
|
+
License: BSD-3-Clause
|
|
9
8
|
Project-URL: Bug Tracker, https://github.com/pvlib/pvlib-python/issues
|
|
10
9
|
Project-URL: Documentation, https://pvlib-python.readthedocs.io/
|
|
11
10
|
Project-URL: Source Code, https://github.com/pvlib/pvlib-python
|
|
@@ -16,40 +15,18 @@ Classifier: Intended Audience :: Science/Research
|
|
|
16
15
|
Classifier: Programming Language :: Python
|
|
17
16
|
Classifier: Programming Language :: Python :: 3
|
|
18
17
|
Classifier: Topic :: Scientific/Engineering
|
|
19
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.8
|
|
20
19
|
Description-Content-Type: text/x-rst
|
|
21
20
|
License-File: LICENSE
|
|
22
21
|
License-File: AUTHORS.md
|
|
23
|
-
Requires-Dist: numpy >=1.
|
|
24
|
-
Requires-Dist: pandas >=
|
|
22
|
+
Requires-Dist: numpy >=1.17.3
|
|
23
|
+
Requires-Dist: pandas >=1.3.0
|
|
25
24
|
Requires-Dist: pytz
|
|
26
25
|
Requires-Dist: requests
|
|
27
|
-
Requires-Dist: scipy >=1.
|
|
26
|
+
Requires-Dist: scipy >=1.6.0
|
|
28
27
|
Requires-Dist: h5py
|
|
29
|
-
Requires-Dist: importlib-metadata ; python_version < "3.8"
|
|
30
28
|
Provides-Extra: all
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist: docutils ==0.15.2 ; extra == 'all'
|
|
33
|
-
Requires-Dist: ephem ; extra == 'all'
|
|
34
|
-
Requires-Dist: ipython ; extra == 'all'
|
|
35
|
-
Requires-Dist: matplotlib ; extra == 'all'
|
|
36
|
-
Requires-Dist: nrel-pysam ; extra == 'all'
|
|
37
|
-
Requires-Dist: numba ; extra == 'all'
|
|
38
|
-
Requires-Dist: packaging ; extra == 'all'
|
|
39
|
-
Requires-Dist: pillow ; extra == 'all'
|
|
40
|
-
Requires-Dist: pydata-sphinx-theme ==0.8.1 ; extra == 'all'
|
|
41
|
-
Requires-Dist: pytest ; extra == 'all'
|
|
42
|
-
Requires-Dist: pytest-cov ; extra == 'all'
|
|
43
|
-
Requires-Dist: pytest-mock ; extra == 'all'
|
|
44
|
-
Requires-Dist: pytest-remotedata ; extra == 'all'
|
|
45
|
-
Requires-Dist: pytest-rerunfailures ; extra == 'all'
|
|
46
|
-
Requires-Dist: pytest-timeout ; extra == 'all'
|
|
47
|
-
Requires-Dist: requests-mock ; extra == 'all'
|
|
48
|
-
Requires-Dist: solarfactors ; extra == 'all'
|
|
49
|
-
Requires-Dist: sphinx ==4.5.0 ; extra == 'all'
|
|
50
|
-
Requires-Dist: sphinx-gallery ; extra == 'all'
|
|
51
|
-
Requires-Dist: sphinx-toggleprompt >=0.0.5 ; extra == 'all'
|
|
52
|
-
Requires-Dist: statsmodels ; extra == 'all'
|
|
29
|
+
Requires-Dist: pvlib[doc,optional,test] ; extra == 'all'
|
|
53
30
|
Provides-Extra: doc
|
|
54
31
|
Requires-Dist: ipython ; extra == 'doc'
|
|
55
32
|
Requires-Dist: matplotlib ; extra == 'doc'
|
|
@@ -64,7 +41,7 @@ Provides-Extra: optional
|
|
|
64
41
|
Requires-Dist: cython ; extra == 'optional'
|
|
65
42
|
Requires-Dist: ephem ; extra == 'optional'
|
|
66
43
|
Requires-Dist: nrel-pysam ; extra == 'optional'
|
|
67
|
-
Requires-Dist: numba ; extra == 'optional'
|
|
44
|
+
Requires-Dist: numba >=0.17.0 ; extra == 'optional'
|
|
68
45
|
Requires-Dist: solarfactors ; extra == 'optional'
|
|
69
46
|
Requires-Dist: statsmodels ; extra == 'optional'
|
|
70
47
|
Provides-Extra: test
|
|
@@ -77,7 +54,6 @@ Requires-Dist: pytest-rerunfailures ; extra == 'test'
|
|
|
77
54
|
Requires-Dist: pytest-remotedata ; extra == 'test'
|
|
78
55
|
Requires-Dist: packaging ; extra == 'test'
|
|
79
56
|
|
|
80
|
-
|
|
81
57
|
pvlib python is a community developed toolbox that provides a set of
|
|
82
58
|
functions and classes for simulating the performance of photovoltaic
|
|
83
59
|
energy systems and accomplishing related tasks. The core mission of pvlib
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
pvlib/__init__.py,sha256=
|
|
1
|
+
pvlib/__init__.py,sha256=G-yTfvN7mLuZzqVPgy7Co271QV48NNMxiX9ykUoFtdQ,486
|
|
2
2
|
pvlib/_deprecation.py,sha256=f1SulhOD36F3Cd92ZS3-NAgkDjvaBUpYKvav7vDREno,13140
|
|
3
3
|
pvlib/atmosphere.py,sha256=FX66fGf9WebMfcTLguw2AOx-kgojT9JkqRkSnB4wLi0,17738
|
|
4
|
-
pvlib/clearsky.py,sha256=
|
|
5
|
-
pvlib/iam.py,sha256=
|
|
6
|
-
pvlib/inverter.py,sha256=
|
|
7
|
-
pvlib/irradiance.py,sha256=
|
|
8
|
-
pvlib/location.py,sha256=
|
|
9
|
-
pvlib/modelchain.py,sha256=
|
|
10
|
-
pvlib/pvarray.py,sha256=
|
|
11
|
-
pvlib/pvsystem.py,sha256=
|
|
12
|
-
pvlib/scaling.py,sha256=
|
|
13
|
-
pvlib/shading.py,sha256=
|
|
14
|
-
pvlib/singlediode.py,sha256=
|
|
15
|
-
pvlib/snow.py,sha256=
|
|
4
|
+
pvlib/clearsky.py,sha256=uB26zFv914f2BAWvo33sUESbNaWydaU28CfvyCyd0FY,38289
|
|
5
|
+
pvlib/iam.py,sha256=uYwdOaw5Brkl0d1WmueQG9XqL2eMJP_TZ2x7dQ5UxZo,44330
|
|
6
|
+
pvlib/inverter.py,sha256=ZpSv3cjt-Qm_JundL_jkvhCUd3iGjmlKcnNJeJqA2Qw,19127
|
|
7
|
+
pvlib/irradiance.py,sha256=HNZ5N71FGcz7-Y4bqZDt8SB-CGKy5E7uVs6vOlPMyew,141985
|
|
8
|
+
pvlib/location.py,sha256=cHdX6m3aAZAY96DXCC7W-W6ExisB2sidY4tEqBMELJk,15455
|
|
9
|
+
pvlib/modelchain.py,sha256=f-6mSWVqyjLNX6SW0fMx4zWwI4BMSwKXmxs1MAX0e04,79453
|
|
10
|
+
pvlib/pvarray.py,sha256=r60sGTxFNlPiFQndusCJmlEIPX0dv9_7ozKw8zxh7IM,12677
|
|
11
|
+
pvlib/pvsystem.py,sha256=6jF0iXatWhVU_vVgcWhIFgKwqJ7sksCCx42spG2yXv8,109775
|
|
12
|
+
pvlib/scaling.py,sha256=SsQEmM4f4O1wC7e0amEV4SgaRTBX8nG5IiSV9Xs0i5o,10983
|
|
13
|
+
pvlib/shading.py,sha256=P6GmKxHXQGF0oCqDNN-2NjsvYHqpGG5GzRpepOAXhTk,12495
|
|
14
|
+
pvlib/singlediode.py,sha256=Bsr4YlTFBcR1kIIgMbL-QelO5YF-20c2kJjSyql2FYs,35399
|
|
15
|
+
pvlib/snow.py,sha256=LYFEpU5AnP82o6q5v6kQfgopkYtHO-aEyYFV9knpNvM,12764
|
|
16
16
|
pvlib/soiling.py,sha256=zDJ3N0uyeS1CoO0mxSdG16q2FCBLZSHbujJHgish54U,8799
|
|
17
|
-
pvlib/solarposition.py,sha256=
|
|
18
|
-
pvlib/spa.py,sha256=
|
|
19
|
-
pvlib/temperature.py,sha256=
|
|
17
|
+
pvlib/solarposition.py,sha256=FFafBzWYdLgNOsJiQY4l1LuqTn1-TYMvgoaLW2bQstI,50502
|
|
18
|
+
pvlib/spa.py,sha256=fTHdkU44M2d8hG9_i2MuBdDsqlgERBwVnsEMMPYLCuo,44802
|
|
19
|
+
pvlib/temperature.py,sha256=cNdbMx_x38XK5YwyxdWVBlnKkfXDBSjb9X_KTHY2hV8,55424
|
|
20
20
|
pvlib/tools.py,sha256=S3TswC_biexLSL8BlNdcLlWNVYSs7nG3EJhUEbHh59E,12650
|
|
21
|
-
pvlib/tracking.py,sha256=
|
|
22
|
-
pvlib/version.py,sha256=
|
|
21
|
+
pvlib/tracking.py,sha256=fwssoO_9vi5_aLBl59G0KE_EmsB3Jt0yIJlllFcpb5s,15802
|
|
22
|
+
pvlib/version.py,sha256=0CONzyOSN34Jgbaj9JzemFuaEnbRON_yxp-ah6_KxxQ,165
|
|
23
23
|
pvlib/bifacial/__init__.py,sha256=8uOiQ8cR0Wp62F-dLW25b1_xI3AxhwWlNagXqMyZUqA,412
|
|
24
24
|
pvlib/bifacial/infinite_sheds.py,sha256=rbiluCon6Tqpa_FizUfk5zBc6tH3ubk7xRqRAXp2Xq0,23051
|
|
25
25
|
pvlib/bifacial/pvfactors.py,sha256=QJXqjok4UcaUToNs6eR5ZDMsVf3HHT2AqW2u36hOOSI,5437
|
|
26
|
-
pvlib/bifacial/utils.py,sha256=
|
|
26
|
+
pvlib/bifacial/utils.py,sha256=Q2KSzn-vltO13QHYEfLVEWkTqed8Q8f_Eu4tlyrK2Ts,14542
|
|
27
27
|
pvlib/data/12839.tm2,sha256=6v86FhwMJeUJIEx8Mj9Rqp_OqmeaQ3rpObunQVaM6ss,1261501
|
|
28
28
|
pvlib/data/703165TY.csv,sha256=8DM6aKEW9a6S8ShaKrh4TY4A5So2dEVlisiNctk9jKQ,1760582
|
|
29
29
|
pvlib/data/723170TYA.CSV,sha256=Hpb4RjjOmOaykAK8RaJ6ppuymw7QNo07Urex-BYQxsk,1716576
|
|
@@ -92,7 +92,7 @@ pvlib/data/tmy_45.000_8.000_2005_2016.json,sha256=dZmqXOE6-0AcBxAll97yYTWnB7fUwf
|
|
|
92
92
|
pvlib/data/tmy_45.000_8.000_2005_2016.txt,sha256=1oWbUx3hwZ7VTBed2rpXg0tvJFNEDGaXwEnOzt_Ytc0,586345
|
|
93
93
|
pvlib/data/tmy_45.000_8.000_userhorizon.json,sha256=UnwM9O_cGX-B6-ntglr4EIiLWv0CDi3dQxE6YeBNVRk,1435855
|
|
94
94
|
pvlib/data/variables_style_rules.csv,sha256=_BD0EDdYu4ZhJd-D9Ya7Z8ZJdB3ruM5ggoKOA394LlY,2532
|
|
95
|
-
pvlib/iotools/__init__.py,sha256=
|
|
95
|
+
pvlib/iotools/__init__.py,sha256=qwecDYqaxTmghLgqzMmKAoKgUvhohNcRTw3-rOvxk6g,2294
|
|
96
96
|
pvlib/iotools/acis.py,sha256=nzuH3SZBhMNoSk0fBr35O4YADDah6D02Acyj5RNUYeI,18449
|
|
97
97
|
pvlib/iotools/bsrn.py,sha256=Y_-_7qdxu047oiCQLO6idu42MMCvh3Im5uBPxCa-YwU,21837
|
|
98
98
|
pvlib/iotools/crn.py,sha256=PLugc4RF_0LzesWHnyCOtx9KmqeECZH9kxcXgzgjGrQ,5336
|
|
@@ -103,53 +103,53 @@ pvlib/iotools/psm3.py,sha256=0D4_Em7cyIiu5uUSh_IfRSNixfrZz3Q6Bq7dr6WX-50,15465
|
|
|
103
103
|
pvlib/iotools/pvgis.py,sha256=_A3clvwLt63RTMxHdff19rpJrgJRFIDU2dX3t7yOomo,30169
|
|
104
104
|
pvlib/iotools/sodapro.py,sha256=Hw4kOUorJ3olSjB5FBlZjdNxIrkjWtDIHZd1IugVsBs,15629
|
|
105
105
|
pvlib/iotools/solaranywhere.py,sha256=_kDetQ0R8rQgcfTZjeQArq9nmCtVa4upF_KGrcipovQ,12535
|
|
106
|
-
pvlib/iotools/
|
|
107
|
-
pvlib/iotools/
|
|
108
|
-
pvlib/iotools/
|
|
109
|
-
pvlib/iotools/
|
|
106
|
+
pvlib/iotools/solargis.py,sha256=6FeIsqs_bs2oNrUGvkv7Dc4AlIsDiwpCs5oFVcBheO8,8274
|
|
107
|
+
pvlib/iotools/solcast.py,sha256=d-2LAC-Tlazmih_QZKYbOKCyZaP7U08pIwoKTfciTCk,15332
|
|
108
|
+
pvlib/iotools/solrad.py,sha256=M8Xwasro6_hFiZP7hcsYSeEze3q5kNmnV0kAdNHqgBI,7177
|
|
109
|
+
pvlib/iotools/srml.py,sha256=XRbq1vf1D3XCl2vMC9YHeuYdoFsjYqcu-r4voIvsMiA,10838
|
|
110
|
+
pvlib/iotools/surfrad.py,sha256=WFh2__FGlOwHg6RTxIkcMmdMucX0vbQfHEz9q_HLGjY,7349
|
|
110
111
|
pvlib/iotools/tmy.py,sha256=-lxHnehZ2FnblM_28KYPG4FWd_rnDXIHv_dHJz092K0,30719
|
|
111
112
|
pvlib/ivtools/__init__.py,sha256=bnUDPqkzCP96CaFFK3Gw4HNczJoHtO-cI9GBGAtZVGI,159
|
|
112
113
|
pvlib/ivtools/sde.py,sha256=HL2oE70Ls7xccikyaUSi6SQKx3cWES5XoaMAGuMjPIw,17008
|
|
113
114
|
pvlib/ivtools/sdm.py,sha256=XAwy4B3-iJJCP8SQOuBr3DfMfvzZzKMYc9jsG_96q_U,50867
|
|
114
115
|
pvlib/ivtools/utils.py,sha256=xL88J-RuYLXFZyy1za8tvoWei0hcwWb_2ktXara2m_M,19423
|
|
115
116
|
pvlib/spa_c_files/README.md,sha256=6a1vHAYR0goT6OcH3T9STEkDbMLmnOIBnx64u-jHwFI,3196
|
|
116
|
-
pvlib/spa_c_files/SPA_NOTICE.md,sha256=VrLtjEk8LusDkc4OsXl5-TtHhXZGkByAR5YwrDzRbNU,2467
|
|
117
117
|
pvlib/spa_c_files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
118
|
pvlib/spa_c_files/cspa_py.pxd,sha256=iJSd5KPC_pMSEGCMbYeTQjCE3I7Uv89oLpqli0H03H4,782
|
|
119
119
|
pvlib/spa_c_files/setup.py,sha256=RcMEf0R2wKHJjvpUH5y6h22m86y6UrdXwkPkHKNme48,1102
|
|
120
120
|
pvlib/spa_c_files/spa_py.pyx,sha256=XMjlxfcSPM2nXTWVbyGme0HFBvPhOxRFuQEnbhQfT3Q,809
|
|
121
121
|
pvlib/spa_c_files/spa_py_example.py,sha256=p3ms0mhLycAuZJyaE3Wageqnd_56zh2EKxXK-jlTJfg,1179
|
|
122
122
|
pvlib/spectrum/__init__.py,sha256=Xtu6PejkWxUuJSkmXjdsAQJn1GUj4HmRGlOmGZbqUL8,286
|
|
123
|
-
pvlib/spectrum/mismatch.py,sha256=
|
|
123
|
+
pvlib/spectrum/mismatch.py,sha256=VvTv6iklE8eKTaZ3SMrrh8_JE7s8eBjFhPNy-uC40sM,22647
|
|
124
124
|
pvlib/spectrum/spectrl2.py,sha256=gJiHlJrmxHQkqWDVY2htU3hihFvt9JDvY3QZeL0FkyQ,18964
|
|
125
125
|
pvlib/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
|
-
pvlib/tests/conftest.py,sha256=
|
|
126
|
+
pvlib/tests/conftest.py,sha256=gqTLfGacGrfSYhhRCRkfjXQgdr50KfuwliZWQvPQfNc,13217
|
|
127
127
|
pvlib/tests/test_atmosphere.py,sha256=v36-rFPPCB0v5qWo-Bi2pzx0sYiUo0W2BXS4cLgOTik,4878
|
|
128
|
-
pvlib/tests/test_clearsky.py,sha256=
|
|
128
|
+
pvlib/tests/test_clearsky.py,sha256=dYxSpFcxXv6XTTZ1R47nBtd4sMQL32TYlrHVf9VTza4,33293
|
|
129
129
|
pvlib/tests/test_conftest.py,sha256=jgSIL34Rp3fY2JoLVaVOupIew0Yclf5K9kgLGg1e3LU,2834
|
|
130
130
|
pvlib/tests/test_iam.py,sha256=jdnEYrUEdN-4GqISGZfaeL0xct2MSnCNNweRzlIixyo,18815
|
|
131
131
|
pvlib/tests/test_inverter.py,sha256=Xv_GLXkJfbS4HTOMzvKs_FQs6FFTCy7FaLFryGXkWMg,7434
|
|
132
|
-
pvlib/tests/test_irradiance.py,sha256=
|
|
133
|
-
pvlib/tests/test_location.py,sha256=
|
|
134
|
-
pvlib/tests/test_modelchain.py,sha256=
|
|
132
|
+
pvlib/tests/test_irradiance.py,sha256=4ApWazs8LU2908OIjo0lKiYjWjkwtFeD3_48DeybAw0,55236
|
|
133
|
+
pvlib/tests/test_location.py,sha256=UhGawiOEdXIcym_kVC8wbxZULuqU3MzZ3k_3Zgzkl9Y,13283
|
|
134
|
+
pvlib/tests/test_modelchain.py,sha256=vaCCtALPaB1FWtC9Iw3ty3vctqyAVvdxSkvIt6OFsH8,89421
|
|
135
135
|
pvlib/tests/test_numerical_precision.py,sha256=hu9ebaykI3WxZhE1SOzbw0zjjcYjg79-T5oGQlBNzXo,4331
|
|
136
|
-
pvlib/tests/test_pvarray.py,sha256=
|
|
137
|
-
pvlib/tests/test_pvsystem.py,sha256=
|
|
136
|
+
pvlib/tests/test_pvarray.py,sha256=zAxaK-2jUPLRwgOlnPdpvgLeSHL7op_63XxSDzKup8s,2694
|
|
137
|
+
pvlib/tests/test_pvsystem.py,sha256=eFlc0UeqwFu-Etf81kiohAUW5ZohKgyvgfenqCMb45o,99567
|
|
138
138
|
pvlib/tests/test_scaling.py,sha256=KlzMAiZcpWHLega4JJIBUy5PbzworWm9tqjLFaqoFcg,6832
|
|
139
|
-
pvlib/tests/test_shading.py,sha256=
|
|
140
|
-
pvlib/tests/test_singlediode.py,sha256=
|
|
141
|
-
pvlib/tests/test_snow.py,sha256=
|
|
139
|
+
pvlib/tests/test_shading.py,sha256=QH6wb0wAE3DGhaNUnhQLlknEmz_EL_tRTUe25yyPZ1Y,7846
|
|
140
|
+
pvlib/tests/test_singlediode.py,sha256=qnSRMO_iD6qz2mKQxX0hkqOKQSGrNo0hWdlWj9M58zo,25191
|
|
141
|
+
pvlib/tests/test_snow.py,sha256=YyPpF-_VwNadrsuUzv32UgRlzZHEDxSYpciLNga16P0,8590
|
|
142
142
|
pvlib/tests/test_soiling.py,sha256=QepAr_jVS24l07EUx8rrTjG67t7_vltJ1si_MlOXAGE,8183
|
|
143
|
-
pvlib/tests/test_solarposition.py,sha256=
|
|
144
|
-
pvlib/tests/test_spa.py,sha256=
|
|
143
|
+
pvlib/tests/test_solarposition.py,sha256=K4_EOZ4arSHRxbdiytjalANLQadASE4zFSpmTAr4QOg,41652
|
|
144
|
+
pvlib/tests/test_spa.py,sha256=2qN69mz3lQwNOj4prfAEL-Y4SryO0wSL2E1FIeGoD0Q,16994
|
|
145
145
|
pvlib/tests/test_spectrum.py,sha256=mkT1b1NWTAnRnrT8IBDgikjwjN_SyHWS5eToxV2hMls,12261
|
|
146
|
-
pvlib/tests/test_temperature.py,sha256=
|
|
146
|
+
pvlib/tests/test_temperature.py,sha256=oJ9Zt5-GvI2RB4JTZX0kNXhx-Na5wZV6qr_T7WBXWEU,18437
|
|
147
147
|
pvlib/tests/test_tools.py,sha256=oK3uBRlQlkWcV4tWcyeceWhkZvGeBymsaxtbHX7KRXE,4879
|
|
148
|
-
pvlib/tests/test_tracking.py,sha256=
|
|
148
|
+
pvlib/tests/test_tracking.py,sha256=tqnVv3wGagJetly9qwJFstuMHAiakweTi31sR0VZbSU,20543
|
|
149
149
|
pvlib/tests/bifacial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
150
|
pvlib/tests/bifacial/test_infinite_sheds.py,sha256=wYuJ8U7gEiG-lg0L3j2NaGOG6NhQWB2ZAUnrffH-n0Y,13549
|
|
151
151
|
pvlib/tests/bifacial/test_pvfactors.py,sha256=vocfxIsBAZwaEeRDfRAZmvemuYIRXI0UVbuKqUXRU6g,3144
|
|
152
|
-
pvlib/tests/bifacial/test_utils.py,sha256=
|
|
152
|
+
pvlib/tests/bifacial/test_utils.py,sha256=c6Q9H_3pocHDNokxq26HCPiyoNvZGS1h9FmSLrWPPh4,8346
|
|
153
153
|
pvlib/tests/iotools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
154
|
pvlib/tests/iotools/test_acis.py,sha256=Ya1CzAcQDzUWFaVZduiE_rGfx7RBbQtxajW4ekfWIWE,8440
|
|
155
155
|
pvlib/tests/iotools/test_bsrn.py,sha256=7DHT6CcEGWZ_qNsLXDSSF_Rk6hpa1zqgNnvpnK_T8_k,4781
|
|
@@ -159,20 +159,21 @@ pvlib/tests/iotools/test_midc.py,sha256=D86u7UxhoYsIXcKoE4yJI46tiC75xnwArmwRCQJm
|
|
|
159
159
|
pvlib/tests/iotools/test_panond.py,sha256=1yH_5DKW2JXdVLL7Y769jAY0S-8UtYzlO-Sp9SuPwCk,1149
|
|
160
160
|
pvlib/tests/iotools/test_psm3.py,sha256=Ot6zxpaF-S8yBVo1ZioaUQ9KJD30hESKQRDX7Z_ti10,8924
|
|
161
161
|
pvlib/tests/iotools/test_pvgis.py,sha256=Nsle7lPKAgeju8CT8HRXHvorRXPpbku5WorXHvGm_e4,27434
|
|
162
|
-
pvlib/tests/iotools/test_sodapro.py,sha256=
|
|
162
|
+
pvlib/tests/iotools/test_sodapro.py,sha256=QndGGTl-cj9YW-vM8qWoM6nswXqeqDf6P5_ML4kKlpA,14343
|
|
163
163
|
pvlib/tests/iotools/test_solaranywhere.py,sha256=tQU2Rb8shSWOeRyGuUZr8XPUGiM3mB21IiIN7l91eqM,12404
|
|
164
|
-
pvlib/tests/iotools/
|
|
165
|
-
pvlib/tests/iotools/
|
|
166
|
-
pvlib/tests/iotools/
|
|
164
|
+
pvlib/tests/iotools/test_solargis.py,sha256=nQsRFB1yfWKFFs9ASm3b1dnNSbP0vSyZB6KsUn9nqUw,2575
|
|
165
|
+
pvlib/tests/iotools/test_solcast.py,sha256=s25GRL997KQv5zZeHM804ceaAk2C4zZoxKbX2Mn2Mpw,11972
|
|
166
|
+
pvlib/tests/iotools/test_solrad.py,sha256=HvssYWFDQYKRfyWHCp-Y89XAhsQLg78PEoDRtT4G-Cc,7088
|
|
167
|
+
pvlib/tests/iotools/test_srml.py,sha256=EgeICaJrp_vIOr2yGl4KtZqevk6-1pNYKIMqKfngAJs,6095
|
|
167
168
|
pvlib/tests/iotools/test_surfrad.py,sha256=fQ8iFFqdvwXO2B0bdAphJIaP9_n94EhV_gNthzz-NQE,2602
|
|
168
169
|
pvlib/tests/iotools/test_tmy.py,sha256=LW6CgSkfO8I5W3iAJezST3M2RRGJLfoJ5bMwUyhFbWU,5106
|
|
169
170
|
pvlib/tests/ivtools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
171
|
pvlib/tests/ivtools/test_sde.py,sha256=dBJkk9tWskwc6Iyoziar9MoZESrOSkepOk51g5QOy1I,13844
|
|
171
172
|
pvlib/tests/ivtools/test_sdm.py,sha256=5ioqsEJJE-JCSCGRLXj1zCuJzGIPNY622GyflJMU_MM,16406
|
|
172
173
|
pvlib/tests/ivtools/test_utils.py,sha256=-BPEUgB5aCkJOv-apRkjeg0IraZ1Ebf5SmObk4Zusz4,6905
|
|
173
|
-
pvlib-0.10.
|
|
174
|
-
pvlib-0.10.
|
|
175
|
-
pvlib-0.10.
|
|
176
|
-
pvlib-0.10.
|
|
177
|
-
pvlib-0.10.
|
|
178
|
-
pvlib-0.10.
|
|
174
|
+
pvlib-0.10.5.dist-info/AUTHORS.md,sha256=Fxk4p_lXlMeQ6g2A1-7oPrgpULDxuJuC9Ebc-3yyj_o,1474
|
|
175
|
+
pvlib-0.10.5.dist-info/LICENSE,sha256=oC4S3araPPDV292K_91XfC7sZAdYqVhCowT3UTuMC-Q,1622
|
|
176
|
+
pvlib-0.10.5.dist-info/METADATA,sha256=cimQNDgoZe_S2_jiDXi0v2UfEVboTEyLIFY-EVqzaQU,2785
|
|
177
|
+
pvlib-0.10.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
178
|
+
pvlib-0.10.5.dist-info/top_level.txt,sha256=eq9CH6YXUc3Fh3dyQ5hQXoGYfSm1SYEAlMygyR22MgE,6
|
|
179
|
+
pvlib-0.10.5.dist-info/RECORD,,
|
pvlib/spa_c_files/SPA_NOTICE.md
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# NOTICE
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2008-2011 Alliance for Sustainable Energy, LLC, All Rights Reserved
|
|
4
|
-
|
|
5
|
-
The Solar Position Algorithm ("Software") is code in development prepared by
|
|
6
|
-
employees of the Alliance for Sustainable Energy, LLC, (hereinafter the
|
|
7
|
-
"Contractor"), under Contract No. DE-AC36-08GO28308 ("Contract") with the
|
|
8
|
-
U.S. Department of Energy (the "DOE"). The United States Government has been
|
|
9
|
-
granted for itself and others acting on its behalf a paid-up, non-exclusive,
|
|
10
|
-
irrevocable, worldwide license in the Software to reproduce, prepare
|
|
11
|
-
derivative works, and perform publicly and display publicly. Beginning five
|
|
12
|
-
(5) years after the date permission to assert copyright is obtained from the
|
|
13
|
-
DOE, and subject to any subsequent five (5) year renewals, the United States
|
|
14
|
-
Government is granted for itself and others acting on its behalf a paid-up,
|
|
15
|
-
non-exclusive, irrevocable, worldwide license in the Software to reproduce,
|
|
16
|
-
prepare derivative works, distribute copies to the public, perform publicly
|
|
17
|
-
and display publicly, and to permit others to do so. If the Contractor ceases
|
|
18
|
-
to make this computer software available, it may be obtained from DOE's
|
|
19
|
-
Office of Scientific and Technical Information's Energy Science and
|
|
20
|
-
Technology Software Center (ESTSC) at P.O. Box 1020, Oak Ridge, TN
|
|
21
|
-
37831-1020. THIS SOFTWARE IS PROVIDED BY THE CONTRACTOR "AS IS" AND ANY
|
|
22
|
-
EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE IMPLIED
|
|
23
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
24
|
-
DISCLAIMED. IN NO EVENT SHALL THE CONTRACTOR OR THE U.S. GOVERNMENT BE LIABLE
|
|
25
|
-
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER,
|
|
26
|
-
INCLUDING BUT NOT LIMITED TO CLAIMS ASSOCIATED WITH THE LOSS OF DATA OR
|
|
27
|
-
PROFITS, WHICH MAY RESULT FROM AN ACTION IN CONTRACT, NEGLIGENCE OR OTHER
|
|
28
|
-
TORTIOUS CLAIM THAT ARISES OUT OF OR IN CONNECTION WITH THE ACCESS, USE OR
|
|
29
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
30
|
-
|
|
31
|
-
The Software is being provided for internal, noncommercial purposes only and
|
|
32
|
-
shall not be re-distributed. Please contact [Jean
|
|
33
|
-
Schulte](mailto:Jean.Schulte@nrel.gov) in the NREL Commercialization and
|
|
34
|
-
Technology Transfer Office for information concerning a commercial license to
|
|
35
|
-
use the Software.
|
|
36
|
-
|
|
37
|
-
As a condition of using the Software in an application, the developer of the
|
|
38
|
-
application agrees to reference the use of the Software and make this Notice
|
|
39
|
-
readily accessible to any end-user in a Help|About screen or equivalent manner.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|