large-image 1.27.5.dev6__tar.gz → 1.27.5.dev71__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. {large-image-1.27.5.dev6/large_image.egg-info → large-image-1.27.5.dev71}/PKG-INFO +1 -1
  2. large-image-1.27.5.dev71/docs/formats.rst +21 -0
  3. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/index.rst +1 -0
  4. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/make_docs.sh +2 -0
  5. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/__init__.py +2 -1
  6. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/constants.py +5 -3
  7. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/__init__.py +82 -6
  8. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/base.py +5 -1
  9. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/utilities.py +6 -1
  10. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71/large_image.egg-info}/PKG-INFO +1 -1
  11. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image.egg-info/SOURCES.txt +1 -0
  12. large-image-1.27.5.dev71/large_image.egg-info/requires.txt +145 -0
  13. large-image-1.27.5.dev6/large_image.egg-info/requires.txt +0 -145
  14. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/LICENSE +0 -0
  15. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/NOTICE +0 -0
  16. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/README.rst +0 -0
  17. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/annotations.rst +0 -0
  18. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/caching.rst +0 -0
  19. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/conf.py +0 -0
  20. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/config_options.rst +0 -0
  21. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/development.rst +0 -0
  22. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/example_usage.rst +0 -0
  23. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/girder_annotation_config_options.rst +0 -0
  24. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/girder_config_options.rst +0 -0
  25. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/image_conversion.rst +0 -0
  26. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/large_image_examples.ipynb +0 -0
  27. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/multi_source_specification.rst +0 -0
  28. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/notebooks.rst +0 -0
  29. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/static/custom.css +0 -0
  30. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/tilesource_options.rst +0 -0
  31. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/docs/upgrade.rst +0 -0
  32. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/cache_util/__init__.py +0 -0
  33. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/cache_util/base.py +0 -0
  34. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/cache_util/cache.py +0 -0
  35. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/cache_util/cachefactory.py +0 -0
  36. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/cache_util/memcache.py +0 -0
  37. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/config.py +0 -0
  38. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/exceptions.py +0 -0
  39. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/geo.py +0 -0
  40. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/jupyter.py +0 -0
  41. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/stylefuncs.py +0 -0
  42. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/tiledict.py +0 -0
  43. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image/tilesource/tileiterator.py +0 -0
  44. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image.egg-info/dependency_links.txt +0 -0
  45. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image.egg-info/not-zip-safe +0 -0
  46. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/large_image.egg-info/top_level.txt +0 -0
  47. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/setup.cfg +0 -0
  48. {large-image-1.27.5.dev6 → large-image-1.27.5.dev71}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.27.5.dev6
3
+ Version: 1.27.5.dev71
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -0,0 +1,21 @@
1
+ Image Formats
2
+ =============
3
+
4
+ Preferred Extensions and Mime Types
5
+ -----------------------------------
6
+
7
+ Images can generally be read regardless of their name. By default, when opening an image with ``large_image.open()``, each tile source reader is tried in turn until one source can open the file. Each source lists preferred file extensions and mime types with a priority level. If the file ends with one of these extensions or had one of these mimetypes, the order that the source readers are tried is adjusted based on the listed priority.
8
+
9
+ The file extensions and mime types that are listed by the core sources that can affect source processing order are listed below. See ``large_image.listSources()`` for details about priority of the different source and the ``large_image.constants.SourcePriority`` for the priority meaning.
10
+
11
+ Extensions
12
+ ~~~~~~~~~~
13
+
14
+ .. include:: ../build/docs-work/known_extensions.txt
15
+ :literal:
16
+
17
+ Mime Types
18
+ ~~~~~~~~~~
19
+
20
+ .. include:: ../build/docs-work/known_mimetypes.txt
21
+ :literal:
@@ -14,6 +14,7 @@
14
14
  example_usage
15
15
  config_options
16
16
  image_conversion
17
+ formats
17
18
  upgrade
18
19
  _build/large_image/modules
19
20
  _build/large_image_source_bioformats/modules
@@ -16,6 +16,8 @@ ln -s ../build/docs-work _build
16
16
  large_image_converter --help > _build/large_image_converter.txt
17
17
  python -c 'from girder_large_image_annotation.models import annotation;import json;print(json.dumps(annotation.AnnotationSchema.annotationSchema, indent=2))' > _build/annotation_schema.json
18
18
  python -c 'import large_image_source_multi, json;print(json.dumps(large_image_source_multi.MultiSourceSchema, indent=2))' > _build/multi_source_schema.json
19
+ python -c 'import large_image, yaml;print("\n".join(large_image.listExtensions()))' > _build/known_extensions.txt
20
+ python -c 'import large_image, yaml;print("\n".join(large_image.listMimeTypes()))' > _build/known_mimetypes.txt
19
21
 
20
22
  sphinx-apidoc -f -o _build/large_image ../large_image
21
23
  sphinx-apidoc -f -o _build/large_image_source_bioformats ../sources/bioformats/large_image_source_bioformats
@@ -18,7 +18,8 @@ from importlib.metadata import PackageNotFoundError
18
18
  from importlib.metadata import version as _importlib_version
19
19
 
20
20
  from . import tilesource # noqa
21
- from .tilesource import canRead, canReadList, getTileSource, new, open # noqa
21
+ from .tilesource import (canRead, canReadList, getTileSource, # noqa
22
+ listExtensions, listMimeTypes, listSources, new, open)
22
23
 
23
24
  try:
24
25
  __version__ = _importlib_version(__name__)
@@ -25,9 +25,11 @@ class SourcePriority(enum.IntEnum):
25
25
  MEDIUM = 4
26
26
  LOW = 5
27
27
  LOWER = 6
28
- FALLBACK_HIGH = 7
29
- FALLBACK = 8
30
- MANUAL = 9 # Will never be selected automatically
28
+ IMPLICIT_HIGH = 7
29
+ IMPLICIT = 8
30
+ FALLBACK_HIGH = 9
31
+ FALLBACK = 10
32
+ MANUAL = 11 # This and higher values will never be selected automatically
31
33
 
32
34
 
33
35
  TILE_FORMAT_IMAGE = 'image'
@@ -1,9 +1,10 @@
1
1
  import os
2
2
  import re
3
+ import sys
3
4
  import uuid
4
5
  from importlib.metadata import entry_points
5
6
  from pathlib import PosixPath
6
- from typing import Dict, List, Optional, Tuple, Type, Union
7
+ from typing import Any, Dict, List, Optional, Tuple, Type, Union, cast
7
8
 
8
9
  from .. import config
9
10
  from ..constants import NEW_IMAGE_PATH_FLAG, SourcePriority
@@ -86,23 +87,26 @@ def getSortedSourceList(
86
87
  properties = {
87
88
  '_geospatial_source': isGeospatial(pathOrUri),
88
89
  }
90
+ isNew = str(pathOrUri).startswith(NEW_IMAGE_PATH_FLAG)
89
91
  sourceList = []
90
92
  for sourceName in availableSources:
91
93
  sourceExtensions = availableSources[sourceName].extensions
92
94
  priority = sourceExtensions.get(None, SourcePriority.MANUAL)
93
95
  fallback = True
96
+ if isNew and getattr(availableSources[sourceName], 'newPriority', None) is not None:
97
+ priority = min(priority, cast(SourcePriority, availableSources[sourceName].newPriority))
94
98
  if (mimeType and getattr(availableSources[sourceName], 'mimeTypes', None) and
95
99
  mimeType in availableSources[sourceName].mimeTypes):
96
- fallback = False
97
100
  priority = min(priority, availableSources[sourceName].mimeTypes[mimeType])
101
+ fallback = False
98
102
  for regex in getattr(availableSources[sourceName], 'nameMatches', {}):
99
103
  if re.match(regex, baseName):
100
- fallback = False
101
104
  priority = min(priority, availableSources[sourceName].nameMatches[regex])
105
+ fallback = False
102
106
  for ext in extensions:
103
107
  if ext in sourceExtensions:
104
- fallback = False
105
108
  priority = min(priority, sourceExtensions[ext])
109
+ fallback = False
106
110
  if isLargeImageUri and sourceName == uriWithoutProtocol:
107
111
  priority = SourcePriority.NAMED
108
112
  if priority >= SourcePriority.MANUAL:
@@ -130,7 +134,8 @@ def getSourceNameFromDict(
130
134
  there is no such source.
131
135
  """
132
136
  sourceList = getSortedSourceList(availableSources, pathOrUri, mimeType, *args, **kwargs)
133
- for _clash, _fallback, _priority, sourceName in sorted(sourceList):
137
+ for entry in sorted(sourceList):
138
+ sourceName = entry[-1]
134
139
  if availableSources[sourceName].canRead(pathOrUri, *args, **kwargs):
135
140
  return sourceName
136
141
  return None
@@ -217,7 +222,8 @@ def canReadList(
217
222
  sourceList = getSortedSourceList(
218
223
  AvailableTileSources, pathOrUri, mimeType, *args, **kwargs)
219
224
  result = []
220
- for _clash, _fallback, _priority, sourceName in sorted(sourceList):
225
+ for entry in sorted(sourceList):
226
+ sourceName = entry[-1]
221
227
  result.append((sourceName, AvailableTileSources[sourceName].canRead(
222
228
  pathOrUri, *args, **kwargs)))
223
229
  return result
@@ -232,6 +238,75 @@ def new(*args, **kwargs) -> TileSource:
232
238
  return getTileSource(NEW_IMAGE_PATH_FLAG + str(uuid.uuid4()), *args, **kwargs)
233
239
 
234
240
 
241
+ def listSources(
242
+ availableSources: Optional[Dict[str, Type[FileTileSource]]] = None,
243
+ ) -> Dict[str, Dict[str, Any]]:
244
+ """
245
+ Get a dictionary with all sources, all known extensions, and all known
246
+ mimetypes.
247
+
248
+ :param availableSources: an ordered dictionary of sources to try.
249
+ :returns: a dictionary with sources, extensions, and mimeTypes. The
250
+ extensions and mimeTypes list their matching sources in priority order.
251
+ The sources list their supported extensions and mimeTypes with their
252
+ priority.
253
+ """
254
+ if availableSources is None:
255
+ if not len(AvailableTileSources):
256
+ loadTileSources()
257
+ availableSources = AvailableTileSources
258
+ results: Dict[str, Dict[str, Any]] = {'sources': {}, 'extensions': {}, 'mimeTypes': {}}
259
+ for key, source in availableSources.items():
260
+ if hasattr(source, 'addKnownExtensions'):
261
+ source.addKnownExtensions()
262
+ results['sources'][key] = {
263
+ 'extensions': {
264
+ k or 'default': v for k, v in source.extensions.items()},
265
+ 'mimeTypes': {
266
+ k or 'default': v for k, v in source.mimeTypes.items()},
267
+ }
268
+ for k, v in source.extensions.items():
269
+ if k is not None:
270
+ results['extensions'].setdefault(k, [])
271
+ results['extensions'][k].append((v, key))
272
+ results['extensions'][k].sort()
273
+ for k, v in source.mimeTypes.items():
274
+ if k is not None:
275
+ results['mimeTypes'].setdefault(k, [])
276
+ results['mimeTypes'][k].append((v, key))
277
+ results['mimeTypes'][k].sort()
278
+ for cls in source.__mro__:
279
+ try:
280
+ if sys.modules[cls.__module__].__version__:
281
+ results['sources'][key]['version'] = sys.modules[cls.__module__].__version__
282
+ break
283
+ except Exception:
284
+ pass
285
+ return results
286
+
287
+
288
+ def listExtensions(
289
+ availableSources: Optional[Dict[str, Type[FileTileSource]]] = None) -> List[str]:
290
+ """
291
+ Get a list of all known extensions.
292
+
293
+ :param availableSources: an ordered dictionary of sources to try.
294
+ :returns: a list of extensions (without leading dots).
295
+ """
296
+ return sorted(listSources(availableSources)['extensions'].keys())
297
+
298
+
299
+ def listMimeTypes(
300
+ availableSources: Optional[Dict[str, Type[FileTileSource]]] = None) -> List[str]:
301
+ """
302
+ Get a list of all known mime types.
303
+
304
+ :param availableSources: an ordered dictionary of sources to try.
305
+ :returns: a list of mime types.
306
+ """
307
+ return sorted(listSources(availableSources)['mimeTypes'].keys())
308
+
309
+
235
310
  __all__ = [
236
311
  'TileSource', 'FileTileSource',
237
312
  'exceptions', 'TileGeneralError', 'TileSourceError',
@@ -240,5 +315,6 @@ __all__ = [
240
315
  'TileOutputMimeTypes', 'TILE_FORMAT_IMAGE', 'TILE_FORMAT_PIL', 'TILE_FORMAT_NUMPY',
241
316
  'AvailableTileSources', 'getTileSource', 'getSourceNameFromDict', 'nearPowerOfTwo',
242
317
  'canRead', 'open', 'new',
318
+ 'listSources', 'listExtensions', 'listMimeTypes',
243
319
  'etreeToDict', 'dictToEtree',
244
320
  ]
@@ -57,6 +57,10 @@ class TileSource(IPyLeafletMixin):
57
57
  nameMatches: Dict[str, SourcePriority] = {
58
58
  }
59
59
 
60
+ # If a source supports creating new tiled images, specify its basic
61
+ # priority based on expected feature set
62
+ newPriority: Optional[SourcePriority] = None
63
+
60
64
  # When getting tiles for otherwise empty levels (missing powers of two), we
61
65
  # composite the tile from higher resolution levels. This can use excessive
62
66
  # memory if there are too many missing levels. For instance, if there are
@@ -1956,7 +1960,7 @@ class TileSource(IPyLeafletMixin):
1956
1960
  image = None
1957
1961
  tiledimage = None
1958
1962
  if max_workers is not None and max_workers < 0:
1959
- max_workers = max(-max_workers, utilities.cpu_count(False))
1963
+ max_workers = min(-max_workers, utilities.cpu_count(False))
1960
1964
  with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as pool:
1961
1965
  futures = []
1962
1966
  for idx, frame in enumerate(frameList):
@@ -815,7 +815,12 @@ def _addSubimageToImage(
815
815
  dtype=subimage.dtype)
816
816
  elif len(image.shape) != len(subimage.shape) or image.shape[-1] != subimage.shape[-1]:
817
817
  image, subimage = _makeSameChannelDepth(image, subimage)
818
- image[y:y + subimage.shape[0], x:x + subimage.shape[1]] = subimage
818
+ if subimage.shape[-1] in {2, 4}:
819
+ mask = (subimage[:, :, -1] > 0)[:, :, np.newaxis]
820
+ image[y:y + subimage.shape[0], x:x + subimage.shape[1]] = np.where(
821
+ mask, subimage, image[y:y + subimage.shape[0], x:x + subimage.shape[1]])
822
+ else:
823
+ image[y:y + subimage.shape[0], x:x + subimage.shape[1]] = subimage
819
824
  return image
820
825
 
821
826
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.27.5.dev6
3
+ Version: 1.27.5.dev71
4
4
  Summary: Python modules to work with large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -8,6 +8,7 @@ docs/conf.py
8
8
  docs/config_options.rst
9
9
  docs/development.rst
10
10
  docs/example_usage.rst
11
+ docs/formats.rst
11
12
  docs/girder_annotation_config_options.rst
12
13
  docs/girder_config_options.rst
13
14
  docs/image_conversion.rst
@@ -0,0 +1,145 @@
1
+ cachetools
2
+ palettable
3
+ Pillow
4
+ numpy
5
+ typing-extensions
6
+
7
+ [all]
8
+ large-image-source-mapnik>=1.27.5.dev71
9
+ psutil>=4.2.0
10
+ large-image-source-dicom>=1.27.5.dev71
11
+ large-image-source-zarr>=1.27.5.dev71
12
+ large-image-source-pil[all]>=1.27.5.dev71
13
+ large-image-source-tiff>=1.27.5.dev71
14
+ large-image-source-dummy>=1.27.5.dev71
15
+ large-image-source-rasterio>=1.27.5.dev71
16
+ large-image-converter>=1.27.5.dev71
17
+ large-image-source-pil>=1.27.5.dev71
18
+ matplotlib
19
+ large-image-source-bioformats>=1.27.5.dev71
20
+ large-image-source-openslide>=1.27.5.dev71
21
+ large-image-source-test>=1.27.5.dev71
22
+ large-image-source-nd2>=1.27.5.dev71
23
+ large-image-source-gdal>=1.27.5.dev71
24
+ large-image-source-multi[all]>=1.27.5.dev71
25
+ simplejpeg
26
+ large-image-source-openjpeg>=1.27.5.dev71
27
+ large-image-source-tifffile>=1.27.5.dev71
28
+ large-image-source-rasterio[all]>=1.27.5.dev71
29
+ large-image-source-multi>=1.27.5.dev71
30
+ pyvips
31
+ large-image-source-deepzoom>=1.27.5.dev71
32
+ large-image-source-ometiff>=1.27.5.dev71
33
+ large-image-source-vips>=1.27.5.dev71
34
+
35
+ [all:platform_system != "Windows"]
36
+ pylibmc>=1.5.1
37
+
38
+ [bioformats]
39
+ large-image-source-bioformats>=1.27.5.dev71
40
+
41
+ [colormaps]
42
+ matplotlib
43
+
44
+ [common]
45
+ large-image-source-nd2>=1.27.5.dev71
46
+ psutil>=4.2.0
47
+ large-image-source-dicom>=1.27.5.dev71
48
+ large-image-source-zarr>=1.27.5.dev71
49
+ simplejpeg
50
+ large-image-source-tifffile>=1.27.5.dev71
51
+ large-image-source-pil[all]>=1.27.5.dev71
52
+ large-image-source-rasterio[all]>=1.27.5.dev71
53
+ large-image-source-multi>=1.27.5.dev71
54
+ matplotlib
55
+ large-image-source-deepzoom>=1.27.5.dev71
56
+ large-image-source-test>=1.27.5.dev71
57
+
58
+ [common:platform_system != "Windows"]
59
+ pylibmc>=1.5.1
60
+
61
+ [converter]
62
+ large-image-converter>=1.27.5.dev71
63
+
64
+ [deepzoom]
65
+ large-image-source-deepzoom>=1.27.5.dev71
66
+
67
+ [dicom]
68
+ large-image-source-dicom>=1.27.5.dev71
69
+
70
+ [dummy]
71
+ large-image-source-dummy>=1.27.5.dev71
72
+
73
+ [gdal]
74
+ large-image-source-gdal>=1.27.5.dev71
75
+
76
+ [mapnik]
77
+ large-image-source-mapnik>=1.27.5.dev71
78
+
79
+ [memcached]
80
+
81
+ [memcached:platform_system != "Windows"]
82
+ pylibmc>=1.5.1
83
+
84
+ [multi]
85
+ large-image-source-multi>=1.27.5.dev71
86
+
87
+ [nd2]
88
+ large-image-source-nd2>=1.27.5.dev71
89
+
90
+ [ometiff]
91
+ large-image-source-ometiff>=1.27.5.dev71
92
+
93
+ [openjpeg]
94
+ large-image-source-openjpeg>=1.27.5.dev71
95
+
96
+ [openslide]
97
+ large-image-source-openslide>=1.27.5.dev71
98
+
99
+ [performance]
100
+ psutil>=4.2.0
101
+ simplejpeg
102
+
103
+ [pil]
104
+ large-image-source-pil>=1.27.5.dev71
105
+
106
+ [rasterio]
107
+ large-image-source-rasterio>=1.27.5.dev71
108
+
109
+ [sources]
110
+ large-image-source-nd2>=1.27.5.dev71
111
+ large-image-source-mapnik>=1.27.5.dev71
112
+ large-image-source-gdal>=1.27.5.dev71
113
+ large-image-source-dicom>=1.27.5.dev71
114
+ large-image-source-zarr>=1.27.5.dev71
115
+ large-image-source-test>=1.27.5.dev71
116
+ large-image-source-openjpeg>=1.27.5.dev71
117
+ large-image-source-tiff>=1.27.5.dev71
118
+ large-image-source-dummy>=1.27.5.dev71
119
+ large-image-source-rasterio>=1.27.5.dev71
120
+ large-image-source-multi>=1.27.5.dev71
121
+ large-image-source-tifffile>=1.27.5.dev71
122
+ large-image-source-pil>=1.27.5.dev71
123
+ large-image-source-bioformats>=1.27.5.dev71
124
+ large-image-source-openslide>=1.27.5.dev71
125
+ large-image-source-deepzoom>=1.27.5.dev71
126
+ large-image-source-ometiff>=1.27.5.dev71
127
+ large-image-source-vips>=1.27.5.dev71
128
+
129
+ [test]
130
+ large-image-source-test>=1.27.5.dev71
131
+
132
+ [tiff]
133
+ large-image-source-tiff>=1.27.5.dev71
134
+
135
+ [tifffile]
136
+ large-image-source-tifffile>=1.27.5.dev71
137
+
138
+ [tiledoutput]
139
+ pyvips
140
+
141
+ [vips]
142
+ large-image-source-vips>=1.27.5.dev71
143
+
144
+ [zarr]
145
+ large-image-source-zarr>=1.27.5.dev71
@@ -1,145 +0,0 @@
1
- cachetools
2
- palettable
3
- Pillow
4
- numpy
5
- typing-extensions
6
-
7
- [all]
8
- psutil>=4.2.0
9
- large-image-source-openslide>=1.27.5.dev6
10
- matplotlib
11
- large-image-source-deepzoom>=1.27.5.dev6
12
- large-image-source-vips>=1.27.5.dev6
13
- large-image-source-pil[all]>=1.27.5.dev6
14
- large-image-source-pil>=1.27.5.dev6
15
- large-image-source-bioformats>=1.27.5.dev6
16
- large-image-source-tifffile>=1.27.5.dev6
17
- large-image-source-multi>=1.27.5.dev6
18
- large-image-source-rasterio>=1.27.5.dev6
19
- large-image-source-ometiff>=1.27.5.dev6
20
- pyvips
21
- large-image-source-test>=1.27.5.dev6
22
- large-image-source-dummy>=1.27.5.dev6
23
- large-image-source-zarr>=1.27.5.dev6
24
- large-image-source-mapnik>=1.27.5.dev6
25
- large-image-source-multi[all]>=1.27.5.dev6
26
- large-image-source-openjpeg>=1.27.5.dev6
27
- large-image-source-gdal>=1.27.5.dev6
28
- large-image-source-nd2>=1.27.5.dev6
29
- large-image-source-dicom>=1.27.5.dev6
30
- large-image-converter>=1.27.5.dev6
31
- large-image-source-rasterio[all]>=1.27.5.dev6
32
- large-image-source-tiff>=1.27.5.dev6
33
- simplejpeg
34
-
35
- [all:platform_system != "Windows"]
36
- pylibmc>=1.5.1
37
-
38
- [bioformats]
39
- large-image-source-bioformats>=1.27.5.dev6
40
-
41
- [colormaps]
42
- matplotlib
43
-
44
- [common]
45
- psutil>=4.2.0
46
- matplotlib
47
- large-image-source-test>=1.27.5.dev6
48
- large-image-source-zarr>=1.27.5.dev6
49
- large-image-source-deepzoom>=1.27.5.dev6
50
- large-image-source-nd2>=1.27.5.dev6
51
- large-image-source-pil[all]>=1.27.5.dev6
52
- large-image-source-dicom>=1.27.5.dev6
53
- large-image-source-tifffile>=1.27.5.dev6
54
- large-image-source-multi>=1.27.5.dev6
55
- large-image-source-rasterio[all]>=1.27.5.dev6
56
- simplejpeg
57
-
58
- [common:platform_system != "Windows"]
59
- pylibmc>=1.5.1
60
-
61
- [converter]
62
- large-image-converter>=1.27.5.dev6
63
-
64
- [deepzoom]
65
- large-image-source-deepzoom>=1.27.5.dev6
66
-
67
- [dicom]
68
- large-image-source-dicom>=1.27.5.dev6
69
-
70
- [dummy]
71
- large-image-source-dummy>=1.27.5.dev6
72
-
73
- [gdal]
74
- large-image-source-gdal>=1.27.5.dev6
75
-
76
- [mapnik]
77
- large-image-source-mapnik>=1.27.5.dev6
78
-
79
- [memcached]
80
-
81
- [memcached:platform_system != "Windows"]
82
- pylibmc>=1.5.1
83
-
84
- [multi]
85
- large-image-source-multi>=1.27.5.dev6
86
-
87
- [nd2]
88
- large-image-source-nd2>=1.27.5.dev6
89
-
90
- [ometiff]
91
- large-image-source-ometiff>=1.27.5.dev6
92
-
93
- [openjpeg]
94
- large-image-source-openjpeg>=1.27.5.dev6
95
-
96
- [openslide]
97
- large-image-source-openslide>=1.27.5.dev6
98
-
99
- [performance]
100
- psutil>=4.2.0
101
- simplejpeg
102
-
103
- [pil]
104
- large-image-source-pil>=1.27.5.dev6
105
-
106
- [rasterio]
107
- large-image-source-rasterio>=1.27.5.dev6
108
-
109
- [sources]
110
- large-image-source-ometiff>=1.27.5.dev6
111
- large-image-source-openslide>=1.27.5.dev6
112
- large-image-source-test>=1.27.5.dev6
113
- large-image-source-deepzoom>=1.27.5.dev6
114
- large-image-source-dummy>=1.27.5.dev6
115
- large-image-source-mapnik>=1.27.5.dev6
116
- large-image-source-vips>=1.27.5.dev6
117
- large-image-source-zarr>=1.27.5.dev6
118
- large-image-source-openjpeg>=1.27.5.dev6
119
- large-image-source-gdal>=1.27.5.dev6
120
- large-image-source-nd2>=1.27.5.dev6
121
- large-image-source-pil>=1.27.5.dev6
122
- large-image-source-bioformats>=1.27.5.dev6
123
- large-image-source-dicom>=1.27.5.dev6
124
- large-image-source-tifffile>=1.27.5.dev6
125
- large-image-source-multi>=1.27.5.dev6
126
- large-image-source-tiff>=1.27.5.dev6
127
- large-image-source-rasterio>=1.27.5.dev6
128
-
129
- [test]
130
- large-image-source-test>=1.27.5.dev6
131
-
132
- [tiff]
133
- large-image-source-tiff>=1.27.5.dev6
134
-
135
- [tifffile]
136
- large-image-source-tifffile>=1.27.5.dev6
137
-
138
- [tiledoutput]
139
- pyvips
140
-
141
- [vips]
142
- large-image-source-vips>=1.27.5.dev6
143
-
144
- [zarr]
145
- large-image-source-zarr>=1.27.5.dev6