diff --git a/ci/requirements-py35-min.yml b/ci/requirements-py35-min.yml index f79844f160..edfd1cafcc 100644 --- a/ci/requirements-py35-min.yml +++ b/ci/requirements-py35-min.yml @@ -14,6 +14,6 @@ dependencies: - requests - pip: - numpy==1.12.0 - - pandas==0.18.1 + - pandas==0.22.0 - pytest-rerunfailures # conda version is >3.6 - pytest-remotedata # conda package is 0.3.0, needs > 0.3.1 diff --git a/docs/sphinx/source/whatsnew/v0.8.0.rst b/docs/sphinx/source/whatsnew/v0.8.0.rst index 66fb16f878..3406475bb2 100644 --- a/docs/sphinx/source/whatsnew/v0.8.0.rst +++ b/docs/sphinx/source/whatsnew/v0.8.0.rst @@ -57,6 +57,7 @@ Documentation Requirements ~~~~~~~~~~~~ +* Minimum pandas version increased to v0.22.0, released Dec 31, 2017. (:pull:`1003`) Contributors ~~~~~~~~~~~~ diff --git a/pvlib/tests/conftest.py b/pvlib/tests/conftest.py index e88b2b8ae7..ee2f2ae06c 100644 --- a/pvlib/tests/conftest.py +++ b/pvlib/tests/conftest.py @@ -84,14 +84,6 @@ def numpy_1_10(): not numpy_1_10(), reason='requires numpy 1.10 or greater') -def pandas_0_22(): - return parse_version(pd.__version__) >= parse_version('0.22.0') - - -needs_pandas_0_22 = pytest.mark.skipif( - not pandas_0_22(), reason='requires pandas 0.22 or greater') - - def has_spa_c(): try: from pvlib.spa_c_files.spa_py import spa_calc diff --git a/pvlib/tests/iotools/test_crn.py b/pvlib/tests/iotools/test_crn.py index d661acb1ce..465add4cb4 100644 --- a/pvlib/tests/iotools/test_crn.py +++ b/pvlib/tests/iotools/test_crn.py @@ -1,5 +1,5 @@ import pandas as pd -from pandas.util.testing import assert_frame_equal +from pandas.testing import assert_frame_equal import numpy as np from numpy import dtype, nan import pytest diff --git a/pvlib/tests/iotools/test_epw.py b/pvlib/tests/iotools/test_epw.py index 3467408360..ae5d437ce4 100644 --- a/pvlib/tests/iotools/test_epw.py +++ b/pvlib/tests/iotools/test_epw.py @@ -1,4 +1,3 @@ -from pandas.util.testing import network import pytest from pvlib.iotools import epw @@ -11,7 +10,6 @@ def test_read_epw(): epw.read_epw(epw_testfile) -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_read_epw_remote(): diff --git a/pvlib/tests/iotools/test_midc.py b/pvlib/tests/iotools/test_midc.py index 9827ef3d95..66e003b51f 100644 --- a/pvlib/tests/iotools/test_midc.py +++ b/pvlib/tests/iotools/test_midc.py @@ -1,5 +1,4 @@ import pandas as pd -from pandas.util.testing import network import pytest import pytz @@ -64,7 +63,6 @@ def test_read_midc_var_mapping_as_arg(test_mapping): assert 'temp_air' in data.columns -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_read_midc_raw_data_from_nrel(): diff --git a/pvlib/tests/iotools/test_solrad.py b/pvlib/tests/iotools/test_solrad.py index 4bc6223a18..b4a17bfd2f 100644 --- a/pvlib/tests/iotools/test_solrad.py +++ b/pvlib/tests/iotools/test_solrad.py @@ -1,5 +1,5 @@ import pandas as pd -from pandas.util.testing import assert_frame_equal +from pandas.testing import assert_frame_equal import numpy as np from numpy import nan diff --git a/pvlib/tests/iotools/test_srml.py b/pvlib/tests/iotools/test_srml.py index 63c5defc4e..0209c188f7 100644 --- a/pvlib/tests/iotools/test_srml.py +++ b/pvlib/tests/iotools/test_srml.py @@ -1,6 +1,5 @@ from numpy import isnan import pandas as pd -from pandas.util.testing import network import pytest from pvlib.iotools import srml @@ -13,7 +12,6 @@ def test_read_srml(): srml.read_srml(srml_testfile) -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_read_srml_remote(): @@ -66,7 +64,6 @@ def test_map_columns(column, expected): assert srml.map_columns(column) == expected -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_read_srml_month_from_solardat(): @@ -76,7 +73,6 @@ def test_read_srml_month_from_solardat(): assert file_data.equals(requested) -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_15_minute_dt_index(): @@ -90,7 +86,6 @@ def test_15_minute_dt_index(): assert (data.index[3::4].minute == 45).all() -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_hourly_dt_index(): diff --git a/pvlib/tests/iotools/test_surfrad.py b/pvlib/tests/iotools/test_surfrad.py index 7caab9fb41..498604970c 100644 --- a/pvlib/tests/iotools/test_surfrad.py +++ b/pvlib/tests/iotools/test_surfrad.py @@ -1,5 +1,4 @@ import pandas as pd -from pandas.util.testing import network import pytest from pvlib.iotools import surfrad @@ -10,7 +9,6 @@ 'Alamosa_CO/2016/slv16001.dat') -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_read_surfrad_network(): diff --git a/pvlib/tests/iotools/test_tmy.py b/pvlib/tests/iotools/test_tmy.py index bf10e3b830..98971005e3 100644 --- a/pvlib/tests/iotools/test_tmy.py +++ b/pvlib/tests/iotools/test_tmy.py @@ -1,4 +1,3 @@ -from pandas.util.testing import network import numpy as np import pandas as pd import pytest @@ -17,7 +16,6 @@ def test_read_tmy3(): tmy.read_tmy3(TMY3_TESTFILE) -@network @pytest.mark.remote_data @pytest.mark.flaky(reruns=RERUNS, reruns_delay=RERUNS_DELAY) def test_read_tmy3_remote(): diff --git a/pvlib/tests/test_atmosphere.py b/pvlib/tests/test_atmosphere.py index 0bf7434a68..5412389d83 100644 --- a/pvlib/tests/test_atmosphere.py +++ b/pvlib/tests/test_atmosphere.py @@ -4,7 +4,7 @@ from numpy import nan from numpy.testing import assert_allclose import pandas as pd -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal import pytest from pvlib import atmosphere diff --git a/pvlib/tests/test_clearsky.py b/pvlib/tests/test_clearsky.py index 5774e343a0..67b185e56b 100644 --- a/pvlib/tests/test_clearsky.py +++ b/pvlib/tests/test_clearsky.py @@ -7,7 +7,7 @@ import pytest from numpy.testing import assert_allclose -from pandas.util.testing import assert_frame_equal, assert_series_equal +from pandas.testing import assert_frame_equal, assert_series_equal from pvlib.location import Location from pvlib import clearsky diff --git a/pvlib/tests/test_iam.py b/pvlib/tests/test_iam.py index 7fc204bc95..9b886762b2 100644 --- a/pvlib/tests/test_iam.py +++ b/pvlib/tests/test_iam.py @@ -9,7 +9,7 @@ import pandas as pd import pytest -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal from numpy.testing import assert_allclose from pvlib import iam as _iam diff --git a/pvlib/tests/test_inverter.py b/pvlib/tests/test_inverter.py index 4f99f0a616..0816683f3a 100644 --- a/pvlib/tests/test_inverter.py +++ b/pvlib/tests/test_inverter.py @@ -3,7 +3,7 @@ import numpy as np import pandas as pd -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal from numpy.testing import assert_allclose from pvlib import inverter diff --git a/pvlib/tests/test_irradiance.py b/pvlib/tests/test_irradiance.py index 221b99083f..b39b4543de 100644 --- a/pvlib/tests/test_irradiance.py +++ b/pvlib/tests/test_irradiance.py @@ -9,12 +9,11 @@ import pytest from numpy.testing import assert_almost_equal, assert_allclose -from pandas.util.testing import assert_frame_equal, assert_series_equal +from pandas.testing import assert_frame_equal, assert_series_equal from pvlib import irradiance -from conftest import (needs_numpy_1_10, pandas_0_22, - requires_ephem, requires_numba) +from conftest import (needs_numpy_1_10, requires_ephem, requires_numba) # fixtures create realistic test input data @@ -237,11 +236,8 @@ def test_perez_components(irrad_data, ephem_data, dni_et, relative_airmass): columns=['sky_diffuse', 'isotropic', 'circumsolar', 'horizon'], index=irrad_data.index ) - if pandas_0_22(): - expected_for_sum = expected['sky_diffuse'].copy() - expected_for_sum.iloc[2] = 0 - else: - expected_for_sum = expected['sky_diffuse'] + expected_for_sum = expected['sky_diffuse'].copy() + expected_for_sum.iloc[2] = 0 sum_components = out.iloc[:, 1:].sum(axis=1) sum_components.name = 'sky_diffuse' diff --git a/pvlib/tests/test_location.py b/pvlib/tests/test_location.py index c3c3959985..0694035df0 100644 --- a/pvlib/tests/test_location.py +++ b/pvlib/tests/test_location.py @@ -4,7 +4,7 @@ import numpy as np from numpy import nan import pandas as pd -from pandas.util.testing import assert_frame_equal, assert_index_equal +from pandas.testing import assert_frame_equal, assert_index_equal import pytest diff --git a/pvlib/tests/test_modelchain.py b/pvlib/tests/test_modelchain.py index 1ebe806a5b..5fe7367b28 100644 --- a/pvlib/tests/test_modelchain.py +++ b/pvlib/tests/test_modelchain.py @@ -10,7 +10,7 @@ from pvlib.location import Location from pvlib._deprecation import pvlibDeprecationWarning -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal import pytest from conftest import fail_on_pvlib_version, requires_scipy, requires_tables diff --git a/pvlib/tests/test_pvsystem.py b/pvlib/tests/test_pvsystem.py index 81aca6cf9e..fb97d106ad 100644 --- a/pvlib/tests/test_pvsystem.py +++ b/pvlib/tests/test_pvsystem.py @@ -5,7 +5,7 @@ import pandas as pd import pytest -from pandas.util.testing import assert_series_equal, assert_frame_equal +from pandas.testing import assert_series_equal, assert_frame_equal from numpy.testing import assert_allclose from pvlib import inverter, pvsystem diff --git a/pvlib/tests/test_snow.py b/pvlib/tests/test_snow.py index c5ba88a467..e988f4a191 100644 --- a/pvlib/tests/test_snow.py +++ b/pvlib/tests/test_snow.py @@ -1,7 +1,7 @@ import numpy as np import pandas as pd -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal from pvlib import snow from pvlib.tools import sind diff --git a/pvlib/tests/test_soiling.py b/pvlib/tests/test_soiling.py index ac15053adf..8ca5a41618 100644 --- a/pvlib/tests/test_soiling.py +++ b/pvlib/tests/test_soiling.py @@ -4,11 +4,10 @@ import datetime import numpy as np import pandas as pd -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal from pvlib.soiling import hsu, kimber from pvlib.iotools import read_tmy3 -from conftest import ( - requires_scipy, needs_pandas_0_22, DATA_DIR) +from conftest import requires_scipy, DATA_DIR import pytest @@ -66,7 +65,6 @@ def rainfall_input(): @requires_scipy -@needs_pandas_0_22 def test_hsu_no_cleaning(rainfall_input, expected_output): """Test Soiling HSU function""" @@ -84,7 +82,6 @@ def test_hsu_no_cleaning(rainfall_input, expected_output): @requires_scipy -@needs_pandas_0_22 def test_hsu(rainfall_input, expected_output_2): """Test Soiling HSU function with cleanings""" @@ -103,7 +100,6 @@ def test_hsu(rainfall_input, expected_output_2): @requires_scipy -@needs_pandas_0_22 def test_hsu_defaults(rainfall_input, expected_output_1): """ Test Soiling HSU function with default deposition velocity and default rain @@ -129,7 +125,6 @@ def expected_kimber_nowash(): parse_dates=True, index_col='timestamp') -@needs_pandas_0_22 def test_kimber_nowash(greensboro_rain, expected_kimber_nowash): """Test Kimber soiling model with no manual washes""" # Greensboro typical expected annual rainfall is 8345mm @@ -147,7 +142,6 @@ def expected_kimber_manwash(): parse_dates=True, index_col='timestamp') -@needs_pandas_0_22 def test_kimber_manwash(greensboro_rain, expected_kimber_manwash): """Test Kimber soiling model with a manual wash""" # a manual wash date @@ -171,7 +165,6 @@ def expected_kimber_norain(): return np.where(norain > max_loss_rate, max_loss_rate, norain) -@needs_pandas_0_22 def test_kimber_norain(greensboro_rain, expected_kimber_norain): """Test Kimber soiling model with no rain""" # a year with no rain @@ -193,7 +186,6 @@ def expected_kimber_initial_soil(): return np.where(norain > max_loss_rate, max_loss_rate, norain) -@needs_pandas_0_22 def test_kimber_initial_soil(greensboro_rain, expected_kimber_initial_soil): """Test Kimber soiling model with initial soiling""" # a year with no rain diff --git a/pvlib/tests/test_solarposition.py b/pvlib/tests/test_solarposition.py index 026e28e55c..187c4851d3 100644 --- a/pvlib/tests/test_solarposition.py +++ b/pvlib/tests/test_solarposition.py @@ -5,7 +5,7 @@ import numpy as np import pandas as pd -from pandas.util.testing import assert_frame_equal, assert_series_equal +from pandas.testing import assert_frame_equal, assert_series_equal from numpy.testing import assert_allclose import pytest diff --git a/pvlib/tests/test_temperature.py b/pvlib/tests/test_temperature.py index 417e24e5eb..2015cdba58 100644 --- a/pvlib/tests/test_temperature.py +++ b/pvlib/tests/test_temperature.py @@ -2,7 +2,7 @@ import numpy as np import pytest -from pandas.util.testing import assert_series_equal +from pandas.testing import assert_series_equal from numpy.testing import assert_allclose from pvlib import temperature diff --git a/pvlib/tests/test_tracking.py b/pvlib/tests/test_tracking.py index 983d8ae639..c229ea7422 100644 --- a/pvlib/tests/test_tracking.py +++ b/pvlib/tests/test_tracking.py @@ -3,7 +3,7 @@ import pandas as pd import pytest -from pandas.util.testing import assert_frame_equal +from pandas.testing import assert_frame_equal from numpy.testing import assert_allclose from pvlib.location import Location diff --git a/setup.py b/setup.py index 2ec97ce506..dcde1e1712 100755 --- a/setup.py +++ b/setup.py @@ -38,7 +38,7 @@ URL = 'https://github.com/pvlib/pvlib-python' INSTALL_REQUIRES = ['numpy >= 1.12.0', - 'pandas >= 0.18.1', + 'pandas >= 0.22.0', 'pytz', 'requests'] TESTS_REQUIRE = ['nose', 'pytest', 'pytest-cov', 'pytest-mock',