diff --git a/.travis.yml b/.travis.yml index ae4ded7570..d202003b5f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,10 +12,11 @@ cache: matrix: fast_finish: true include: - # TODO add this back in when there is a pytorch 1.2 for python 3.5 - # - env: PYTHON_VERSION="3.5" + - env: PYTHON_VERSION="3.7" - env: PYTHON_VERSION="3.6" + # TODO add this back in when there is a pytorch 1.2 for python 3.5 - env: PYTHON_VERSION="3.5" RUN_FLAKE8="true" SKIP_TESTS="true" + - env: PYTHON_VERSION="2.7" addons: apt: diff --git a/requirements.txt b/requirements.txt index 0de9fc4602..605990a164 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,7 @@ librosa>=0.4.3 scipy # Unit tests with pytest -pytest \ No newline at end of file +pytest + +# Testing only Py3 compat +backports.tempfile diff --git a/test/common_utils.py b/test/common_utils.py index a82c9ee691..a79f413d2b 100644 --- a/test/common_utils.py +++ b/test/common_utils.py @@ -1,6 +1,7 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import os from shutil import copytree -import tempfile +import backports.tempfile as tempfile import torch TEST_DIR_PATH = os.path.dirname(os.path.realpath(__file__)) diff --git a/test/compliance/generate_fbank_data.py b/test/compliance/generate_fbank_data.py index d3ad613bee..6932b99b1f 100644 --- a/test/compliance/generate_fbank_data.py +++ b/test/compliance/generate_fbank_data.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import argparse import logging import os diff --git a/test/compliance/generate_test_stft_data.py b/test/compliance/generate_test_stft_data.py index baa94d0de5..fee1950015 100644 --- a/test/compliance/generate_test_stft_data.py +++ b/test/compliance/generate_test_stft_data.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import argparse import logging import os diff --git a/test/compliance/utils.py b/test/compliance/utils.py index 6f7c7e8cf8..004441efe0 100644 --- a/test/compliance/utils.py +++ b/test/compliance/utils.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import random import torchaudio diff --git a/test/test.py b/test/test.py index a26c379905..1253ea2d07 100644 --- a/test/test.py +++ b/test/test.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import unittest import common_utils import torch diff --git a/test/test_compliance_kaldi.py b/test/test_compliance_kaldi.py index 9e235212df..3289d2e702 100644 --- a/test/test_compliance_kaldi.py +++ b/test/test_compliance_kaldi.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import math import os import common_utils diff --git a/test/test_dataloader.py b/test/test_dataloader.py index f0c2f33442..2ab40dac43 100644 --- a/test/test_dataloader.py +++ b/test/test_dataloader.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import unittest import common_utils import torch diff --git a/test/test_datasets_vctk.py b/test/test_datasets_vctk.py index c205701bb5..4d3477c338 100644 --- a/test/test_datasets_vctk.py +++ b/test/test_datasets_vctk.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import os import torch diff --git a/test/test_functional.py b/test/test_functional.py index f5571b1162..8f4f84942d 100644 --- a/test/test_functional.py +++ b/test/test_functional.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import math import torch @@ -195,15 +196,18 @@ def _num_stft_bins(signal_len, fft_len, hop_length, pad): return (signal_len + 2 * pad - fft_len + hop_length) // hop_length -@pytest.mark.parametrize('rate', [0.5, 1.01, 1.3]) @pytest.mark.parametrize('complex_specgrams', [ torch.randn(1, 2, 1025, 400, 2), torch.randn(1, 1025, 400, 2) ]) +@pytest.mark.parametrize('rate', [0.5, 1.01, 1.3]) @pytest.mark.parametrize('hop_length', [256]) -@unittest.skipIf(not IMPORT_LIBROSA, 'Librosa is not available') def test_phase_vocoder(complex_specgrams, rate, hop_length): + # Using a decorator here causes parametrize to fail on Python 2 + if not IMPORT_LIBROSA: + raise unittest.SkipTest('Librosa is not available') + # Due to cummulative sum, numerical error in using torch.float32 will # result in bottom right values of the stretched sectrogram to not # match with librosa. diff --git a/test/test_jit.py b/test/test_jit.py index b1f13292e6..ac34269280 100644 --- a/test/test_jit.py +++ b/test/test_jit.py @@ -1,4 +1,4 @@ -from __future__ import division +from __future__ import absolute_import, division, print_function, unicode_literals import torch import torchaudio.functional as F import torchaudio.transforms as transforms diff --git a/test/test_kaldi_io.py b/test/test_kaldi_io.py index f4ff557e56..69d7ed7527 100644 --- a/test/test_kaldi_io.py +++ b/test/test_kaldi_io.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import os import torch import torchaudio.kaldi_io as kio diff --git a/test/test_sox_effects.py b/test/test_sox_effects.py index 6ebc6eda4b..4da71d8b7a 100644 --- a/test/test_sox_effects.py +++ b/test/test_sox_effects.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import unittest import common_utils import torch diff --git a/test/test_transforms.py b/test/test_transforms.py index a5a02e9ba5..b17c372f77 100644 --- a/test/test_transforms.py +++ b/test/test_transforms.py @@ -1,4 +1,4 @@ -from __future__ import print_function +from __future__ import absolute_import, division, print_function, unicode_literals import math import os diff --git a/torchaudio/__init__.py b/torchaudio/__init__.py index af25ea7c5e..dd89e45d4f 100644 --- a/torchaudio/__init__.py +++ b/torchaudio/__init__.py @@ -1,4 +1,4 @@ -from __future__ import division, print_function +from __future__ import absolute_import, division, print_function, unicode_literals import os.path import torch diff --git a/torchaudio/_docs.py b/torchaudio/_docs.py index 2b2c3000f6..74cfdfab83 100644 --- a/torchaudio/_docs.py +++ b/torchaudio/_docs.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import torchaudio diff --git a/torchaudio/common_utils.py b/torchaudio/common_utils.py index 2321ad26a6..bf96535de4 100644 --- a/torchaudio/common_utils.py +++ b/torchaudio/common_utils.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import sys PY3 = sys.version_info > (3, 0) diff --git a/torchaudio/compliance/kaldi.py b/torchaudio/compliance/kaldi.py index d0591f4411..c44d72340d 100644 --- a/torchaudio/compliance/kaldi.py +++ b/torchaudio/compliance/kaldi.py @@ -1,4 +1,6 @@ +from __future__ import absolute_import, division, print_function, unicode_literals import math +import fractions import random import torch @@ -600,7 +602,7 @@ def _get_LR_indices_and_weights(orig_freq, new_freq, output_samples_in_unit, win def _lcm(a, b): - return abs(a * b) // math.gcd(a, b) + return abs(a * b) // fractions.gcd(a, b) def _get_num_LR_output_samples(input_num_samp, samp_rate_in, samp_rate_out): @@ -675,7 +677,7 @@ def resample_waveform(waveform, orig_freq, new_freq, lowpass_filter_width=6): assert lowpass_cutoff * 2 <= min_freq - base_freq = math.gcd(int(orig_freq), int(new_freq)) + base_freq = fractions.gcd(int(orig_freq), int(new_freq)) input_samples_in_unit = int(orig_freq) // base_freq output_samples_in_unit = int(new_freq) // base_freq diff --git a/torchaudio/datasets/vctk.py b/torchaudio/datasets/vctk.py index d66c988303..2bfa7124f2 100644 --- a/torchaudio/datasets/vctk.py +++ b/torchaudio/datasets/vctk.py @@ -1,4 +1,4 @@ -from __future__ import print_function +from __future__ import absolute_import, division, print_function, unicode_literals import torch.utils.data as data import os import os.path diff --git a/torchaudio/datasets/yesno.py b/torchaudio/datasets/yesno.py index 8d80b9e14a..09e7c8aabc 100644 --- a/torchaudio/datasets/yesno.py +++ b/torchaudio/datasets/yesno.py @@ -1,4 +1,4 @@ -from __future__ import print_function +from __future__ import absolute_import, division, print_function, unicode_literals import torch.utils.data as data import os import os.path diff --git a/torchaudio/functional.py b/torchaudio/functional.py index bc24c805e9..1704ba5f2d 100644 --- a/torchaudio/functional.py +++ b/torchaudio/functional.py @@ -1,4 +1,4 @@ -from __future__ import division +from __future__ import absolute_import, division, print_function, unicode_literals import math import torch diff --git a/torchaudio/kaldi_io.py b/torchaudio/kaldi_io.py index 50b101db7a..a0520e66d9 100644 --- a/torchaudio/kaldi_io.py +++ b/torchaudio/kaldi_io.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import, division, print_function, unicode_literals # To use this file, the dependency (https://github.com/vesis84/kaldi-io-for-python) # needs to be installed. This is a light wrapper around kaldi_io that returns # torch.Tensors. diff --git a/torchaudio/sox_effects.py b/torchaudio/sox_effects.py index 2c709503eb..0c058ca370 100644 --- a/torchaudio/sox_effects.py +++ b/torchaudio/sox_effects.py @@ -1,4 +1,4 @@ -from __future__ import division, print_function +from __future__ import absolute_import, division, print_function, unicode_literals import torch import _torch_sox diff --git a/torchaudio/transforms.py b/torchaudio/transforms.py index cdd079dccf..7e1872be98 100644 --- a/torchaudio/transforms.py +++ b/torchaudio/transforms.py @@ -1,4 +1,4 @@ -from __future__ import division, print_function +from __future__ import absolute_import, division, print_function, unicode_literals from warnings import warn import math import torch