large-image 1.27.1.dev30__tar.gz → 1.27.1.dev34__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 (46) hide show
  1. {large-image-1.27.1.dev30/large_image.egg-info → large-image-1.27.1.dev34}/PKG-INFO +1 -1
  2. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/cache_util/cache.py +17 -11
  3. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/config.py +4 -2
  4. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/base.py +187 -127
  5. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/utilities.py +27 -0
  6. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34/large_image.egg-info}/PKG-INFO +1 -1
  7. large-image-1.27.1.dev34/large_image.egg-info/requires.txt +145 -0
  8. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/setup.py +1 -0
  9. large-image-1.27.1.dev30/large_image.egg-info/requires.txt +0 -144
  10. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/LICENSE +0 -0
  11. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/NOTICE +0 -0
  12. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/README.rst +0 -0
  13. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/annotations.rst +0 -0
  14. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/caching.rst +0 -0
  15. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/conf.py +0 -0
  16. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/config_options.rst +0 -0
  17. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/development.rst +0 -0
  18. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/example_usage.rst +0 -0
  19. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/girder_annotation_config_options.rst +0 -0
  20. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/girder_config_options.rst +0 -0
  21. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/image_conversion.rst +0 -0
  22. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/index.rst +0 -0
  23. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/large_image_examples.ipynb +0 -0
  24. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/make_docs.sh +0 -0
  25. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/multi_source_specification.rst +0 -0
  26. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/notebooks.rst +0 -0
  27. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/static/custom.css +0 -0
  28. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/tilesource_options.rst +0 -0
  29. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/docs/upgrade.rst +0 -0
  30. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/__init__.py +0 -0
  31. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/cache_util/__init__.py +0 -0
  32. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/cache_util/base.py +0 -0
  33. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/cache_util/cachefactory.py +0 -0
  34. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/cache_util/memcache.py +0 -0
  35. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/constants.py +0 -0
  36. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/exceptions.py +0 -0
  37. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/__init__.py +0 -0
  38. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/geo.py +0 -0
  39. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/jupyter.py +0 -0
  40. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/stylefuncs.py +0 -0
  41. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image/tilesource/tiledict.py +0 -0
  42. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image.egg-info/SOURCES.txt +0 -0
  43. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image.egg-info/dependency_links.txt +0 -0
  44. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image.egg-info/not-zip-safe +0 -0
  45. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/large_image.egg-info/top_level.txt +0 -0
  46. {large-image-1.27.1.dev30 → large-image-1.27.1.dev34}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: large-image
3
- Version: 1.27.1.dev30
3
+ Version: 1.27.1.dev34
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.
@@ -2,26 +2,32 @@ import functools
2
2
  import pickle
3
3
  import threading
4
4
  import uuid
5
+ from typing import Any, Callable, Dict, Optional, TypeVar
6
+
7
+ from typing_extensions import ParamSpec
5
8
 
6
9
  try:
7
10
  import resource
11
+ HAS_RESOURCE = True
8
12
  except ImportError:
9
- resource = None
13
+ HAS_RESOURCE = False
10
14
 
11
15
  from .. import config
12
16
  from .cachefactory import CacheFactory, pickAvailableCache
13
17
 
18
+ P = ParamSpec('P')
19
+ T = TypeVar('T')
20
+
14
21
  _tileCache = None
15
22
  _tileLock = None
16
23
 
17
24
  _cacheLockKeyToken = '_cacheLock_key'
18
25
 
19
-
20
26
  # If we have a resource module, ask to use as many file handles as the hard
21
27
  # limit allows, then calculate how may tile sources we can have open based on
22
28
  # the actual limit.
23
29
  MaximumTileSources = 10
24
- if resource:
30
+ if HAS_RESOURCE:
25
31
  try:
26
32
  SoftNoFile, HardNoFile = resource.getrlimit(resource.RLIMIT_NOFILE)
27
33
  resource.setrlimit(resource.RLIMIT_NOFILE, (HardNoFile, HardNoFile))
@@ -29,7 +35,7 @@ if resource:
29
35
  # Reserve some file handles for general use, and expect that tile
30
36
  # sources could use many handles each. This is conservative, since
31
37
  # running out of file handles breaks the program in general.
32
- MaximumTileSources = max(3, (SoftNoFile - 10) / 20)
38
+ MaximumTileSources = max(3, (SoftNoFile - 10) // 20)
33
39
  except Exception:
34
40
  pass
35
41
 
@@ -47,7 +53,7 @@ CacheProperties = {
47
53
  }
48
54
 
49
55
 
50
- def strhash(*args, **kwargs):
56
+ def strhash(*args, **kwargs) -> str:
51
57
  """
52
58
  Generate a string hash value for an arbitrary set of args and kwargs. This
53
59
  relies on the repr of each element.
@@ -61,7 +67,7 @@ def strhash(*args, **kwargs):
61
67
  return '%r' % (args, )
62
68
 
63
69
 
64
- def methodcache(key=None): # noqa
70
+ def methodcache(key: Optional[Callable] = None) -> Callable: # noqa
65
71
  """
66
72
  Decorator to wrap a function with a memoizing callable that saves results
67
73
  in self.cache. This is largely taken from cachetools, but uses a cache
@@ -70,9 +76,9 @@ def methodcache(key=None): # noqa
70
76
 
71
77
  :param key: if a function, use that for the key, otherwise use self.wrapKey.
72
78
  """
73
- def decorator(func):
79
+ def decorator(func: Callable[P, T]) -> Callable[..., T]:
74
80
  @functools.wraps(func)
75
- def wrapper(self, *args, **kwargs):
81
+ def wrapper(self, *args: P.args, **kwargs: P.kwargs) -> T:
76
82
  k = key(*args, **kwargs) if key else self.wrapKey(*args, **kwargs)
77
83
  lock = getattr(self, 'cache_lock', None)
78
84
  ck = getattr(self, '_classkey', None)
@@ -115,8 +121,8 @@ def methodcache(key=None): # noqa
115
121
 
116
122
 
117
123
  class LruCacheMetaclass(type):
118
- namedCaches = {}
119
- classCaches = {}
124
+ namedCaches: Dict[str, Any] = {}
125
+ classCaches: Dict[type, Any] = {}
120
126
 
121
127
  def __new__(metacls, name, bases, namespace, **kwargs):
122
128
  # Get metaclass parameters by finding and removing them from the class
@@ -267,7 +273,7 @@ def getTileCache():
267
273
  return _tileCache, _tileLock
268
274
 
269
275
 
270
- def isTileCacheSetup():
276
+ def isTileCacheSetup() -> bool:
271
277
  """
272
278
  Return True if the tile cache has been created.
273
279
 
@@ -1,6 +1,7 @@
1
1
  import json
2
2
  import logging
3
3
  import os
4
+ import pathlib
4
5
  import re
5
6
  from typing import Any, Optional, Union, cast
6
7
 
@@ -111,7 +112,8 @@ def setConfig(key: str, value: Optional[Union[str, bool, int, logging.Logger]])
111
112
  curConfig[key] = value
112
113
 
113
114
 
114
- def _ignoreSourceNames(configKey, path, default=None):
115
+ def _ignoreSourceNames(
116
+ configKey: str, path: Union[str, pathlib.Path], default: Optional[str] = None) -> None:
115
117
  """
116
118
  Given a path, if it is an actual file and there is a setting
117
119
  "source_<configKey>_ignored_names", raise a TileSourceError if the path
@@ -123,6 +125,6 @@ def _ignoreSourceNames(configKey, path, default=None):
123
125
  """
124
126
  ignored_names = getConfig('source_%s_ignored_names' % configKey) or default
125
127
  if not ignored_names or not os.path.isfile(path):
126
- return
128
+ return None
127
129
  if re.search(ignored_names, os.path.basename(path), flags=re.IGNORECASE):
128
130
  raise exceptions.TileSourceError('File will not be opened by %s reader' % configKey)