Skip to content

Commit c7d49dd

Browse files
jeffdailyjithunnair-amd
authored andcommitted
Properly import LooseVersion (#996)
Properly import LooseVersion (pytorch#69904) Summary: This fixes regression introduced by pytorch#57040 Somehow importing `distutils` from `setuptool` caused import of `distutils.versions`, which is not a documented dependency and got change with the release of [setuptools-59.6.0](https://github.com/pypa/setuptools/tree/v59.6.0) We should not rely on that, as `import distutils` never re-imports `distutils.version`, which one can see by observing https://github.com/python/cpython/blob/3.9/Lib/distutils/__init__.py or by running: ``` % python3 -c "import distutils;print(distutils.__version__, dir(distutils))" 3.7.5 ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'sys'] % python3 -c "from setuptools import distutils;print(distutils.__version__, dir(distutils))" 3.7.5 ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'archive_util', 'ccompiler', 'cmd', 'config', 'core', 'debug', 'dep_util', 'dir_util', 'dist', 'errors', 'extension', 'fancy_getopt', 'file_util', 'filelist', 'log', 'spawn', 'sys', 'sysconfig', 'util', 'version'] ``` Pull Request resolved: pytorch#69904 Reviewed By: albanD, atalman, janeyx99 Differential Revision: D33094453 Pulled By: malfet fbshipit-source-id: aaf1adb7c6f293c4e376ccff21c64cd6ba625e97
1 parent 8377eef commit c7d49dd

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

test/test_spectral_ops.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
skipCPUIfNoFFT, deviceCountAtLeast, onlyCUDA, OpDTypes, skipIf)
1515
from torch.testing._internal.common_methods_invocations import spectral_funcs, SpectralFuncInfo
1616

17-
from setuptools import distutils
17+
from distutils.version import LooseVersion
1818
from typing import Optional, List
1919

2020

@@ -217,7 +217,7 @@ def get_op_name(op):
217217
@ops([op for op in spectral_funcs if not op.ndimensional])
218218
def test_reference_1d(self, device, dtype, op):
219219
norm_modes = ((None, "forward", "backward", "ortho")
220-
if distutils.version.LooseVersion(np.__version__) >= '1.20.0'
220+
if LooseVersion(np.__version__) >= '1.20.0'
221221
else (None, "ortho"))
222222
test_args = [
223223
*product(
@@ -370,7 +370,7 @@ def test_fft_half_and_bfloat16_errors(self, device, dtype, op):
370370
@ops([op for op in spectral_funcs if op.ndimensional])
371371
def test_reference_nd(self, device, dtype, op):
372372
norm_modes = ((None, "forward", "backward", "ortho")
373-
if distutils.version.LooseVersion(np.__version__) >= '1.20.0'
373+
if LooseVersion(np.__version__) >= '1.20.0'
374374
else (None, "ortho"))
375375

376376
# input_ndim, s, dim
@@ -469,7 +469,7 @@ def test_fftn_invalid(self, device, dtype, op):
469469
@dtypes(torch.double, torch.complex128)
470470
def test_fft2_numpy(self, device, dtype):
471471
norm_modes = ((None, "forward", "backward", "ortho")
472-
if distutils.version.LooseVersion(np.__version__) >= '1.20.0'
472+
if LooseVersion(np.__version__) >= '1.20.0'
473473
else (None, "ortho"))
474474

475475
# input_ndim, s

tools/setup_helpers/cmake.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from subprocess import check_call, check_output, CalledProcessError
99
import sys
1010
import sysconfig
11-
from setuptools import distutils # type: ignore[import]
11+
from distutils.version import LooseVersion
1212
from typing import IO, Any, Dict, List, Optional, Union, cast
1313

1414
from . import which
@@ -120,10 +120,10 @@ def _get_cmake_command() -> str:
120120
return cmake_command
121121
cmake3 = which('cmake3')
122122
cmake = which('cmake')
123-
if cmake3 is not None and CMake._get_version(cmake3) >= distutils.version.LooseVersion("3.10.0"):
123+
if cmake3 is not None and CMake._get_version(cmake3) >= LooseVersion("3.10.0"):
124124
cmake_command = 'cmake3'
125125
return cmake_command
126-
elif cmake is not None and CMake._get_version(cmake) >= distutils.version.LooseVersion("3.10.0"):
126+
elif cmake is not None and CMake._get_version(cmake) >= LooseVersion("3.10.0"):
127127
return cmake_command
128128
else:
129129
raise RuntimeError('no cmake or cmake3 with version >= 3.10.0 found')
@@ -134,7 +134,7 @@ def _get_version(cmd: str) -> Any:
134134

135135
for line in check_output([cmd, '--version']).decode('utf-8').split('\n'):
136136
if 'version' in line:
137-
return distutils.version.LooseVersion(line.strip().split(' ')[2])
137+
return LooseVersion(line.strip().split(' ')[2])
138138
raise RuntimeError('no version found')
139139

140140
def run(self, args: List[str], env: Dict[str, str]) -> None:

torch/testing/_internal/common_cuda.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from torch.testing._internal.common_utils import TEST_NUMBA
77
import inspect
88
import contextlib
9-
from setuptools import distutils
9+
from distutils.version import LooseVersion
1010

1111

1212
TEST_CUDA = torch.cuda.is_available()
@@ -16,7 +16,7 @@
1616
TEST_CUDNN = TEST_CUDA and torch.backends.cudnn.is_acceptable(torch.tensor(1., device=CUDA_DEVICE))
1717
TEST_CUDNN_VERSION = torch.backends.cudnn.version() if TEST_CUDNN else 0
1818

19-
CUDA11OrLater = torch.version.cuda and distutils.version.LooseVersion(torch.version.cuda) >= "11.0"
19+
CUDA11OrLater = torch.version.cuda and LooseVersion(torch.version.cuda) >= "11.0"
2020
CUDA9 = torch.version.cuda and torch.version.cuda.startswith('9.')
2121
SM53OrLater = torch.cuda.is_available() and torch.cuda.get_device_capability() >= (5, 3)
2222
SM60OrLater = torch.cuda.is_available() and torch.cuda.get_device_capability() >= (6, 0)

torch/testing/_internal/common_methods_invocations.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
GRADCHECK_NONDET_TOL, skipIfTBB)
3838
import torch.testing._internal.opinfo_helper as opinfo_helper
3939

40-
from setuptools import distutils
40+
from distutils.version import LooseVersion
4141

4242
if TEST_SCIPY:
4343
import scipy.special
@@ -9355,11 +9355,11 @@ def generate_std_var_kwargs(t: torch.Tensor, **kwargs):
93559355
skips=(
93569356
# Reference: https://github.com/pytorch/pytorch/pull/49155#issuecomment-742664611
93579357
DecorateInfo(unittest.skip("Skipped!"), 'TestUnaryUfuncs', 'test_reference_numerics_extremal',
9358-
active_if=TEST_SCIPY and distutils.version.LooseVersion(scipy.__version__) < "1.4.0"),
9358+
active_if=TEST_SCIPY and LooseVersion(scipy.__version__) < "1.4.0"),
93599359
DecorateInfo(unittest.skip("Skipped!"), 'TestUnaryUfuncs', 'test_reference_numerics_hard',
9360-
active_if=TEST_SCIPY and distutils.version.LooseVersion(scipy.__version__) < "1.4.0"),
9360+
active_if=TEST_SCIPY and LooseVersion(scipy.__version__) < "1.4.0"),
93619361
DecorateInfo(unittest.skip("Skipped!"), 'TestUnaryUfuncs', 'test_reference_numerics_normal',
9362-
active_if=TEST_SCIPY and distutils.version.LooseVersion(scipy.__version__) < "1.4.0"),
9362+
active_if=TEST_SCIPY and LooseVersion(scipy.__version__) < "1.4.0"),
93639363
)),
93649364
UnaryUfuncInfo('lgamma',
93659365
ref=reference_lgamma if TEST_SCIPY else _NOTHING,

0 commit comments

Comments
 (0)