From 4943d17c4f2ca4b7bc118fbe224f796e03b8d5f9 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 4 Jan 2024 17:24:01 -0500 Subject: [PATCH 1/7] remove numba version checking code --- pvlib/spa.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/pvlib/spa.py b/pvlib/spa.py index 763145cbc4..4d2602bc3d 100644 --- a/pvlib/spa.py +++ b/pvlib/spa.py @@ -21,23 +21,15 @@ def nocompile(*args, **kwargs): if os.getenv('PVLIB_USE_NUMBA', '0') != '0': try: - from numba import jit, __version__ + from numba import jit except ImportError: warnings.warn('Could not import numba, falling back to numpy ' + 'calculation') jcompile = nocompile USE_NUMBA = False else: - major, minor = __version__.split('.')[:2] - if int(major + minor) >= 17: - # need at least numba >= 0.17.0 - jcompile = jit - USE_NUMBA = True - else: - warnings.warn('Numba version must be >= 0.17.0, falling back to ' + - 'numpy') - jcompile = nocompile - USE_NUMBA = False + jcompile = jit + USE_NUMBA = True else: jcompile = nocompile USE_NUMBA = False From a10ebd1d9eca4916ca304f6a5cebe0b94230bf07 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 4 Jan 2024 17:30:35 -0500 Subject: [PATCH 2/7] set minimum numba in setup.py requirements --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 34b33cff24..28f4ba834b 100755 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ 'requests-mock', 'pytest-timeout', 'pytest-rerunfailures', 'pytest-remotedata', 'packaging'] EXTRAS_REQUIRE = { - 'optional': ['cython', 'ephem', 'nrel-pysam', 'numba', + 'optional': ['cython', 'ephem', 'nrel-pysam', 'numba >= 0.17.0', 'solarfactors', 'statsmodels'], 'doc': ['ipython', 'matplotlib', 'sphinx == 4.5.0', 'pydata-sphinx-theme == 0.8.1', 'sphinx-gallery', From 1aaf2da2ff8325669a48b4c75969ed611a651b85 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 4 Jan 2024 17:42:12 -0500 Subject: [PATCH 3/7] remove same version check code in test_spa.py --- pvlib/tests/test_spa.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/pvlib/tests/test_spa.py b/pvlib/tests/test_spa.py index 00b30f46d2..871f6d4948 100644 --- a/pvlib/tests/test_spa.py +++ b/pvlib/tests/test_spa.py @@ -17,14 +17,7 @@ import unittest import pytest - -try: - from numba import __version__ as numba_version - numba_version_int = int(numba_version.split('.')[0] + - numba_version.split('.')[1]) -except ImportError: - numba_version_int = 0 - +from .conftest import requires_numba times = (pd.date_range('2003-10-17 12:30:30', periods=1, freq='D') .tz_localize('MST')) @@ -390,17 +383,15 @@ def test_julian_day(self): assert_almost_equal(JD, self.spa.julian_day(unixtimes)[0], 6) -@pytest.mark.skipif(numba_version_int < 17, - reason='Numba not installed or version not >= 0.17.0') +@requires_numba class NumbaSpaTest(unittest.TestCase, SpaBase): """Import spa, compiling to numba, and run tests""" @classmethod def setUpClass(self): os.environ['PVLIB_USE_NUMBA'] = '1' - if numba_version_int >= 17: - import pvlib.spa as spa - spa = reload(spa) - self.spa = spa + import pvlib.spa as spa + spa = reload(spa) + self.spa = spa @classmethod def tearDownClass(self): From 54d2b86d13a33ee8f9da5a0588bb0f861b28a58f Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Thu, 4 Jan 2024 17:45:59 -0500 Subject: [PATCH 4/7] linter --- pvlib/tests/test_spa.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pvlib/tests/test_spa.py b/pvlib/tests/test_spa.py index 871f6d4948..c7ebc5f9ae 100644 --- a/pvlib/tests/test_spa.py +++ b/pvlib/tests/test_spa.py @@ -15,10 +15,9 @@ import pandas as pd import unittest -import pytest - from .conftest import requires_numba + times = (pd.date_range('2003-10-17 12:30:30', periods=1, freq='D') .tz_localize('MST')) unixtimes = np.array(times.tz_convert('UTC').view(np.int64)*1.0/10**9) From df450c7e9654854f78f9032cc3836315cb57742c Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Fri, 23 Feb 2024 12:16:01 -0500 Subject: [PATCH 5/7] fix numba version check in `conftest.py` --- pvlib/tests/conftest.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/pvlib/tests/conftest.py b/pvlib/tests/conftest.py index d74dfb35b4..53c998d006 100644 --- a/pvlib/tests/conftest.py +++ b/pvlib/tests/conftest.py @@ -139,20 +139,14 @@ def has_spa_c(): requires_spa_c = pytest.mark.skipif(not has_spa_c(), reason="requires spa_c") -def has_numba(): - try: - import numba - except ImportError: - return False - else: - vers = numba.__version__.split('.') - if int(vers[0] + vers[1]) < 17: - return False - else: - return True +try: + import numba # noqa: F401 + has_numba = True +except ImportError: + has_numba = False -requires_numba = pytest.mark.skipif(not has_numba(), reason="requires numba") +requires_numba = pytest.mark.skipif(not has_numba, reason="requires numba") try: From dfd383b606feea06f9bae9bf46afa6f47c183c62 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Fri, 23 Feb 2024 12:16:24 -0500 Subject: [PATCH 6/7] add `noqa: F401` to other import checks --- pvlib/tests/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pvlib/tests/conftest.py b/pvlib/tests/conftest.py index 53c998d006..d2826dbc15 100644 --- a/pvlib/tests/conftest.py +++ b/pvlib/tests/conftest.py @@ -119,7 +119,7 @@ def assert_frame_equal(left, right, **kwargs): try: - import ephem + import ephem # noqa: F401 has_ephem = True except ImportError: has_ephem = False @@ -129,7 +129,7 @@ def assert_frame_equal(left, right, **kwargs): def has_spa_c(): try: - from pvlib.spa_c_files.spa_py import spa_calc + from pvlib.spa_c_files.spa_py import spa_calc # noqa: F401 except ImportError: return False else: From ef68240eea0fb818305bfa47723e8abf026c1c08 Mon Sep 17 00:00:00 2001 From: Kevin Anderson Date: Tue, 5 Mar 2024 11:15:42 -0500 Subject: [PATCH 7/7] set minimum numba in pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 75970c9f92..6dca329325 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,7 @@ optional = [ 'cython', 'ephem', 'nrel-pysam', - 'numba', + 'numba >= 0.17.0', 'solarfactors', 'statsmodels', ]