diff --git a/pandas/_libs/sparse.pyx b/pandas/_libs/sparse.pyx index bbdd5f0d8334c..bb8b0ed14e1d9 100644 --- a/pandas/_libs/sparse.pyx +++ b/pandas/_libs/sparse.pyx @@ -12,8 +12,8 @@ from distutils.version import LooseVersion # numpy versioning _np_version = np.version.short_version -_np_version_under1p10 = LooseVersion(_np_version) < '1.10' -_np_version_under1p11 = LooseVersion(_np_version) < '1.11' +_np_version_under1p10 = LooseVersion(_np_version) < LooseVersion('1.10') +_np_version_under1p11 = LooseVersion(_np_version) < LooseVersion('1.11') np.import_array() np.import_ufunc() diff --git a/pandas/compat/__init__.py b/pandas/compat/__init__.py index 2deb29dabe764..80a2c05d86971 100644 --- a/pandas/compat/__init__.py +++ b/pandas/compat/__init__.py @@ -399,7 +399,7 @@ def raise_with_traceback(exc, traceback=Ellipsis): # dateutil minimum version import dateutil -if LooseVersion(dateutil.__version__) < '2.5': +if LooseVersion(dateutil.__version__) < LooseVersion('2.5'): raise ImportError('dateutil 2.5.0 is the minimum required version') from dateutil import parser as _date_parser parse_date = _date_parser.parse diff --git a/pandas/compat/numpy/__init__.py b/pandas/compat/numpy/__init__.py index 5112957b49875..cb8ad5e3ea46f 100644 --- a/pandas/compat/numpy/__init__.py +++ b/pandas/compat/numpy/__init__.py @@ -9,12 +9,12 @@ # numpy versioning _np_version = np.__version__ _nlv = LooseVersion(_np_version) -_np_version_under1p10 = _nlv < '1.10' -_np_version_under1p11 = _nlv < '1.11' -_np_version_under1p12 = _nlv < '1.12' -_np_version_under1p13 = _nlv < '1.13' -_np_version_under1p14 = _nlv < '1.14' -_np_version_under1p15 = _nlv < '1.15' +_np_version_under1p10 = _nlv < LooseVersion('1.10') +_np_version_under1p11 = _nlv < LooseVersion('1.11') +_np_version_under1p12 = _nlv < LooseVersion('1.12') +_np_version_under1p13 = _nlv < LooseVersion('1.13') +_np_version_under1p14 = _nlv < LooseVersion('1.14') +_np_version_under1p15 = _nlv < LooseVersion('1.15') if _nlv < '1.9': raise ImportError('this version of pandas is incompatible with ' diff --git a/pandas/conftest.py b/pandas/conftest.py index b9d0087b50306..b09119895617c 100644 --- a/pandas/conftest.py +++ b/pandas/conftest.py @@ -70,8 +70,8 @@ def ip(): is_dateutil_le_261 = pytest.mark.skipif( - LooseVersion(dateutil.__version__) > '2.6.1', + LooseVersion(dateutil.__version__) > LooseVersion('2.6.1'), reason="dateutil api change version") is_dateutil_gt_261 = pytest.mark.skipif( - LooseVersion(dateutil.__version__) <= '2.6.1', + LooseVersion(dateutil.__version__) <= LooseVersion('2.6.1'), reason="dateutil stable version") diff --git a/pandas/core/computation/check.py b/pandas/core/computation/check.py index bb8cc74bad3c2..2a9ed0fb9764d 100644 --- a/pandas/core/computation/check.py +++ b/pandas/core/computation/check.py @@ -6,7 +6,7 @@ try: import numexpr as ne - ver = ne.__version__ + ver = LooseVersion(ne.__version__) _NUMEXPR_INSTALLED = ver >= LooseVersion(_MIN_NUMEXPR_VERSION) if not _NUMEXPR_INSTALLED: diff --git a/pandas/core/missing.py b/pandas/core/missing.py index 8a6a870834c83..c3e72d6c31bf5 100644 --- a/pandas/core/missing.py +++ b/pandas/core/missing.py @@ -347,7 +347,7 @@ def _from_derivatives(xi, yi, x, order=None, der=0, extrapolate=False): import scipy from scipy import interpolate - if LooseVersion(scipy.__version__) < '0.18.0': + if LooseVersion(scipy.__version__) < LooseVersion('0.18.0'): try: method = interpolate.piecewise_polynomial_interpolate return method(xi, yi.reshape(-1, 1), x, diff --git a/pandas/io/feather_format.py b/pandas/io/feather_format.py index b2bf4ab7ff7f1..1bc6526214a91 100644 --- a/pandas/io/feather_format.py +++ b/pandas/io/feather_format.py @@ -22,7 +22,7 @@ def _try_import(): "pip install -U feather-format\n") try: - feather.__version__ >= LooseVersion('0.3.1') + LooseVersion(feather.__version__) >= LooseVersion('0.3.1') except AttributeError: raise ImportError("the feather-format library must be >= " "version 0.3.1\n" @@ -106,7 +106,7 @@ def read_feather(path, nthreads=1): feather = _try_import() path = _stringify_path(path) - if feather.__version__ < LooseVersion('0.4.0'): + if LooseVersion(feather.__version__) < LooseVersion('0.4.0'): return feather.read_dataframe(path) return feather.read_dataframe(path, nthreads=nthreads) diff --git a/pandas/io/html.py b/pandas/io/html.py index d0861f1aa4ec6..67a48198adc27 100644 --- a/pandas/io/html.py +++ b/pandas/io/html.py @@ -684,7 +684,7 @@ def _parser_dispatch(flavor): raise ImportError( "BeautifulSoup4 (bs4) not found, please install it") import bs4 - if bs4.__version__ == LooseVersion('4.2.0'): + if LooseVersion(bs4.__version__) == LooseVersion('4.2.0'): raise ValueError("You're using a version" " of BeautifulSoup4 (4.2.0) that has been" " known to cause problems on certain" diff --git a/pandas/io/parquet.py b/pandas/io/parquet.py index 4a13d2c9db944..7827c3ae04d4d 100644 --- a/pandas/io/parquet.py +++ b/pandas/io/parquet.py @@ -50,7 +50,7 @@ def __init__(self): "\nor via pip\n" "pip install -U pyarrow\n") - if LooseVersion(pyarrow.__version__) < '0.4.1': + if LooseVersion(pyarrow.__version__) < LooseVersion('0.4.1'): raise ImportError("pyarrow >= 0.4.1 is required for parquet" "support\n\n" "you can install via conda\n" @@ -58,8 +58,10 @@ def __init__(self): "\nor via pip\n" "pip install -U pyarrow\n") - self._pyarrow_lt_050 = LooseVersion(pyarrow.__version__) < '0.5.0' - self._pyarrow_lt_060 = LooseVersion(pyarrow.__version__) < '0.6.0' + self._pyarrow_lt_050 = (LooseVersion(pyarrow.__version__) < + LooseVersion('0.5.0')) + self._pyarrow_lt_060 = (LooseVersion(pyarrow.__version__) < + LooseVersion('0.6.0')) self.api = pyarrow def write(self, df, path, compression='snappy', @@ -97,7 +99,7 @@ def __init__(self): "\nor via pip\n" "pip install -U fastparquet") - if LooseVersion(fastparquet.__version__) < '0.1.0': + if LooseVersion(fastparquet.__version__) < LooseVersion('0.1.0'): raise ImportError("fastparquet >= 0.1.0 is required for parquet " "support\n\n" "you can install via conda\n" diff --git a/pandas/io/pytables.py b/pandas/io/pytables.py index 2a66aea88f6d9..74cd2ba7dc4d8 100644 --- a/pandas/io/pytables.py +++ b/pandas/io/pytables.py @@ -248,7 +248,7 @@ def _tables(): _table_mod = tables # version requirements - if LooseVersion(tables.__version__) < '3.0.0': + if LooseVersion(tables.__version__) < LooseVersion('3.0.0'): raise ImportError("PyTables version >= 3.0.0 is required") # set the file open policy diff --git a/pandas/io/sql.py b/pandas/io/sql.py index 975ad1e4ff368..26874a57c66f7 100644 --- a/pandas/io/sql.py +++ b/pandas/io/sql.py @@ -67,11 +67,11 @@ def _is_sqlalchemy_connectable(con): _SQLALCHEMY_INSTALLED = True from distutils.version import LooseVersion - ver = LooseVersion(sqlalchemy.__version__) + ver = sqlalchemy.__version__ # For sqlalchemy versions < 0.8.2, the BIGINT type is recognized # for a sqlite engine, which results in a warning when trying to # read/write a DataFrame with int64 values. (GH7433) - if ver < '0.8.2': + if LooseVersion(ver) < LooseVersion('0.8.2'): from sqlalchemy import BigInteger from sqlalchemy.ext.compiler import compiles diff --git a/pandas/plotting/_compat.py b/pandas/plotting/_compat.py index d527bc08e2f08..0cc715eda2e18 100644 --- a/pandas/plotting/_compat.py +++ b/pandas/plotting/_compat.py @@ -8,7 +8,7 @@ def _mpl_le_1_2_1(): try: import matplotlib as mpl - return (str(mpl.__version__) <= LooseVersion('1.2.1') and + return (LooseVersion(mpl.__version__) <= LooseVersion('1.2.1') and str(mpl.__version__)[0] != '0') except ImportError: return False @@ -19,8 +19,9 @@ def _mpl_ge_1_3_1(): import matplotlib # The or v[0] == '0' is because their versioneer is # messed up on dev - return (matplotlib.__version__ >= LooseVersion('1.3.1') or - matplotlib.__version__[0] == '0') + return (LooseVersion(matplotlib.__version__) >= + LooseVersion('1.3.1') or + str(matplotlib.__version__)[0] == '0') except ImportError: return False @@ -28,8 +29,8 @@ def _mpl_ge_1_3_1(): def _mpl_ge_1_4_0(): try: import matplotlib - return (matplotlib.__version__ >= LooseVersion('1.4') or - matplotlib.__version__[0] == '0') + return (LooseVersion(matplotlib.__version__) >= LooseVersion('1.4') or + str(matplotlib.__version__)[0] == '0') except ImportError: return False @@ -37,8 +38,8 @@ def _mpl_ge_1_4_0(): def _mpl_ge_1_5_0(): try: import matplotlib - return (matplotlib.__version__ >= LooseVersion('1.5') or - matplotlib.__version__[0] == '0') + return (LooseVersion(matplotlib.__version__) >= LooseVersion('1.5') or + str(matplotlib.__version__)[0] == '0') except ImportError: return False @@ -46,7 +47,7 @@ def _mpl_ge_1_5_0(): def _mpl_ge_2_0_0(): try: import matplotlib - return matplotlib.__version__ >= LooseVersion('2.0') + return LooseVersion(matplotlib.__version__) >= LooseVersion('2.0') except ImportError: return False @@ -62,7 +63,7 @@ def _mpl_le_2_0_0(): def _mpl_ge_2_0_1(): try: import matplotlib - return matplotlib.__version__ >= LooseVersion('2.0.1') + return LooseVersion(matplotlib.__version__) >= LooseVersion('2.0.1') except ImportError: return False @@ -70,6 +71,6 @@ def _mpl_ge_2_0_1(): def _mpl_ge_2_1_0(): try: import matplotlib - return matplotlib.__version__ >= LooseVersion('2.1') + return LooseVersion(matplotlib.__version__) >= LooseVersion('2.1') except ImportError: return False diff --git a/pandas/tests/computation/test_compat.py b/pandas/tests/computation/test_compat.py index af39ee9815313..c25ef4bf38cab 100644 --- a/pandas/tests/computation/test_compat.py +++ b/pandas/tests/computation/test_compat.py @@ -15,7 +15,7 @@ def test_compat(): try: import numexpr as ne ver = ne.__version__ - if ver < LooseVersion(_MIN_NUMEXPR_VERSION): + if LooseVersion(ver) < LooseVersion(_MIN_NUMEXPR_VERSION): assert not _NUMEXPR_INSTALLED else: assert _NUMEXPR_INSTALLED @@ -37,7 +37,8 @@ def testit(): except ImportError: pytest.skip("no numexpr") else: - if ne.__version__ < LooseVersion(_MIN_NUMEXPR_VERSION): + if (LooseVersion(ne.__version__) < + LooseVersion(_MIN_NUMEXPR_VERSION)): with pytest.raises(ImportError): testit() else: diff --git a/pandas/tests/dtypes/test_inference.py b/pandas/tests/dtypes/test_inference.py index 092bbb36169d4..577f4238c2328 100644 --- a/pandas/tests/dtypes/test_inference.py +++ b/pandas/tests/dtypes/test_inference.py @@ -1186,7 +1186,7 @@ def test_nan_to_nat_conversions(): # numpy < 1.7.0 is wrong from distutils.version import LooseVersion - if LooseVersion(np.__version__) >= '1.7.0': + if LooseVersion(np.__version__) >= LooseVersion('1.7.0'): assert (s[8].value == np.datetime64('NaT').astype(np.int64)) diff --git a/pandas/tests/frame/test_analytics.py b/pandas/tests/frame/test_analytics.py index cfdb18cefee64..8505c397b4a56 100644 --- a/pandas/tests/frame/test_analytics.py +++ b/pandas/tests/frame/test_analytics.py @@ -1742,7 +1742,7 @@ def test_round(self): 'col1': [1.123, 2.123, 3.123], 'col2': [1.2, 2.2, 3.2]}) - if sys.version < LooseVersion('2.7'): + if LooseVersion(sys.version) < LooseVersion('2.7'): # Rounding with decimal is a ValueError in Python < 2.7 with pytest.raises(ValueError): df.round(nan_round_Series) diff --git a/pandas/tests/frame/test_api.py b/pandas/tests/frame/test_api.py index 0b562269ea29d..3d2bee9e01d34 100644 --- a/pandas/tests/frame/test_api.py +++ b/pandas/tests/frame/test_api.py @@ -222,7 +222,7 @@ def test_itertuples(self): tup = next(df.itertuples(name='TestName')) - if sys.version >= LooseVersion('2.7'): + if LooseVersion(sys.version) >= LooseVersion('2.7'): assert tup._fields == ('Index', 'a', 'b') assert (tup.Index, tup.a, tup.b) == tup assert type(tup).__name__ == 'TestName' @@ -231,7 +231,7 @@ def test_itertuples(self): tup2 = next(df.itertuples(name='TestName')) assert tup2 == (0, 1, 4) - if sys.version >= LooseVersion('2.7'): + if LooseVersion(sys.version) >= LooseVersion('2.7'): assert tup2._fields == ('Index', '_1', '_2') df3 = DataFrame({'f' + str(i): [i] for i in range(1024)}) diff --git a/pandas/tests/frame/test_missing.py b/pandas/tests/frame/test_missing.py index d566c92e7738e..7e8869cbdeefb 100644 --- a/pandas/tests/frame/test_missing.py +++ b/pandas/tests/frame/test_missing.py @@ -21,7 +21,8 @@ try: import scipy - _is_scipy_ge_0190 = scipy.__version__ >= LooseVersion('0.19.0') + _is_scipy_ge_0190 = (LooseVersion(scipy.__version__) >= + LooseVersion('0.19.0')) except: _is_scipy_ge_0190 = False @@ -717,7 +718,7 @@ def test_interp_alt_scipy(self): result = df.interpolate(method='pchip') expected.loc[2, 'A'] = 3 - if LooseVersion(scipy.__version__) >= '0.17.0': + if LooseVersion(scipy.__version__) >= LooseVersion('0.17.0'): expected.loc[5, 'A'] = 6.0 else: expected.loc[5, 'A'] = 6.125 diff --git a/pandas/tests/frame/test_rank.py b/pandas/tests/frame/test_rank.py index 58f4d9b770173..02fe0edf95577 100644 --- a/pandas/tests/frame/test_rank.py +++ b/pandas/tests/frame/test_rank.py @@ -212,7 +212,8 @@ def test_rank_methods_frame(self): sprank = sprank.astype(np.float64) expected = DataFrame(sprank, columns=cols) - if LooseVersion(scipy.__version__) >= '0.17.0': + if (LooseVersion(scipy.__version__) >= + LooseVersion('0.17.0')): expected = expected.astype('float64') tm.assert_frame_equal(result, expected) diff --git a/pandas/tests/generic/test_frame.py b/pandas/tests/generic/test_frame.py index ae73664e224cf..90d2427bb3bd7 100644 --- a/pandas/tests/generic/test_frame.py +++ b/pandas/tests/generic/test_frame.py @@ -173,7 +173,8 @@ def test_set_attribute(self): assert_series_equal(df['y'], Series([2, 4, 6], name='y')) @pytest.mark.skipif(not _XARRAY_INSTALLED or _XARRAY_INSTALLED and - LooseVersion(xarray.__version__) < '0.10.0', + LooseVersion(xarray.__version__) < + LooseVersion('0.10.0'), reason='xarray >= 0.10.0 required') @pytest.mark.parametrize( "index", ['FloatIndex', 'IntIndex', diff --git a/pandas/tests/generic/test_series.py b/pandas/tests/generic/test_series.py index 4773ff69e0982..e5c0708e35c51 100644 --- a/pandas/tests/generic/test_series.py +++ b/pandas/tests/generic/test_series.py @@ -173,7 +173,8 @@ def finalize(self, other, method=None, **kwargs): Series.__finalize__ = _finalize @pytest.mark.skipif(not _XARRAY_INSTALLED or _XARRAY_INSTALLED and - LooseVersion(xarray.__version__) < '0.10.0', + LooseVersion(xarray.__version__) < + LooseVersion('0.10.0'), reason='xarray >= 0.10.0 required') @pytest.mark.parametrize( "index", diff --git a/pandas/tests/indexes/datetimes/test_tools.py b/pandas/tests/indexes/datetimes/test_tools.py index d03951458f12a..f307a75952350 100644 --- a/pandas/tests/indexes/datetimes/test_tools.py +++ b/pandas/tests/indexes/datetimes/test_tools.py @@ -1294,7 +1294,7 @@ def test_parsers_dayfirst_yearfirst(self, cache): # 2.5.2 20/12/21 [dayfirst=1, yearfirst=0] -> 2021-12-20 00:00:00 # 2.5.3 20/12/21 [dayfirst=1, yearfirst=0] -> 2021-12-20 00:00:00 - is_lt_253 = dateutil.__version__ < LooseVersion('2.5.3') + is_lt_253 = LooseVersion(dateutil.__version__) < LooseVersion('2.5.3') # str : dayfirst, yearfirst, expected cases = {'10-11-12': [(False, False, diff --git a/pandas/tests/indexes/timedeltas/test_arithmetic.py b/pandas/tests/indexes/timedeltas/test_arithmetic.py index 0b60ca6e8a720..087567354d32d 100644 --- a/pandas/tests/indexes/timedeltas/test_arithmetic.py +++ b/pandas/tests/indexes/timedeltas/test_arithmetic.py @@ -416,14 +416,14 @@ def test_ops_ndarray(self): other = pd.to_timedelta(['1 day']).values expected = pd.to_timedelta(['2 days']).values tm.assert_numpy_array_equal(td + other, expected) - if LooseVersion(np.__version__) >= '1.8': + if LooseVersion(np.__version__) >= LooseVersion('1.8'): tm.assert_numpy_array_equal(other + td, expected) pytest.raises(TypeError, lambda: td + np.array([1])) pytest.raises(TypeError, lambda: np.array([1]) + td) expected = pd.to_timedelta(['0 days']).values tm.assert_numpy_array_equal(td - other, expected) - if LooseVersion(np.__version__) >= '1.8': + if LooseVersion(np.__version__) >= LooseVersion('1.8'): tm.assert_numpy_array_equal(-other + td, expected) pytest.raises(TypeError, lambda: td - np.array([1])) pytest.raises(TypeError, lambda: np.array([1]) - td) @@ -436,7 +436,7 @@ def test_ops_ndarray(self): tm.assert_numpy_array_equal(td / other, np.array([1], dtype=np.float64)) - if LooseVersion(np.__version__) >= '1.8': + if LooseVersion(np.__version__) >= LooseVersion('1.8'): tm.assert_numpy_array_equal(other / td, np.array([1], dtype=np.float64)) @@ -444,12 +444,12 @@ def test_ops_ndarray(self): other = pd.to_datetime(['2000-01-01']).values expected = pd.to_datetime(['2000-01-02']).values tm.assert_numpy_array_equal(td + other, expected) - if LooseVersion(np.__version__) >= '1.8': + if LooseVersion(np.__version__) >= LooseVersion('1.8'): tm.assert_numpy_array_equal(other + td, expected) expected = pd.to_datetime(['1999-12-31']).values tm.assert_numpy_array_equal(-td + other, expected) - if LooseVersion(np.__version__) >= '1.8': + if LooseVersion(np.__version__) >= LooseVersion('1.8'): tm.assert_numpy_array_equal(other - td, expected) def test_ops_series(self): diff --git a/pandas/tests/internals/test_internals.py b/pandas/tests/internals/test_internals.py index a22d0174947e1..4b5cbaeb7308d 100644 --- a/pandas/tests/internals/test_internals.py +++ b/pandas/tests/internals/test_internals.py @@ -25,7 +25,7 @@ from pandas.compat import zip, u # in 3.6.1 a c-api slicing function changed, see src/compat_helper.h -PY361 = sys.version >= LooseVersion('3.6.1') +PY361 = LooseVersion(sys.version) >= LooseVersion('3.6.1') @pytest.fixture diff --git a/pandas/tests/io/formats/test_to_html.py b/pandas/tests/io/formats/test_to_html.py index 082a37a94f75b..b263d368f41f5 100644 --- a/pandas/tests/io/formats/test_to_html.py +++ b/pandas/tests/io/formats/test_to_html.py @@ -16,7 +16,7 @@ div_style = '' try: import IPython - if IPython.__version__ < LooseVersion('3.0.0'): + if LooseVersion(IPython.__version__) < LooseVersion('3.0.0'): div_style = ' style="max-width:1500px;overflow:auto;"' except (ImportError, AttributeError): pass diff --git a/pandas/tests/io/generate_legacy_storage_files.py b/pandas/tests/io/generate_legacy_storage_files.py index 0b60d37d36c08..67f95c828c80e 100755 --- a/pandas/tests/io/generate_legacy_storage_files.py +++ b/pandas/tests/io/generate_legacy_storage_files.py @@ -194,7 +194,7 @@ def create_data(): nat=NaT, tz=Timestamp('2011-01-01', tz='US/Eastern')) - if _loose_version < '0.19.2': + if _loose_version < LooseVersion('0.19.2'): timestamp['freq'] = Timestamp('2011-01-01', offset='D') timestamp['both'] = Timestamp('2011-01-01', tz='Asia/Tokyo', offset='M') @@ -245,10 +245,10 @@ def create_pickle_data(): # Pre-0.14.1 versions generated non-unpicklable mixed-type frames and # panels if their columns/items were non-unique. - if _loose_version < '0.14.1': + if _loose_version < LooseVersion('0.14.1'): del data['frame']['mixed_dup'] del data['panel']['mixed_dup'] - if _loose_version < '0.17.0': + if _loose_version < LooseVersion('0.17.0'): del data['series']['period'] del data['scalars']['period'] return data @@ -260,12 +260,12 @@ def _u(x): def create_msgpack_data(): data = create_data() - if _loose_version < '0.17.0': + if _loose_version < LooseVersion('0.17.0'): del data['frame']['mixed_dup'] del data['panel']['mixed_dup'] del data['frame']['dup'] del data['panel']['dup'] - if _loose_version < '0.18.0': + if _loose_version < LooseVersion('0.18.0'): del data['series']['dt_tz'] del data['frame']['dt_mixed_tzs'] # Not supported diff --git a/pandas/tests/io/json/test_ujson.py b/pandas/tests/io/json/test_ujson.py index a1c0ec3bc1a0a..cd1685f282bd2 100644 --- a/pandas/tests/io/json/test_ujson.py +++ b/pandas/tests/io/json/test_ujson.py @@ -417,7 +417,7 @@ def test_nat(self): def test_npy_nat(self): from distutils.version import LooseVersion - if LooseVersion(np.__version__) < '1.7.0': + if LooseVersion(np.__version__) < LooseVersion('1.7.0'): pytest.skip("numpy version < 1.7.0, is " "{0}".format(np.__version__)) diff --git a/pandas/tests/io/parser/parse_dates.py b/pandas/tests/io/parser/parse_dates.py index 4c0f67fa6876a..7ff2ac9ff1305 100644 --- a/pandas/tests/io/parser/parse_dates.py +++ b/pandas/tests/io/parser/parse_dates.py @@ -270,7 +270,7 @@ def test_yy_format_with_yearfirst(self): # See gh-217 import dateutil - if dateutil.__version__ >= LooseVersion('2.5.0'): + if LooseVersion(dateutil.__version__) >= LooseVersion('2.5.0'): pytest.skip("testing yearfirst=True not-support" "on datetutil < 2.5.0 this works but" "is wrong") diff --git a/pandas/tests/io/test_feather.py b/pandas/tests/io/test_feather.py index 021f3715d472b..e9909400ce429 100644 --- a/pandas/tests/io/test_feather.py +++ b/pandas/tests/io/test_feather.py @@ -61,7 +61,7 @@ def test_basic(self): assert df.dttz.dtype.tz.zone == 'US/Eastern' self.check_round_trip(df) - @pytest.mark.skipif(fv >= '0.4.0', reason='fixed in 0.4.0') + @pytest.mark.skipif(fv >= LooseVersion('0.4.0'), reason='fixed in 0.4.0') def test_strided_data_issues(self): # strided data issuehttps://github.com/wesm/feather/issues/97 @@ -81,7 +81,7 @@ def test_stringify_columns(self): df = pd.DataFrame(np.arange(12).reshape(4, 3)).copy() self.check_error_on_write(df, ValueError) - @pytest.mark.skipif(fv >= '0.4.0', reason='fixed in 0.4.0') + @pytest.mark.skipif(fv >= LooseVersion('0.4.0'), reason='fixed in 0.4.0') def test_unsupported(self): # timedelta @@ -98,7 +98,7 @@ def test_unsupported_other(self): df = pd.DataFrame({'a': pd.period_range('2013', freq='M', periods=3)}) self.check_error_on_write(df, ValueError) - @pytest.mark.skipif(fv < '0.4.0', reason='new in 0.4.0') + @pytest.mark.skipif(fv < LooseVersion('0.4.0'), reason='new in 0.4.0') def test_rw_nthreads(self): df = pd.DataFrame({'A': np.arange(100000)}) diff --git a/pandas/tests/io/test_html.py b/pandas/tests/io/test_html.py index 0b268dcca90e8..fd0c2b9d0218c 100644 --- a/pandas/tests/io/test_html.py +++ b/pandas/tests/io/test_html.py @@ -52,7 +52,7 @@ def _skip_if_none_of(module_names): _skip_if_no(module_names) if module_names == 'bs4': import bs4 - if bs4.__version__ == LooseVersion('4.2.0'): + if LooseVersion(bs4.__version__) == LooseVersion('4.2.0'): pytest.skip("Bad version of bs4: 4.2.0") else: not_found = [module_name for module_name in module_names if not @@ -61,7 +61,7 @@ def _skip_if_none_of(module_names): pytest.skip("{0!r} not found".format(not_found)) if 'bs4' in module_names: import bs4 - if bs4.__version__ == LooseVersion('4.2.0'): + if LooseVersion(bs4.__version__) == LooseVersion('4.2.0'): pytest.skip("Bad version of bs4: 4.2.0") @@ -85,7 +85,7 @@ def assert_framelist_equal(list1, list2, *args, **kwargs): def test_bs4_version_fails(): _skip_if_none_of(('bs4', 'html5lib')) import bs4 - if bs4.__version__ == LooseVersion('4.2.0'): + if LooseVersion(bs4.__version__) == LooseVersion('4.2.0'): tm.assert_raises(AssertionError, read_html, os.path.join(DATA_PATH, "spam.html"), flavor='bs4') diff --git a/pandas/tests/io/test_packers.py b/pandas/tests/io/test_packers.py index 2d1671840ce8f..b9d66426c9dcb 100644 --- a/pandas/tests/io/test_packers.py +++ b/pandas/tests/io/test_packers.py @@ -299,7 +299,7 @@ def test_datetimes(self): # fails under 2.6/win32 (np.datetime64 seems broken) - if LooseVersion(sys.version) < '2.7': + if LooseVersion(sys.version) < LooseVersion('2.7'): pytest.skip('2.6 with np.datetime64 is broken') for i in [datetime.datetime(2013, 1, 1), @@ -864,7 +864,7 @@ def check_min_structure(self, data, version): def compare(self, current_data, all_data, vf, version): # GH12277 encoding default used to be latin-1, now utf-8 - if LooseVersion(version) < '0.18.0': + if LooseVersion(version) < LooseVersion('0.18.0'): data = read_msgpack(vf, encoding='latin-1') else: data = read_msgpack(vf) @@ -895,7 +895,7 @@ def compare(self, current_data, all_data, vf, version): def compare_series_dt_tz(self, result, expected, typ, version): # 8260 # dtype is object < 0.17.0 - if LooseVersion(version) < '0.17.0': + if LooseVersion(version) < LooseVersion('0.17.0'): expected = expected.astype(object) tm.assert_series_equal(result, expected) else: @@ -904,7 +904,7 @@ def compare_series_dt_tz(self, result, expected, typ, version): def compare_frame_dt_mixed_tzs(self, result, expected, typ, version): # 8260 # dtype is object < 0.17.0 - if LooseVersion(version) < '0.17.0': + if LooseVersion(version) < LooseVersion('0.17.0'): expected = expected.astype(object) tm.assert_frame_equal(result, expected) else: diff --git a/pandas/tests/io/test_parquet.py b/pandas/tests/io/test_parquet.py index e7bcff22371b7..3243e7a6017c2 100644 --- a/pandas/tests/io/test_parquet.py +++ b/pandas/tests/io/test_parquet.py @@ -50,7 +50,7 @@ def pa(): def pa_lt_070(): if not _HAVE_PYARROW: pytest.skip("pyarrow is not installed") - if LooseVersion(pyarrow.__version__) >= '0.7.0': + if LooseVersion(pyarrow.__version__) >= LooseVersion('0.7.0'): pytest.skip("pyarrow is >= 0.7.0") return 'pyarrow' @@ -59,7 +59,7 @@ def pa_lt_070(): def pa_ge_070(): if not _HAVE_PYARROW: pytest.skip("pyarrow is not installed") - if LooseVersion(pyarrow.__version__) < '0.7.0': + if LooseVersion(pyarrow.__version__) < LooseVersion('0.7.0'): pytest.skip("pyarrow is < 0.7.0") return 'pyarrow' diff --git a/pandas/tests/io/test_pickle.py b/pandas/tests/io/test_pickle.py index 91c1f19f5caab..c49339f112d6a 100644 --- a/pandas/tests/io/test_pickle.py +++ b/pandas/tests/io/test_pickle.py @@ -94,7 +94,7 @@ def compare(data, vf, version): def compare_sp_series_ts(res, exp, typ, version): # SparseTimeSeries integrated into SparseSeries in 0.12.0 # and deprecated in 0.17.0 - if version and LooseVersion(version) <= "0.12.0": + if version and LooseVersion(version) <= LooseVersion("0.12.0"): tm.assert_sp_series_equal(res, exp, check_series_type=False) else: tm.assert_sp_series_equal(res, exp) @@ -123,7 +123,7 @@ def compare_series_ts(result, expected, typ, version): def compare_series_dt_tz(result, expected, typ, version): # 8260 # dtype is object < 0.17.0 - if LooseVersion(version) < '0.17.0': + if LooseVersion(version) < LooseVersion('0.17.0'): expected = expected.astype(object) tm.assert_series_equal(result, expected) else: @@ -133,10 +133,10 @@ def compare_series_dt_tz(result, expected, typ, version): def compare_series_cat(result, expected, typ, version): # Categorical dtype is added in 0.15.0 # ordered is changed in 0.16.0 - if LooseVersion(version) < '0.15.0': + if LooseVersion(version) < LooseVersion('0.15.0'): tm.assert_series_equal(result, expected, check_dtype=False, check_categorical=False) - elif LooseVersion(version) < '0.16.0': + elif LooseVersion(version) < LooseVersion('0.16.0'): tm.assert_series_equal(result, expected, check_categorical=False) else: tm.assert_series_equal(result, expected) @@ -145,7 +145,7 @@ def compare_series_cat(result, expected, typ, version): def compare_frame_dt_mixed_tzs(result, expected, typ, version): # 8260 # dtype is object < 0.17.0 - if LooseVersion(version) < '0.17.0': + if LooseVersion(version) < LooseVersion('0.17.0'): expected = expected.astype(object) tm.assert_frame_equal(result, expected) else: @@ -155,10 +155,10 @@ def compare_frame_dt_mixed_tzs(result, expected, typ, version): def compare_frame_cat_onecol(result, expected, typ, version): # Categorical dtype is added in 0.15.0 # ordered is changed in 0.16.0 - if LooseVersion(version) < '0.15.0': + if LooseVersion(version) < LooseVersion('0.15.0'): tm.assert_frame_equal(result, expected, check_dtype=False, check_categorical=False) - elif LooseVersion(version) < '0.16.0': + elif LooseVersion(version) < LooseVersion('0.16.0'): tm.assert_frame_equal(result, expected, check_categorical=False) else: tm.assert_frame_equal(result, expected) @@ -177,7 +177,7 @@ def compare_index_period(result, expected, typ, version): def compare_sp_frame_float(result, expected, typ, version): - if LooseVersion(version) <= '0.18.1': + if LooseVersion(version) <= LooseVersion('0.18.1'): tm.assert_sp_frame_equal(result, expected, exact_indices=False, check_dtype=False) else: diff --git a/pandas/tests/io/test_pytables.py b/pandas/tests/io/test_pytables.py index 3fcbf90d12494..f239b7fe7855d 100644 --- a/pandas/tests/io/test_pytables.py +++ b/pandas/tests/io/test_pytables.py @@ -36,8 +36,8 @@ PossibleDataLossError, ClosedFileError) -_default_compressor = ('blosc' if LooseVersion(tables.__version__) >= '2.2' - else 'zlib') +_default_compressor = ('blosc' if LooseVersion(tables.__version__) >= + LooseVersion('2.2') else 'zlib') # testing on windows/py3 seems to fault @@ -4270,7 +4270,7 @@ def test_select_as_multiple(self): selector='df1') @pytest.mark.skipif( - LooseVersion(tables.__version__) < '3.1.0', + LooseVersion(tables.__version__) < LooseVersion('3.1.0'), reason=("tables version does not support fix for nan selection " "bug: GH 4858")) def test_nan_selection_bug_4858(self): diff --git a/pandas/tests/io/test_stata.py b/pandas/tests/io/test_stata.py index b3ead7d9c8333..d0d7f881b37d0 100644 --- a/pandas/tests/io/test_stata.py +++ b/pandas/tests/io/test_stata.py @@ -143,7 +143,7 @@ def test_read_dta1(self, file): tm.assert_frame_equal(parsed, expected) def test_read_dta2(self): - if LooseVersion(sys.version) < '2.7': + if LooseVersion(sys.version) < LooseVersion('2.7'): pytest.skip('datetime interp under 2.6 is faulty') expected = DataFrame.from_records( diff --git a/pandas/tests/plotting/test_boxplot_method.py b/pandas/tests/plotting/test_boxplot_method.py index 1bc49e9e5f96a..7661b46a79061 100644 --- a/pandas/tests/plotting/test_boxplot_method.py +++ b/pandas/tests/plotting/test_boxplot_method.py @@ -26,7 +26,7 @@ def _skip_if_mpl_14_or_dev_boxplot(): # Boxplot failures on 1.4 and 1.4.1 # Don't need try / except since that's done at class level import matplotlib - if str(matplotlib.__version__) >= LooseVersion('1.4'): + if LooseVersion(matplotlib.__version__) >= LooseVersion('1.4'): pytest.skip("Matplotlib Regression in 1.4 and current dev.") diff --git a/pandas/tests/scalar/test_timestamp.py b/pandas/tests/scalar/test_timestamp.py index e23911e8d2003..e5dfbaf12b231 100644 --- a/pandas/tests/scalar/test_timestamp.py +++ b/pandas/tests/scalar/test_timestamp.py @@ -359,7 +359,7 @@ def test_conversion(self): '2014-01-01 00:00:00.000000001']) def test_repr(self, date, freq): # dateutil zone change (only matters for repr) - if dateutil.__version__ >= LooseVersion('2.6.0'): + if LooseVersion(dateutil.__version__) >= LooseVersion('2.6.0'): timezones = ['UTC', 'Asia/Tokyo', 'US/Eastern', 'dateutil/US/Pacific'] else: diff --git a/pandas/tests/series/test_analytics.py b/pandas/tests/series/test_analytics.py index cfc319da1598d..caaa122024cba 100644 --- a/pandas/tests/series/test_analytics.py +++ b/pandas/tests/series/test_analytics.py @@ -757,7 +757,7 @@ def test_corr_rank(self): tm.assert_almost_equal(result, expected) # these methods got rewritten in 0.8 - if scipy.__version__ < LooseVersion('0.9'): + if LooseVersion(scipy.__version__) < LooseVersion('0.9'): pytest.skip("skipping corr rank because of scipy version " "{0}".format(scipy.__version__)) diff --git a/pandas/tests/series/test_missing.py b/pandas/tests/series/test_missing.py index 2dbce45317639..594049d3d3bb9 100644 --- a/pandas/tests/series/test_missing.py +++ b/pandas/tests/series/test_missing.py @@ -24,7 +24,8 @@ try: import scipy - _is_scipy_ge_0190 = scipy.__version__ >= LooseVersion('0.19.0') + _is_scipy_ge_0190 = (LooseVersion(scipy.__version__) >= + LooseVersion('0.19.0')) except: _is_scipy_ge_0190 = False diff --git a/pandas/tests/series/test_rank.py b/pandas/tests/series/test_rank.py index e45acdedbd2a9..69bd8081ce53a 100644 --- a/pandas/tests/series/test_rank.py +++ b/pandas/tests/series/test_rank.py @@ -244,7 +244,7 @@ def test_rank_methods_series(self): sprank = rankdata(vals, m if m != 'first' else 'ordinal') expected = Series(sprank, index=index) - if LooseVersion(scipy.__version__) >= '0.17.0': + if LooseVersion(scipy.__version__) >= LooseVersion('0.17.0'): expected = expected.astype('float64') tm.assert_series_equal(result, expected) diff --git a/pandas/tests/test_categorical.py b/pandas/tests/test_categorical.py index b661bde434814..17f34fdf3604c 100644 --- a/pandas/tests/test_categorical.py +++ b/pandas/tests/test_categorical.py @@ -729,7 +729,7 @@ def f(): # The following work via '__array_priority__ = 1000' # works only on numpy >= 1.7.1 - if LooseVersion(np.__version__) > "1.7.1": + if LooseVersion(np.__version__) > LooseVersion("1.7.1"): pytest.raises(TypeError, lambda: a < cat) pytest.raises(TypeError, lambda: a < cat_rev) diff --git a/pandas/tests/tseries/offsets/test_offsets.py b/pandas/tests/tseries/offsets/test_offsets.py index d6b64896b8a60..84e811301ab4b 100644 --- a/pandas/tests/tseries/offsets/test_offsets.py +++ b/pandas/tests/tseries/offsets/test_offsets.py @@ -3080,7 +3080,7 @@ def test_fallback_plural(self): hrs_pre = utc_offsets['utc_offset_daylight'] hrs_post = utc_offsets['utc_offset_standard'] - if dateutil.__version__ < LooseVersion('2.6.0'): + if LooseVersion(dateutil.__version__) < LooseVersion('2.6.0'): # buggy ambiguous behavior in 2.6.0 # GH 14621 # https://github.com/dateutil/dateutil/issues/321 @@ -3088,7 +3088,7 @@ def test_fallback_plural(self): n=3, tstart=self._make_timestamp(self.ts_pre_fallback, hrs_pre, tz), expected_utc_offset=hrs_post) - elif dateutil.__version__ > LooseVersion('2.6.0'): + elif LooseVersion(dateutil.__version__) > LooseVersion('2.6.0'): # fixed, but skip the test continue diff --git a/pandas/tests/tseries/test_timezones.py b/pandas/tests/tseries/test_timezones.py index 5fd2089d234c1..af26ddb554752 100644 --- a/pandas/tests/tseries/test_timezones.py +++ b/pandas/tests/tseries/test_timezones.py @@ -553,11 +553,11 @@ def f(): assert times[0] == Timestamp('2013-10-26 23:00', tz=tz, freq="H") if str(tz).startswith('dateutil'): - if dateutil.__version__ < LooseVersion('2.6.0'): + if LooseVersion(dateutil.__version__) < LooseVersion('2.6.0'): # see gh-14621 assert times[-1] == Timestamp('2013-10-27 01:00:00+0000', tz=tz, freq="H") - elif dateutil.__version__ > LooseVersion('2.6.0'): + elif LooseVersion(dateutil.__version__) > LooseVersion('2.6.0'): # fixed ambiguous behavior assert times[-1] == Timestamp('2013-10-27 01:00:00+0100', tz=tz, freq="H") @@ -1242,14 +1242,14 @@ def test_ambiguous_compat(self): assert result_pytz.value == result_dateutil.value assert result_pytz.value == 1382835600000000000 - if dateutil.__version__ < LooseVersion('2.6.0'): + if LooseVersion(dateutil.__version__) < LooseVersion('2.6.0'): # dateutil 2.6 buggy w.r.t. ambiguous=0 # see gh-14621 # see https://github.com/dateutil/dateutil/issues/321 assert (result_pytz.to_pydatetime().tzname() == result_dateutil.to_pydatetime().tzname()) assert str(result_pytz) == str(result_dateutil) - elif dateutil.__version__ > LooseVersion('2.6.0'): + elif LooseVersion(dateutil.__version__) > LooseVersion('2.6.0'): # fixed ambiguous behavior assert result_pytz.to_pydatetime().tzname() == 'GMT' assert result_dateutil.to_pydatetime().tzname() == 'BST' @@ -1264,7 +1264,7 @@ def test_ambiguous_compat(self): assert result_pytz.value == 1382832000000000000 # dateutil < 2.6 is buggy w.r.t. ambiguous timezones - if dateutil.__version__ > LooseVersion('2.5.3'): + if LooseVersion(dateutil.__version__) > LooseVersion('2.5.3'): # see gh-14621 assert str(result_pytz) == str(result_dateutil) assert (result_pytz.to_pydatetime().tzname() == diff --git a/pandas/util/testing.py b/pandas/util/testing.py index 9db09f23eb849..60b95b931b993 100644 --- a/pandas/util/testing.py +++ b/pandas/util/testing.py @@ -329,7 +329,7 @@ def _skip_if_mpl_1_5(): import matplotlib as mpl v = mpl.__version__ - if v > LooseVersion('1.4.3') or v[0] == '0': + if LooseVersion(v) > LooseVersion('1.4.3') or str(v)[0] == '0': import pytest pytest.skip("matplotlib 1.5") else: @@ -362,7 +362,7 @@ def _skip_if_no_xarray(): xarray = pytest.importorskip("xarray") v = xarray.__version__ - if v < LooseVersion('0.7.0'): + if LooseVersion(v) < LooseVersion('0.7.0'): import pytest pytest.skip("xarray version is too low: {version}".format(version=v))