10000 Snow coverage model from SAM by JPalakapillyKWH · Pull Request #764 · pvlib/pvlib-python · GitHub
[go: up one dir, main page]

Skip to content

Snow coverage model from SAM #764

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 163 commits into from
Mar 28, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
bea249f
added snow_model code. Needs formatting
JPalakapillyKWH Aug 8, 2019
a931096
starting numpy-ification
JPalakapillyKWH Aug 8, 2019
ca285d7
minor changes
JPalakapillyKWH Aug 9, 2019
f7acc74
added tests and made model faster
JPalakapillyKWH Aug 13, 2019
9a7964b
finished tests.
JPalakapillyKWH Aug 13, 2019
67cff8b
fixed lint errors.
JPalakapillyKWH Aug 13, 2019
97565bf
fixed minor lint error
JPalakapillyKWH Aug 14, 2019
78ac66a
fixed bug where model stopped prematurely
JPalakapillyKWH Aug 15, 2019
a2ccd92
docstring changes mostly. Changed the location of division by 10 for …
JPalakapillyKWH Aug 16, 2019
4d65294
fixed tests to account for prev change
JPalakapillyKWH Aug 16, 2019
bcd8c37
fixed docstring for snow slide amount
JPalakapillyKWH Aug 16, 2019
8edfffe
docstring edits, move some functions to private
cwhanse Feb 7, 2020
cf71e2a
Merge branch 'master' of https://github.com/pvlib/pvlib-python into s…
cwhanse Feb 7, 2020
43d21cd
rewrite, reduce helpers, remove while loop
cwhanse Feb 13, 2020
1b5dcb1
rename functions, review responses, add subhourly test
cwhanse Feb 14, 2020
7b7edfe
fixes
cwhanse Feb 14, 2020
c5ac03b
temperature -> temp_air, test correction, fix default for m
cwhanse Feb 14, 2020
b9f1988
put m=-80 back
cwhanse Feb 14, 2020
04a0b15
edits for threshold, use first data point
cwhanse Mar 2, 2020
109fa7d
add initial snow, better logic for coverage events
cwhanse Mar 4, 2020
436c8d1
lint, text fix
cwhanse Mar 4, 2020
92d693c
workaround for py35/pandas 0.23.4
cwhanse Mar 5, 2020
b5a9fb9
move line
cwhanse Mar 5, 2020
7116cd2
improve comments
cwhanse Mar 6, 2020
54f7a5e
improvements from review
cwhanse Mar 6, 2020
63c2f58
improve docstring
cwhanse Mar 6, 2020
c766e9a
reorder comparison, add missing inplace
cwhanse Mar 6, 2020
4c25f2a
correct test, cut/paste error
cwhanse Mar 6, 2020
6c6c663
vectorize
cwhanse Mar 9, 2020
7689ef6
correct .clip
cwhanse Mar 9, 2020
47c26da
function and file renaming
cwhanse Mar 10, 2020
ff2ca66
Merge branch 'master' of https://github.com/pvlib/pvlib-python into s…
cwhanse Mar 10, 2020
3a04ccd
docstring corrections, replace hack with pandas offset
cwhanse Mar 13, 2020
10cd8f2
refactor bifacial merge, improve merge tests (#747)
alexandermorgan Jul 20, 2019
733e489
Implement IEC 61853 IAM calculations (#752)
adriesse Jul 26, 2019
2f6376e
remove python 2 lines (#757)
alexandermorgan Jul 26, 2019
16bdde9
fix rounding issue in linke turbidity lookup function (#755)
alexandermorgan Aug 1, 2019
c4091cc
edit DIRINDEX docstring (#760)
cwhanse Aug 6, 2019
1ac666d
added snow_model code. Needs formatting
JPalakapillyKWH Aug 8, 2019
0b6236a
starting numpy-ification
JPalakapillyKWH Aug 8, 2019
ad48714
minor changes
JPalakapillyKWH Aug 9, 2019
edb1b1e
added tests and made model faster
JPalakapillyKWH Aug 13, 2019
8f59d8b
finished tests.
JPalakapillyKWH Aug 13, 2019
0352814
fixed lint errors.
JPalakapillyKWH Aug 13, 2019
d970d20
fixed minor lint error
JPalakapillyKWH Aug 14, 2019
6fa5c95
fixed bug where model stopped prematurely
JPalakapillyKWH Aug 15, 2019
81f2c85
docstring changes mostly. Changed the location of division by 10 for …
JPalakapillyKWH Aug 16, 2019
2e13c1b
fixed tests to account for prev change
JPalakapillyKWH Aug 16, 2019
62f5df6
fixed docstring for snow slide amount
JPalakapillyKWH Aug 16, 2019
2858799
Add recombination current params to all bishop88 functions (#763)
adriesse Aug 28, 2019
539402c
Raise if no parameters provided to retrieve_sam() (#770) (#775)
Peque Aug 28, 2019
04083bf
refactor cec test data into fixtures (#774)
Peque Aug 29, 2019
3052442
remove functions marked for 0.7 removal (#772)
wholmgren Aug 29, 2019
bf79511
move celltemp functions to celltemp.py, expose celltemp.pvsyst in Mod…
cwhanse Sep 9, 2019
f5f776a
Update module and inverter files (#761) (#767)
Peque Sep 9, 2019
81f78d5
refactor repeated code in ModelChain singlediode and LocalizedPVSyste…
Peque Sep 9, 2019
f1b0c5a
Create ivtools (#718)
cwhanse Sep 11, 2019
b75909c
clean up whatsnew after #718 merge (#778)
cwhanse Sep 11, 2019
724ac68
ModelChain 0.7 deprecations, remove times kwarg (#773)
wholmgren Sep 16, 2019
cabc6c8
add timeout to get_psm3 (#741)
cwhanse Sep 16, 2019
fc179a4
Update forecast.py comment typo
aperetti Sep 23, 2019
468e42d
Get rid of `re` deprecation warnings (#787)
Peque Oct 10, 2019
ee7ef7a
Fix documentation references to inverter/module data (#791)
veronicaguo Oct 18, 2019
53d4654
Create iam.py, consistent naming for IAM functions (#783)
cwhanse Oct 18, 2019
743a4fb
add bare environment CI tests (#790)
wholmgren Oct 21, 2019
9d7683e
handle warnings from temperature model tests (#796)
cwhanse Oct 23, 2019
bf29887
replace Pandas item() implementation with numpy's using .values (#797)
CameronTStark Oct 24, 2019
6bfc18b
mark xfail of test_get_psm3 (#803)
CameronTStark Oct 29, 2019
029cf20
coefficient estimation method following DeSoto(2006) (#784)
tylunel Oct 31, 2019
dac54de
change tools._scalar_out/_array_out arg name to avoid collision with …
CameronTStark Oct 31, 2019
1b6e62d
Implement IEC 61853 IAM calculations for diffuse irradiance (#793)
adriesse Nov 2, 2019
e6c33dd
add macOS 10.14 Mojave to Azure Pipelines CI (#812)
cwhanse Nov 5, 2019
2305603
update readme docs to stable
wholmgren Nov 5, 2019
c0fda4f
Add note clearksky Ineichen term b (#814)
cedricleroy Nov 7, 2019
4250d71
Drop DataFrame as option for `module` input to pvsystem.sapm (#811)
cwhanse Nov 7, 2019
4f6584a
Don't expose model parameter dictionaries to users (#805)
veronicaguo Nov 13, 2019
f6b0e41
* Fix for issue #782 (#816)
tylunel Nov 14, 2019
bcbd29f
Add shield organization table with download shields (#820)
CameronTStark Nov 15, 2019
bef5866
fix reading MIDC files with mismatching header/data columns (#822)
alorenzo175 Nov 19, 2019
8792b60
Change units on SAPM effective irradiance from suns to W/m2 (#815)
cwhanse Nov 26, 2019
69e340f
fix handful of documentation warnings (#819)
wholmgren Nov 26, 2019
6a48f94
update contributing documentation, pr template (#818)
wholmgren Nov 26, 2019
54d535b
import bifacial module in __init__.py (#826)
wholmgren Nov 27, 2019
b5bdcce
Put SAM product renaming code in a separate function, simplify, add w…
adriesse Nov 27, 2019
ad12c56
Create scaling.py and implement WVM model (#807)
jranalli Dec 2, 2019
35daed1
Fix typo in TMY total sky cover uncertainty column name (#831)
hamiltonkibbe Dec 6, 2019
673490c
Location object creation from epw metadata (#821)
tylunel Dec 12, 2019
c52bc77
Implement IEC 61853 module temperature model (#834)
adriesse Dec 13, 2019
dd72dcd
update to numpy-1.12.0 (#830)
mikofski Dec 13, 2019
06de0aa
Docstring formatting (#833)
kevinsa5 Dec 16, 2019
2be01f0
*– Formatting of ModelChain.diode_params in pandas.DataFrame (#832)
tylunel Dec 17, 2019
3b6b7db
update whatsnew.rst, add contributors, v0.7.0 release date, address #…
CameronTStark Dec 18, 2019
7b9f922
change overlooked irradiance.total_irrad references to irradiance.get…
kandersolar Dec 23, 2019
92adcfc
refactor get_psm3 code into parse_psm3, read_psm3 (#842)
kandersolar Jan 3, 2020
cb131d6
Fix error in the irradiance unit checker. (#844)
dzimmanck Jan 9, 2020
02a604d
Add gallery of examples using sphinx-gallery (#846)
kandersolar Jan 10, 2020
ae18625
add pvgis to iotools (#845)
mikofski Jan 10, 2020
0b0f097
fix table line lengtsh, remove #noqa, use grid (#852)
mikofski Jan 10, 2020
dd504f6
Improves sapm deprecation warning checker (#854)
cwhanse Jan 12, 2020
c20d443
improve solpos tz requirements documentation (#853)
wholmgren Jan 13, 2020
618fe26
DOC: remove superscript formatting for citation callouts (#855)
kandersolar Jan 13, 2020
b5ab200
reorganize tests into subfolders and use pathlib for conftest DATA_DI…
mikofski Jan 16, 2020
e981839
add Boyle/Coello (Humboldt State Univ) soiling model (#850)
nappaillav Jan 17, 2020
e124175
update whats new for #844 and other contributors (#851)
wholmgren Jan 18, 2020
8da7354
add numfocus affiliation to sphinx docs (#862)
mikofski Jan 22, 2020
18c475f
fix tmy3 leapyear in February handling, coerce_year raises exception …
mikofski Jan 29, 2020
13500d2
Update for PySAM 2.0 (#874)
cwhanse Feb 6, 2020
08f5f19
docstring edits, move some functions to private
cwhanse Feb 7, 2020
1200266
make test_psm3.py robust to API overuse errors (#873)
CameronTStark Feb 10, 2020
578a70f
Fix backwards path sep (#876)
mikofski Feb 11, 2020
1c12459
forecast compat with pandas 1.0, fix bug in Location tz handling (#879)
wholmgren Feb 12, 2020
6c2372f
remove needs_pandas decorator (#885)
CameronTStark Feb 13, 2020
551331a
rewrite, reduce helpers, remove while loop
cwhanse Feb 13, 2020
0c9f848
Add calcparams_desoto+singlediode example to gallery (#872)
kandersolar Feb 14, 2020
8343212
fix documentation home page title (#890)
CameronTStark Feb 14, 2020
3661d86
rename functions, review responses, add subhourly test
cwhanse Feb 14, 2020
f3a2eec
fixes
cwhanse Feb 14, 2020
e80763c
temperature -> temp_air, test correction, fix default for m
cwhanse Feb 14, 2020
b92efee
put m=-80 back
cwhanse Feb 14, 2020
da22506
add Kimber soiling model (#860)
mikofski Feb 15, 2020
238acc6
move contents of 0.6.4 whatsnew into 0.7.0 whatsnew (#899)
wholmgren Feb 21, 2020
7ee7cc6
compatibility for cftime==1.1 (#900)
wholmgren Feb 21, 2020
76309cc
Use pytest remotedata (#896)
CameronTStark Feb 21, 2020
ea286cb
Include Python3.8 into Azure Pipelines (#904)
CameronTStark Feb 22, 2020
4104062
eliminate some of the test suite warnings (#906)
wholmgren Feb 24, 2020
1441d51
Add Contributing section about gallery examples (#905)
kandersolar Feb 24, 2020
23e9ef7
Expose temperature.faiman in PVSystem and ModelChain (#897)
kandersolar Feb 25, 2020
02926a5
Rename test_modelchain system fixture (#915)
veronicaguo Feb 26, 2020
f3d286c
BLD: build docs on Azure Pipelines (#909)
CameronTStark Feb 26, 2020
f70377b
fix read_tmy3 with year coerced not monotonic, breaks soiling (#910)
mikofski Feb 29, 2020
5788223
add read pvgis tmy (#907)
mikofski Mar 1, 2020
a341fd2
TST: make iotools tests robust to API downtime (#919)
CameronTStark Mar 2, 2020
891158a
Link to code of conduct (#922)
mikofski Mar 2, 2020
67f6537
edits for threshold, use first data point
cwhanse Mar 2, 2020
00bda7a
Fix most sphinx warnings (#912)
kandersolar Mar 3, 2020
7524ba8
Fancy "view on github" links in documentation (#913)
kandersolar Mar 3, 2020
52ff419
add initial snow, better logic for coverage events
cwhanse Mar 4, 2020
649a6a5
lint, text fix
cwhanse Mar 4, 2020
d183fae
TST: Use templates in Azure Pipelines config file (#926)
wholmgren Mar 4, 2020
06a3ae7
workaround for py35/pandas 0.23.4
cwhanse Mar 5, 2020
380a576
move line
cwhanse Mar 5, 2020
29e1772
improve comments
cwhanse Mar 6, 2020
1c2ad4f
improvements from review
cwhanse Mar 6, 2020
87288cf
improve docstring
cwhanse Mar 6, 2020
9eb70a9
reorder comparison, add missing inplace
cwhanse Mar 6, 2020
bf42c8f
correct test, cut/paste error
cwhanse Mar 6, 2020
82e94a4
vectorize
cwhanse Mar 9, 2020
b6919b2
correct .clip
cwhanse Mar 9, 2020
14e1390
function and file renaming
cwhanse Mar 10, 2020
21e1086
docstring corrections, replace hack with pandas offset
cwhanse Mar 13, 2020
04ded05
Merge branch 'snow_coverage_model' of https://github.com/JPalakapilly…
cwhanse Mar 18, 2020
4aaa6f1
update api.rst, whatsnew
cwhanse Mar 18, 2020
fc68b91
Merge branch 'master' of https://github.com/pvlib/pvlib-python into s…
cwhanse Mar 18, 2020
af1a2ac
fix headings
cwhanse Mar 18, 2020
aa6bbba
change to use pandas to_offset method
cwhanse Mar 19, 2020
4989c02
Update docs/sphinx/source/api.rst
cwhanse Mar 19, 2020
a41561b
Update docs/sphinx/source/whatsnew/v0.7.2.rst
cwhanse Mar 19, 2020
31ed477
Update pvlib/snow.py
cwhanse Mar 19, 2020
e37eda0
review comments
cwhanse Mar 19, 2020
86599f4
Merge branch 'snow_coverage_model' of https://github.com/JPalakapilly…
cwhanse Mar 19, 2020
21c6813
add snow to __init__.py
cwhanse Mar 19, 2020
bf66c37
add test for irregular times
cwhanse Mar 19, 2020
ae476ed
correct user name
cwhanse Mar 19, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
make test_psm3.py robust to API overuse errors (#873)
* use NREL_API_KEY environment variable when available

* remove try-except clause to ensure that azure env variable is used

* set environment variable from Azure's secret variables

* Update azure-pipelines.yml for Azure Pipelines

* Update azure-pipelines.yml for Azure Pipelines within pytest call

* Update azure-pipelines.yml for Azure Pipelines echo only

* Update azure-pipelines.yml for Azure Pipelines with python

* Update azure-pipelines.yml for Azure Pipelines all os.environ

* Update azure-pipelines.yml for Azure Pipelines export variable

* export Azure secret variable into environment to access from python

* Update azure-pipelines.yml for Azure Pipelines fix displayName

* Update azure-pipelines.yml for Azure Pipelines psm3 test only

* Update azure-pipelines.yml for Azure Pipelines for real this time

* Update azure-pipelines.yml for Azure Pipelines for really real this time

* Update azure-pipelines.yml for Azure Pipelines single failing test

* Update azure-pipelines.yml for Azure Pipelines test_get_psm3_tmy

* Update azure-pipelines.yml for Azure Pipelines io_input

* Update azure-pipelines.yml for Azure Pipelines test_parse_psm3

* Update azure-pipelines.yml for Azure Pipelines test_read_psm3

* Update azure-pipelines.yml for Azure Pipelines all test_psm3.py tests

* Update azure-pipelines.yml for Azure Pipelines all python versions

* use NREL_API_KEY environment variable when available

* remove try-except clause to ensure that azure env variable is used

* set environment variable from Azure's secret variables

* Update azure-pipelines.yml for Azure Pipelines

* Update azure-pipelines.yml for Azure Pipelines within pytest call

* Update azure-pipelines.yml for Azure Pipelines echo only

* Update azure-pipelines.yml for Azure Pipelines with python

* Update azure-pipelines.yml for Azure Pipelines all os.environ

* Update azure-pipelines.yml for Azure Pipelines export variable

* export Azure secret variable into environment to access from python

* temporary test_blah function and get_psm3 delayer

* improve delay_get_psm3(), replace get_psm3() calls

* set DEMO_KEY to environment variable if available

* update azure-pipelines basic script for testing

* match azure secret variable

* return to full suite of testing on azure

* return test_psm3() specific pytest call to general

* add description to whatsnew

* formatting fix

* logger module implementation

* more formatting

* change while loop to for loop

* use warnings instead of logging

* fixturize DEMO_KEY

* implement use of pytest-rerunfailures instead of custom loop

* parametrize error tests into a signle test

* fix windows environment import of NREL key

* test to echo environment variable of NREL key

* fix windows secret variable setting

* add pytest-rerunfailures to ci requirements yml

* use secret.nrelApiKey syntax

* test new secret variable

* try secret.api_key syntax

* std syntax only psm3

* try to print other variables that arent secrets

* confirm personal repo still works

* bump

* try all python versions

* try everything

* install pytest-rerunrailures in Azure

* configure conda_35 tests to pull pytest_rerunfailures from pip instead of conda

* add note for pytest-rerunfailures for conda_35

* change fixture from DEMO_KEY to nrel_api_key

* remove debug variable echo commands

* move pytest-rerunfailures to pip install

* improve docstrings

* use verbose name for caught error

* readd leap year test
  • Loading branch information
CameronTStark authored and cwhanse committed Mar 18, 2020
commit 1200266713f7b48fb70c154732b10dcfdcc52f89
9 changes: 7 additions & 2 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ jobs:
Python37:
python.version: '3.7'


steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'

- script: |
pip install pytest pytest-cov pytest-mock pytest-timeout pytest-azurepipelines
pip install pytest pytest-cov pytest-mock pytest-timeout pytest-azurepipelines pytest-rerunfailures
pip install -e .
export NREL_API_KEY=$(nrelApiKey)
pytest pvlib --junitxml=junit/test-results.xml --cov=com --cov-report=xml --cov-report=html
displayName: 'Test with pytest'

Expand Down Expand Up @@ -74,6 +76,7 @@ jobs:
displayName: 'List installed dependencies'
- script: |
source activate test_env
export NREL_API_KEY=$(nrelApiKey)
pytest pvlib --junitxml=junit/test-results.xml --cov --cov-report=xml --cov-report=html
displayName: 'pytest'
# - script: |
Expand Down Expand Up @@ -126,6 +129,7 @@ jobs:
displayName: 'List installed dependencies'
- script: |
call activate test_env
set NREL_API_KEY=$(nrelApiKey)
pytest pvlib --junitxml=junit/test-results.xml
displayName: 'pytest'
- task: PublishTestResults@2
Expand Down Expand Up @@ -153,8 +157,9 @@ jobs:
versionSpec: '$(python.version)'

- script: |
pip install pytest pytest-cov pytest-mock pytest-timeout pytest-azurepipelines
pip install pytest pytest-cov pytest-mock pytest-timeout pytest-azurepipelines pytest-rerunfailures
pip install -e .
export NREL_API_KEY=$(nrelApiKey)
pytest pvlib --junitxml=junit/test-results.xml --cov=pvlib --cov-report=xml --cov-report=html
displayName: 'Test with pytest'

Expand Down
1 change: 1 addition & 0 deletions ci/requirements-py35-min.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ dependencies:
- pip:
- numpy==1.12.0
- pandas==0.18.1
- pytest-rerunfailures # conda version is >3.6
1 change: 1 addition & 0 deletions ci/requirements-py35.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ dependencies:
- pip:
- nrel-pysam>=2.0
- pvfactors==1.0.1
- pytest-rerunfailures # conda version is >3.6
1 change: 1 addition & 0 deletions ci/requirements-py36.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ dependencies:
- pytest
- pytest-cov
- pytest-mock
- pytest-rerunfailures
- pytest-timeout
- python=3.6
- pytz
Expand Down
1 change: 1 addition & 0 deletions ci/requirements-py37.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies:
- pytest-cov
- pytest-mock
- pytest-timeout
- pytest-rerunfailures
- python=3.7
- pytz
- requests
Expand Down
3 changes: 3 additions & 0 deletions docs/sphinx/source/whatsnew/v0.7.2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Bug fixes
~~~~~~~~~
* Fix :py:func:`~pvlib.iotools.read_tmy3` parsing when February contains
a leap year (:pull:`866`)
* Implement NREL Developer Network API key for consistent success with API
calls in :py:mod:`pvlib.tests.iotools.test_psm3` (:pull:`873`)

Documentation
~~~~~~~~~~~~~
Expand All @@ -26,3 +28,4 @@ Contributors
~~~~~~~~~~~~
* Mark Mikofski (:ghuser:`mikofski`)
* Cliff Hansen (:ghuser:`cwhanse`)
* Cameron T. Stark (:ghuser:`camerontstark`)
98 changes: 65 additions & 33 deletions pvlib/tests/iotools/test_psm3.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
test iotools for PSM3
"""

import os
from pvlib.iotools import psm3
from conftest import needs_pandas_0_22, DATA_DIR
import numpy as np
import pandas as pd
import pytest
from requests import HTTPError
from io import StringIO
import warnings

TMY_TEST_DATA = DATA_DIR / 'test_psm3_tmy-2017.csv'
YEAR_TEST_DATA = DATA_DIR / 'test_psm3_2017.csv'
Expand All @@ -21,7 +23,26 @@
'Temperature Units', 'Pressure Units', 'Wind Direction Units',
'Wind Speed', 'Surface Albedo Units', 'Version']
PVLIB_EMAIL = 'pvlib-admin@googlegroups.com'
DEMO_KEY = 'DEMO_KEY'


@pytest.fixture(scope="module")
def nrel_api_key():
"""Supplies pvlib-python's NREL Developer Network API key.

Azure Pipelines CI utilizes a secret variable set to NREL_API_KEY
to mitigate failures associated with using the default key of
"DEMO_KEY". A user is capable of using their own key this way if
desired however the default key should suffice for testing purposes.
"""
try:
demo_key = os.environ["NREL_API_KEY"]
except KeyError:
warnings.warn(
"WARNING: NREL API KEY environment variable not set! "
"Using DEMO_KEY instead. Unexpected failures may occur."
)
demo_key = 'DEMO_KEY'
return demo_key

10000
def assert_psm3_equal(header, data, expected):
Expand Down Expand Up @@ -50,47 +71,58 @@ def assert_psm3_equal(header, data, expected):


@needs_pandas_0_22
def test_get_psm3_tmy():
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_get_psm3_tmy(nrel_api_key):
"""test get_psm3 with a TMY"""
header, data = psm3.get_psm3(LATITUDE, LONGITUDE, DEMO_KEY, PVLIB_EMAIL,
names='tmy-2017')
header, data = psm3.get_psm3(LATITUDE, LONGITUDE, nrel_api_key,
PVLIB_EMAIL, names='tmy-2017')
expected = pd.read_csv(TMY_TEST_DATA)
assert_psm3_equal(header, data, expected)
# check errors
with pytest.raises(HTTPError):
# HTTP 403 forbidden because api_key is rejected
psm3.get_psm3(LATITUDE, LONGITUDE, api_key='BAD', email=PVLIB_EMAIL)
with pytest.raises(HTTPError):
# coordinates were not found in the NSRDB
psm3.get_psm3(51, -5, DEMO_KEY, PVLIB_EMAIL)
with pytest.raises(HTTPError):
# names is not one of the available options
psm3.get_psm3(LATITUDE, LONGITUDE, DEMO_KEY, PVLIB_EMAIL, names='bad')


@needs_pandas_0_22
def test_get_psm3_singleyear():
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_get_psm3_singleyear(nrel_api_key):
"""test get_psm3 with a single year"""
header, data = psm3.get_psm3(LATITUDE, LONGITUDE, DEMO_KEY, PVLIB_EMAIL,
names='2017', interval=30)
header, data = psm3.get_psm3(LATITUDE, LONGITUDE, nrel_api_key,
PVLIB_EMAIL, names='2017', interval=30)
expected = pd.read_csv(YEAR_TEST_DATA)
assert_psm3_equal(header, data, expected)
# check leap day
_, data_2012 = psm3.get_psm3(LATITUDE, LONGITUDE, DEMO_KEY, PVLIB_EMAIL,
names='2012', interval=60, leap_day=True)
assert len(data_2012) == (8760+24)
# check errors
with pytest.raises(HTTPError):
# HTTP 403 forbidden because api_key is rejected
psm3.get_psm3(LATITUDE, LONGITUDE, api_key='BAD', email=PVLIB_EMAIL,
names='2017')
with pytest.raises(HTTPError):
# coordinates were not found in the NSRDB
psm3.get_psm3(51, -5, DEMO_KEY, PVLIB_EMAIL, names='2017')
with pytest.raises(HTTPError):
# intervals can only be 30 or 60 minutes
psm3.get_psm3(LATITUDE, LONGITUDE, DEMO_KEY, PVLIB_EMAIL, names='2017',
interval=15)


@needs_pandas_0_22
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_get_psm3_check_leap_day(nrel_api_key):
_, data_2012 = psm3.get_psm3(LATITUDE, LONGITUDE, nrel_api_key,
PVLIB_EMAIL, names="2012", interval=60,
leap_day=True)
assert len(data_2012) == (8760 + 24)


@pytest.mark.parametrize('latitude, longitude, api_key, names, interval',
[(LATITUDE, LONGITUDE, 'BAD', 'tmy-2017', 60),
(51, -5, nrel_api_key, 'tmy-2017', 60),
(LATITUDE, LONGITUDE, nrel_api_key, 'bad', 60),
(LATITUDE, LONGITUDE, nrel_api_key, '2017', 15),
])
@needs_pandas_0_22
@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_get_psm3_tmy_errors(
latitude, longitude, api_key, names, interval
):
"""Test get_psm3() for multiple erroneous input scenarios.

These scenarios include:
* Bad API key -> HTTP 403 forbidden because api_key is rejected
* Bad latitude/longitude -> Coordinates were not found in the NSRDB.
* Bad name -> Name is not one of the available options.
* Bad interval, single year -> Intervals can only be 30 or 60 minutes.
"""
with pytest.raises(HTTPError) as excinfo:
psm3.get_psm3(latitude, longitude, api_key, PVLIB_EMAIL,
names=names, interval=interval)
# ensure the HTTPError caught isn't due to overuse of the API key
assert "OVER_RATE_LIMIT" not in str(excinfo.value)


@pytest.fixture
Expand Down
2 changes: 1 addition & 1 deletion setup.py

Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
'pytz',
'requests']
TESTS_REQUIRE = ['nose', 'pytest', 'pytest-cov', 'pytest-mock',
'pytest-timeout']
'pytest-timeout', 'pytest-rerunfailures']
EXTRAS_REQUIRE = {
'optional': ['ephem', 'cython', 'netcdf4', 'nrel-pysam', 'numba',
'pvfactors', 'scipy', 'siphon', 'tables'],
Expand Down
0