From 3543a2ba92a3935769aee8b35873ff5ffe81fbe9 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Tue, 6 Apr 2021 16:23:55 -0500 Subject: [PATCH] Optimize imports --- benchmark/benchmark.py | 14 +++++--------- miplearn/__init__.py | 4 ++-- miplearn/benchmark.py | 2 +- miplearn/classifiers/adaptive.py | 5 ++--- miplearn/classifiers/cv.py | 2 +- miplearn/components/component.py | 2 +- miplearn/components/objective.py | 2 +- miplearn/components/primal.py | 2 +- miplearn/instance.py | 2 +- miplearn/log.py | 2 +- miplearn/solvers/internal.py | 2 +- miplearn/types.py | 1 + tests/classifiers/test_cv.py | 2 +- tests/components/steps/test_drop_redundant.py | 2 +- tests/components/test_objective.py | 3 +-- tests/components/test_primal.py | 3 +-- tests/components/test_static_lazy.py | 12 ++++++------ tests/solvers/test_learning_solver.py | 6 +++--- tests/test_benchmark.py | 4 ++-- 19 files changed, 33 insertions(+), 39 deletions(-) diff --git a/benchmark/benchmark.py b/benchmark/benchmark.py index daf809b..3d1f05a 100755 --- a/benchmark/benchmark.py +++ b/benchmark/benchmark.py @@ -19,21 +19,17 @@ Options: --test-time-limit= Solver time limit during test in seconds [default: 900] --solver-threads= Number of threads the solver is allowed to use [default: 4] """ +import glob import importlib import logging -import pathlib -import pickle -import sys import os -import gzip -import glob - -from docopt import docopt -from numpy import median from pathlib import Path -import pandas as pd + import matplotlib.pyplot as plt +import pandas as pd import seaborn as sns +from docopt import docopt +from numpy import median from miplearn import ( LearningSolver, diff --git a/miplearn/__init__.py b/miplearn/__init__.py index 999d3d1..41ffdfe 100644 --- a/miplearn/__init__.py +++ b/miplearn/__init__.py @@ -7,18 +7,18 @@ from .classifiers import ( Classifier, Regressor, ) +from .classifiers.adaptive import AdaptiveClassifier from .classifiers.sklearn import ( ScikitLearnRegressor, ScikitLearnClassifier, ) -from .classifiers.adaptive import AdaptiveClassifier from .classifiers.threshold import MinPrecisionThreshold from .components.component import Component from .components.dynamic_lazy import DynamicLazyConstraintsComponent from .components.dynamic_user_cuts import UserCutsComponent -from .components.static_lazy import StaticLazyConstraintsComponent from .components.objective import ObjectiveValueComponent from .components.primal import PrimalSolutionComponent +from .components.static_lazy import StaticLazyConstraintsComponent from .components.steps.convert_tight import ConvertTightIneqsIntoEqsStep from .components.steps.drop_redundant import DropRedundantInequalitiesStep from .components.steps.relax_integrality import RelaxIntegralityStep diff --git a/miplearn/benchmark.py b/miplearn/benchmark.py index c53591e..ccb9426 100644 --- a/miplearn/benchmark.py +++ b/miplearn/benchmark.py @@ -4,7 +4,7 @@ import logging import os -from typing import Dict, Union, List +from typing import Dict, List import pandas as pd diff --git a/miplearn/classifiers/adaptive.py b/miplearn/classifiers/adaptive.py index e4914ad..eef4507 100644 --- a/miplearn/classifiers/adaptive.py +++ b/miplearn/classifiers/adaptive.py @@ -3,8 +3,7 @@ # Released under the modified BSD license. See COPYING.md for more details. import logging -from copy import deepcopy -from typing import Dict, Callable, Optional +from typing import Dict, Optional import numpy as np from sklearn.linear_model import LogisticRegression @@ -14,8 +13,8 @@ from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from miplearn.classifiers import Classifier -from miplearn.classifiers.sklearn import ScikitLearnClassifier from miplearn.classifiers.counting import CountingClassifier +from miplearn.classifiers.sklearn import ScikitLearnClassifier logger = logging.getLogger(__name__) diff --git a/miplearn/classifiers/cv.py b/miplearn/classifiers/cv.py index 20c19e2..aa14bc8 100644 --- a/miplearn/classifiers/cv.py +++ b/miplearn/classifiers/cv.py @@ -3,7 +3,7 @@ # Released under the modified BSD license. See COPYING.md for more details. import logging -from typing import Optional, Callable, List +from typing import Optional, List import numpy as np from sklearn.dummy import DummyClassifier diff --git a/miplearn/components/component.py b/miplearn/components/component.py index 1f8f917..a2eec63 100644 --- a/miplearn/components/component.py +++ b/miplearn/components/component.py @@ -6,9 +6,9 @@ from typing import Any, List, TYPE_CHECKING, Tuple, Dict, Hashable import numpy as np +from miplearn.features import TrainingSample, Features from miplearn.instance import Instance from miplearn.types import LearningSolveStats -from miplearn.features import TrainingSample, Features if TYPE_CHECKING: from miplearn.solvers.learning import LearningSolver diff --git a/miplearn/components/objective.py b/miplearn/components/objective.py index 52d4254..06be3da 100644 --- a/miplearn/components/objective.py +++ b/miplearn/components/objective.py @@ -11,9 +11,9 @@ from sklearn.linear_model import LinearRegression from miplearn.classifiers import Regressor from miplearn.classifiers.sklearn import ScikitLearnRegressor from miplearn.components.component import Component +from miplearn.features import TrainingSample, Features from miplearn.instance import Instance from miplearn.types import LearningSolveStats -from miplearn.features import TrainingSample, Features if TYPE_CHECKING: from miplearn.solvers.learning import LearningSolver diff --git a/miplearn/components/primal.py b/miplearn/components/primal.py index 1388527..49f56fc 100644 --- a/miplearn/components/primal.py +++ b/miplearn/components/primal.py @@ -20,12 +20,12 @@ from miplearn.classifiers.adaptive import AdaptiveClassifier from miplearn.classifiers.threshold import MinPrecisionThreshold, Threshold from miplearn.components import classifier_evaluation_dict from miplearn.components.component import Component +from miplearn.features import TrainingSample, Features from miplearn.instance import Instance from miplearn.types import ( Solution, LearningSolveStats, ) -from miplearn.features import TrainingSample, Features logger = logging.getLogger(__name__) diff --git a/miplearn/instance.py b/miplearn/instance.py index 99792a9..48a71ba 100644 --- a/miplearn/instance.py +++ b/miplearn/instance.py @@ -9,8 +9,8 @@ import pickle from abc import ABC, abstractmethod from typing import Any, List, Optional, Hashable, IO, cast -from miplearn.types import VarIndex from miplearn.features import TrainingSample, Features +from miplearn.types import VarIndex logger = logging.getLogger(__name__) diff --git a/miplearn/log.py b/miplearn/log.py index a590b97..6b3da48 100644 --- a/miplearn/log.py +++ b/miplearn/log.py @@ -5,8 +5,8 @@ import logging import sys import time -import warnings import traceback +import warnings _formatwarning = warnings.formatwarning diff --git a/miplearn/solvers/internal.py b/miplearn/solvers/internal.py index 7a471a2..bd73df7 100644 --- a/miplearn/solvers/internal.py +++ b/miplearn/solvers/internal.py @@ -4,7 +4,7 @@ import logging from abc import ABC, abstractmethod -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional from miplearn.instance import Instance from miplearn.types import ( diff --git a/miplearn/types.py b/miplearn/types.py index d6ea1f2..d9f8090 100644 --- a/miplearn/types.py +++ b/miplearn/types.py @@ -7,6 +7,7 @@ from typing import Optional, Dict, Callable, Any, Union, Tuple, TYPE_CHECKING from mypy_extensions import TypedDict if TYPE_CHECKING: + # noinspection PyUnresolvedReferences from miplearn.solvers.learning import InternalSolver VarIndex = Union[str, int, Tuple[Union[str, int]]] diff --git a/tests/classifiers/test_cv.py b/tests/classifiers/test_cv.py index 423e5d9..5386fe3 100644 --- a/tests/classifiers/test_cv.py +++ b/tests/classifiers/test_cv.py @@ -6,8 +6,8 @@ import numpy as np from numpy.linalg import norm from sklearn.svm import SVC -from miplearn.classifiers.sklearn import ScikitLearnClassifier from miplearn.classifiers.cv import CrossValidatedClassifier +from miplearn.classifiers.sklearn import ScikitLearnClassifier from tests.classifiers import _build_circle_training_data E = 0.1 diff --git a/tests/components/steps/test_drop_redundant.py b/tests/components/steps/test_drop_redundant.py index 3273790..74bb7ea 100644 --- a/tests/components/steps/test_drop_redundant.py +++ b/tests/components/steps/test_drop_redundant.py @@ -9,11 +9,11 @@ import numpy as np from miplearn.classifiers import Classifier from miplearn.components.steps.drop_redundant import DropRedundantInequalitiesStep from miplearn.components.steps.relax_integrality import RelaxIntegralityStep +from miplearn.features import TrainingSample, Features from miplearn.instance import Instance from miplearn.solvers.gurobi import GurobiSolver from miplearn.solvers.internal import InternalSolver from miplearn.solvers.learning import LearningSolver -from miplearn.features import TrainingSample, Features from tests.fixtures.infeasible import get_infeasible_instance from tests.fixtures.redundant import get_instance_with_redundancy diff --git a/tests/components/test_objective.py b/tests/components/test_objective.py index 1700017..07106bf 100644 --- a/tests/components/test_objective.py +++ b/tests/components/test_objective.py @@ -4,6 +4,7 @@ from typing import Hashable, Dict from unittest.mock import Mock +import numpy as np import pytest from numpy.testing import assert_array_equal @@ -15,8 +16,6 @@ from miplearn.solvers.learning import LearningSolver from miplearn.solvers.pyomo.gurobi import GurobiPyomoSolver from tests.fixtures.knapsack import get_knapsack_instance -import numpy as np - @pytest.fixture def instance(features: Features) -> Instance: diff --git a/tests/components/test_primal.py b/tests/components/test_primal.py index b7a07bf..a1dbe94 100644 --- a/tests/components/test_primal.py +++ b/tests/components/test_primal.py @@ -1,7 +1,6 @@ # MIPLearn: Extensible Framework for Learning-Enhanced Mixed-Integer Optimization # Copyright (C) 2020-2021, UChicago Argonne, LLC. All rights reserved. # Released under the modified BSD license. See COPYING.md for more details. -from typing import Dict from unittest.mock import Mock import numpy as np @@ -12,9 +11,9 @@ from miplearn.classifiers import Classifier from miplearn.classifiers.threshold import Threshold from miplearn.components import classifier_evaluation_dict from miplearn.components.primal import PrimalSolutionComponent +from miplearn.features import TrainingSample, VariableFeatures, Features from miplearn.instance import Instance from miplearn.problems.tsp import TravelingSalesmanGenerator -from miplearn.features import TrainingSample, VariableFeatures, Features from miplearn.solvers.learning import LearningSolver diff --git a/tests/components/test_static_lazy.py b/tests/components/test_static_lazy.py index f9f19d9..fbb8045 100644 --- a/tests/components/test_static_lazy.py +++ b/tests/components/test_static_lazy.py @@ -11,18 +11,18 @@ from numpy.testing import assert_array_equal from miplearn.classifiers import Classifier from miplearn.classifiers.threshold import Threshold, MinProbabilityThreshold from miplearn.components.static_lazy import StaticLazyConstraintsComponent -from miplearn.instance import Instance -from miplearn.solvers.internal import InternalSolver -from miplearn.solvers.learning import LearningSolver -from miplearn.types import ( - LearningSolveStats, -) from miplearn.features import ( TrainingSample, InstanceFeatures, ConstraintFeatures, Features, ) +from miplearn.instance import Instance +from miplearn.solvers.internal import InternalSolver +from miplearn.solvers.learning import LearningSolver +from miplearn.types import ( + LearningSolveStats, +) @pytest.fixture diff --git a/tests/solvers/test_learning_solver.py b/tests/solvers/test_learning_solver.py index 9a4e669..0c8a2a7 100644 --- a/tests/solvers/test_learning_solver.py +++ b/tests/solvers/test_learning_solver.py @@ -3,10 +3,10 @@ # Released under the modified BSD license. See COPYING.md for more details. import logging -import dill -import pickle -import tempfile import os +import tempfile + +import dill from miplearn.instance import PickleGzInstance, write_pickle_gz, read_pickle_gz from miplearn.solvers.gurobi import GurobiSolver diff --git a/tests/test_benchmark.py b/tests/test_benchmark.py index a09b897..392465d 100644 --- a/tests/test_benchmark.py +++ b/tests/test_benchmark.py @@ -4,10 +4,10 @@ import os.path -from miplearn.benchmark import BenchmarkRunner -from miplearn.problems.stab import MaxWeightStableSetGenerator from scipy.stats import randint +from miplearn.benchmark import BenchmarkRunner +from miplearn.problems.stab import MaxWeightStableSetGenerator from miplearn.solvers.learning import LearningSolver