From 6fba1400c4dd4ffa28a870483678223560f78d15 Mon Sep 17 00:00:00 2001 From: Daniel Gafni Date: Tue, 14 Sep 2021 12:20:18 +0300 Subject: [PATCH 1/2] applied isort; converted all relative imports to absolute --- .pre-commit-config.yaml | 12 +++++ bindsnet/__init__.py | 35 +++++++++---- bindsnet/analysis/__init__.py | 4 +- bindsnet/analysis/dotTrace_plotter.py | 2 +- bindsnet/analysis/pipeline_analysis.py | 9 +--- bindsnet/analysis/plotting.py | 14 ++--- bindsnet/analysis/visualization.py | 10 ++-- bindsnet/conversion/__init__.py | 21 ++++++-- bindsnet/conversion/conversion.py | 15 +++--- bindsnet/conversion/nodes.py | 2 +- bindsnet/conversion/topology.py | 2 +- bindsnet/datasets/__init__.py | 55 +++++++++++++++++--- bindsnet/datasets/alov300.py | 10 ++-- bindsnet/datasets/collate.py | 4 +- bindsnet/datasets/dataloader.py | 2 +- bindsnet/datasets/davis.py | 6 +-- bindsnet/datasets/preprocess.py | 3 +- bindsnet/datasets/spoken_mnist.py | 11 ++-- bindsnet/datasets/torchvision_wrapper.py | 4 +- bindsnet/encoding/__init__.py | 36 +++++++++++-- bindsnet/encoding/encoders.py | 2 +- bindsnet/encoding/loaders.py | 4 +- bindsnet/environment/__init__.py | 4 +- bindsnet/environment/cue_reward.py | 3 +- bindsnet/environment/dot_simulator.py | 7 ++- bindsnet/environment/environment.py | 11 ++-- bindsnet/evaluation/__init__.py | 16 ++++-- bindsnet/evaluation/evaluation.py | 2 +- bindsnet/learning/__init__.py | 21 ++++++-- bindsnet/learning/learning.py | 9 ++-- bindsnet/learning/reward.py | 2 - bindsnet/models/__init__.py | 12 ++++- bindsnet/models/models.py | 12 ++--- bindsnet/network/__init__.py | 6 ++- bindsnet/network/monitors.py | 12 ++--- bindsnet/network/network.py | 10 ++-- bindsnet/network/topology.py | 11 ++-- bindsnet/pipeline/__init__.py | 19 +++++-- bindsnet/pipeline/action.py | 3 +- bindsnet/pipeline/base_pipeline.py | 8 +-- bindsnet/pipeline/dataloader_pipeline.py | 10 ++-- bindsnet/pipeline/environment_pipeline.py | 15 +++--- bindsnet/preprocessing/__init__.py | 2 + bindsnet/preprocessing/preprocessing.py | 5 +- bindsnet/utils.py | 9 ++-- examples/benchmark/annarchy.py | 6 +-- examples/benchmark/benchmark.py | 22 ++++---- examples/benchmark/gpu_annarchy.py | 6 +-- examples/benchmark/plot_benchmark.py | 6 +-- examples/breakout/breakout.py | 6 +-- examples/breakout/breakout_stdp.py | 8 +-- examples/breakout/play_breakout_from_ANN.py | 25 +++++---- examples/breakout/random_baseline.py | 3 +- examples/breakout/random_network_baseline.py | 13 ++--- examples/dotTracing/dot_tracing.py | 30 +++++------ examples/mnist/SOM_LM-SNNs.py | 29 +++++------ examples/mnist/batch_eth_mnist.py | 29 +++++------ examples/mnist/conv_mnist.py | 24 ++++----- examples/mnist/eth_mnist.py | 30 +++++------ examples/mnist/reservoir.py | 10 ++-- examples/mnist/supervised_mnist.py | 25 +++++---- examples/tensorboard/tensorboard.py | 16 +++--- pyproject.toml | 4 ++ test/analysis/test_analyzers.py | 8 +-- test/encoding/test_encoding.py | 4 +- test/import/test_import.py | 25 --------- test/models/test_models.py | 4 +- test/network/test_connections.py | 16 +++--- test/network/test_learning.py | 12 ++--- test/network/test_monitors.py | 2 +- test/network/test_network.py | 4 +- test/network/test_nodes.py | 8 +-- tox.ini | 4 ++ 73 files changed, 469 insertions(+), 382 deletions(-) create mode 100644 tox.ini diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a6d5d5a4..b7606452 100755 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,8 +1,20 @@ repos: - repo: local hooks: + - id: isort + name: isort + entry: isort . --settings-file pyproject.toml + language: system + pass_filenames: false - id: black name: black entry: black . language: system pass_filenames: false + - id: autoflake + name: autoflake + entry: autoflake + language: system + types: [ python ] + args: [ --in-place, --remove-all-unused-imports, --remove-duplicate-keys ] + files: ^bindsnet/|test/ \ No newline at end of file diff --git a/bindsnet/__init__.py b/bindsnet/__init__.py index 630f3129..df7ac702 100644 --- a/bindsnet/__init__.py +++ b/bindsnet/__init__.py @@ -1,18 +1,35 @@ from pathlib import Path -from . import ( - utils, - network, - models, +from bindsnet import ( analysis, - preprocessing, + conversion, datasets, encoding, - pipeline, - learning, - evaluation, environment, - conversion, + evaluation, + learning, + models, + network, + pipeline, + preprocessing, + utils, ) ROOT_DIR = Path(__file__).parents[0].parents[0] + + +__all__ = [ + "utils", + "network", + "models", + "analysis", + "preprocessing", + "datasets", + "encoding", + "pipeline", + "learning", + "evaluation", + "environment", + "conversion", + "ROOT_DIR", +] diff --git a/bindsnet/analysis/__init__.py b/bindsnet/analysis/__init__.py index d923d175..d5b93c66 100644 --- a/bindsnet/analysis/__init__.py +++ b/bindsnet/analysis/__init__.py @@ -1 +1,3 @@ -from . import plotting, visualization, pipeline_analysis +from bindsnet.analysis import pipeline_analysis, plotting, visualization + +__all__ = ["plotting", "visualization", "pipeline_analysis"] diff --git a/bindsnet/analysis/dotTrace_plotter.py b/bindsnet/analysis/dotTrace_plotter.py index d9e552b1..f1fdbc90 100644 --- a/bindsnet/analysis/dotTrace_plotter.py +++ b/bindsnet/analysis/dotTrace_plotter.py @@ -1,8 +1,8 @@ -import numpy as np import glob import sys import matplotlib.pyplot as plt +import numpy as np # Define grid dimensions globally ROWS = 28 diff --git a/bindsnet/analysis/pipeline_analysis.py b/bindsnet/analysis/pipeline_analysis.py index 5ebe4971..46230fd9 100644 --- a/bindsnet/analysis/pipeline_analysis.py +++ b/bindsnet/analysis/pipeline_analysis.py @@ -8,8 +8,8 @@ from tensorboardX import SummaryWriter from torchvision.utils import make_grid -from .plotting import plot_spikes, plot_voltages, plot_conv2d_weights from ..utils import reshape_conv2d_weights +from .plotting import plot_conv2d_weights, plot_spikes, plot_voltages class PipelineAnalyzer(ABC): @@ -25,7 +25,6 @@ def finalize_step(self) -> None: """ Flush the output from the current step. """ - pass @abstractmethod def plot_obs(self, obs: torch.Tensor, tag: str = "obs", step: int = None) -> None: @@ -38,7 +37,6 @@ def plot_obs(self, obs: torch.Tensor, tag: str = "obs", step: int = None) -> Non :param tag: A unique tag to associate the data with. :param step: The step of the pipeline. """ - pass @abstractmethod def plot_reward( @@ -57,7 +55,6 @@ def plot_reward( :param tag: A unique tag to associate the data with. :param step: The step of the pipeline. """ - pass @abstractmethod def plot_spikes( @@ -75,7 +72,6 @@ def plot_spikes( :param tag: A unique tag to associate the data with. :param step: The step of the pipeline. """ - pass @abstractmethod def plot_voltages( @@ -96,7 +92,6 @@ def plot_voltages( :param tag: A unique tag to associate the data with. :param step: The step of the pipeline. """ - pass @abstractmethod def plot_conv2d_weights( @@ -110,7 +105,6 @@ def plot_conv2d_weights( :param tag: A unique tag to associate the data with. :param step: The step of the pipeline. """ - pass class MatplotlibAnalyzer(PipelineAnalyzer): @@ -313,7 +307,6 @@ def finalize_step(self) -> None: """ No-op for ``TensorboardAnalyzer``. """ - pass def plot_obs(self, obs: torch.Tensor, tag: str = "obs", step: int = None) -> None: # language=rst diff --git a/bindsnet/analysis/plotting.py b/bindsnet/analysis/plotting.py index 64e00a5e..d7871274 100644 --- a/bindsnet/analysis/plotting.py +++ b/bindsnet/analysis/plotting.py @@ -1,15 +1,15 @@ -import torch -import numpy as np -import matplotlib.pyplot as plt +from typing import Dict, List, Optional, Sized, Tuple, Union +import matplotlib.pyplot as plt +import numpy as np +import torch from matplotlib.axes import Axes -from matplotlib.image import AxesImage -from torch.nn.modules.utils import _pair from matplotlib.collections import PathCollection +from matplotlib.image import AxesImage from mpl_toolkits.axes_grid1 import make_axes_locatable -from typing import Tuple, List, Optional, Sized, Dict, Union +from torch.nn.modules.utils import _pair -from ..utils import reshape_locally_connected_weights, reshape_conv2d_weights +from bindsnet.utils import reshape_conv2d_weights, reshape_locally_connected_weights plt.ion() diff --git a/bindsnet/analysis/visualization.py b/bindsnet/analysis/visualization.py index 0b151663..0d49315f 100644 --- a/bindsnet/analysis/visualization.py +++ b/bindsnet/analysis/visualization.py @@ -1,9 +1,9 @@ -import torch -import numpy as np -import matplotlib.pyplot as plt -import matplotlib.animation as animation +from typing import List, Optional, Tuple -from typing import List, Tuple, Optional +import matplotlib.animation as animation +import matplotlib.pyplot as plt +import numpy as np +import torch def plot_weights_movie(ws: np.ndarray, sample_every: int = 1) -> None: diff --git a/bindsnet/conversion/__init__.py b/bindsnet/conversion/__init__.py index 05950aa3..4cdd7886 100644 --- a/bindsnet/conversion/__init__.py +++ b/bindsnet/conversion/__init__.py @@ -1,10 +1,21 @@ -from .conversion import ( - Permute, +from bindsnet.conversion.conversion import ( + ConstantPad2dConnection, FeatureExtractor, - SubtractiveResetIFNodes, PassThroughNodes, + Permute, PermuteConnection, - ConstantPad2dConnection, - data_based_normalization, + SubtractiveResetIFNodes, ann_to_snn, + data_based_normalization, ) + +__all__ = [ + "Permute", + "FeatureExtractor", + "SubtractiveResetIFNodes", + "PassThroughNodes", + "PermuteConnection", + "ConstantPad2dConnection", + "data_based_normalization", + "ann_to_snn", +] diff --git a/bindsnet/conversion/conversion.py b/bindsnet/conversion/conversion.py index 32349f9d..96037192 100644 --- a/bindsnet/conversion/conversion.py +++ b/bindsnet/conversion/conversion.py @@ -1,19 +1,16 @@ -import torch +from copy import deepcopy +from typing import Dict, Optional, Sequence, Union + import numpy as np +import torch import torch.nn as nn -import torch.nn.functional as F - from torch.nn.modules.utils import _pair -from copy import deepcopy -from typing import Union, Sequence, Optional, Tuple, Dict, Iterable - import bindsnet.network.nodes as nodes import bindsnet.network.topology as topology - +from bindsnet.conversion.nodes import PassThroughNodes, SubtractiveResetIFNodes +from bindsnet.conversion.topology import ConstantPad2dConnection, PermuteConnection from bindsnet.network import Network -from .nodes import SubtractiveResetIFNodes, PassThroughNodes -from .topology import PermuteConnection, ConstantPad2dConnection class Permute(nn.Module): diff --git a/bindsnet/conversion/nodes.py b/bindsnet/conversion/nodes.py index 27b1d1c8..2f8422d2 100644 --- a/bindsnet/conversion/nodes.py +++ b/bindsnet/conversion/nodes.py @@ -1,4 +1,4 @@ -from typing import Optional, Iterable, Union +from typing import Iterable, Optional, Union import torch diff --git a/bindsnet/conversion/topology.py b/bindsnet/conversion/topology.py index 1ab5ab49..d7f33361 100644 --- a/bindsnet/conversion/topology.py +++ b/bindsnet/conversion/topology.py @@ -1,4 +1,4 @@ -from typing import Optional, Iterable, Union, Tuple +from typing import Iterable, Optional, Tuple, Union import torch import torch.nn.functional as F diff --git a/bindsnet/datasets/__init__.py b/bindsnet/datasets/__init__.py index 16088ca5..e37f2daf 100644 --- a/bindsnet/datasets/__init__.py +++ b/bindsnet/datasets/__init__.py @@ -1,11 +1,9 @@ -from .torchvision_wrapper import create_torchvision_dataset_wrapper -from .spoken_mnist import SpokenMNIST -from .davis import Davis -from .alov300 import ALOV300 - -from .collate import time_aware_collate -from .dataloader import DataLoader - +from bindsnet.datasets.alov300 import ALOV300 +from bindsnet.datasets.collate import time_aware_collate +from bindsnet.datasets.dataloader import DataLoader +from bindsnet.datasets.davis import Davis +from bindsnet.datasets.spoken_mnist import SpokenMNIST +from bindsnet.datasets.torchvision_wrapper import create_torchvision_dataset_wrapper CIFAR10 = create_torchvision_dataset_wrapper("CIFAR10") CIFAR100 = create_torchvision_dataset_wrapper("CIFAR100") @@ -31,3 +29,44 @@ SVHN = create_torchvision_dataset_wrapper("SVHN") VOCDetection = create_torchvision_dataset_wrapper("VOCDetection") VOCSegmentation = create_torchvision_dataset_wrapper("VOCSegmentation") + + +__all__ = [ + "torchvision_wrapper", + "create_torchvision_dataset_wrapper", + "spoken_mnist", + "SpokenMNIST", + "davis", + "Davis", + "preprocess", + "alov300", + "ALOV300", + "collate", + "time_aware_collate", + "dataloader", + "DataLoader", + "CIFAR10", + "CIFAR100", + "Cityscapes", + "CocoCaptions", + "CocoDetection", + "DatasetFolder", + "EMNIST", + "FakeData", + "FashionMNIST", + "Flickr30k", + "Flickr8k", + "ImageFolder", + "KMNIST", + "LSUN", + "LSUNClass", + "MNIST", + "Omniglot", + "PhotoTour", + "SBU", + "SEMEION", + "STL10", + "SVHN", + "VOCDetection", + "VOCSegmentation", +] diff --git a/bindsnet/datasets/alov300.py b/bindsnet/datasets/alov300.py index 0039899f..a0fe495b 100644 --- a/bindsnet/datasets/alov300.py +++ b/bindsnet/datasets/alov300.py @@ -1,24 +1,20 @@ import os import sys import time -import zipfile import warnings -from glob import glob +import zipfile from urllib.request import urlretrieve -from typing import Optional, Tuple, List, Iterable import cv2 -import torch import numpy as np -from PIL import Image from torch.utils.data import Dataset from bindsnet.datasets.preprocess import ( - cropPadImage, BoundingBox, - crop_sample, Rescale, bgr2rgb, + crop_sample, + cropPadImage, ) warnings.filterwarnings("ignore") diff --git a/bindsnet/datasets/collate.py b/bindsnet/datasets/collate.py index acd42bf8..df8272bd 100644 --- a/bindsnet/datasets/collate.py +++ b/bindsnet/datasets/collate.py @@ -7,10 +7,10 @@ Modifications exist to have [time, batch, n_0, ... n_k] instead of batch in dimension 0. """ -import torch -from torch._six import string_classes import collections +import torch +from torch._six import string_classes from torch.utils.data._utils import collate as pytorch_collate diff --git a/bindsnet/datasets/dataloader.py b/bindsnet/datasets/dataloader.py index 640d8f68..d1d36ddb 100644 --- a/bindsnet/datasets/dataloader.py +++ b/bindsnet/datasets/dataloader.py @@ -1,6 +1,6 @@ import torch -from .collate import time_aware_collate +from bindsnet.datasets.collate import time_aware_collate class DataLoader(torch.utils.data.DataLoader): diff --git a/bindsnet/datasets/davis.py b/bindsnet/datasets/davis.py index 588c7c46..c494d894 100644 --- a/bindsnet/datasets/davis.py +++ b/bindsnet/datasets/davis.py @@ -1,14 +1,14 @@ import os +import shutil import sys import time -import shutil import zipfile -from glob import glob from collections import defaultdict +from glob import glob from urllib.request import urlretrieve -import torch import numpy as np +import torch from PIL import Image from tqdm import tqdm diff --git a/bindsnet/datasets/preprocess.py b/bindsnet/datasets/preprocess.py index 4c130498..d0249eb3 100644 --- a/bindsnet/datasets/preprocess.py +++ b/bindsnet/datasets/preprocess.py @@ -1,10 +1,9 @@ import math import random -import warnings import cv2 -import torch import numpy as np +import torch from torchvision import transforms diff --git a/bindsnet/datasets/spoken_mnist.py b/bindsnet/datasets/spoken_mnist.py index e299fe6b..7a86fee6 100644 --- a/bindsnet/datasets/spoken_mnist.py +++ b/bindsnet/datasets/spoken_mnist.py @@ -1,15 +1,12 @@ -from typing import Optional, Tuple, List, Iterable import os -import torch -import numpy as np import shutil import zipfile - - +from typing import Iterable, List, Tuple from urllib.request import urlretrieve -from scipy.io import wavfile -import warnings +import numpy as np +import torch +from scipy.io import wavfile class SpokenMNIST(torch.utils.data.Dataset): diff --git a/bindsnet/datasets/torchvision_wrapper.py b/bindsnet/datasets/torchvision_wrapper.py index d86fb77f..b3540c72 100644 --- a/bindsnet/datasets/torchvision_wrapper.py +++ b/bindsnet/datasets/torchvision_wrapper.py @@ -1,9 +1,9 @@ -from typing import Optional, Dict +from typing import Dict, Optional import torch import torchvision -from ..encoding import Encoder, NullEncoder +from bindsnet.encoding import Encoder, NullEncoder def create_torchvision_dataset_wrapper(ds_type): diff --git a/bindsnet/encoding/__init__.py b/bindsnet/encoding/__init__.py index 1be014f3..602af6b0 100644 --- a/bindsnet/encoding/__init__.py +++ b/bindsnet/encoding/__init__.py @@ -1,11 +1,37 @@ -from .encodings import single, repeat, bernoulli, poisson, rank_order -from .loaders import bernoulli_loader, poisson_loader, rank_order_loader +from bindsnet.encoding.encodings import bernoulli, poisson, rank_order, repeat, single +from bindsnet.encoding.loaders import ( + bernoulli_loader, + poisson_loader, + rank_order_loader, +) + from .encoders import ( + BernoulliEncoder, Encoder, NullEncoder, - SingleEncoder, - RepeatEncoder, - BernoulliEncoder, PoissonEncoder, RankOrderEncoder, + RepeatEncoder, + SingleEncoder, ) + +__all__ = [ + "encodings", + "single", + "repeat", + "bernoulli", + "poisson", + "rank_order", + "loaders", + "bernoulli_loader", + "poisson_loader", + "rank_order_loader", + "encoders", + "Encoder", + "NullEncoder", + "SingleEncoder", + "RepeatEncoder", + "BernoulliEncoder", + "PoissonEncoder", + "RankOrderEncoder", +] diff --git a/bindsnet/encoding/encoders.py b/bindsnet/encoding/encoders.py index 111e939f..c6a91e1e 100644 --- a/bindsnet/encoding/encoders.py +++ b/bindsnet/encoding/encoders.py @@ -1,4 +1,4 @@ -from . import encodings +from bindsnet.encoding import encodings class Encoder: diff --git a/bindsnet/encoding/loaders.py b/bindsnet/encoding/loaders.py index 16dfbd40..3ba7f881 100644 --- a/bindsnet/encoding/loaders.py +++ b/bindsnet/encoding/loaders.py @@ -1,8 +1,8 @@ -from typing import Optional, Union, Iterable, Iterator +from typing import Iterable, Iterator, Optional, Union import torch -from .encodings import bernoulli, poisson, rank_order +from bindsnet.encoding.encodings import bernoulli, poisson, rank_order def bernoulli_loader( diff --git a/bindsnet/environment/__init__.py b/bindsnet/environment/__init__.py index 5167910f..67965489 100644 --- a/bindsnet/environment/__init__.py +++ b/bindsnet/environment/__init__.py @@ -1 +1,3 @@ -from .environment import Environment, GymEnvironment +from bindsnet.environment.environment import Environment, GymEnvironment + +__all__ = ["Environment", "GymEnvironment"] diff --git a/bindsnet/environment/cue_reward.py b/bindsnet/environment/cue_reward.py index 857b91db..113e6f55 100644 --- a/bindsnet/environment/cue_reward.py +++ b/bindsnet/environment/cue_reward.py @@ -1,10 +1,9 @@ -import numpy as np import random from time import time +import numpy as np import torch - # Number of cues to be used in the experiment. NUM_CUES = 4 diff --git a/bindsnet/environment/dot_simulator.py b/bindsnet/environment/dot_simulator.py index e33cf160..e2148748 100644 --- a/bindsnet/environment/dot_simulator.py +++ b/bindsnet/environment/dot_simulator.py @@ -1,13 +1,12 @@ -import numpy as np import os -import pandas as pd import random from time import time +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd import torch from gym import spaces -import matplotlib.pyplot as plt - # Mappings for changing direction if reflected. # Cannot cross a row boundary moving right or left. diff --git a/bindsnet/environment/environment.py b/bindsnet/environment/environment.py index fba9d769..ba48b8b2 100644 --- a/bindsnet/environment/environment.py +++ b/bindsnet/environment/environment.py @@ -1,12 +1,12 @@ from abc import ABC, abstractmethod -from typing import Tuple, Dict, Any +from typing import Any, Dict, Tuple import gym import numpy as np import torch -from ..datasets.preprocess import subsample, gray_scale, binary_image, crop -from ..encoding import Encoder, NullEncoder +from bindsnet.datasets.preprocess import binary_image, crop, gray_scale, subsample +from bindsnet.encoding import Encoder, NullEncoder class Environment(ABC): @@ -23,7 +23,6 @@ def step(self, a: int) -> Tuple[Any, ...]: :param a: Integer action to take in environment. """ - pass @abstractmethod def reset(self) -> None: @@ -31,7 +30,6 @@ def reset(self) -> None: """ Abstract method header for ``reset()``. """ - pass @abstractmethod def render(self) -> None: @@ -39,7 +37,6 @@ def render(self) -> None: """ Abstract method header for ``render()``. """ - pass @abstractmethod def close(self) -> None: @@ -47,7 +44,6 @@ def close(self) -> None: """ Abstract method header for ``close()``. """ - pass @abstractmethod def preprocess(self) -> None: @@ -55,7 +51,6 @@ def preprocess(self) -> None: """ Abstract method header for ``preprocess()``. """ - pass class GymEnvironment(Environment): diff --git a/bindsnet/evaluation/__init__.py b/bindsnet/evaluation/__init__.py index 95f35dda..e70ed097 100644 --- a/bindsnet/evaluation/__init__.py +++ b/bindsnet/evaluation/__init__.py @@ -1,9 +1,19 @@ -from .evaluation import ( +from bindsnet.evaluation.evaluation import ( + all_activity, assign_labels, logreg_fit, logreg_predict, - all_activity, - proportion_weighting, ngram, + proportion_weighting, update_ngram_scores, ) + +__all__ = [ + "assign_labels", + "logreg_fit", + "logreg_predict", + "all_activity", + "proportion_weighting", + "ngram", + "update_ngram_scores", +] diff --git a/bindsnet/evaluation/evaluation.py b/bindsnet/evaluation/evaluation.py index 9d47f35f..5271d762 100644 --- a/bindsnet/evaluation/evaluation.py +++ b/bindsnet/evaluation/evaluation.py @@ -1,5 +1,5 @@ from itertools import product -from typing import Optional, Tuple, Dict +from typing import Dict, Optional, Tuple import torch from sklearn.linear_model import LogisticRegression diff --git a/bindsnet/learning/__init__.py b/bindsnet/learning/__init__.py index 2a37c9ec..5a733783 100644 --- a/bindsnet/learning/__init__.py +++ b/bindsnet/learning/__init__.py @@ -1,10 +1,21 @@ -from .learning import ( +from bindsnet.learning.learning import ( + MSTDP, + MSTDPET, + Hebbian, LearningRule, NoOp, PostPre, - WeightDependentPostPre, - Hebbian, - MSTDP, - MSTDPET, Rmax, + WeightDependentPostPre, ) + +__all__ = [ + "LearningRule", + "NoOp", + "PostPre", + "WeightDependentPostPre", + "Hebbian", + "MSTDP", + "MSTDPET", + "Rmax", +] diff --git a/bindsnet/learning/learning.py b/bindsnet/learning/learning.py index 1cde512c..d57f8cec 100644 --- a/bindsnet/learning/learning.py +++ b/bindsnet/learning/learning.py @@ -1,9 +1,11 @@ -from abc import ABC -from typing import Union, Optional, Sequence import warnings +from abc import ABC +from typing import Optional, Sequence, Union -import torch import numpy as np +import torch + +from bindsnet.utils import im2col_indices from ..network.nodes import SRM0Nodes from ..network.topology import ( @@ -12,7 +14,6 @@ Conv2dConnection, LocalConnection, ) -from ..utils import im2col_indices class LearningRule(ABC): diff --git a/bindsnet/learning/reward.py b/bindsnet/learning/reward.py index c70f91e4..fde135d0 100644 --- a/bindsnet/learning/reward.py +++ b/bindsnet/learning/reward.py @@ -15,7 +15,6 @@ def compute(self, **kwargs) -> None: """ Computes/modifies reward. """ - pass @abstractmethod def update(self, **kwargs) -> None: @@ -24,7 +23,6 @@ def update(self, **kwargs) -> None: Updates internal variables needed to modify reward. Usually called once per episode. """ - pass class MovingAvgRPE(AbstractReward): diff --git a/bindsnet/models/__init__.py b/bindsnet/models/__init__.py index 8d0e295e..b57121bc 100644 --- a/bindsnet/models/__init__.py +++ b/bindsnet/models/__init__.py @@ -1,7 +1,15 @@ -from .models import ( - TwoLayerNetwork, +from bindsnet.models.models import ( DiehlAndCook2015, DiehlAndCook2015v2, IncreasingInhibitionNetwork, LocallyConnectedNetwork, + TwoLayerNetwork, ) + +__all__ = [ + "TwoLayerNetwork", + "DiehlAndCook2015v2", + "DiehlAndCook2015", + "IncreasingInhibitionNetwork", + "LocallyConnectedNetwork", +] diff --git a/bindsnet/models/models.py b/bindsnet/models/models.py index a0639ee4..50f27872 100644 --- a/bindsnet/models/models.py +++ b/bindsnet/models/models.py @@ -1,16 +1,14 @@ -from typing import Optional, Union, Tuple, List, Sequence, Iterable +from typing import Iterable, List, Optional, Sequence, Tuple, Union import numpy as np import torch from scipy.spatial.distance import euclidean from torch.nn.modules.utils import _pair -import torch.nn as nn -from torchvision import models -from ..learning import PostPre -from ..network import Network -from ..network.nodes import Input, LIFNodes, DiehlAndCookNodes, AdaptiveLIFNodes -from ..network.topology import Connection, LocalConnection +from bindsnet.learning import PostPre +from bindsnet.network import Network +from bindsnet.network.nodes import DiehlAndCookNodes, Input, LIFNodes +from bindsnet.network.topology import Connection, LocalConnection class TwoLayerNetwork(Network): diff --git a/bindsnet/network/__init__.py b/bindsnet/network/__init__.py index 942f1f4c..0a30587c 100644 --- a/bindsnet/network/__init__.py +++ b/bindsnet/network/__init__.py @@ -1,2 +1,4 @@ -from .network import Network, load -from . import nodes, topology, monitors +from bindsnet.network import monitors, nodes, topology +from bindsnet.network.network import Network, load + +__all__ = ["Network", "load", "nodes", "topology", "monitors"] diff --git a/bindsnet/network/monitors.py b/bindsnet/network/monitors.py index ca5fd529..3aab2cc5 100644 --- a/bindsnet/network/monitors.py +++ b/bindsnet/network/monitors.py @@ -1,14 +1,12 @@ import os -import torch -import numpy as np - from abc import ABC -from typing import Union, Optional, Iterable, Dict +from typing import TYPE_CHECKING, Dict, Iterable, Optional, Union -from .nodes import Nodes -from .topology import AbstractConnection +import numpy as np +import torch -from typing import TYPE_CHECKING +from bindsnet.network.nodes import Nodes +from bindsnet.network.topology import AbstractConnection if TYPE_CHECKING: from .network import Network diff --git a/bindsnet/network/network.py b/bindsnet/network/network.py index 0bf02a08..fce2e374 100644 --- a/bindsnet/network/network.py +++ b/bindsnet/network/network.py @@ -1,12 +1,12 @@ import tempfile -from typing import Dict, Optional, Type, Iterable +from typing import Dict, Iterable, Optional, Type import torch -from .monitors import AbstractMonitor -from .nodes import Nodes, CSRMNodes -from .topology import AbstractConnection -from ..learning.reward import AbstractReward +from bindsnet.learning.reward import AbstractReward +from bindsnet.network.monitors import AbstractMonitor +from bindsnet.network.nodes import CSRMNodes, Nodes +from bindsnet.network.topology import AbstractConnection def load(file_name: str, map_location: str = "cpu", learning: bool = None) -> "Network": diff --git a/bindsnet/network/topology.py b/bindsnet/network/topology.py index d65f82d6..3b166f18 100644 --- a/bindsnet/network/topology.py +++ b/bindsnet/network/topology.py @@ -1,13 +1,13 @@ from abc import ABC, abstractmethod -from typing import Union, Tuple, Optional, Sequence +from typing import Optional, Sequence, Tuple, Union import numpy as np import torch -from torch.nn import Module, Parameter import torch.nn.functional as F +from torch.nn import Module, Parameter from torch.nn.modules.utils import _pair -from .nodes import Nodes, CSRMNodes +from bindsnet.network.nodes import CSRMNodes, Nodes class AbstractConnection(ABC, Module): @@ -93,7 +93,6 @@ def compute(self, s: torch.Tensor) -> None: :param s: Incoming spikes. """ - pass @abstractmethod def update(self, **kwargs) -> None: @@ -121,7 +120,6 @@ def reset_state_variables(self) -> None: """ Contains resetting logic for the connection. """ - pass class Connection(AbstractConnection): @@ -487,7 +485,6 @@ def normalize(self) -> None: """ No weights -> no normalization. """ - pass def reset_state_variables(self) -> None: # language=rst @@ -848,7 +845,6 @@ def update(self, **kwargs) -> None: """ Compute connection's update rule. """ - pass def normalize(self) -> None: # language=rst @@ -856,7 +852,6 @@ def normalize(self) -> None: Normalize weights along the first axis according to total weight per target neuron. """ - pass def reset_state_variables(self) -> None: # language=rst diff --git a/bindsnet/pipeline/__init__.py b/bindsnet/pipeline/__init__.py index 1c44c2e4..bdf860b4 100644 --- a/bindsnet/pipeline/__init__.py +++ b/bindsnet/pipeline/__init__.py @@ -1,4 +1,15 @@ -from .environment_pipeline import EnvironmentPipeline -from .base_pipeline import BasePipeline -from .dataloader_pipeline import DataLoaderPipeline, TorchVisionDatasetPipeline -from . import action +from bindsnet.pipeline import action +from bindsnet.pipeline.base_pipeline import BasePipeline +from bindsnet.pipeline.dataloader_pipeline import ( + DataLoaderPipeline, + TorchVisionDatasetPipeline, +) +from bindsnet.pipeline.environment_pipeline import EnvironmentPipeline + +__all__ = [ + "EnvironmentPipeline", + "BasePipeline", + "DataLoaderPipeline", + "TorchVisionDatasetPipeline", + "action", +] diff --git a/bindsnet/pipeline/action.py b/bindsnet/pipeline/action.py index fbe97d73..55f468d1 100644 --- a/bindsnet/pipeline/action.py +++ b/bindsnet/pipeline/action.py @@ -1,7 +1,6 @@ import torch -import numpy as np -from . import EnvironmentPipeline +from bindsnet.pipeline.environment_pipeline import EnvironmentPipeline def select_multinomial(pipeline: EnvironmentPipeline, **kwargs) -> int: diff --git a/bindsnet/pipeline/base_pipeline.py b/bindsnet/pipeline/base_pipeline.py index 6790a504..0d8b1c35 100644 --- a/bindsnet/pipeline/base_pipeline.py +++ b/bindsnet/pipeline/base_pipeline.py @@ -1,12 +1,12 @@ +import collections import time -from typing import Tuple, Dict, Any +from typing import Any, Dict, Tuple import torch from torch._six import string_classes -import collections -from ..network import Network -from ..network.monitors import Monitor +from bindsnet.network import Network +from bindsnet.network.monitors import Monitor def recursive_to(item, device): diff --git a/bindsnet/pipeline/dataloader_pipeline.py b/bindsnet/pipeline/dataloader_pipeline.py index 995285fc..fbe2fa24 100644 --- a/bindsnet/pipeline/dataloader_pipeline.py +++ b/bindsnet/pipeline/dataloader_pipeline.py @@ -1,13 +1,13 @@ -from typing import Optional, Dict +from typing import Dict, Optional import torch from torch.utils.data import Dataset from tqdm import tqdm -from ..network import Network -from .base_pipeline import BasePipeline -from ..analysis.pipeline_analysis import PipelineAnalyzer -from ..datasets import DataLoader +from bindsnet.analysis.pipeline_analysis import PipelineAnalyzer +from bindsnet.datasets import DataLoader +from bindsnet.network import Network +from bindsnet.pipeline.base_pipeline import BasePipeline class DataLoaderPipeline(BasePipeline): diff --git a/bindsnet/pipeline/environment_pipeline.py b/bindsnet/pipeline/environment_pipeline.py index b1f50b2b..119e22bd 100644 --- a/bindsnet/pipeline/environment_pipeline.py +++ b/bindsnet/pipeline/environment_pipeline.py @@ -1,16 +1,15 @@ import itertools -from typing import Callable, Optional, Tuple, Dict +from typing import Callable, Dict, Optional, Tuple import torch - from tqdm import tqdm -from .base_pipeline import BasePipeline -from ..analysis.pipeline_analysis import MatplotlibAnalyzer -from ..environment import Environment -from ..network import Network -from ..network.nodes import AbstractInput -from ..network.monitors import Monitor +from bindsnet.analysis.pipeline_analysis import MatplotlibAnalyzer +from bindsnet.environment import Environment +from bindsnet.network import Network +from bindsnet.network.monitors import Monitor +from bindsnet.network.nodes import AbstractInput +from bindsnet.pipeline.base_pipeline import BasePipeline class EnvironmentPipeline(BasePipeline): diff --git a/bindsnet/preprocessing/__init__.py b/bindsnet/preprocessing/__init__.py index 035665ad..fe9947f0 100644 --- a/bindsnet/preprocessing/__init__.py +++ b/bindsnet/preprocessing/__init__.py @@ -1 +1,3 @@ from .preprocessing import AbstractPreprocessor + +__all__ = ["AbstractPreprocessor"] diff --git a/bindsnet/preprocessing/preprocessing.py b/bindsnet/preprocessing/preprocessing.py index 1676586f..050df8b4 100644 --- a/bindsnet/preprocessing/preprocessing.py +++ b/bindsnet/preprocessing/preprocessing.py @@ -1,9 +1,9 @@ import hashlib import os import pickle -import torch +from abc import ABC, abstractmethod -from abc import abstractmethod, ABC +import torch class AbstractPreprocessor(ABC): @@ -50,7 +50,6 @@ def _process(self, filename: str, cache: dict): :param cache: Dictionary for caching 'data' needs to be updated for caching to work. """ - pass def __gen_hash(self, filename: str) -> str: # language=rst diff --git a/bindsnet/utils.py b/bindsnet/utils.py index 274cb8e6..05863662 100644 --- a/bindsnet/utils.py +++ b/bindsnet/utils.py @@ -1,11 +1,10 @@ import math -import torch -import numpy as np +from typing import Tuple, Union -from torch import Tensor +import numpy as np +import torch import torch.nn.functional as F -from numpy import ndarray -from typing import Tuple, Union +from torch import Tensor from torch.nn.modules.utils import _pair diff --git a/examples/benchmark/annarchy.py b/examples/benchmark/annarchy.py index 7ec517a9..c58763da 100755 --- a/examples/benchmark/annarchy.py +++ b/examples/benchmark/annarchy.py @@ -1,13 +1,13 @@ from __future__ import print_function -import os import argparse +import os +from time import time as t + import ANNarchy import numpy as np import pandas as pd -from time import time as t - plots_path = os.path.join("..", "..", "figures") benchmark_path = os.path.join("..", "..", "benchmark") if not os.path.isdir(benchmark_path): diff --git a/examples/benchmark/benchmark.py b/examples/benchmark/benchmark.py index 6260befc..75f9bf92 100755 --- a/examples/benchmark/benchmark.py +++ b/examples/benchmark/benchmark.py @@ -1,24 +1,22 @@ +import argparse import os +from time import time as t + +import brian2genn +import matplotlib.pyplot as plt import nengo -import torch -import argparse import numpy as np import pandas as pd -import matplotlib.pyplot as plt - +import torch from brian2 import * -from nest import * -from time import time as t from experiments import ROOT_DIR +from experiments.benchmark import plot_benchmark +from nest import * -import brian2genn - +from bindsnet.encoding import poisson from bindsnet.network import Network -from bindsnet.network.topology import Connection from bindsnet.network.nodes import Input, LIFNodes -from bindsnet.encoding import poisson - -from experiments.benchmark import plot_benchmark +from bindsnet.network.topology import Connection plots_path = os.path.join(ROOT_DIR, "figures") benchmark_path = os.path.join(ROOT_DIR, "benchmark") diff --git a/examples/benchmark/gpu_annarchy.py b/examples/benchmark/gpu_annarchy.py index 2847fca7..b65988a6 100755 --- a/examples/benchmark/gpu_annarchy.py +++ b/examples/benchmark/gpu_annarchy.py @@ -1,13 +1,13 @@ from __future__ import print_function -import os import argparse +import os +from time import time as t + import ANNarchy import numpy as np import pandas as pd -from time import time as t - plots_path = os.path.join("..", "..", "figures") benchmark_path = os.path.join("..", "..", "benchmark") if not os.path.isdir(benchmark_path): diff --git a/examples/benchmark/plot_benchmark.py b/examples/benchmark/plot_benchmark.py index e71b1788..6975c645 100755 --- a/examples/benchmark/plot_benchmark.py +++ b/examples/benchmark/plot_benchmark.py @@ -1,8 +1,8 @@ -import os import argparse -import pandas as pd -import matplotlib.pyplot as plt +import os +import matplotlib.pyplot as plt +import pandas as pd from experiments import ROOT_DIR benchmark_path = os.path.join(ROOT_DIR, "benchmark") diff --git a/examples/breakout/breakout.py b/examples/breakout/breakout.py index 3fd8c353..7366faf8 100644 --- a/examples/breakout/breakout.py +++ b/examples/breakout/breakout.py @@ -1,9 +1,9 @@ -from bindsnet.network import Network -from bindsnet.pipeline import EnvironmentPipeline from bindsnet.encoding import bernoulli -from bindsnet.network.topology import Connection from bindsnet.environment import GymEnvironment +from bindsnet.network import Network from bindsnet.network.nodes import Input, IzhikevichNodes +from bindsnet.network.topology import Connection +from bindsnet.pipeline import EnvironmentPipeline from bindsnet.pipeline.action import select_softmax # Build network. diff --git a/examples/breakout/breakout_stdp.py b/examples/breakout/breakout_stdp.py index f41224d5..90fc7ca5 100644 --- a/examples/breakout/breakout_stdp.py +++ b/examples/breakout/breakout_stdp.py @@ -1,10 +1,10 @@ -from bindsnet.network import Network -from bindsnet.pipeline import EnvironmentPipeline -from bindsnet.learning import MSTDP from bindsnet.encoding import bernoulli -from bindsnet.network.topology import Connection from bindsnet.environment import GymEnvironment +from bindsnet.learning import MSTDP +from bindsnet.network import Network from bindsnet.network.nodes import Input, LIFNodes +from bindsnet.network.topology import Connection +from bindsnet.pipeline import EnvironmentPipeline from bindsnet.pipeline.action import select_softmax # Build network. diff --git a/examples/breakout/play_breakout_from_ANN.py b/examples/breakout/play_breakout_from_ANN.py index 00aa10ea..5b6be3e7 100644 --- a/examples/breakout/play_breakout_from_ANN.py +++ b/examples/breakout/play_breakout_from_ANN.py @@ -1,21 +1,26 @@ import argparse -from tqdm import tqdm +from typing import Iterable, Optional, Union + +import torch import torch.nn as nn import torch.nn.functional as F -import torch - +from tqdm import tqdm -from bindsnet.network import Network -from bindsnet.pipeline import EnvironmentPipeline from bindsnet.encoding import bernoulli, poisson -from bindsnet.network.topology import Connection from bindsnet.environment import GymEnvironment -from bindsnet.network.nodes import Input, LIFNodes, IzhikevichNodes, IFNodes +from bindsnet.network import Network +from bindsnet.network.nodes import ( + AbstractInput, + IFNodes, + Input, + IzhikevichNodes, + LIFNodes, + Nodes, +) +from bindsnet.network.topology import Connection +from bindsnet.pipeline import EnvironmentPipeline from bindsnet.pipeline.action import * -from bindsnet.network.nodes import Nodes, AbstractInput -from typing import Iterable, Optional, Union - parser = argparse.ArgumentParser(prefix_chars="@") parser.add_argument("@@seed", type=int, default=42) parser.add_argument("@@dt", type=float, default=1.0) diff --git a/examples/breakout/random_baseline.py b/examples/breakout/random_baseline.py index ff845036..acae530b 100644 --- a/examples/breakout/random_baseline.py +++ b/examples/breakout/random_baseline.py @@ -1,5 +1,6 @@ -import os import argparse +import os + import numpy as np from bindsnet.environment import GymEnvironment diff --git a/examples/breakout/random_network_baseline.py b/examples/breakout/random_network_baseline.py index 790e72f8..ad53fc50 100644 --- a/examples/breakout/random_network_baseline.py +++ b/examples/breakout/random_network_baseline.py @@ -1,14 +1,15 @@ -import torch import argparse -from bindsnet.network import Network -from bindsnet.learning import Hebbian -from bindsnet.pipeline import EnvironmentPipeline +import torch + from bindsnet.encoding import bernoulli -from bindsnet.network.monitors import Monitor from bindsnet.environment import GymEnvironment -from bindsnet.network.topology import Connection +from bindsnet.learning import Hebbian +from bindsnet.network import Network +from bindsnet.network.monitors import Monitor from bindsnet.network.nodes import Input, LIFNodes +from bindsnet.network.topology import Connection +from bindsnet.pipeline import EnvironmentPipeline from bindsnet.pipeline.action import select_multinomial parser = argparse.ArgumentParser() diff --git a/examples/dotTracing/dot_tracing.py b/examples/dotTracing/dot_tracing.py index 6447cdb8..6e1387ac 100644 --- a/examples/dotTracing/dot_tracing.py +++ b/examples/dotTracing/dot_tracing.py @@ -1,29 +1,25 @@ -from bindsnet.network import Network +import argparse +import time -# from bindsnet.pipeline import EnvironmentPipeline -# from bindsnet.learning import MSTDP -from bindsnet.learning import MSTDPET -from bindsnet.learning import PostPre +import numpy as np +import torch + +from bindsnet.analysis.plotting import plot_spikes # plot_performance # from bindsnet.encoding import bernoulli from bindsnet.encoding import poisson -from bindsnet.network.topology import Connection from bindsnet.environment.dot_simulator import DotSimulator -from bindsnet.network.nodes import Input, LIFNodes + +# from bindsnet.pipeline import EnvironmentPipeline +# from bindsnet.learning import MSTDP +from bindsnet.learning import MSTDPET, PostPre +from bindsnet.network import Network # from bindsnet.pipeline.action import select_softmax # from bindsnet.network.nodes import AbstractInput from bindsnet.network.monitors import Monitor -from bindsnet.analysis.plotting import ( - plot_spikes, - # plot_performance -) - -import argparse -import numpy as np -import time -import torch - +from bindsnet.network.nodes import Input, LIFNodes +from bindsnet.network.topology import Connection # Handle arguments for dot tracing params. parser = argparse.ArgumentParser() diff --git a/examples/mnist/SOM_LM-SNNs.py b/examples/mnist/SOM_LM-SNNs.py index 69b1be77..ecaef577 100644 --- a/examples/mnist/SOM_LM-SNNs.py +++ b/examples/mnist/SOM_LM-SNNs.py @@ -1,28 +1,27 @@ -import os -import torch import argparse -import numpy as np -import matplotlib.pyplot as plt +import os +from time import time as t +import matplotlib.pyplot as plt +import numpy as np +import torch from torchvision import transforms from tqdm import tqdm -from time import time as t - -from bindsnet.datasets import MNIST -from bindsnet.encoding import PoissonEncoder, poisson -from bindsnet.models import IncreasingInhibitionNetwork -from bindsnet.network.monitors import Monitor -from bindsnet.utils import get_square_weights, get_square_assignments -from bindsnet.evaluation import all_activity, proportion_weighting, assign_labels from bindsnet.analysis.plotting import ( - plot_input, - plot_spikes, - plot_weights, plot_assignments, + plot_input, plot_performance, + plot_spikes, plot_voltages, + plot_weights, ) +from bindsnet.datasets import MNIST +from bindsnet.encoding import PoissonEncoder, poisson +from bindsnet.evaluation import all_activity, assign_labels, proportion_weighting +from bindsnet.models import IncreasingInhibitionNetwork +from bindsnet.network.monitors import Monitor +from bindsnet.utils import get_square_assignments, get_square_weights parser = argparse.ArgumentParser() parser.add_argument("--seed", type=int, default=0) diff --git a/examples/mnist/batch_eth_mnist.py b/examples/mnist/batch_eth_mnist.py index 0508cd93..7db36d2b 100644 --- a/examples/mnist/batch_eth_mnist.py +++ b/examples/mnist/batch_eth_mnist.py @@ -1,29 +1,28 @@ -import os -import torch import argparse -import numpy as np -import matplotlib.pyplot as plt +import os +from time import time as t +import matplotlib.pyplot as plt +import numpy as np +import torch from torchvision import transforms from tqdm import tqdm -from time import time as t - from bindsnet import ROOT_DIR -from bindsnet.datasets import MNIST, DataLoader -from bindsnet.encoding import PoissonEncoder -from bindsnet.evaluation import all_activity, proportion_weighting, assign_labels -from bindsnet.models import DiehlAndCook2015 -from bindsnet.network.monitors import Monitor -from bindsnet.utils import get_square_weights, get_square_assignments from bindsnet.analysis.plotting import ( + plot_assignments, plot_input, - plot_spikes, - plot_weights, plot_performance, - plot_assignments, + plot_spikes, plot_voltages, + plot_weights, ) +from bindsnet.datasets import MNIST, DataLoader +from bindsnet.encoding import PoissonEncoder +from bindsnet.evaluation import all_activity, assign_labels, proportion_weighting +from bindsnet.models import DiehlAndCook2015 +from bindsnet.network.monitors import Monitor +from bindsnet.utils import get_square_assignments, get_square_weights parser = argparse.ArgumentParser() parser.add_argument("--seed", type=int, default=0) diff --git a/examples/mnist/conv_mnist.py b/examples/mnist/conv_mnist.py index 88225300..99d75cd5 100644 --- a/examples/mnist/conv_mnist.py +++ b/examples/mnist/conv_mnist.py @@ -1,25 +1,25 @@ -import os -import torch import argparse +import os +from time import time as t + import matplotlib.pyplot as plt +import torch from torchvision import transforms - -from time import time as t from tqdm import tqdm -from bindsnet.datasets import MNIST -from bindsnet.encoding import PoissonEncoder -from bindsnet.network import Network -from bindsnet.learning import PostPre -from bindsnet.network.monitors import Monitor -from bindsnet.network.nodes import DiehlAndCookNodes, Input -from bindsnet.network.topology import Conv2dConnection, Connection from bindsnet.analysis.plotting import ( + plot_conv2d_weights, plot_input, plot_spikes, - plot_conv2d_weights, plot_voltages, ) +from bindsnet.datasets import MNIST +from bindsnet.encoding import PoissonEncoder +from bindsnet.learning import PostPre +from bindsnet.network import Network +from bindsnet.network.monitors import Monitor +from bindsnet.network.nodes import DiehlAndCookNodes, Input +from bindsnet.network.topology import Connection, Conv2dConnection print() diff --git a/examples/mnist/eth_mnist.py b/examples/mnist/eth_mnist.py index c96aa90a..5dfd1bbe 100644 --- a/examples/mnist/eth_mnist.py +++ b/examples/mnist/eth_mnist.py @@ -1,29 +1,27 @@ -import os -import torch import argparse -import numpy as np -import matplotlib.pyplot as plt +import os +from time import time as t +import matplotlib.pyplot as plt +import numpy as np +import torch from torchvision import transforms from tqdm import tqdm -from time import time as t - -from bindsnet.datasets import MNIST -from bindsnet.encoding import PoissonEncoder -from bindsnet.models import DiehlAndCook2015 -from bindsnet.network.monitors import Monitor -from bindsnet.utils import get_square_weights, get_square_assignments -from bindsnet.evaluation import all_activity, proportion_weighting, assign_labels from bindsnet.analysis.plotting import ( - plot_input, - plot_spikes, - plot_weights, plot_assignments, + plot_input, plot_performance, + plot_spikes, plot_voltages, + plot_weights, ) - +from bindsnet.datasets import MNIST +from bindsnet.encoding import PoissonEncoder +from bindsnet.evaluation import all_activity, assign_labels, proportion_weighting +from bindsnet.models import DiehlAndCook2015 +from bindsnet.network.monitors import Monitor +from bindsnet.utils import get_square_assignments, get_square_weights parser = argparse.ArgumentParser() parser.add_argument("--seed", type=int, default=0) diff --git a/examples/mnist/reservoir.py b/examples/mnist/reservoir.py index 1370c0dd..69acdc83 100644 --- a/examples/mnist/reservoir.py +++ b/examples/mnist/reservoir.py @@ -1,10 +1,10 @@ +import argparse import os + +import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn -import argparse -import matplotlib.pyplot as plt - from torchvision import transforms from tqdm import tqdm @@ -17,15 +17,13 @@ from bindsnet.datasets import MNIST from bindsnet.encoding import PoissonEncoder from bindsnet.network import Network -from bindsnet.network.nodes import Input # Build a simple two-layer, input-output network. from bindsnet.network.monitors import Monitor -from bindsnet.network.nodes import LIFNodes +from bindsnet.network.nodes import Input, LIFNodes from bindsnet.network.topology import Connection from bindsnet.utils import get_square_weights - parser = argparse.ArgumentParser() parser.add_argument("--seed", type=int, default=0) parser.add_argument("--n_neurons", type=int, default=500) diff --git a/examples/mnist/supervised_mnist.py b/examples/mnist/supervised_mnist.py index 91cdee23..13a1745b 100644 --- a/examples/mnist/supervised_mnist.py +++ b/examples/mnist/supervised_mnist.py @@ -1,27 +1,26 @@ -import os -import torch -import numpy as np import argparse -import matplotlib.pyplot as plt +import os +import matplotlib.pyplot as plt +import numpy as np +import torch from torchvision import transforms from tqdm import tqdm - -from bindsnet.datasets import MNIST -from bindsnet.encoding import PoissonEncoder -from bindsnet.models import DiehlAndCook2015 -from bindsnet.network.monitors import Monitor -from bindsnet.utils import get_square_assignments, get_square_weights -from bindsnet.evaluation import all_activity, proportion_weighting, assign_labels from bindsnet.analysis.plotting import ( - plot_input, plot_assignments, + plot_input, plot_performance, - plot_weights, plot_spikes, plot_voltages, + plot_weights, ) +from bindsnet.datasets import MNIST +from bindsnet.encoding import PoissonEncoder +from bindsnet.evaluation import all_activity, assign_labels, proportion_weighting +from bindsnet.models import DiehlAndCook2015 +from bindsnet.network.monitors import Monitor +from bindsnet.utils import get_square_assignments, get_square_weights parser = argparse.ArgumentParser() parser.add_argument("--seed", type=int, default=0) diff --git a/examples/tensorboard/tensorboard.py b/examples/tensorboard/tensorboard.py index 39a5319a..127b1e52 100644 --- a/examples/tensorboard/tensorboard.py +++ b/examples/tensorboard/tensorboard.py @@ -1,20 +1,18 @@ -import os import argparse +import os +from time import time as t import torch from torchvision import transforms - -from time import time as t from tqdm import tqdm import bindsnet.datasets -from bindsnet.encoding import PoissonEncoder, NullEncoder - -from bindsnet.network import Network +from bindsnet.analysis.pipeline_analysis import MatplotlibAnalyzer, TensorboardAnalyzer +from bindsnet.encoding import NullEncoder, PoissonEncoder from bindsnet.learning import PostPre -from bindsnet.network.nodes import LIFNodes, Input -from bindsnet.network.topology import Conv2dConnection, Connection -from bindsnet.analysis.pipeline_analysis import TensorboardAnalyzer, MatplotlibAnalyzer +from bindsnet.network import Network +from bindsnet.network.nodes import Input, LIFNodes +from bindsnet.network.topology import Connection, Conv2dConnection parser = argparse.ArgumentParser() parser.add_argument( diff --git a/pyproject.toml b/pyproject.toml index f653cb58..c348725c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,10 @@ black = "^21.7b0" requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" +[tool.isort] +profile = "black" +line_length = 88 +src_paths = ["bindsnet", "test"] [tool.black] target-version = ['py37'] diff --git a/test/analysis/test_analyzers.py b/test/analysis/test_analyzers.py index ef0a6057..618ca061 100644 --- a/test/analysis/test_analyzers.py +++ b/test/analysis/test_analyzers.py @@ -1,9 +1,9 @@ -import torch - -from bindsnet.analysis.pipeline_analysis import TensorboardAnalyzer, MatplotlibAnalyzer +import os import matplotlib.pyplot as plt -import os +import torch + +from bindsnet.analysis.pipeline_analysis import MatplotlibAnalyzer, TensorboardAnalyzer class TestAnalyzer: diff --git a/test/encoding/test_encoding.py b/test/encoding/test_encoding.py index 4484fd39..f56ee8ce 100644 --- a/test/encoding/test_encoding.py +++ b/test/encoding/test_encoding.py @@ -1,7 +1,7 @@ -from bindsnet.encoding import * - import torch +from bindsnet.encoding import * + class TestEncodings: """ diff --git a/test/import/test_import.py b/test/import/test_import.py index 0a57d73d..e69de29b 100644 --- a/test/import/test_import.py +++ b/test/import/test_import.py @@ -1,25 +0,0 @@ -import bindsnet - -import bindsnet.analysis -import bindsnet.conversion -import bindsnet.datasets -import bindsnet.encoding -import bindsnet.environment -import bindsnet.learning -import bindsnet.models -import bindsnet.network -import bindsnet.pipeline -import bindsnet.preprocessing - -import bindsnet.utils - -from bindsnet.analysis import * -from bindsnet.conversion import * -from bindsnet.datasets import * -from bindsnet.encoding import * -from bindsnet.environment import * -from bindsnet.learning import * -from bindsnet.models import * -from bindsnet.network import * -from bindsnet.pipeline import * -from bindsnet.preprocessing import * diff --git a/test/models/test_models.py b/test/models/test_models.py index 55aca651..04ec584f 100644 --- a/test/models/test_models.py +++ b/test/models/test_models.py @@ -1,6 +1,6 @@ +from bindsnet.models import DiehlAndCook2015, TwoLayerNetwork +from bindsnet.network.nodes import DiehlAndCookNodes, Input, LIFNodes from bindsnet.network.topology import Connection -from bindsnet.models import TwoLayerNetwork, DiehlAndCook2015 -from bindsnet.network.nodes import Input, LIFNodes, DiehlAndCookNodes class TestTwoLayerNetwork: diff --git a/test/network/test_connections.py b/test/network/test_connections.py index 3d201435..fdbc2db8 100644 --- a/test/network/test_connections.py +++ b/test/network/test_connections.py @@ -1,19 +1,17 @@ import torch -from bindsnet.network import Network -from bindsnet.network.nodes import Input, LIFNodes, SRM0Nodes - -from bindsnet.network.topology import * - from bindsnet.learning import ( - Hebbian, - PostPre, - WeightDependentPostPre, MSTDP, MSTDPET, - Rmax, + Hebbian, NoOp, + PostPre, + Rmax, + WeightDependentPostPre, ) +from bindsnet.network import Network +from bindsnet.network.nodes import Input, LIFNodes, SRM0Nodes +from bindsnet.network.topology import * class TestConnection: diff --git a/test/network/test_learning.py b/test/network/test_learning.py index 47f96d0f..926b921a 100644 --- a/test/network/test_learning.py +++ b/test/network/test_learning.py @@ -1,16 +1,16 @@ import torch -from bindsnet.network import Network -from bindsnet.network.nodes import Input, LIFNodes, CSRMNodes, SRM0Nodes -from bindsnet.network.topology import Connection, Conv2dConnection from bindsnet.learning import ( - Hebbian, - PostPre, - WeightDependentPostPre, MSTDP, MSTDPET, + Hebbian, + PostPre, Rmax, + WeightDependentPostPre, ) +from bindsnet.network import Network +from bindsnet.network.nodes import CSRMNodes, Input, LIFNodes, SRM0Nodes +from bindsnet.network.topology import Connection, Conv2dConnection class TestLearningRules: diff --git a/test/network/test_monitors.py b/test/network/test_monitors.py index 031ca108..a2d194b5 100644 --- a/test/network/test_monitors.py +++ b/test/network/test_monitors.py @@ -2,7 +2,7 @@ from bindsnet.network import Network from bindsnet.network.monitors import Monitor, NetworkMonitor -from bindsnet.network.nodes import Input, IFNodes +from bindsnet.network.nodes import IFNodes, Input from bindsnet.network.topology import Connection diff --git a/test/network/test_network.py b/test/network/test_network.py index 5f957f49..c661a39c 100644 --- a/test/network/test_network.py +++ b/test/network/test_network.py @@ -1,9 +1,9 @@ import os +from bindsnet.network import Network, load from bindsnet.network.monitors import Monitor -from bindsnet.network.topology import Connection from bindsnet.network.nodes import Input, LIFNodes -from bindsnet.network import Network, load +from bindsnet.network.topology import Connection class TestNetwork: diff --git a/test/network/test_nodes.py b/test/network/test_nodes.py index cd54b737..da5e319b 100644 --- a/test/network/test_nodes.py +++ b/test/network/test_nodes.py @@ -2,12 +2,12 @@ from bindsnet.network import Network from bindsnet.network.nodes import ( - Nodes, - Input, - McCullochPitts, + AdaptiveLIFNodes, IFNodes, + Input, LIFNodes, - AdaptiveLIFNodes, + McCullochPitts, + Nodes, SRM0Nodes, ) diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..367d7d65 --- /dev/null +++ b/tox.ini @@ -0,0 +1,4 @@ +[flake8] +max-line-length = 88 +extend-ignore = E203, E501 +exclude = .eggs,.git,.hg,.mypy_cache,.pytest_cache,.tox,.venv,build,dist From 5f448a2eb19928c0a54eb7d09948f67eb4af2529 Mon Sep 17 00:00:00 2001 From: Daniel Gafni Date: Tue, 14 Sep 2021 12:26:11 +0300 Subject: [PATCH 2/2] add dependencies --- poetry.lock | 483 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 + 2 files changed, 243 insertions(+), 242 deletions(-) diff --git a/poetry.lock b/poetry.lock index 4c149be9..5811c372 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "anyio" -version = "3.3.0" +version = "3.3.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "dev" optional = false @@ -16,14 +16,6 @@ doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] trio = ["trio (>=0.16)"] -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "appnope" version = "0.1.2" @@ -48,19 +40,18 @@ test = ["coverage", "flake8", "pexpect", "wheel"] [[package]] name = "argon2-cffi" -version = "20.1.0" +version = "21.1.0" description = "The secure Argon2 password hashing algorithm." category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.5" [package.dependencies] cffi = ">=1.0.0" -six = "*" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "wheel", "pre-commit"] -docs = ["sphinx"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "furo", "wheel", "pre-commit"] +docs = ["sphinx", "furo"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] [[package]] @@ -85,6 +76,17 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"] tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"] +[[package]] +name = "autoflake" +version = "1.4" +description = "Removes unused imports and unused variables" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +pyflakes = ">=1.1.0" + [[package]] name = "babel" version = "2.9.1" @@ -121,25 +123,26 @@ testing = ["pytest (>=4.6)", "pytest-flake8", "pytest-cov", "pytest-black (>=0.3 [[package]] name = "black" -version = "21.7b0" +version = "21.9b0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.6.2" [package.dependencies] -appdirs = "*" click = ">=7.1.2" mypy-extensions = ">=0.4.3" -pathspec = ">=0.8.1,<1" +pathspec = ">=0.9.0,<1" +platformdirs = ">=2" regex = ">=2020.1.8" tomli = ">=0.2.6,<2.0.0" typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\""} -typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} +typing-extensions = ">=3.10.0.0" [package.extras] colorama = ["colorama (>=0.4.3)"] d = ["aiohttp (>=3.6.0)", "aiohttp-cors (>=0.4.0)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] python2 = ["typed-ast (>=1.4.2)"] uvloop = ["uvloop (>=0.15.2)"] @@ -235,7 +238,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "debugpy" -version = "1.4.1" +version = "1.4.3" description = "An implementation of the Debug Adapter Protocol for Python" category = "dev" optional = false @@ -243,7 +246,7 @@ python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" [[package]] name = "decorator" -version = "5.0.9" +version = "5.1.0" description = "Decorators for Humans" category = "dev" optional = false @@ -336,11 +339,11 @@ smmap = ">=3.0.1,<5" [[package]] name = "gitpython" -version = "3.1.20" -description = "Python Git Library" +version = "3.1.23" +description = "GitPython is a python library used to interact with Git repositories" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] gitdb = ">=4.0.1,<5" @@ -371,7 +374,7 @@ robotics = ["mujoco_py (>=1.50)", "imageio"] [[package]] name = "identify" -version = "2.2.13" +version = "2.2.14" description = "File identification library for Python" category = "dev" optional = false @@ -409,7 +412,7 @@ itk = ["itk"] [[package]] name = "importlib-metadata" -version = "4.7.1" +version = "4.8.1" description = "Read metadata from Python packages" category = "dev" optional = false @@ -434,7 +437,7 @@ python-versions = "*" [[package]] name = "ipykernel" -version = "6.2.0" +version = "6.4.1" description = "IPython Kernel for Jupyter" category = "dev" optional = false @@ -446,6 +449,7 @@ argcomplete = {version = ">=1.12.3", markers = "python_version < \"3.8.0\""} debugpy = ">=1.0.0,<2.0" importlib-metadata = {version = "<5", markers = "python_version < \"3.8.0\""} ipython = ">=7.23.1,<8.0" +ipython-genutils = "*" jupyter-client = "<8.0" matplotlib-inline = ">=0.1.0,<0.2.0" tornado = ">=4.2,<7.0" @@ -494,6 +498,20 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "isort" +version = "5.9.3" +description = "A Python utility / library to sort Python imports." +category = "dev" +optional = false +python-versions = ">=3.6.1,<4.0" + +[package.extras] +pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +requirements_deprecated_finder = ["pipreqs", "pip-api"] +colors = ["colorama (>=0.4.3,<0.5.0)"] +plugins = ["setuptools"] + [[package]] name = "jedi" version = "0.18.0" @@ -562,7 +580,7 @@ format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator [[package]] name = "jupyter-client" -version = "7.0.1" +version = "7.0.2" description = "Jupyter protocol implementation and client libraries" category = "dev" optional = false @@ -595,7 +613,7 @@ traitlets = "*" [[package]] name = "jupyter-server" -version = "1.10.2" +version = "1.11.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." category = "dev" optional = false @@ -624,7 +642,7 @@ test = ["coverage", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "requests", " [[package]] name = "jupyterlab" -version = "3.1.9" +version = "3.1.11" description = "JupyterLab computational environment" category = "dev" optional = false @@ -657,7 +675,7 @@ pygments = ">=2.4.1,<3" [[package]] name = "jupyterlab-server" -version = "2.7.2" +version = "2.8.1" description = "A set of server components for JupyterLab and JupyterLab like applications ." category = "dev" optional = false @@ -710,7 +728,7 @@ python-dateutil = ">=2.7" [[package]] name = "matplotlib-inline" -version = "0.1.2" +version = "0.1.3" description = "Inline Matplotlib backend for Jupyter" category = "dev" optional = false @@ -827,7 +845,7 @@ python-versions = ">=3.5" [[package]] name = "networkx" -version = "2.6.2" +version = "2.6.3" description = "Python package for creating and manipulating graphs and networks" category = "main" optional = false @@ -909,7 +927,7 @@ pyparsing = ">=2.0.2" [[package]] name = "pandas" -version = "1.3.2" +version = "1.3.3" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false @@ -925,7 +943,7 @@ test = ["hypothesis (>=3.58)", "pytest (>=6.0)", "pytest-xdist"] [[package]] name = "pandocfilters" -version = "1.4.3" +version = "1.5.0" description = "Utilities for writing pandoc filters in python" category = "dev" optional = false @@ -972,7 +990,7 @@ python-versions = "*" [[package]] name = "pillow" -version = "8.3.1" +version = "8.3.2" description = "Python Imaging Library (Fork)" category = "main" optional = false @@ -980,7 +998,7 @@ python-versions = ">=3.6" [[package]] name = "platformdirs" -version = "2.2.0" +version = "2.3.0" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false @@ -992,21 +1010,22 @@ test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock [[package]] name = "pluggy" -version = "0.13.1" +version = "1.0.0" description = "plugin and hook calling mechanisms for python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [package.dependencies] importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" -version = "2.14.0" +version = "2.15.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." category = "dev" optional = false @@ -1078,9 +1097,17 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "pyflakes" +version = "2.3.1" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "pyglet" -version = "1.5.19" +version = "1.5.20" description = "Cross-platform windowing and multimedia library" category = "main" optional = false @@ -1112,7 +1139,7 @@ python-versions = ">=3.6" [[package]] name = "pytest" -version = "6.2.4" +version = "6.2.5" description = "pytest: simple powerful testing with Python" category = "dev" optional = false @@ -1125,7 +1152,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<1.0.0a1" +pluggy = ">=0.12,<2.0" py = ">=1.8.2" toml = "*" @@ -1172,7 +1199,7 @@ python-versions = "*" [[package]] name = "pywinpty" -version = "1.1.3" +version = "1.1.4" description = "Pseudo terminal support for Windows from Python." category = "dev" optional = false @@ -1357,7 +1384,7 @@ protobuf = ">=3.8.0" [[package]] name = "terminado" -version = "0.11.1" +version = "0.12.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." category = "dev" optional = false @@ -1392,7 +1419,7 @@ python-versions = ">=3.6" [[package]] name = "tifffile" -version = "2021.8.8" +version = "2021.8.30" description = "Read and write TIFF files" category = "main" optional = false @@ -1473,15 +1500,12 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.0.5" +version = "5.1.0" description = "Traitlets Python configuration system" category = "dev" optional = false python-versions = ">=3.7" -[package.dependencies] -ipython-genutils = "*" - [package.extras] test = ["pytest"] @@ -1495,7 +1519,7 @@ python-versions = "*" [[package]] name = "typing-extensions" -version = "3.10.0.0" +version = "3.10.0.2" description = "Backported and Experimental Type Hints for Python 3.5+" category = "main" optional = false @@ -1577,16 +1601,12 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytes [metadata] lock-version = "1.1" python-versions = ">=3.7.10,<3.10" -content-hash = "652299dd01e0bceddab9e9a26faec454759f54abd5442e0d368e4d81cf1a0014" +content-hash = "edbb3789f4da700e7045de110890849bdc03d564cb21aa777afaac437b25fdc6" [metadata.files] anyio = [ - {file = "anyio-3.3.0-py3-none-any.whl", hash = "sha256:929a6852074397afe1d989002aa96d457e3e1e5441357c60d03e7eea0e65e1b0"}, - {file = "anyio-3.3.0.tar.gz", hash = "sha256:ae57a67583e5ff8b4af47666ff5651c3732d45fd26c929253748e796af860374"}, -] -appdirs = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, + {file = "anyio-3.3.1-py3-none-any.whl", hash = "sha256:d7c604dd491eca70e19c78664d685d5e4337612d574419d503e76f5d7d1590bd"}, + {file = "anyio-3.3.1.tar.gz", hash = "sha256:85913b4e2fec030e8c72a8f9f98092eeb9e25847a6e00d567751b77e34f856fe"}, ] appnope = [ {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"}, @@ -1597,28 +1617,17 @@ argcomplete = [ {file = "argcomplete-1.12.3.tar.gz", hash = "sha256:2c7dbffd8c045ea534921e63b0be6fe65e88599990d8dc408ac8c542b72a5445"}, ] argon2-cffi = [ - {file = "argon2-cffi-20.1.0.tar.gz", hash = "sha256:d8029b2d3e4b4cea770e9e5a0104dd8fa185c1724a0f01528ae4826a6d25f97d"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:6ea92c980586931a816d61e4faf6c192b4abce89aa767ff6581e6ddc985ed003"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:05a8ac07c7026542377e38389638a8a1e9b78f1cd8439cd7493b39f08dd75fbf"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-win32.whl", hash = "sha256:0bf066bc049332489bb2d75f69216416329d9dc65deee127152caeb16e5ce7d5"}, - {file = "argon2_cffi-20.1.0-cp27-cp27m-win_amd64.whl", hash = "sha256:57358570592c46c420300ec94f2ff3b32cbccd10d38bdc12dc6979c4a8484fbc"}, - {file = "argon2_cffi-20.1.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:7d455c802727710e9dfa69b74ccaab04568386ca17b0ad36350b622cd34606fe"}, - {file = "argon2_cffi-20.1.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:b160416adc0f012fb1f12588a5e6954889510f82f698e23ed4f4fa57f12a0647"}, - {file = "argon2_cffi-20.1.0-cp35-cp35m-win32.whl", hash = "sha256:9bee3212ba4f560af397b6d7146848c32a800652301843df06b9e8f68f0f7361"}, - {file = "argon2_cffi-20.1.0-cp35-cp35m-win_amd64.whl", hash = "sha256:392c3c2ef91d12da510cfb6f9bae52512a4552573a9e27600bdb800e05905d2b"}, - {file = "argon2_cffi-20.1.0-cp36-cp36m-win32.whl", hash = "sha256:ba7209b608945b889457f949cc04c8e762bed4fe3fec88ae9a6b7765ae82e496"}, - {file = "argon2_cffi-20.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:da7f0445b71db6d3a72462e04f36544b0de871289b0bc8a7cc87c0f5ec7079fa"}, - {file = "argon2_cffi-20.1.0-cp37-abi3-macosx_10_6_intel.whl", hash = "sha256:cc0e028b209a5483b6846053d5fd7165f460a1f14774d79e632e75e7ae64b82b"}, - {file = "argon2_cffi-20.1.0-cp37-cp37m-win32.whl", hash = "sha256:18dee20e25e4be86680b178b35ccfc5d495ebd5792cd00781548d50880fee5c5"}, - {file = "argon2_cffi-20.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6678bb047373f52bcff02db8afab0d2a77d83bde61cfecea7c5c62e2335cb203"}, - {file = "argon2_cffi-20.1.0-cp38-cp38-win32.whl", hash = "sha256:77e909cc756ef81d6abb60524d259d959bab384832f0c651ed7dcb6e5ccdbb78"}, - {file = "argon2_cffi-20.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:9dfd5197852530294ecb5795c97a823839258dfd5eb9420233c7cfedec2058f2"}, - {file = "argon2_cffi-20.1.0-cp39-cp39-win32.whl", hash = "sha256:e2db6e85c057c16d0bd3b4d2b04f270a7467c147381e8fd73cbbe5bc719832be"}, - {file = "argon2_cffi-20.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a84934bd818e14a17943de8099d41160da4a336bcc699bb4c394bbb9b94bd32"}, - {file = "argon2_cffi-20.1.0-pp36-pypy36_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b94042e5dcaa5d08cf104a54bfae614be502c6f44c9c89ad1535b2ebdaacbd4c"}, - {file = "argon2_cffi-20.1.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:8282b84ceb46b5b75c3a882b28856b8cd7e647ac71995e71b6705ec06fc232c3"}, - {file = "argon2_cffi-20.1.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3aa804c0e52f208973845e8b10c70d8957c9e5a666f702793256242e9167c4e0"}, - {file = "argon2_cffi-20.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:36320372133a003374ef4275fbfce78b7ab581440dfca9f9471be3dd9a522428"}, + {file = "argon2-cffi-21.1.0.tar.gz", hash = "sha256:f710b61103d1a1f692ca3ecbd1373e28aa5e545ac625ba067ff2feca1b2bb870"}, + {file = "argon2_cffi-21.1.0-cp35-abi3-macosx_10_14_x86_64.whl", hash = "sha256:217b4f0f853ccbbb5045242946ad2e162e396064575860141b71a85eb47e475a"}, + {file = "argon2_cffi-21.1.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fa7e7d1fc22514a32b1761fdfa1882b6baa5c36bb3ef557bdd69e6fc9ba14a41"}, + {file = "argon2_cffi-21.1.0-cp35-abi3-win32.whl", hash = "sha256:e4d8f0ae1524b7b0372a3e574a2561cbdddb3fdb6c28b70a72868189bda19659"}, + {file = "argon2_cffi-21.1.0-cp35-abi3-win_amd64.whl", hash = "sha256:65213a9174320a1aee03fe826596e0620783966b49eb636955958b3074e87ff9"}, + {file = "argon2_cffi-21.1.0-pp36-pypy36_pp73-macosx_10_7_x86_64.whl", hash = "sha256:245f64a203012b144b7b8c8ea6d468cb02b37caa5afee5ba4a10c80599334f6a"}, + {file = "argon2_cffi-21.1.0-pp36-pypy36_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4ad152c418f7eb640eac41ac815534e6aa61d1624530b8e7779114ecfbf327f8"}, + {file = "argon2_cffi-21.1.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:bc513db2283c385ea4da31a2cd039c33380701f376f4edd12fe56db118a3b21a"}, + {file = "argon2_cffi-21.1.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c7a7c8cc98ac418002090e4add5bebfff1b915ea1cb459c578cd8206fef10378"}, + {file = "argon2_cffi-21.1.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:165cadae5ac1e26644f5ade3bd9c18d89963be51d9ea8817bd671006d7909057"}, + {file = "argon2_cffi-21.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:566ffb581bbd9db5562327aee71b2eda24a1c15b23a356740abe3c011bbe0dcb"}, ] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, @@ -1628,6 +1637,9 @@ attrs = [ {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, ] +autoflake = [ + {file = "autoflake-1.4.tar.gz", hash = "sha256:61a353012cff6ab94ca062823d1fb2f692c4acda51c76ff83a8d77915fba51ea"}, +] babel = [ {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, @@ -1641,8 +1653,8 @@ backcall = [ {file = "backports.entry_points_selectable-1.1.0.tar.gz", hash = "sha256:988468260ec1c196dab6ae1149260e2f5472c9110334e5d51adcb77867361f6a"}, ] black = [ - {file = "black-21.7b0-py3-none-any.whl", hash = "sha256:1c7aa6ada8ee864db745b22790a32f94b2795c253a75d6d9b5e439ff10d23116"}, - {file = "black-21.7b0.tar.gz", hash = "sha256:c8373c6491de9362e39271630b65b964607bc5c79c83783547d76c839b3aa219"}, + {file = "black-21.9b0-py3-none-any.whl", hash = "sha256:380f1b5da05e5a1429225676655dddb96f5ae8c75bdf91e53d798871b902a115"}, + {file = "black-21.9b0.tar.gz", hash = "sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91"}, ] bleach = [ {file = "bleach-4.1.0-py2.py3-none-any.whl", hash = "sha256:4d2651ab93271d1129ac9cbc679f524565cc8a1b791909c4a51eac4446a15994"}, @@ -1761,66 +1773,28 @@ cython = [ {file = "Cython-0.29.24.tar.gz", hash = "sha256:cdf04d07c3600860e8c2ebaad4e8f52ac3feb212453c1764a49ac08c827e8443"}, ] debugpy = [ - {file = "debugpy-1.4.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:a2c5a1c49239707ed5bc8e97d8f9252fb392d9e13c79c7b477593d7dde4ae24a"}, - {file = "debugpy-1.4.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:ebc241351791595796864a960892e1cd58627064feda939d0377edd0730bbff2"}, - {file = "debugpy-1.4.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:939c94d516e6ed5433cc3ba12d9d0d8108499587158ae5f76f6db18d49e21b5b"}, - {file = "debugpy-1.4.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e47c42bc1a68ead3c39d9a658d3ccf311bc45dc84f3c90fa5cb7de1796243f47"}, - {file = "debugpy-1.4.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3756cd421be701d06490635372327ebd1ccb44b37d59682c994f6bd59e040a91"}, - {file = "debugpy-1.4.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:a4368c79a2c4458d5a0540381a32f8fdc02b3c9ba9dd413a49b42929297b29b3"}, - {file = "debugpy-1.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:c96e82d863db97d3eb498cc8e55773004724bdeaa58fb0eb7ee7d5a21d240d6a"}, - {file = "debugpy-1.4.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:71e67d352cabdc6a3f4dc3e39a1d2d1e76763a2102a276904e3495ede48a9832"}, - {file = "debugpy-1.4.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:959d39f3d724d25b7ab79278f032e33df03c6376d51b3517abaf2f8e83594ee0"}, - {file = "debugpy-1.4.1-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:9d559bd0e4c288487349e0723bc70ff06390638446ee8087d4d5711486119643"}, - {file = "debugpy-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7376bd8f4272ab01342940bd020955f021e26954e1f0df91cfa8bf1fa4451b56"}, - {file = "debugpy-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:dea62527a4a2770a0d12ce46564636d892bba29baaf5dba5bfe98bb55bf17a11"}, - {file = "debugpy-1.4.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:12cb415e7394c6738527cbc482935aa9414e9b4cc87dd040015d0e5cb8b4471a"}, - {file = "debugpy-1.4.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3a6dee475102d0169732162b735878e8787500719ccb4d54b1458afe992a4c4d"}, - {file = "debugpy-1.4.1-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:7e12e94aa2c9a0017c0a84cd475063108d06e305360b69c933bde17a6a527f80"}, - {file = "debugpy-1.4.1-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:2bfda2721046fb43a7074d475a12adcd55a65bfd23a1ff675427b09a01ba40cc"}, - {file = "debugpy-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:732ac8bb79694cb4127c08bfc6128274f3dee9e6fd2ddde7bf026a40efeb202d"}, - {file = "debugpy-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:bad668e9edb21199017ab31f52a05e14506ad6566110560796d2a8f258e0b819"}, - {file = "debugpy-1.4.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:cd36e75c0f71a924f4b4cdb5f74b3321952cf636aadf70e0f85fd9cd2edfc1d0"}, - {file = "debugpy-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:eee2224ce547d2958ffc0d63cd280a9cc6377043f32ce370cfe4ca6be4e05476"}, - {file = "debugpy-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e6711106aafc26ecb78e43c4be0a49bd0ae4a1f3e1aa502de151e38f4717b2a2"}, - {file = "debugpy-1.4.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:768f393ffaa66a3b3ed92b06e21912a5df3e01f18fb531bcbba2f94cad1725a7"}, - {file = "debugpy-1.4.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ab37f189b1dd0d8420545c9f3d066bd1601a1ae85b26de38f5c1ccb96cf0b042"}, - {file = "debugpy-1.4.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:00f9d14da52b87e98e26f5c3c8f1937cc496915b38f8ccb7b329336b21898678"}, - {file = "debugpy-1.4.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:1bc8e835a48ef23280cbaf2b70a5a2b629b9ee79685b64d974bfb8d467f4aa67"}, - {file = "debugpy-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:309909b6c85f89aea3fa10fc256b52fef3c25fee4d00e1b5f5db1ace57203a2c"}, - {file = "debugpy-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:67d496890d1cada5ce924cb30178684e7b82a36b80b8868beb148db54fd9e44c"}, - {file = "debugpy-1.4.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:595170ac17567773b546d40a0ff002dc350cfcd95c9233f65e79370954fb9a01"}, - {file = "debugpy-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c5e771fcd12727f734caf2a10ff92966ae9857db0ccb6bebd1a4f776c54186a8"}, - {file = "debugpy-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2d4c4ab934fbe1c7095d19b3d4246afe119396b49540ca5d5ad34ef01b27bd2a"}, - {file = "debugpy-1.4.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:4655824321b36b353b12d1617a29c79320412f085ecabf54524603b4c0c791e8"}, - {file = "debugpy-1.4.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:399b2c60c8e67a5d30c6e4522129e8be8d484e6064286f8ba3ce857a3927312a"}, - {file = "debugpy-1.4.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:8e63585c372873cd88c2380c0b3c4815c724a9713f5b86d1b3a1f1ac30df079e"}, - {file = "debugpy-1.4.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:52920ccb4acdbb2a9a42e0a4d60a7bbc4a34bf16fd23c674b280f8e9a8cacbd6"}, - {file = "debugpy-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:7b332ce0d1a46f0f4200d59ee78428f18301d1fb85d07402723b94e1de96951c"}, - {file = "debugpy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a19def91a0a166877c2a26b611c1ad0473ce85b1df61ae5276197375d574228b"}, - {file = "debugpy-1.4.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9a0cd73d7a76222fbc9f9180612ccb4ad7d7f7e4f26e55ef1fbd459c0f2f5322"}, - {file = "debugpy-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:86cd13162b752664e8ef048287a6973c8fba0a71f396b31cf36394880ec2a6bf"}, - {file = "debugpy-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:89d53d57001e54a3854489e898c697aafb2d6bb81fca596da2400f3fd7fd397c"}, - {file = "debugpy-1.4.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:7b4e399790a301c83ad6b153452233695b2f15450d78956a6d297859eb44d185"}, - {file = "debugpy-1.4.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:fece69933d17e0918b73ddeb5e23bcf789edd2a6eb0d438b09c40d51e76b9c74"}, - {file = "debugpy-1.4.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:4e0d57a8c35b20b4e363db943b909aa83f12594e2f34070a1db5fa9b7213336b"}, - {file = "debugpy-1.4.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:f77406f33760e6f13a7ff0ac375d9c8856844b61cd95f7502b57116858f0cfe1"}, - {file = "debugpy-1.4.1-cp38-cp38-win32.whl", hash = "sha256:3d92cb2e8b4f9591f6d6e17ccf8c1a55a58857949d9a5aae0ff37b64faaa3b80"}, - {file = "debugpy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:ac2d1cdd3279806dab2119937c0769f11dee13166650aaa84b6700b30a845d10"}, - {file = "debugpy-1.4.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:e7e049a4e8e362183a5a5b4ad058a1543211970819d0c11011c87c3a9dec2eaf"}, - {file = "debugpy-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:cf6b26f26f97ef3033008db7b3df7233363407d7b6cacd4bc4f8e02ce8e11df4"}, - {file = "debugpy-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:8a2be4e5d696ad39be6c6c37dc580993d04aad7d893fd6e449e1a055d7b5dddb"}, - {file = "debugpy-1.4.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:d89ab3bd51d6a3f13b093bc3881a827d8f6c9588d9a493bddb3b47f9d078fd1d"}, - {file = "debugpy-1.4.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f20a07ac5fb0deee9be1ad1a9a124d858a8b79c66c7ec5e1767d78aa964f86c4"}, - {file = "debugpy-1.4.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:6bb62615b3ad3d7202b7b7eb85f3d000aa17a61303af5f11eab048c91a1f30a6"}, - {file = "debugpy-1.4.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:a9f582203af34c6978bffaba77425662e949251998276e9dece113862e753459"}, - {file = "debugpy-1.4.1-cp39-cp39-win32.whl", hash = "sha256:129312b01ec46ab303a8c0667d559a0de0bed1a394cc128039b6f008f1c376b7"}, - {file = "debugpy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:1762908202b0b0b481ec44125edb625d136d16c4991d3a7c1310c85672ffe5ba"}, - {file = "debugpy-1.4.1-py2.py3-none-any.whl", hash = "sha256:84ff51b8b5c847d5421324ca419db1eec813a4dd2bbf19dbbbe132e2ab2b2fc6"}, - {file = "debugpy-1.4.1.zip", hash = "sha256:889316de0b8ff3732927cb058cfbd3371e4cd0002ecc170d34c755ad289c867c"}, + {file = "debugpy-1.4.3-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:88b17d7c2130968f75bdc706a33f46a8a6bb90f09512ea3bd984659d446ee4f4"}, + {file = "debugpy-1.4.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ded60b402f83df46dee3f25ae5851809937176afdafd3fdbaab60b633b77cad"}, + {file = "debugpy-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:c0fd1a66e104752f86ca2faa6a0194dae61442a768f85369fc3d11bacff8120f"}, + {file = "debugpy-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f907941ad7a460646773eb3baae4c88836e9256b390dfbfae8d92a3d3b849a7d"}, + {file = "debugpy-1.4.3-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:135a77ac1a8f6ea49a69928f088967d36842bc492d89b45941c6b19222cffa42"}, + {file = "debugpy-1.4.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f3dcc294f3b4d79fdd7ffe1350d5d1e3cc29acaec67dd1c43143a43305bbbc91"}, + {file = "debugpy-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:c3d7db37b7eb234e49f50ba22b3b1637e8daadd68985d9cd35a6152aa10faa75"}, + {file = "debugpy-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:dbda8f877c3dec1559c01c63a1de63969e51a4907dc308f4824238bb776026fe"}, + {file = "debugpy-1.4.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:7c15014290150b76f0311debf7fbba2e934680572ea60750b0f048143e873b3e"}, + {file = "debugpy-1.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d488356cc66172f1ea29635fd148ad131f13fad0e368ae03cc5c0a402372756"}, + {file = "debugpy-1.4.3-cp38-cp38-win32.whl", hash = "sha256:7e7210a3721fc54b52d8dc2f325e7c937ffcbba02b808e2e3215dcbf0c0b8349"}, + {file = "debugpy-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:3e4de96c70f3398abd1777f048b47564d98a40df1f72d33b47ef5b9478e07206"}, + {file = "debugpy-1.4.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:2019ffcd08d7e643c644cd64bee0fd53c730cb8f15ff37e6a320b5afd3785bfa"}, + {file = "debugpy-1.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:847926f78c1e33f7318a743837adb6a9b360a825b558fd21f9240ba518fe1bb1"}, + {file = "debugpy-1.4.3-cp39-cp39-win32.whl", hash = "sha256:c9665e58b80d839ae1b0815341c63d00cae557c018f198c0b6b7bc5de9eca144"}, + {file = "debugpy-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:ab3f33499c597a2ce454b81088e7f9d56127686e003c4f7a1c97ad4b38a55404"}, + {file = "debugpy-1.4.3-py2.py3-none-any.whl", hash = "sha256:0c523fcbb6fb395403ee8508853767b74949335d5cdacc9f83d350670c2c0db2"}, + {file = "debugpy-1.4.3.zip", hash = "sha256:4d53fe5aecf03ba466aa7fa7474c2b2fe28b2a6c0d36688d1e29382bfe88dd5f"}, ] decorator = [ - {file = "decorator-5.0.9-py3-none-any.whl", hash = "sha256:6e5c199c16f7a9f0e3a61a4a54b3d27e7dad0dbdde92b944426cb20914376323"}, - {file = "decorator-5.0.9.tar.gz", hash = "sha256:72ecfba4320a893c53f9706bebb2d55c270c1e51a28789361aa93e4a21319ed5"}, + {file = "decorator-5.1.0-py3-none-any.whl", hash = "sha256:7b12e7c3c6ab203a29e157335e9122cb03de9ab7264b137594103fd4a683b374"}, + {file = "decorator-5.1.0.tar.gz", hash = "sha256:e59913af105b9860aa2c8d3272d9de5a56a4e608db9a2f167a8480b323d529a7"}, ] defusedxml = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, @@ -1855,15 +1829,15 @@ gitdb = [ {file = "gitdb-4.0.7.tar.gz", hash = "sha256:96bf5c08b157a666fec41129e6d327235284cca4c81e92109260f353ba138005"}, ] gitpython = [ - {file = "GitPython-3.1.20-py3-none-any.whl", hash = "sha256:b1e1c269deab1b08ce65403cf14e10d2ef1f6c89e33ea7c5e5bb0222ea593b8a"}, - {file = "GitPython-3.1.20.tar.gz", hash = "sha256:df0e072a200703a65387b0cfdf0466e3bab729c0458cf6b7349d0e9877636519"}, + {file = "GitPython-3.1.23-py3-none-any.whl", hash = "sha256:de2e2aff068097b23d6dca5daf588078fd8996a4218f6ffa704a662c2b54f9ac"}, + {file = "GitPython-3.1.23.tar.gz", hash = "sha256:aaae7a3bfdf0a6db30dc1f3aeae47b71cd326d86b936fe2e158aa925fdf1471c"}, ] gym = [ {file = "gym-0.10.11.tar.gz", hash = "sha256:69f8281e250cf3d841e725a024aa8277706a9387e8739e57f5d6f4b18eb51a2d"}, ] identify = [ - {file = "identify-2.2.13-py2.py3-none-any.whl", hash = "sha256:7199679b5be13a6b40e6e19ea473e789b11b4e3b60986499b1f589ffb03c217c"}, - {file = "identify-2.2.13.tar.gz", hash = "sha256:7bc6e829392bd017236531963d2d937d66fc27cadc643ac0aba2ce9f26157c79"}, + {file = "identify-2.2.14-py2.py3-none-any.whl", hash = "sha256:113a76a6ba614d2a3dd408b3504446bcfac0370da5995aa6a17fd7c6dffde02d"}, + {file = "identify-2.2.14.tar.gz", hash = "sha256:32f465f3c48083f345ad29a9df8419a4ce0674bf4a8c3245191d65c83634bdbf"}, ] idna = [ {file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"}, @@ -1874,16 +1848,16 @@ imageio = [ {file = "imageio-2.9.0.tar.gz", hash = "sha256:52ddbaeca2dccf53ba2d6dec5676ca7bc3b2403ef8b37f7da78b7654bb3e10f0"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.7.1-py3-none-any.whl", hash = "sha256:9e04bf59076a15a9b6dd9c27806e8fcdf15280ba529c6a8cc3f4d5b4875bdd61"}, - {file = "importlib_metadata-4.7.1.tar.gz", hash = "sha256:c4eb3dec5f697682e383a39701a7de11cd5c02daf8dd93534b69e3e6473f6b1b"}, + {file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"}, + {file = "importlib_metadata-4.8.1.tar.gz", hash = "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] ipykernel = [ - {file = "ipykernel-6.2.0-py3-none-any.whl", hash = "sha256:35cc31accec420e90c4b66ea7f4e7b067c769e31af3502e45326c6f1294d238d"}, - {file = "ipykernel-6.2.0.tar.gz", hash = "sha256:4439459f171d77f35b7f7e72dace5d7c2dd10a5c9e2c22b173ad9048fbfe7656"}, + {file = "ipykernel-6.4.1-py3-none-any.whl", hash = "sha256:a3f6c2dda2ecf63b37446808a70ed825fea04790779ca524889c596deae0def8"}, + {file = "ipykernel-6.4.1.tar.gz", hash = "sha256:df3355e5eec23126bc89767a676c5f0abfc7f4c3497d118c592b83b316e8c0cd"}, ] ipython = [ {file = "ipython-7.27.0-py3-none-any.whl", hash = "sha256:75b5e060a3417cf64f138e0bb78e58512742c57dc29db5a5058a2b1f0c10df02"}, @@ -1893,6 +1867,10 @@ ipython-genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, ] +isort = [ + {file = "isort-5.9.3-py3-none-any.whl", hash = "sha256:e17d6e2b81095c9db0a03a8025a957f334d6ea30b26f9ec70805411e5c7c81f2"}, + {file = "isort-5.9.3.tar.gz", hash = "sha256:9c2ea1e62d871267b78307fe511c0838ba0da28698c5732d54e2790bf3ba9899"}, +] jedi = [ {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"}, {file = "jedi-0.18.0.tar.gz", hash = "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707"}, @@ -1914,28 +1892,28 @@ jsonschema = [ {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"}, ] jupyter-client = [ - {file = "jupyter_client-7.0.1-py3-none-any.whl", hash = "sha256:07b9566979546004c089afe7c9bf9e96224ec5f8421fe0ae460759fa593c6b1d"}, - {file = "jupyter_client-7.0.1.tar.gz", hash = "sha256:48822a93d9d75daa5fde235c35cf7a92fc979384735962501d4eb60b197fb43a"}, + {file = "jupyter_client-7.0.2-py3-none-any.whl", hash = "sha256:37a30c13d3655b819add61c830594090af7fca40cd2d74f41cad9e2e12118501"}, + {file = "jupyter_client-7.0.2.tar.gz", hash = "sha256:0c6cabd07e003a2e9692394bf1ae794188ad17d2e250ed747232d7a473aa772c"}, ] jupyter-core = [ {file = "jupyter_core-4.7.1-py3-none-any.whl", hash = "sha256:8c6c0cac5c1b563622ad49321d5ec47017bd18b94facb381c6973a0486395f8e"}, {file = "jupyter_core-4.7.1.tar.gz", hash = "sha256:79025cb3225efcd36847d0840f3fc672c0abd7afd0de83ba8a1d3837619122b4"}, ] jupyter-server = [ - {file = "jupyter_server-1.10.2-py3-none-any.whl", hash = "sha256:491c920013144a2d6f5286ab4038df6a081b32352c9c8b928ec8af17eb2a5e10"}, - {file = "jupyter_server-1.10.2.tar.gz", hash = "sha256:d3a3b68ebc6d7bfee1097f1712cf7709ee39c92379da2cc08724515bb85e72bf"}, + {file = "jupyter_server-1.11.0-py3-none-any.whl", hash = "sha256:827c134da7a9e09136c2dc2fd16743350970105247f085abfc6ce0432d0c979e"}, + {file = "jupyter_server-1.11.0.tar.gz", hash = "sha256:8ab4f484a4a2698f757cff0769d27b5d991e0232a666d54f4d6ada4e6a61330b"}, ] jupyterlab = [ - {file = "jupyterlab-3.1.9-py3-none-any.whl", hash = "sha256:370545a6a33eb50db3f60bdd5e46ca690b2a7fb09145a5df0fc00dd0a40d06d2"}, - {file = "jupyterlab-3.1.9.tar.gz", hash = "sha256:007e42f833e59fd36872d459e45be243d899edbd0e4a98d21388632e4e0d8af7"}, + {file = "jupyterlab-3.1.11-py3-none-any.whl", hash = "sha256:a2117c159baae40db09c34edf0659df5ff767d0ffc7ae2d74ab0b08d5663156b"}, + {file = "jupyterlab-3.1.11.tar.gz", hash = "sha256:329b41d6d99bf4e40ab210b37387d32033ea9227e776aa1baf7817bf55423156"}, ] jupyterlab-pygments = [ {file = "jupyterlab_pygments-0.1.2-py2.py3-none-any.whl", hash = "sha256:abfb880fd1561987efaefcb2d2ac75145d2a5d0139b1876d5be806e32f630008"}, {file = "jupyterlab_pygments-0.1.2.tar.gz", hash = "sha256:cfcda0873626150932f438eccf0f8bf22bfa92345b814890ab360d666b254146"}, ] jupyterlab-server = [ - {file = "jupyterlab_server-2.7.2-py3-none-any.whl", hash = "sha256:4832cb513f969087019dc913e59a430325670a69f2693733e8f1e16a1773be85"}, - {file = "jupyterlab_server-2.7.2.tar.gz", hash = "sha256:c6c9ae5796ed60c65bccd84503cbd44b9e35b046b8265f24db3cc4d61631fc0d"}, + {file = "jupyterlab_server-2.8.1-py3-none-any.whl", hash = "sha256:bfbfbf9886c7fae60d238d458b0eff409528aa286731f01ad1308793e8b5b209"}, + {file = "jupyterlab_server-2.8.1.tar.gz", hash = "sha256:39fd519e9b3275873bd15de891363c28f2649814f7bbc11c57469c60e8408e97"}, ] kiwisolver = [ {file = "kiwisolver-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1d819553730d3c2724582124aee8a03c846ec4362ded1034c16fb3ef309264e6"}, @@ -2043,8 +2021,8 @@ matplotlib = [ {file = "matplotlib-3.4.3.tar.gz", hash = "sha256:fc4f526dfdb31c9bd6b8ca06bf9fab663ca12f3ec9cdf4496fb44bc680140318"}, ] matplotlib-inline = [ - {file = "matplotlib-inline-0.1.2.tar.gz", hash = "sha256:f41d5ff73c9f5385775d5c0bc13b424535c8402fe70ea8210f93e11f3683993e"}, - {file = "matplotlib_inline-0.1.2-py3-none-any.whl", hash = "sha256:5cf1176f554abb4fa98cb362aa2b55c500147e4bdbb07e3fda359143e1da0811"}, + {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"}, + {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"}, ] mistune = [ {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, @@ -2075,8 +2053,8 @@ nest-asyncio = [ {file = "nest_asyncio-1.5.1.tar.gz", hash = "sha256:afc5a1c515210a23c461932765691ad39e8eba6551c055ac8d5546e69250d0aa"}, ] networkx = [ - {file = "networkx-2.6.2-py3-none-any.whl", hash = "sha256:5fcb7004be69e8fbdf07dcb502efa5c77cadcaad6982164134eeb9721f826c2e"}, - {file = "networkx-2.6.2.tar.gz", hash = "sha256:2306f1950ce772c5a59a57f5486d59bb9cab98497c45fc49cbc45ac0dec119bb"}, + {file = "networkx-2.6.3-py3-none-any.whl", hash = "sha256:80b6b89c77d1dfb64a4c7854981b60aeea6360ac02c6d4e4913319e0a313abef"}, + {file = "networkx-2.6.3.tar.gz", hash = "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"}, ] nodeenv = [ {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"}, @@ -2149,28 +2127,31 @@ packaging = [ {file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"}, ] pandas = [ - {file = "pandas-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ba7ceb8abc6dbdb1e34612d1173d61e4941f1a1eb7e6f703b2633134ae6a6c89"}, - {file = "pandas-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb71b1935249de80e3a808227189eee381d4d74a31760ced2df21eedc92a8e3"}, - {file = "pandas-1.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa54dc1d3e5d004a09ab0b1751473698011ddf03e14f1f59b84ad9a6ac630975"}, - {file = "pandas-1.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34ced9ce5d5b17b556486da7256961b55b471d64a8990b56e67a84ebeb259416"}, - {file = "pandas-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:a56246de744baf646d1f3e050c4653d632bc9cd2e0605f41051fea59980e880a"}, - {file = "pandas-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:53b17e4debba26b7446b1e4795c19f94f0c715e288e08145e44bdd2865e819b3"}, - {file = "pandas-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f07a9745ca075ae73a5ce116f5e58f691c0dc9de0bff163527858459df5c176f"}, - {file = "pandas-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9e8e0ce5284ebebe110efd652c164ed6eab77f5de4c3533abc756302ee77765"}, - {file = "pandas-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59a78d7066d1c921a77e3306aa0ebf6e55396c097d5dfcc4df8defe3dcecb735"}, - {file = "pandas-1.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:132def05e73d292c949b02e7ef873debb77acc44a8b119d215921046f0c3a91d"}, - {file = "pandas-1.3.2-cp38-cp38-win32.whl", hash = "sha256:69e1b2f5811f46827722fd641fdaeedb26002bd1e504eacc7a8ec36bdc25393e"}, - {file = "pandas-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:7996d311413379136baf0f3cf2a10e331697657c87ced3f17ac7c77f77fe34a3"}, - {file = "pandas-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1738154049062156429a5cf2fd79a69c9f3fa4f231346a7ec6fd156cd1a9a621"}, - {file = "pandas-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cce01f6d655b4add966fcd36c32c5d1fe84628e200626b3f5e2f40db2d16a0f"}, - {file = "pandas-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1099e2a0cd3a01ec62cca183fc1555833a2d43764950ef8cb5948c8abfc51014"}, - {file = "pandas-1.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0cd5776be891331a3e6b425b5abeab9596abea18435c5982191356f9b24ae731"}, - {file = "pandas-1.3.2-cp39-cp39-win32.whl", hash = "sha256:66a95361b81b4ba04b699ecd2416b0591f40cd1e24c60a8bfe0d19009cfa575a"}, - {file = "pandas-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:89f40e5d21814192802421df809f948247d39ffe171e45fe2ab4abf7bd4279d8"}, - {file = "pandas-1.3.2.tar.gz", hash = "sha256:cbcb84d63867af3411fa063af3de64902665bb5b3d40b25b2059e40603594e87"}, + {file = "pandas-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68408a39a54ebadb9014ee5a4fae27b2fe524317bc80adf56c9ac59e8f8ea431"}, + {file = "pandas-1.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86b16b1b920c4cb27fdd65a2c20258bcd9c794be491290660722bb0ea765054d"}, + {file = "pandas-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:37d63e78e87eb3791da7be4100a65da0383670c2b59e493d9e73098d7a879226"}, + {file = "pandas-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e2fb11f86f6253bb1df26e3aeab3bf2e000aaa32a953ec394571bec5dc6fd6"}, + {file = "pandas-1.3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7326b37de08d42dd3fff5b7ef7691d0fd0bf2428f4ba5a2bdc3b3247e9a52e4c"}, + {file = "pandas-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2f29b4da6f6ae7c68f4b3708d9d9e59fa89b2f9e87c2b64ce055cbd39f729e"}, + {file = "pandas-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:3f5020613c1d8e304840c34aeb171377dc755521bf5e69804991030c2a48aec3"}, + {file = "pandas-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c399200631db9bd9335d013ec7fce4edb98651035c249d532945c78ad453f23a"}, + {file = "pandas-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a800df4e101b721e94d04c355e611863cc31887f24c0b019572e26518cbbcab6"}, + {file = "pandas-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3334a5a9eeaca953b9db1b2b165dcdc5180b5011f3bec3a57a3580c9c22eae68"}, + {file = "pandas-1.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49fd2889d8116d7acef0709e4c82b8560a8b22b0f77471391d12c27596e90267"}, + {file = "pandas-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7557b39c8e86eb0543a17a002ac1ea0f38911c3c17095bc9350d0a65b32d801c"}, + {file = "pandas-1.3.3-cp38-cp38-win32.whl", hash = "sha256:629138b7cf81a2e55aa29ce7b04c1cece20485271d1f6c469c6a0c03857db6a4"}, + {file = "pandas-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:45649503e167d45360aa7c52f18d1591a6d5c70d2f3a26bc90a3297a30ce9a66"}, + {file = "pandas-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ebbed7312547a924df0cbe133ff1250eeb94cdff3c09a794dc991c5621c8c735"}, + {file = "pandas-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f1b54d7efc9df05320b14a48fb18686f781aa66cc7b47bb62fabfc67a0985c"}, + {file = "pandas-1.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9bc59855598cb57f68fdabd4897d3ed2bc3a3b3bef7b868a0153c4cd03f3207"}, + {file = "pandas-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4def2ef2fb7fcd62f2aa51bacb817ee9029e5c8efe42fe527ba21f6a3ddf1a9f"}, + {file = "pandas-1.3.3-cp39-cp39-win32.whl", hash = "sha256:f7d84f321674c2f0f31887ee6d5755c54ca1ea5e144d6d54b3bbf566dd9ea0cc"}, + {file = "pandas-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:e574c2637c9d27f322e911650b36e858c885702c5996eda8a5a60e35e6648cf2"}, + {file = "pandas-1.3.3.tar.gz", hash = "sha256:272c8cb14aa9793eada6b1ebe81994616e647b5892a370c7135efb2924b701df"}, ] pandocfilters = [ - {file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"}, + {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, + {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, ] parso = [ {file = "parso-0.8.2-py2.py3-none-any.whl", hash = "sha256:a8c4922db71e4fdb90e0d0bc6e50f9b273d3397925e5e60a717e719201778d22"}, @@ -2189,57 +2170,71 @@ pickleshare = [ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] pillow = [ - {file = "Pillow-8.3.1-1-cp36-cp36m-win_amd64.whl", hash = "sha256:fd7eef578f5b2200d066db1b50c4aa66410786201669fb76d5238b007918fb24"}, - {file = "Pillow-8.3.1-1-cp37-cp37m-win_amd64.whl", hash = "sha256:75e09042a3b39e0ea61ce37e941221313d51a9c26b8e54e12b3ececccb71718a"}, - {file = "Pillow-8.3.1-1-cp38-cp38-win_amd64.whl", hash = "sha256:c0e0550a404c69aab1e04ae89cca3e2a042b56ab043f7f729d984bf73ed2a093"}, - {file = "Pillow-8.3.1-1-cp39-cp39-win_amd64.whl", hash = "sha256:479ab11cbd69612acefa8286481f65c5dece2002ffaa4f9db62682379ca3bb77"}, - {file = "Pillow-8.3.1-1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f156d6ecfc747ee111c167f8faf5f4953761b5e66e91a4e6767e548d0f80129c"}, - {file = "Pillow-8.3.1-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:196560dba4da7a72c5e7085fccc5938ab4075fd37fe8b5468869724109812edd"}, - {file = "Pillow-8.3.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c9569049d04aaacd690573a0398dbd8e0bf0255684fee512b413c2142ab723"}, - {file = "Pillow-8.3.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c088a000dfdd88c184cc7271bfac8c5b82d9efa8637cd2b68183771e3cf56f04"}, - {file = "Pillow-8.3.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fc214a6b75d2e0ea7745488da7da3c381f41790812988c7a92345978414fad37"}, - {file = "Pillow-8.3.1-cp36-cp36m-win32.whl", hash = "sha256:a17ca41f45cf78c2216ebfab03add7cc350c305c38ff34ef4eef66b7d76c5229"}, - {file = "Pillow-8.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:67b3666b544b953a2777cb3f5a922e991be73ab32635666ee72e05876b8a92de"}, - {file = "Pillow-8.3.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:ff04c373477723430dce2e9d024c708a047d44cf17166bf16e604b379bf0ca14"}, - {file = "Pillow-8.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9364c81b252d8348e9cc0cb63e856b8f7c1b340caba6ee7a7a65c968312f7dab"}, - {file = "Pillow-8.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a2f381932dca2cf775811a008aa3027671ace723b7a38838045b1aee8669fdcf"}, - {file = "Pillow-8.3.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d0da39795049a9afcaadec532e7b669b5ebbb2a9134576ebcc15dd5bdae33cc0"}, - {file = "Pillow-8.3.1-cp37-cp37m-win32.whl", hash = "sha256:2b6dfa068a8b6137da34a4936f5a816aba0ecc967af2feeb32c4393ddd671cba"}, - {file = "Pillow-8.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a4eef1ff2d62676deabf076f963eda4da34b51bc0517c70239fafed1d5b51500"}, - {file = "Pillow-8.3.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:660a87085925c61a0dcc80efb967512ac34dbb256ff7dd2b9b4ee8dbdab58cf4"}, - {file = "Pillow-8.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:15a2808e269a1cf2131930183dcc0419bc77bb73eb54285dde2706ac9939fa8e"}, - {file = "Pillow-8.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:969cc558cca859cadf24f890fc009e1bce7d7d0386ba7c0478641a60199adf79"}, - {file = "Pillow-8.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ee77c14a0299d0541d26f3d8500bb57e081233e3fa915fa35abd02c51fa7fae"}, - {file = "Pillow-8.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c11003197f908878164f0e6da15fce22373ac3fc320cda8c9d16e6bba105b844"}, - {file = "Pillow-8.3.1-cp38-cp38-win32.whl", hash = "sha256:3f08bd8d785204149b5b33e3b5f0ebbfe2190ea58d1a051c578e29e39bfd2367"}, - {file = "Pillow-8.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:70af7d222df0ff81a2da601fab42decb009dc721545ed78549cb96e3a1c5f0c8"}, - {file = "Pillow-8.3.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:37730f6e68bdc6a3f02d2079c34c532330d206429f3cee651aab6b66839a9f0e"}, - {file = "Pillow-8.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bc3c7ef940eeb200ca65bd83005eb3aae8083d47e8fcbf5f0943baa50726856"}, - {file = "Pillow-8.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c35d09db702f4185ba22bb33ef1751ad49c266534339a5cebeb5159d364f6f82"}, - {file = "Pillow-8.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b2efa07f69dc395d95bb9ef3299f4ca29bcb2157dc615bae0b42c3c20668ffc"}, - {file = "Pillow-8.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cc866706d56bd3a7dbf8bac8660c6f6462f2f2b8a49add2ba617bc0c54473d83"}, - {file = "Pillow-8.3.1-cp39-cp39-win32.whl", hash = "sha256:9a211b663cf2314edbdb4cf897beeb5c9ee3810d1d53f0e423f06d6ebbf9cd5d"}, - {file = "Pillow-8.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:c2a5ff58751670292b406b9f06e07ed1446a4b13ffced6b6cab75b857485cbc8"}, - {file = "Pillow-8.3.1-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c379425c2707078dfb6bfad2430728831d399dc95a7deeb92015eb4c92345eaf"}, - {file = "Pillow-8.3.1-pp36-pypy36_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:114f816e4f73f9ec06997b2fde81a92cbf0777c9e8f462005550eed6bae57e63"}, - {file = "Pillow-8.3.1-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8960a8a9f4598974e4c2aeb1bff9bdd5db03ee65fd1fce8adf3223721aa2a636"}, - {file = "Pillow-8.3.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:147bd9e71fb9dcf08357b4d530b5167941e222a6fd21f869c7911bac40b9994d"}, - {file = "Pillow-8.3.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1fd5066cd343b5db88c048d971994e56b296868766e461b82fa4e22498f34d77"}, - {file = "Pillow-8.3.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f4ebde71785f8bceb39dcd1e7f06bcc5d5c3cf48b9f69ab52636309387b097c8"}, - {file = "Pillow-8.3.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:1c03e24be975e2afe70dfc5da6f187eea0b49a68bb2b69db0f30a61b7031cee4"}, - {file = "Pillow-8.3.1.tar.gz", hash = "sha256:2cac53839bfc5cece8fdbe7f084d5e3ee61e1303cccc86511d351adcb9e2c792"}, + {file = "Pillow-8.3.2-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:c691b26283c3a31594683217d746f1dad59a7ae1d4cfc24626d7a064a11197d4"}, + {file = "Pillow-8.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f514c2717012859ccb349c97862568fdc0479aad85b0270d6b5a6509dbc142e2"}, + {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be25cb93442c6d2f8702c599b51184bd3ccd83adebd08886b682173e09ef0c3f"}, + {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d675a876b295afa114ca8bf42d7f86b5fb1298e1b6bb9a24405a3f6c8338811c"}, + {file = "Pillow-8.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59697568a0455764a094585b2551fd76bfd6b959c9f92d4bdec9d0e14616303a"}, + {file = "Pillow-8.3.2-cp310-cp310-win32.whl", hash = "sha256:2d5e9dc0bf1b5d9048a94c48d0813b6c96fccfa4ccf276d9c36308840f40c228"}, + {file = "Pillow-8.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:11c27e74bab423eb3c9232d97553111cc0be81b74b47165f07ebfdd29d825875"}, + {file = "Pillow-8.3.2-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:11eb7f98165d56042545c9e6db3ce394ed8b45089a67124298f0473b29cb60b2"}, + {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f23b2d3079522fdf3c09de6517f625f7a964f916c956527bed805ac043799b8"}, + {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19ec4cfe4b961edc249b0e04b5618666c23a83bc35842dea2bfd5dfa0157f81b"}, + {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5a31c07cea5edbaeb4bdba6f2b87db7d3dc0f446f379d907e51cc70ea375629"}, + {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15ccb81a6ffc57ea0137f9f3ac2737ffa1d11f786244d719639df17476d399a7"}, + {file = "Pillow-8.3.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8f284dc1695caf71a74f24993b7c7473d77bc760be45f776a2c2f4e04c170550"}, + {file = "Pillow-8.3.2-cp36-cp36m-win32.whl", hash = "sha256:4abc247b31a98f29e5224f2d31ef15f86a71f79c7f4d2ac345a5d551d6393073"}, + {file = "Pillow-8.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:a048dad5ed6ad1fad338c02c609b862dfaa921fcd065d747194a6805f91f2196"}, + {file = "Pillow-8.3.2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:06d1adaa284696785375fa80a6a8eb309be722cf4ef8949518beb34487a3df71"}, + {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd24054aaf21e70a51e2a2a5ed1183560d3a69e6f9594a4bfe360a46f94eba83"}, + {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a330bf7014ee034046db43ccbb05c766aa9e70b8d6c5260bfc38d73103b0ba"}, + {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13654b521fb98abdecec105ea3fb5ba863d1548c9b58831dd5105bb3873569f1"}, + {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1bd983c565f92779be456ece2479840ec39d386007cd4ae83382646293d681b"}, + {file = "Pillow-8.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4326ea1e2722f3dc00ed77c36d3b5354b8fb7399fb59230249ea6d59cbed90da"}, + {file = "Pillow-8.3.2-cp37-cp37m-win32.whl", hash = "sha256:085a90a99404b859a4b6c3daa42afde17cb3ad3115e44a75f0d7b4a32f06a6c9"}, + {file = "Pillow-8.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:18a07a683805d32826c09acfce44a90bf474e6a66ce482b1c7fcd3757d588df3"}, + {file = "Pillow-8.3.2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4e59e99fd680e2b8b11bbd463f3c9450ab799305d5f2bafb74fefba6ac058616"}, + {file = "Pillow-8.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d89a2e9219a526401015153c0e9dd48319ea6ab9fe3b066a20aa9aee23d9fd3"}, + {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fd98c8294f57636084f4b076b75f86c57b2a63a8410c0cd172bc93695ee979"}, + {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b11c9d310a3522b0fd3c35667914271f570576a0e387701f370eb39d45f08a4"}, + {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0412516dcc9de9b0a1e0ae25a280015809de8270f134cc2c1e32c4eeb397cf30"}, + {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bcb04ff12e79b28be6c9988f275e7ab69f01cc2ba319fb3114f87817bb7c74b6"}, + {file = "Pillow-8.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0b9911ec70731711c3b6ebcde26caea620cbdd9dcb73c67b0730c8817f24711b"}, + {file = "Pillow-8.3.2-cp38-cp38-win32.whl", hash = "sha256:ce2e5e04bb86da6187f96d7bab3f93a7877830981b37f0287dd6479e27a10341"}, + {file = "Pillow-8.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:35d27687f027ad25a8d0ef45dd5208ef044c588003cdcedf05afb00dbc5c2deb"}, + {file = "Pillow-8.3.2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:04835e68ef12904bc3e1fd002b33eea0779320d4346082bd5b24bec12ad9c3e9"}, + {file = "Pillow-8.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:10e00f7336780ca7d3653cf3ac26f068fa11b5a96894ea29a64d3dc4b810d630"}, + {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cde7a4d3687f21cffdf5bb171172070bb95e02af448c4c8b2f223d783214056"}, + {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c3ff00110835bdda2b1e2b07f4a2548a39744bb7de5946dc8e95517c4fb2ca6"}, + {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d409030bf3bd05fa66fb5fdedc39c521b397f61ad04309c90444e893d05f7d"}, + {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bff50ba9891be0a004ef48828e012babaaf7da204d81ab9be37480b9020a82b"}, + {file = "Pillow-8.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7dbfbc0020aa1d9bc1b0b8bcf255a7d73f4ad0336f8fd2533fcc54a4ccfb9441"}, + {file = "Pillow-8.3.2-cp39-cp39-win32.whl", hash = "sha256:963ebdc5365d748185fdb06daf2ac758116deecb2277ec5ae98139f93844bc09"}, + {file = "Pillow-8.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:cc9d0dec711c914ed500f1d0d3822868760954dce98dfb0b7382a854aee55d19"}, + {file = "Pillow-8.3.2-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2c661542c6f71dfd9dc82d9d29a8386287e82813b0375b3a02983feac69ef864"}, + {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:548794f99ff52a73a156771a0402f5e1c35285bd981046a502d7e4793e8facaa"}, + {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b68f565a4175e12e68ca900af8910e8fe48aaa48fd3ca853494f384e11c8bcd"}, + {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:838eb85de6d9307c19c655c726f8d13b8b646f144ca6b3771fa62b711ebf7624"}, + {file = "Pillow-8.3.2-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:feb5db446e96bfecfec078b943cc07744cc759893cef045aa8b8b6d6aaa8274e"}, + {file = "Pillow-8.3.2-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:fc0db32f7223b094964e71729c0361f93db43664dd1ec86d3df217853cedda87"}, + {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fd4fd83aa912d7b89b4b4a1580d30e2a4242f3936882a3f433586e5ab97ed0d5"}, + {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0c8ebbfd439c37624db98f3877d9ed12c137cadd99dde2d2eae0dab0bbfc355"}, + {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6cb3dd7f23b044b0737317f892d399f9e2f0b3a02b22b2c692851fb8120d82c6"}, + {file = "Pillow-8.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66566f8a22561fc1a88dc87606c69b84fa9ce724f99522cf922c801ec68f5c1"}, + {file = "Pillow-8.3.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ce651ca46d0202c302a535d3047c55a0131a720cf554a578fc1b8a2aff0e7d96"}, + {file = "Pillow-8.3.2.tar.gz", hash = "sha256:dde3f3ed8d00c72631bc19cbfff8ad3b6215062a5eed402381ad365f82f0c18c"}, ] platformdirs = [ - {file = "platformdirs-2.2.0-py3-none-any.whl", hash = "sha256:4666d822218db6a262bdfdc9c39d21f23b4cfdb08af331a81e92751daf6c866c"}, - {file = "platformdirs-2.2.0.tar.gz", hash = "sha256:632daad3ab546bd8e6af0537d09805cec458dce201bccfe23012df73332e181e"}, + {file = "platformdirs-2.3.0-py3-none-any.whl", hash = "sha256:8003ac87717ae2c7ee1ea5a84a1a61e87f3fbd16eb5aadba194ea30a9019f648"}, + {file = "platformdirs-2.3.0.tar.gz", hash = "sha256:15b056538719b1c94bdaccb29e5f81879c7f7f0f4a153f46086d155dffcd4f0f"}, ] pluggy = [ - {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, - {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] pre-commit = [ - {file = "pre_commit-2.14.0-py2.py3-none-any.whl", hash = "sha256:ec3045ae62e1aa2eecfb8e86fa3025c2e3698f77394ef8d2011ce0aedd85b2d4"}, - {file = "pre_commit-2.14.0.tar.gz", hash = "sha256:2386eeb4cf6633712c7cc9ede83684d53c8cafca6b59f79c738098b51c6d206c"}, + {file = "pre_commit-2.15.0-py2.py3-none-any.whl", hash = "sha256:a4ed01000afcb484d9eb8d504272e642c4c4099bbad3a6b27e519bd6a3e928a6"}, + {file = "pre_commit-2.15.0.tar.gz", hash = "sha256:3c25add78dbdfb6a28a651780d5c311ac40dd17f160eb3954a0c59da40a505a7"}, ] prometheus-client = [ {file = "prometheus_client-0.11.0-py2.py3-none-any.whl", hash = "sha256:b014bc76815eb1399da8ce5fc84b7717a3e63652b0c0f8804092c9363acab1b2"}, @@ -2290,9 +2285,13 @@ pycparser = [ {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"}, {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"}, ] +pyflakes = [ + {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, + {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, +] pyglet = [ - {file = "pyglet-1.5.19-py3-none-any.whl", hash = "sha256:6e1eede7a7c0fd3606b14bc241b51915d4453e4a6a6a0e8a6a080842f767662d"}, - {file = "pyglet-1.5.19.zip", hash = "sha256:fe4ba1d916e8596a0eb38297d0fca1365620288f2ad92ca25af309be9ae0ffcc"}, + {file = "pyglet-1.5.20-py3-none-any.whl", hash = "sha256:0a0dfad612b46db863e3775558c16dce5c7bebcc1432c0e4af8c2ad9261f962e"}, + {file = "pyglet-1.5.20.zip", hash = "sha256:ce76ce598ac910fbae6aae0db00aac21d19d62bdc8c616ed6e6a6a395dc44513"}, ] pygments = [ {file = "Pygments-2.10.0-py3-none-any.whl", hash = "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380"}, @@ -2326,8 +2325,8 @@ pyrsistent = [ {file = "pyrsistent-0.18.0.tar.gz", hash = "sha256:773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"}, ] pytest = [ - {file = "pytest-6.2.4-py3-none-any.whl", hash = "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"}, - {file = "pytest-6.2.4.tar.gz", hash = "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"}, + {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, + {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, ] python-dateutil = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, @@ -2382,11 +2381,11 @@ pywin32 = [ {file = "pywin32-301-cp39-cp39-win_amd64.whl", hash = "sha256:87604a4087434cd814ad8973bd47d6524bd1fa9e971ce428e76b62a5e0860fdf"}, ] pywinpty = [ - {file = "pywinpty-1.1.3-cp36-none-win_amd64.whl", hash = "sha256:81dc6f16d917b756e06fc58943e9750d59dbefc0ffd2086871d3fa5f33824446"}, - {file = "pywinpty-1.1.3-cp37-none-win_amd64.whl", hash = "sha256:54557887e712ea3215ab0d9f089ed55a6cc8d826cd5d1e340d75300654c9663f"}, - {file = "pywinpty-1.1.3-cp38-none-win_amd64.whl", hash = "sha256:f5e25197397f1fef0362caf3eb89f25441827a1e48bf15827c27021592fd2160"}, - {file = "pywinpty-1.1.3-cp39-none-win_amd64.whl", hash = "sha256:b767276224f86b7560eb9173ba7956758cafcdfab97bb33837d42d2a0f1dbf67"}, - {file = "pywinpty-1.1.3.tar.gz", hash = "sha256:3a1d57b338390333812a5eed31c93c7d8ba82b131078063703e731946d90c9f2"}, + {file = "pywinpty-1.1.4-cp36-none-win_amd64.whl", hash = "sha256:fb975976ad92be44801de95fdf2b0366747767cb0528478553aff85dd63ebb09"}, + {file = "pywinpty-1.1.4-cp37-none-win_amd64.whl", hash = "sha256:5d25b30a2f87105778bc2f57cb1271f58aaa25568921ef042faf001b3b0a7307"}, + {file = "pywinpty-1.1.4-cp38-none-win_amd64.whl", hash = "sha256:c5c3550100689632f6663f39865ef8716835dab1838a9eb9b472644af92673f8"}, + {file = "pywinpty-1.1.4-cp39-none-win_amd64.whl", hash = "sha256:ad60a336d92ac38e2159320db6d5999c4c2726a141c3ed3f9694021feb6a234e"}, + {file = "pywinpty-1.1.4.tar.gz", hash = "sha256:cc700c9d5a9fcebf677ac93a4943ca9a24db6e2f11a5f0e7e8e226184c5036f7"}, ] pyyaml = [ {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, @@ -2611,8 +2610,8 @@ tensorboardx = [ {file = "tensorboardX-2.2.tar.gz", hash = "sha256:b68e08adae2d0c6d09721a9b7a3e22000b7d2b57faec069b5491aeace689f76f"}, ] terminado = [ - {file = "terminado-0.11.1-py3-none-any.whl", hash = "sha256:9e0457334863be3e6060c487ad60e0995fa1df54f109c67b24ff49a4f2f34df5"}, - {file = "terminado-0.11.1.tar.gz", hash = "sha256:962b402edbb480718054dc37027bada293972ecadfb587b89f01e2b8660a2132"}, + {file = "terminado-0.12.1-py3-none-any.whl", hash = "sha256:09fdde344324a1c9c6e610ee4ca165c4bb7f5bbf982fceeeb38998a988ef8452"}, + {file = "terminado-0.12.1.tar.gz", hash = "sha256:b20fd93cc57c1678c799799d117874367cc07a3d2d55be95205b1a88fa08393f"}, ] testpath = [ {file = "testpath-0.5.0-py3-none-any.whl", hash = "sha256:8044f9a0bab6567fc644a3593164e872543bb44225b0e24846e2c89237937589"}, @@ -2623,8 +2622,8 @@ threadpoolctl = [ {file = "threadpoolctl-2.2.0.tar.gz", hash = "sha256:86d4b6801456d780e94681d155779058759eaef3c3564758b17b6c99db5f81cb"}, ] tifffile = [ - {file = "tifffile-2021.8.8-py3-none-any.whl", hash = "sha256:1309d1f5cc2ee2e8274916dc609922cb2364f947a9d09b388069c63180710dfd"}, - {file = "tifffile-2021.8.8.tar.gz", hash = "sha256:8260f31c4700143e8374ff6cde5cef7fe54fc9b7313afe88329f407881901dc5"}, + {file = "tifffile-2021.8.30-py3-none-any.whl", hash = "sha256:524f9f3a96ca91d12e5b5ddce80209d2b07769c1764ceecf505613668143f63c"}, + {file = "tifffile-2021.8.30.tar.gz", hash = "sha256:8760e61e30106ea0dab9ec42a238d70a3ff55dde9c54456e7b748fe717cb782d"}, ] toml = [ {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, @@ -2722,8 +2721,8 @@ tqdm = [ {file = "tqdm-4.62.2.tar.gz", hash = "sha256:a4d6d112e507ef98513ac119ead1159d286deab17dffedd96921412c2d236ff5"}, ] traitlets = [ - {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"}, - {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"}, + {file = "traitlets-5.1.0-py3-none-any.whl", hash = "sha256:03f172516916220b58c9f19d7f854734136dd9528103d04e9bf139a92c9f54c4"}, + {file = "traitlets-5.1.0.tar.gz", hash = "sha256:bd382d7ea181fbbcce157c133db9a829ce06edffe097bcf3ab945b435452b46d"}, ] typed-ast = [ {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"}, @@ -2758,9 +2757,9 @@ typed-ast = [ {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, ] typing-extensions = [ - {file = "typing_extensions-3.10.0.0-py2-none-any.whl", hash = "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497"}, - {file = "typing_extensions-3.10.0.0-py3-none-any.whl", hash = "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84"}, - {file = "typing_extensions-3.10.0.0.tar.gz", hash = "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342"}, + {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"}, + {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"}, + {file = "typing_extensions-3.10.0.2.tar.gz", hash = "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"}, ] urllib3 = [ {file = "urllib3-1.26.6-py2.py3-none-any.whl", hash = "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4"}, diff --git a/pyproject.toml b/pyproject.toml index c348725c..6ca4b28b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,9 @@ pytest = "^6.2.4" pre-commit = "^2.14.0" notebook = "^6.4.3" jupyterlab = "^3.1.9" +isort = "^5.9.3" black = "^21.7b0" +autoflake = "^1.4" [build-system] requires = ["poetry-core>=1.0.0"]