From f75e84f8d1a82b207522ca54947b682473a23a9e Mon Sep 17 00:00:00 2001 From: David Manthey Date: Mon, 16 Sep 2024 13:08:56 -0400 Subject: [PATCH] Fix working with Girder sources and linting. Add a basic test. --- .../multi/large_image_source_multi/__init__.py | 8 ++++---- test/test_source_multi.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/sources/multi/large_image_source_multi/__init__.py b/sources/multi/large_image_source_multi/__init__.py index da0e48b08..c6838d574 100644 --- a/sources/multi/large_image_source_multi/__init__.py +++ b/sources/multi/large_image_source_multi/__init__.py @@ -419,7 +419,7 @@ class MultiFileTileSource(FileTileSource, metaclass=LruCacheMetaclass): _defaultTileSize = 256 _maxOpenHandles = 6 - def __init__(self, path, **kwargs): + def __init__(self, path, **kwargs): # noqa """ Initialize the tile class. See the base class for other available parameters. @@ -434,10 +434,10 @@ def __init__(self, path, **kwargs): self._lastOpenSourceLock = threading.RLock() # 'c' must be first as channels are special because they can have names self._axesList = ['c', 'z', 't', 'xy'] - if isinstance(path, dict): + if isinstance(path, dict) and 'sources' in path: self._info = path.copy() - self._basePath = "." - self._largeImagePath = "." + self._basePath = '.' + self._largeImagePath = '.' try: self._validator.validate(self._info) except jsonschema.ValidationError: diff --git a/test/test_source_multi.py b/test/test_source_multi.py index fbf749035..8f856b11c 100644 --- a/test/test_source_multi.py +++ b/test/test_source_multi.py @@ -126,6 +126,22 @@ def testTilesFromMultiString(): large_image_source_multi.open('invalid' + sourceString) +def testTilesFromMultiDict(): + sourceString = {'sources': [{ + 'sourceName': 'test', 'path': '__none__', 'params': {'sizeX': 10000, 'sizeY': 10000}}]} + source = large_image_source_multi.open(sourceString) + tileMetadata = source.getMetadata() + assert tileMetadata['tileWidth'] == 256 + assert tileMetadata['tileHeight'] == 256 + assert tileMetadata['sizeX'] == 10000 + assert tileMetadata['sizeY'] == 10000 + assert tileMetadata['levels'] == 7 + utilities.checkTilesZXY(source, tileMetadata) + + with pytest.raises(Exception): + large_image_source_multi.open({'invalid': True}) + + def testTilesFromNonschemaMultiString(): sourceString = json.dumps({ 'sources': [{