Skip to content

Commit 62eb664

Browse files
committed
Add reprs for OpenSlide, ImageSlide, DeepZoomGenerator
1 parent 03386af commit 62eb664

File tree

5 files changed

+29
-0
lines changed

5 files changed

+29
-0
lines changed

openslide/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,12 @@ class OpenSlide(AbstractSlide):
150150
def __init__(self, filename):
151151
"""Open a whole-slide image."""
152152
AbstractSlide.__init__(self)
153+
self._filename = filename
153154
self._osr = lowlevel.open(filename)
154155

156+
def __repr__(self):
157+
return '%s(%r)' % (self.__class__.__name__, self._filename)
158+
155159
@classmethod
156160
def detect_format(cls, filename):
157161
"""Return a string describing the format vendor of the specified file.
@@ -266,13 +270,17 @@ def __init__(self, file):
266270
267271
file can be a filename or a PIL.Image."""
268272
AbstractSlide.__init__(self)
273+
self._file_arg = file
269274
if isinstance(file, Image.Image):
270275
self._close = False
271276
self._image = file
272277
else:
273278
self._close = True
274279
self._image = Image.open(file)
275280

281+
def __repr__(self):
282+
return '%s(%r)' % (self.__class__.__name__, self._file_arg)
283+
276284
@classmethod
277285
def detect_format(cls, filename):
278286
"""Return a string describing the format of the specified file.

openslide/deepzoom.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def __init__(self, osr, tile_size=254, overlap=1, limit_bounds=False):
5858
self._osr = osr
5959
self._z_t_downsample = tile_size
6060
self._z_overlap = overlap
61+
self._limit_bounds = limit_bounds
6162

6263
# Precompute dimensions
6364
# Slide level and offset
@@ -112,6 +113,11 @@ def __init__(self, osr, tile_size=254, overlap=1, limit_bounds=False):
112113
self._bg_color = '#' + self._osr.properties.get(
113114
openslide.PROPERTY_NAME_BACKGROUND_COLOR, 'ffffff')
114115

116+
def __repr__(self):
117+
return '%s(%r, tile_size=%r, overlap=%r, limit_bounds=%r)' % (
118+
self.__class__.__name__, self._osr, self._z_t_downsample,
119+
self._z_overlap, self._limit_bounds)
120+
115121
@property
116122
def level_count(self):
117123
"""The number of Deep Zoom levels in the image."""

tests/test_deepzoom.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ def setUp(self):
3333
def tearDown(self):
3434
self.osr.close()
3535

36+
def test_repr(self):
37+
self.assertEqual(repr(self.dz),
38+
('DeepZoomGenerator(%r, tile_size=254, overlap=1, ' +
39+
'limit_bounds=False)') % self.osr)
40+
3641
def test_metadata(self):
3742
self.assertEqual(self.dz.level_count, 10)
3843
self.assertEqual(self.dz.tile_count, 11)

tests/test_imageslide.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,12 @@ def test_open(self):
5252
self.assertRaises(IOError,
5353
lambda: ImageSlide(file_path('../setup.py')))
5454

55+
def test_open_image(self):
5556
# passing PIL.Image to ImageSlide
5657
with image_open(file_path('boxes.png')) as img:
5758
with ImageSlide(img) as osr:
5859
self.assertEqual(osr.dimensions, (300, 250))
60+
self.assertEqual(repr(osr), 'ImageSlide(%r)' % img)
5961

6062
def test_operations_on_closed_handle(self):
6163
with image_open(file_path('boxes.png')) as img:
@@ -82,6 +84,10 @@ def setUp(self):
8284
def tearDown(self):
8385
self.osr.close()
8486

87+
def test_repr(self):
88+
self.assertEqual(repr(self.osr),
89+
'ImageSlide(%r)' % file_path('boxes.png'))
90+
8591
def test_metadata(self):
8692
self.assertEqual(self.osr.level_count, 1)
8793
self.assertEqual(self.osr.level_dimensions, ((300, 250),))

tests/test_openslide.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ def tearDown(self):
7373
class TestSlide(_SlideTest, unittest.TestCase):
7474
FILENAME = 'boxes.tiff'
7575

76+
def test_repr(self):
77+
self.assertEqual(repr(self.osr),
78+
'OpenSlide(%r)' % file_path('boxes.tiff'))
79+
7680
def test_basic_metadata(self):
7781
self.assertEqual(self.osr.level_count, 4)
7882
self.assertEqual(self.osr.level_dimensions,

0 commit comments

Comments
 (0)