Skip to content

Commit 3dce923

Browse files
committed
lowlevel: allow bytes in type hints for _utf8_p arguments
The high-level API doesn't accept bytes for any of the affected functionality, but lowlevel does, so encode that in the type signatures. Signed-off-by: Benjamin Gilbert <[email protected]>
1 parent 5f0b7b1 commit 3dce923

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

openslide/lowlevel.py

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ def read_icc_profile(slide: _OpenSlide) -> bytes | None:
473473
'openslide_get_property_names', POINTER(c_char_p), [_OpenSlide], _check_name_list
474474
)
475475

476-
get_property_value: _Func[[_OpenSlide, str], str] = _func(
476+
get_property_value: _Func[[_OpenSlide, str | bytes], str] = _func(
477477
'openslide_get_property_value', c_char_p, [_OpenSlide, _utf8_p]
478478
)
479479

@@ -485,7 +485,7 @@ def read_icc_profile(slide: _OpenSlide) -> bytes | None:
485485
)
486486

487487
_get_associated_image_dimensions: _Func[
488-
[_OpenSlide, str, _Pointer[c_int64], _Pointer[c_int64]], None
488+
[_OpenSlide, str | bytes, _Pointer[c_int64], _Pointer[c_int64]], None
489489
] = _func(
490490
'openslide_get_associated_image_dimensions',
491491
None,
@@ -494,46 +494,54 @@ def read_icc_profile(slide: _OpenSlide) -> bytes | None:
494494

495495

496496
@_wraps_funcs([_get_associated_image_dimensions])
497-
def get_associated_image_dimensions(slide: _OpenSlide, name: str) -> tuple[int, int]:
497+
def get_associated_image_dimensions(
498+
slide: _OpenSlide, name: str | bytes
499+
) -> tuple[int, int]:
498500
w, h = c_int64(), c_int64()
499501
_get_associated_image_dimensions(slide, name, byref(w), byref(h))
500502
return w.value, h.value
501503

502504

503-
_read_associated_image: _Func[[_OpenSlide, str, _Pointer[c_uint32]], None] = _func(
504-
'openslide_read_associated_image', None, [_OpenSlide, _utf8_p, POINTER(c_uint32)]
505+
_read_associated_image: _Func[[_OpenSlide, str | bytes, _Pointer[c_uint32]], None] = (
506+
_func(
507+
'openslide_read_associated_image',
508+
None,
509+
[_OpenSlide, _utf8_p, POINTER(c_uint32)],
510+
)
505511
)
506512

507513

508514
@_wraps_funcs([get_associated_image_dimensions, _read_associated_image])
509-
def read_associated_image(slide: _OpenSlide, name: str) -> Image.Image:
515+
def read_associated_image(slide: _OpenSlide, name: str | bytes) -> Image.Image:
510516
w, h = get_associated_image_dimensions(slide, name)
511517
buf = (w * h * c_uint32)()
512518
_read_associated_image(slide, name, buf)
513519
return _load_image(buf, (w, h))
514520

515521

516-
get_associated_image_icc_profile_size: _Func[[_OpenSlide, str], int] = _func(
522+
get_associated_image_icc_profile_size: _Func[[_OpenSlide, str | bytes], int] = _func(
517523
'openslide_get_associated_image_icc_profile_size',
518524
c_int64,
519525
[_OpenSlide, _utf8_p],
520526
minimum_version='4.0.0',
521527
)
522528

523-
_read_associated_image_icc_profile: _Func[[_OpenSlide, str, _Pointer[c_char]], None] = (
524-
_func(
525-
'openslide_read_associated_image_icc_profile',
526-
None,
527-
[_OpenSlide, _utf8_p, POINTER(c_char)],
528-
minimum_version='4.0.0',
529-
)
529+
_read_associated_image_icc_profile: _Func[
530+
[_OpenSlide, str | bytes, _Pointer[c_char]], None
531+
] = _func(
532+
'openslide_read_associated_image_icc_profile',
533+
None,
534+
[_OpenSlide, _utf8_p, POINTER(c_char)],
535+
minimum_version='4.0.0',
530536
)
531537

532538

533539
@_wraps_funcs(
534540
[get_associated_image_icc_profile_size, _read_associated_image_icc_profile]
535541
)
536-
def read_associated_image_icc_profile(slide: _OpenSlide, name: str) -> bytes | None:
542+
def read_associated_image_icc_profile(
543+
slide: _OpenSlide, name: str | bytes
544+
) -> bytes | None:
537545
size = get_associated_image_icc_profile_size(slide, name)
538546
if size == 0:
539547
return None

0 commit comments

Comments
 (0)