Skip to content

Commit 7e7642b

Browse files
committed
rework temp, racking, module deprecations
1 parent cf917fc commit 7e7642b

File tree

2 files changed

+23
-38
lines changed

2 files changed

+23
-38
lines changed

pvlib/pvsystem.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,12 @@ class PVSystem(object):
170170
def __init__(self,
171171
surface_tilt=0, surface_azimuth=180,
172172
albedo=None, surface_type=None,
173-
module=None, module_type='glass_polymer',
173+
module=None, module_type=None,
174174
module_parameters=None,
175175
temperature_model_parameters=None,
176176
modules_per_string=1, strings_per_inverter=1,
177177
inverter=None, inverter_parameters=None,
178-
racking_model='open_rack', losses_parameters=None, name=None,
178+
racking_model=None, losses_parameters=None, name=None,
179179
**kwargs):
180180

181181
self.surface_tilt = surface_tilt
@@ -201,20 +201,21 @@ def __init__(self,
201201
if temperature_model_parameters is None:
202202
self.temperature_model_parameters = \
203203
self._infer_temperature_model_params()
204-
# TODO: in v0.8 check if an empty dict is returned and raise error
205204
else:
206205
self.temperature_model_parameters = temperature_model_parameters
207206

208-
# TODO: deprecated behavior if PVSystem.temperature_model_parameters
209-
# are not specified. Remove in v0.8
210-
if not any(self.temperature_model_parameters):
207+
# warn user about change in default behavior in 0.9.
208+
if all(x is None for x in
209+
(temperature_model_parameters, module_type, racking_model)):
211210
warnings.warn(
212-
'Required temperature_model_parameters is not specified '
213-
'and parameters are not inferred from racking_model and '
214-
'module_type. Reverting to deprecated default: SAPM cell '
215-
'temperature model parameters for a glass/glass module in '
216-
'open racking. In the future '
217-
'PVSystem.temperature_model_parameters will be required',
211+
'temperature_model_parameters, racking_model, and module_type '
212+
'are not specified. Reverting to deprecated default: SAPM '
213+
'cell temperature model parameters for a glass/glass module '
214+
'in open racking. In v0.9 '
215+
'PVSystem.temperature_model_parameters will be empty dict '
216+
'unless set by temperature_model_parameters or valid '
217+
'combination of racking_model and module_type. Pass non-None '
218+
'value to any of these parameters to silence this warning.',
218219
pvlibDeprecationWarning)
219220
params = temperature._temperature_model_params(
220221
'sapm', 'open_rack_glass_glass')
@@ -494,7 +495,7 @@ def sapm_celltemp(self, poa_global, temp_air, wind_speed):
494495
def _infer_temperature_model_params(self):
495496
# try to infer temperature model parameters from from racking_model
496497
# and module_type
497-
param_set = self.racking_model + '_' + self.module_type
498+
param_set = '{}_{}'.format(self.racking_model, self.module_type)
498499
if param_set in temperature.TEMPERATURE_MODEL_PARAMETERS['sapm']:
499500
return temperature._temperature_model_params('sapm', param_set)
500501
elif 'freestanding' in param_set:

pvlib/tests/test_pvsystem.py

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -386,14 +386,6 @@ def test__infer_temperature_model_params():
386386
assert expected == system._infer_temperature_model_params()
387387

388388

389-
def test__infer_temperature_model_params_deprec_warning():
390-
warn_txt = "Reverting to deprecated default"
391-
with pytest.warns(pvlibDeprecationWarning, match=warn_txt):
392-
pvsystem.PVSystem(module_parameters={},
393-
racking_model='not_a_rack_model',
394-
module_type='glass_polymer')
395-
396-
397389
def test_calcparams_desoto(cec_module_params):
398390
times = pd.date_range(start='2015-01-01', periods=3, freq='12H')
399391
effective_irradiance = pd.Series([0.0, 800.0, 800.0], index=times)
@@ -1130,8 +1122,8 @@ def test_PVSystem___repr__():
11301122
module: blah
11311123
inverter: blarg
11321124
albedo: 0.25
1133-
racking_model: open_rack
1134-
module_type: glass_polymer
1125+
racking_model: None
1126+
module_type: None
11351127
temperature_model_parameters: {'a': -3.56}"""
11361128
assert system.__repr__() == expected
11371129

@@ -1153,8 +1145,8 @@ def test_PVSystem_localize___repr__():
11531145
module: blah
11541146
inverter: blarg
11551147
albedo: 0.25
1156-
racking_model: open_rack
1157-
module_type: glass_polymer
1148+
racking_model: None
1149+
module_type: None
11581150
temperature_model_parameters: {'a': -3.56}"""
11591151

11601152
assert localized_system.__repr__() == expected
@@ -1193,8 +1185,8 @@ def test_LocalizedPVSystem___repr__():
11931185
module: blah
11941186
inverter: blarg
11951187
albedo: 0.25
1196-
racking_model: open_rack
1197-
module_type: glass_polymer
1188+
racking_model: None
1189+
module_type: None
11981190
temperature_model_parameters: {'a': -3.56}"""
11991191

12001192
assert localized_system.__repr__() == expected
@@ -1329,15 +1321,7 @@ def test_deprecated_09(cec_inverter_parameters, adr_inverter_parameters):
13291321
# deprecated function pvsystem.spvwatts_ac
13301322
with pytest.warns(pvlibDeprecationWarning):
13311323
pvsystem.pvwatts_ac(90, 100, 0.95)
1332-
module_parameters = {'R_sh_ref': 1, 'a_ref': 1, 'I_o_ref': 1,
1333-
'alpha_sc': 1, 'I_L_ref': 1, 'R_s': 1,
1334-
'B5': 0.0, 'B4': 0.0, 'B3': 0.0, 'B2': 0.0,
1335-
'B1': 0.0, 'B0': 1.0,
1336-
'b': 0.05, 'K': 4, 'L': 0.002, 'n': 1.526,
1337-
'a_r': 0.16}
1338-
temp_model_params = temperature.TEMPERATURE_MODEL_PARAMETERS['sapm'][
1339-
'open_rack_glass_glass']
13401324
# for missing temperature_model_parameters
1341-
with pytest.warns(pvlibDeprecationWarning):
1342-
pvsystem.PVSystem(module_parameters=module_parameters,
1343-
racking_model='open', module_type='glass_glass')
1325+
warn_txt = "Reverting to deprecated default: SAPM cell temperature"
1326+
with pytest.warns(pvlibDeprecationWarning, warn_txt=warn_txt):
1327+
pvsystem.PVSystem()

0 commit comments

Comments
 (0)