diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 0000000..5ed9952 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,6 @@ +[settings] +lines_between_types=1 +known_numpy=numpy,scipy +known_torch=torch,torchvision +sections=FUTURE,STDLIB,NUMPY,TORCH,THIRDPARTY,FIRSTPARTY,LOCALFOLDER +known_third_party=pytest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6c9de00..5f8e177 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,3 +4,9 @@ repos: hooks: - id: flake8 additional_dependencies: ["flake8-bugbear==20.1.4", "flake8-comprehensions==3.2.2"] + +- repo: https://github.com/timothycrosley/isort + rev: 4.3.21 # pick the isort version you'd like to use from https://github.com/timothycrosley/isort/releases + hooks: + - id: isort + exclude: ^docs/* diff --git a/bootstrap/compare.py b/bootstrap/compare.py index 51f0ab1..ef256fa 100644 --- a/bootstrap/compare.py +++ b/bootstrap/compare.py @@ -1,7 +1,10 @@ -import json -import numpy as np import argparse +import json + from os import path as osp + +import numpy as np + from tabulate import tabulate diff --git a/bootstrap/datasets/dataset.py b/bootstrap/datasets/dataset.py index 7a7a18d..e0360f9 100644 --- a/bootstrap/datasets/dataset.py +++ b/bootstrap/datasets/dataset.py @@ -1,6 +1,9 @@ -import torch.utils.data as data import itertools + import numpy as np + +import torch.utils.data as data + from . import transforms as bootstrap_tf diff --git a/bootstrap/datasets/factory.py b/bootstrap/datasets/factory.py index de5e46d..3b6f2c4 100755 --- a/bootstrap/datasets/factory.py +++ b/bootstrap/datasets/factory.py @@ -1,7 +1,7 @@ import importlib -from ..lib.options import Options from ..lib.logger import Logger +from ..lib.options import Options def factory(engine=None): diff --git a/bootstrap/datasets/transforms.py b/bootstrap/datasets/transforms.py index 1c7fe41..eccae2e 100755 --- a/bootstrap/datasets/transforms.py +++ b/bootstrap/datasets/transforms.py @@ -1,5 +1,7 @@ import collections + import torch + from torch.autograd import Variable diff --git a/bootstrap/engines/engine.py b/bootstrap/engines/engine.py index de37236..359bfb2 100755 --- a/bootstrap/engines/engine.py +++ b/bootstrap/engines/engine.py @@ -1,13 +1,16 @@ -import os -import math -import time -import torch import datetime +import math +import os import threading +import time + import numpy as np + +import torch + from ..lib import utils -from ..lib.options import Options from ..lib.logger import Logger +from ..lib.options import Options class Engine(object): diff --git a/bootstrap/engines/factory.py b/bootstrap/engines/factory.py index 6b15ee1..3161e29 100644 --- a/bootstrap/engines/factory.py +++ b/bootstrap/engines/factory.py @@ -1,6 +1,7 @@ import importlib -from ..lib.options import Options + from ..lib.logger import Logger +from ..lib.options import Options from .engine import Engine from .logger import LoggerEngine diff --git a/bootstrap/lib/logger.py b/bootstrap/lib/logger.py index 7b4e42b..58757ec 100755 --- a/bootstrap/lib/logger.py +++ b/bootstrap/lib/logger.py @@ -9,12 +9,12 @@ # SOFTWARE. # ################################################################################# +import collections +import datetime +import inspect +import json import os import sys -import json -import inspect -import datetime -import collections class Logger(object): diff --git a/bootstrap/lib/options.py b/bootstrap/lib/options.py index 12ac3f9..62a868d 100755 --- a/bootstrap/lib/options.py +++ b/bootstrap/lib/options.py @@ -4,10 +4,13 @@ import inspect import json import os + from collections import OrderedDict + import yaml -from yaml import Dumper + from bootstrap.lib.utils import merge_dictionaries +from yaml import Dumper class OptionsDict(OrderedDict): diff --git a/bootstrap/lib/utils.py b/bootstrap/lib/utils.py index c2e6394..29b5c27 100755 --- a/bootstrap/lib/utils.py +++ b/bootstrap/lib/utils.py @@ -1,10 +1,12 @@ import os +import random +import subprocess import sys import time -import torch + import numpy -import random -import subprocess + +import torch def merge_dictionaries(dict1, dict2): diff --git a/bootstrap/models/criterions/factory.py b/bootstrap/models/criterions/factory.py index ec6d8b8..67215e5 100644 --- a/bootstrap/models/criterions/factory.py +++ b/bootstrap/models/criterions/factory.py @@ -1,9 +1,11 @@ import importlib -from bootstrap.lib.options import Options + from bootstrap.lib.logger import Logger -from .nll import NLLLoss +from bootstrap.lib.options import Options + from .bce import BCEWithLogitsLoss from .cross_entropy import CrossEntropyLoss +from .nll import NLLLoss def factory(engine=None, mode=None): diff --git a/bootstrap/models/factory.py b/bootstrap/models/factory.py index 9388a13..279952e 100755 --- a/bootstrap/models/factory.py +++ b/bootstrap/models/factory.py @@ -1,10 +1,8 @@ import importlib -from ..lib.options import Options from ..lib.logger import Logger - -from .model import DefaultModel -from .model import SimpleModel +from ..lib.options import Options +from .model import DefaultModel, SimpleModel def factory(engine=None): diff --git a/bootstrap/models/metrics/factory.py b/bootstrap/models/metrics/factory.py index 44de8f8..78a6b7d 100644 --- a/bootstrap/models/metrics/factory.py +++ b/bootstrap/models/metrics/factory.py @@ -1,6 +1,8 @@ import importlib -from bootstrap.lib.options import Options + from bootstrap.lib.logger import Logger +from bootstrap.lib.options import Options + from .accuracy import Accuracy diff --git a/bootstrap/models/model.py b/bootstrap/models/model.py index a4b874a..69b6580 100755 --- a/bootstrap/models/model.py +++ b/bootstrap/models/model.py @@ -1,8 +1,9 @@ import torch.nn as nn + from ..datasets import transforms -from .networks.factory import factory as net_factory from .criterions.factory import factory as cri_factory from .metrics.factory import factory as met_factory +from .networks.factory import factory as net_factory class Model(nn.Module): diff --git a/bootstrap/models/networks/data_parallel.py b/bootstrap/models/networks/data_parallel.py index a846b71..19d66f6 100644 --- a/bootstrap/models/networks/data_parallel.py +++ b/bootstrap/models/networks/data_parallel.py @@ -1,5 +1,6 @@ import torch import torch.nn as nn + from torch.nn.parallel._functions import Gather diff --git a/bootstrap/models/networks/factory.py b/bootstrap/models/networks/factory.py index 279f984..f8bed0b 100644 --- a/bootstrap/models/networks/factory.py +++ b/bootstrap/models/networks/factory.py @@ -1,7 +1,7 @@ import importlib -from bootstrap.lib.options import Options from bootstrap.lib.logger import Logger +from bootstrap.lib.options import Options def factory(engine=None): diff --git a/bootstrap/optimizers/factory.py b/bootstrap/optimizers/factory.py index 584db9c..1d030e2 100755 --- a/bootstrap/optimizers/factory.py +++ b/bootstrap/optimizers/factory.py @@ -1,9 +1,10 @@ import copy -import torch import importlib -from ..lib.options import Options -from ..lib.logger import Logger +import torch + +from ..lib.logger import Logger +from ..lib.options import Options from . import lr_scheduler from .grad_clipper import GradClipper diff --git a/bootstrap/optimizers/lr_scheduler.py b/bootstrap/optimizers/lr_scheduler.py index 37f88a3..fd19dcb 100644 --- a/bootstrap/optimizers/lr_scheduler.py +++ b/bootstrap/optimizers/lr_scheduler.py @@ -1,4 +1,5 @@ import torch.optim.lr_scheduler + from bootstrap.lib.logger import Logger diff --git a/bootstrap/run.py b/bootstrap/run.py index c181de7..8323451 100755 --- a/bootstrap/run.py +++ b/bootstrap/run.py @@ -1,20 +1,18 @@ import io import os -import sys import shutil -import click -import torch +import sys import traceback + +import torch import torch.backends.cudnn as cudnn +import click + +from . import datasets, engines, models, optimizers, views from .lib import utils from .lib.logger import Logger from .lib.options import Options -from . import engines -from . import datasets -from . import models -from . import optimizers -from . import views def init_experiment_directory(exp_dir, resume=None): diff --git a/bootstrap/views/factory.py b/bootstrap/views/factory.py index 17a4e20..bbc6c01 100644 --- a/bootstrap/views/factory.py +++ b/bootstrap/views/factory.py @@ -1,6 +1,7 @@ import importlib -from ..lib.options import Options + from ..lib.logger import Logger +from ..lib.options import Options from .utils import MultiViews diff --git a/bootstrap/views/plotly.py b/bootstrap/views/plotly.py index d2b77b3..8a4893d 100644 --- a/bootstrap/views/plotly.py +++ b/bootstrap/views/plotly.py @@ -1,9 +1,12 @@ -import os import json import math +import os + import plotly.graph_objects as go -from plotly.subplots import make_subplots + from plotly.offline import plot +from plotly.subplots import make_subplots + from ..lib.logger import Logger diff --git a/bootstrap/views/tensorboard.py b/bootstrap/views/tensorboard.py index 91a0af2..60019ce 100644 --- a/bootstrap/views/tensorboard.py +++ b/bootstrap/views/tensorboard.py @@ -1,6 +1,8 @@ -import os import json +import os + from tensorboardX import SummaryWriter + from ..lib.logger import Logger diff --git a/setup.py b/setup.py index fad6fbf..5d05dc0 100644 --- a/setup.py +++ b/setup.py @@ -5,12 +5,13 @@ https://github.com/pypa/sampleproject """ -# Always prefer setuptools over distutils -from setuptools import setup, find_packages # To use a consistent encoding from codecs import open from os import path +# Always prefer setuptools over distutils +from setuptools import find_packages, setup + here = path.abspath(path.dirname(__file__)) # Get the long description from the README file diff --git a/tests/test_options.py b/tests/test_options.py index 754fe7c..a282cc0 100644 --- a/tests/test_options.py +++ b/tests/test_options.py @@ -2,13 +2,14 @@ import json import os import sys + from io import StringIO import pytest + import yaml -from bootstrap.lib.options import Options -from bootstrap.lib.options import OptionsDict +from bootstrap.lib.options import Options, OptionsDict from bootstrap.lib.utils import merge_dictionaries