diff --git a/.pylintrc b/.pylintrc index b843930..2b7022c 100644 --- a/.pylintrc +++ b/.pylintrc @@ -127,7 +127,7 @@ init-import=no # List of qualified module names which can have objects that can redefine # builtins. -redefining-builtins-modules=six.moves,future.builtins +redefining-builtins-modules=future.builtins [SIMILARITIES] diff --git a/general/scans/.pylintrc b/general/scans/.pylintrc index e351855..cb51bfd 100644 --- a/general/scans/.pylintrc +++ b/general/scans/.pylintrc @@ -123,7 +123,7 @@ init-import=no # List of qualified module names which can have objects that can redefine # builtins. -redefining-builtins-modules=six.moves,future.builtins +redefining-builtins-modules=future.builtins [SIMILARITIES] diff --git a/general/scans/defaults.py b/general/scans/defaults.py index 16dffb0..487852f 100644 --- a/general/scans/defaults.py +++ b/general/scans/defaults.py @@ -12,7 +12,6 @@ from abc import ABCMeta, abstractmethod import os -from six import add_metaclass import matplotlib.pyplot as plt import numpy as np @@ -29,8 +28,7 @@ from .mocks import g -@add_metaclass(ABCMeta) -class Defaults(object): +class Defaults(object, metaclass=ABCMeta): """A defaults object to store the correct functions for this instrument""" SINGLE_FIGURE = False diff --git a/general/scans/fit.py b/general/scans/fit.py index facaacf..3b12bf6 100644 --- a/general/scans/fit.py +++ b/general/scans/fit.py @@ -9,15 +9,13 @@ import warnings import numpy as np from scipy.stats import linregress -from six import add_metaclass from scipy.special import erf # pylint: disable=no-name-in-module # pylint: disable=wrong-import-position from scipy.optimize import curve_fit, OptimizeWarning # noqa: E402 -@add_metaclass(ABCMeta) -class Fit(object): +class Fit(object, metaclass=ABCMeta): """The Fit class combines the common requirements needed for fitting. We need to be able to turn a set of data points into a set of parameters, get the simulated curve from a set of parameters, and @@ -258,8 +256,7 @@ def title(self, center): return "Peak at {}".format(smart_number_format(center)) -@add_metaclass(ABCMeta) -class CurveFit(Fit): +class CurveFit(Fit, metaclass=ABCMeta): """ A class for fitting models based on the scipy curve_fit optimizer """ diff --git a/general/scans/monoid.py b/general/scans/monoid.py index f94e214..0739edd 100644 --- a/general/scans/monoid.py +++ b/general/scans/monoid.py @@ -11,11 +11,9 @@ from abc import ABCMeta, abstractmethod import numpy as np -from six import add_metaclass -@add_metaclass(ABCMeta) -class Monoid(object): +class Monoid(object, metaclass=ABCMeta): """ The Monoid base class enforces the two laws: There must be a zero operation and a combining function (add). diff --git a/general/scans/motion.py b/general/scans/motion.py index 9f09d2d..bb339b0 100644 --- a/general/scans/motion.py +++ b/general/scans/motion.py @@ -15,8 +15,6 @@ except ImportError: from .mocks import g -from six import text_type - class Motion(object): # pylint: disable=too-many-instance-attributes @@ -225,7 +223,7 @@ def get_motion(motion_or_block_name): """ if isinstance(motion_or_block_name, Motion): motion = motion_or_block_name - elif isinstance(motion_or_block_name, (str, text_type)): + elif isinstance(motion_or_block_name, (str, str)): motion = BlockMotion(motion_or_block_name, get_units(motion_or_block_name)) else: raise TypeError("Cannot run scan on axis {}. Try a string or a motion object instead.".format( diff --git a/general/scans/scans.py b/general/scans/scans.py index 6972065..97a298f 100644 --- a/general/scans/scans.py +++ b/general/scans/scans.py @@ -22,8 +22,6 @@ import time import warnings import numpy as np -import six -from six import add_metaclass import matplotlib.pyplot as plt if TYPE_CHECKING: @@ -94,8 +92,7 @@ def get_input(prompt: str): -@add_metaclass(ABCMeta) -class Scan(object): +class Scan(object, metaclass=ABCMeta): """The virtual class that represents all controlled scans. This class should never be instantiated directly, but rather by one of its subclasses.""" @@ -729,7 +726,7 @@ def __init__(self, first, second): self.defaults = self.first.defaults def __iter__(self): - for x, y in six.moves.zip(self.first, self.second): + for x, y in zip(self.first, self.second): yield merge_dicts(x, y) def __repr__(self): diff --git a/nee_scripts/instrument.py b/nee_scripts/instrument.py index 4705911..87eac4e 100644 --- a/nee_scripts/instrument.py +++ b/nee_scripts/instrument.py @@ -13,7 +13,6 @@ import csv from logging import info, warning import os.path -from six import add_metaclass from .genie import gen from .util import user_script @@ -25,9 +24,8 @@ def _get_times(times): raise RuntimeError("No valid time found") -@add_metaclass(ABCMeta) # pylint: disable=too-many-public-methods -class ScanningInstrument(object): +class ScanningInstrument(object, metaclass=ABCMeta): """ The base class for scanning measurement instruments. diff --git a/requirements.txt b/requirements.txt index acb6a3e..dfd0364 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,6 @@ matplotlib pylint flake8 scipy -six sphinx mock parameterized diff --git a/technique/muon/muon_begin_end.py b/technique/muon/muon_begin_end.py index d7b437f..53ddbdd 100644 --- a/technique/muon/muon_begin_end.py +++ b/technique/muon/muon_begin_end.py @@ -1,6 +1,5 @@ from __future__ import print_function from genie_python import genie as g -from six.moves import input import time diff --git a/technique/muon/tests/test_background_plot.py b/technique/muon/tests/test_background_plot.py index c4f2ef2..f03c63d 100644 --- a/technique/muon/tests/test_background_plot.py +++ b/technique/muon/tests/test_background_plot.py @@ -6,12 +6,9 @@ # Imports come after to prevent import of genie python not in simulation import datetime import unittest -import six.moves from technique.muon.background_plot import BackgroundPlot -if six.PY3: - from unittest.mock import patch, mock_open -else: - from mock import patch, mock_open +from unittest.mock import patch, mock_open + THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/technique/muon/tests/test_muon_begin_end.py b/technique/muon/tests/test_muon_begin_end.py index d424611..f6e47ca 100644 --- a/technique/muon/tests/test_muon_begin_end.py +++ b/technique/muon/tests/test_muon_begin_end.py @@ -4,13 +4,9 @@ # Imports come after to prevent import of genie python not in simulation import unittest -import six.moves from technique.muon import muon_begin_end from genie_python import genie as g -if six.PY3: - from unittest.mock import patch, MagicMock -else: - from mock import patch, MagicMock +from unittest.mock import patch, MagicMock class TestRunControl(unittest.TestCase): diff --git a/technique/reflectometry/base.py b/technique/reflectometry/base.py index 847f703..76ef843 100644 --- a/technique/reflectometry/base.py +++ b/technique/reflectometry/base.py @@ -8,7 +8,6 @@ from future.moves import itertools from math import tan, radians, sin -from six.moves import input from genie_python import genie as g import general.utilities.io diff --git a/technique/sans/auto_reduction.py b/technique/sans/auto_reduction.py index 4309aca..466034a 100644 --- a/technique/sans/auto_reduction.py +++ b/technique/sans/auto_reduction.py @@ -3,7 +3,6 @@ from __future__ import print_function from xml.etree import ElementTree as ET from collections import defaultdict -from six.moves import input SCHEMA = "{http://definition.nexusformat.org/schema/3.0}" diff --git a/technique/sans/instrument.py b/technique/sans/instrument.py index 9a746aa..1f7165d 100755 --- a/technique/sans/instrument.py +++ b/technique/sans/instrument.py @@ -13,7 +13,6 @@ import csv from logging import info, warning import os.path -from six import add_metaclass from .genie import gen from .util import user_script @@ -25,9 +24,8 @@ def _get_times(times): raise ValueError("No valid time found") -@add_metaclass(ABCMeta) # pylint: disable=too-many-public-methods -class ScanningInstrument(object): +class ScanningInstrument(object, metaclass=ABCMeta): """ The base class for scanning measurement instruments.