diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9b47213..748ece2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,10 @@ repos: - - repo: https://github.com/psf/black - rev: 22.3.0 + - repo: https://github.com/psf/black-pre-commit-mirror + rev: 24.1.1 hooks: - id: black - language_version: python3 + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + name: isort (python) \ No newline at end of file diff --git a/bsb_hdf5/__init__.py b/bsb_hdf5/__init__.py index 8fbc1b8..24f751d 100644 --- a/bsb_hdf5/__init__.py +++ b/bsb_hdf5/__init__.py @@ -2,24 +2,22 @@ HDF5 storage engine for the BSB framework. """ -from bsb import ( - config, - __version__ as bsb_version, - MPILock, - Engine, - StorageNode as IStorageNode, - NoopLock, -) -from .placement_set import PlacementSet -from .connectivity_set import ConnectivitySet -from .file_store import FileStore -from .morphology_repository import MorphologyRepository -from datetime import datetime import json -import h5py import os import shutil +from datetime import datetime + +import h5py import shortuuid +from bsb import Engine, MPILock, NoopLock +from bsb import StorageNode as IStorageNode +from bsb import __version__ as bsb_version +from bsb import config + +from .connectivity_set import ConnectivitySet +from .file_store import FileStore +from .morphology_repository import MorphologyRepository +from .placement_set import PlacementSet __version__ = "4.0.0-rc2" __all__ = [ diff --git a/bsb_hdf5/chunks.py b/bsb_hdf5/chunks.py index 5f8b997..ef4b47e 100644 --- a/bsb_hdf5/chunks.py +++ b/bsb_hdf5/chunks.py @@ -9,10 +9,12 @@ objects within them. """ -from bsb import Chunk, chunklist -import numpy as np import contextlib -from .resource import handles_handles, HANDLED + +import numpy as np +from bsb import Chunk, chunklist + +from .resource import HANDLED, handles_handles class ChunkLoader: diff --git a/bsb_hdf5/connectivity_set.py b/bsb_hdf5/connectivity_set.py index cc5773a..169d7b9 100755 --- a/bsb_hdf5/connectivity_set.py +++ b/bsb_hdf5/connectivity_set.py @@ -1,13 +1,12 @@ +import json + import errr -from bsb import ( - DatasetNotFoundError, - Chunk, - chunklist, - ConnectivitySet as IConnectivitySet, -) -from .resource import Resource, handles_handles, HANDLED import numpy as np -import json +from bsb import Chunk +from bsb import ConnectivitySet as IConnectivitySet +from bsb import DatasetNotFoundError, chunklist + +from .resource import HANDLED, Resource, handles_handles _root = "/connectivity/" diff --git a/bsb_hdf5/file_store.py b/bsb_hdf5/file_store.py index ce57f4f..ee0de1c 100644 --- a/bsb_hdf5/file_store.py +++ b/bsb_hdf5/file_store.py @@ -1,11 +1,12 @@ +import json import time +from uuid import uuid4 import numpy as np -from bsb.storage.interfaces import FileStore as IFileStore from bsb.exceptions import MissingActiveConfigError +from bsb.storage.interfaces import FileStore as IFileStore + from .resource import Resource -from uuid import uuid4 -import json _root = "files" diff --git a/bsb_hdf5/morphology_repository.py b/bsb_hdf5/morphology_repository.py index 6ba2a23..1cf15e0 100644 --- a/bsb_hdf5/morphology_repository.py +++ b/bsb_hdf5/morphology_repository.py @@ -1,14 +1,14 @@ -from bsb.morphologies import Morphology, Branch -from bsb._encoding import EncodedLabels -from bsb.exceptions import MorphologyRepositoryError, MissingMorphologyError -from bsb.storage.interfaces import ( - MorphologyRepository as IMorphologyRepository, - StoredMorphology, -) -from .resource import Resource, handles_handles, HANDLED -import numpy as np -import json import itertools +import json + +import numpy as np +from bsb._encoding import EncodedLabels +from bsb.exceptions import MissingMorphologyError, MorphologyRepositoryError +from bsb.morphologies import Branch, Morphology +from bsb.storage.interfaces import MorphologyRepository as IMorphologyRepository +from bsb.storage.interfaces import StoredMorphology + +from .resource import HANDLED, Resource, handles_handles _root = "/morphologies" diff --git a/bsb_hdf5/placement_set.py b/bsb_hdf5/placement_set.py index 191cd29..8e399e9 100644 --- a/bsb_hdf5/placement_set.py +++ b/bsb_hdf5/placement_set.py @@ -1,19 +1,21 @@ +import itertools +import json + +import numpy as np +from bsb import config +from bsb._encoding import EncodedLabels from bsb.exceptions import ( - MissingMorphologyError, DatasetExistsError, DatasetNotFoundError, + MissingMorphologyError, ) -from bsb import config -from bsb.storage._chunks import Chunk, chunklist -from bsb._encoding import EncodedLabels -from bsb.storage.interfaces import PlacementSet as IPlacementSet from bsb.morphologies import MorphologySet, RotationSet from bsb.morphologies.selector import MorphologySelector -from .resource import Resource, handles_handles, HANDLED -from .chunks import ChunkLoader, ChunkedProperty, ChunkedCollection -import numpy as np -import itertools -import json +from bsb.storage._chunks import Chunk, chunklist +from bsb.storage.interfaces import PlacementSet as IPlacementSet + +from .chunks import ChunkedCollection, ChunkedProperty, ChunkLoader +from .resource import HANDLED, Resource, handles_handles _root = "/placement/" diff --git a/bsb_hdf5/resource.py b/bsb_hdf5/resource.py index ac61828..9830658 100644 --- a/bsb_hdf5/resource.py +++ b/bsb_hdf5/resource.py @@ -1,9 +1,9 @@ +import functools +import inspect import typing -import numpy as np import h5py -import inspect -import functools +import numpy as np if typing.TYPE_CHECKING: from . import HDF5Engine @@ -57,7 +57,8 @@ def __init__(self, engine: "HDF5Engine", path: str): def __eq__(self, other): return ( - self._engine == getattr(other, "_engine", None) and self._path == other._path + self._engine == getattr(other, "_engine", None) + and self._path == other._path ) def require(self, handle): diff --git a/pyproject.toml b/pyproject.toml index a13b992..638fd56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,9 @@ docs = [ "sphinx-copybutton==0.5.0" ] +[tool.isort] +profile = "black" + [tool.flit.module] name = "bsb_hdf5" diff --git a/test/test_chunks.py b/test/test_chunks.py index 17a3633..d6b30ee 100644 --- a/test/test_chunks.py +++ b/test/test_chunks.py @@ -3,7 +3,7 @@ import numpy as np from bsb.core import Scaffold from bsb.storage import Chunk -from bsb_test import NumpyTestCase, skip_parallel, timeout, RandomStorageFixture +from bsb_test import NumpyTestCase, RandomStorageFixture, skip_parallel, timeout from bsb_test.configs import get_test_config diff --git a/test/test_cs.py b/test/test_cs.py index 8d13588..abd7c3a 100644 --- a/test/test_cs.py +++ b/test/test_cs.py @@ -1,8 +1,10 @@ -from bsb.services.pool import WorkflowError -from bsb_test import FixedPosConfigFixture, RandomStorageFixture, NumpyTestCase +import unittest + from bsb.core import Scaffold +from bsb.services.pool import WorkflowError +from bsb_test import FixedPosConfigFixture, NumpyTestCase, RandomStorageFixture + from bsb_hdf5.connectivity_set import LocationOutOfBoundsError -import unittest class TestConnectivitySet( diff --git a/test/test_interface.py b/test/test_interface.py index 6fa5a8f..e4e2e45 100644 --- a/test/test_interface.py +++ b/test/test_interface.py @@ -1,11 +1,10 @@ -from bsb_test.engines import ( - TestStorage as _TestStorage, - TestPlacementSet as _TestPlacementSet, - TestMorphologyRepository as _TestMorphologyRepository, - TestConnectivitySet as _TestConnectivitySet, -) import unittest +from bsb_test.engines import TestConnectivitySet as _TestConnectivitySet +from bsb_test.engines import TestMorphologyRepository as _TestMorphologyRepository +from bsb_test.engines import TestPlacementSet as _TestPlacementSet +from bsb_test.engines import TestStorage as _TestStorage + class TestStorage(_TestStorage, unittest.TestCase, engine_name="hdf5"): pass diff --git a/test/test_mr.py b/test/test_mr.py index 75fce81..3a3b209 100644 --- a/test/test_mr.py +++ b/test/test_mr.py @@ -1,10 +1,11 @@ -from bsb.services import MPI -from bsb.storage import Storage -import numpy as np -import unittest import json -import h5py import os +import unittest + +import h5py +import numpy as np +from bsb.services import MPI +from bsb.storage import Storage class TestHandcrafted(unittest.TestCase): @@ -60,7 +61,9 @@ def setUpClass(cls): ds = g.create_dataset("data", data=data) ds.attrs["labels"] = json.dumps({1: []}) ds.attrs["properties"] = [] - g.create_dataset("graph", data=[[i + 1, -1] for i in range(4)] + [[5, 0]]) + g.create_dataset( + "graph", data=[[i + 1, -1] for i in range(4)] + [[5, 0]] + ) f.create_dataset("morphology_meta", data=json.dumps({"M": {}})) MPI.barrier() @@ -121,9 +124,7 @@ def test_multi_branch_single_element(self): msg = "Single point unattached branches should still be root." self.assertEqual(5, len(m.roots), msg) self.assertEqual(5, len(m.branches), "Missing branch") - msg = ( - "Flatten of single point branches should produce n-branch x n-vectors matrix." - ) + msg = "Flatten of single point branches should produce n-branch x n-vectors matrix." matrix = m.flatten() self.assertEqual((5, 3), matrix.shape, msg) msg = "Flatten produced an incorrect matrix" diff --git a/test/test_setup/__init__.py b/test/test_setup/__init__.py index 2733c71..c56e445 100644 --- a/test/test_setup/__init__.py +++ b/test/test_setup/__init__.py @@ -1,4 +1,8 @@ -import os, sys, unittest, threading +import os +import sys +import threading +import unittest + import numpy as np sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))