Skip to content

Commit 8a0b4e6

Browse files
committed
Add OpenSlideVersionError
Raise a subclass of OpenSlideError when an unsupported OpenSlide version is detected.
1 parent 1374cfa commit 8a0b4e6

3 files changed

Lines changed: 22 additions & 2 deletions

File tree

doc/index.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,11 @@ Exceptions
220220
OpenSlide does not support the requested file. Subclass of
221221
:exc:`OpenSlideError`.
222222

223+
.. exception:: OpenSlideVersionError
224+
225+
This version of OpenSlide does not support the requested functionality.
226+
Subclass of :exc:`OpenSlideError`.
227+
223228

224229
Wrapping a PIL Image
225230
====================

openslide/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@
3030

3131
# For the benefit of library users
3232
from openslide._version import __version__ # noqa: F401 module-imported-but-unused
33-
from openslide.lowlevel import OpenSlideError, OpenSlideUnsupportedFormatError
33+
from openslide.lowlevel import ( # noqa: F401 module-imported-but-unused
34+
OpenSlideError,
35+
OpenSlideUnsupportedFormatError,
36+
OpenSlideVersionError,
37+
)
3438

3539
__library_version__ = lowlevel.get_version()
3640

openslide/lowlevel.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@ class OpenSlideError(Exception):
7676
"""
7777

7878

79+
class OpenSlideVersionError(OpenSlideError):
80+
"""This version of OpenSlide does not support the requested functionality.
81+
82+
Import this from openslide rather than from openslide.lowlevel.
83+
"""
84+
85+
def __init__(self, minimum_version):
86+
super().__init__(f'OpenSlide >= {minimum_version} required')
87+
self.minimum_version = minimum_version
88+
89+
7990
class OpenSlideUnsupportedFormatError(OpenSlideError):
8091
"""OpenSlide does not support the requested file.
8192
@@ -187,7 +198,7 @@ def _func(name, restype, argtypes, errcheck=_check_error):
187198
try:
188199
detect_vendor = _func('openslide_detect_vendor', c_char_p, [_utf8_p], _check_string)
189200
except AttributeError:
190-
raise OpenSlideError('OpenSlide >= 3.4.0 required')
201+
raise OpenSlideVersionError('3.4.0')
191202

192203
open = _func('openslide_open', c_void_p, [_utf8_p], _check_open)
193204

0 commit comments

Comments
 (0)