Skip to content

Commit cf628e0

Browse files
committed
lowlevel: accept 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 a65540e commit cf628e0

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
@@ -475,7 +475,7 @@ def read_icc_profile(slide: _OpenSlide) -> bytes | None:
475475
'openslide_get_property_names', POINTER(c_char_p), [_OpenSlide], _check_name_list
476476
)
477477

478-
get_property_value: _Func[[_OpenSlide, str], str] = _func(
478+
get_property_value: _Func[[_OpenSlide, str | bytes], str] = _func(
479479
'openslide_get_property_value', c_char_p, [_OpenSlide, _utf8_p]
480480
)
481481

@@ -487,7 +487,7 @@ def read_icc_profile(slide: _OpenSlide) -> bytes | None:
487487
)
488488

489489
_get_associated_image_dimensions: _Func[
490-
[_OpenSlide, str, _Pointer[c_int64], _Pointer[c_int64]], None
490+
[_OpenSlide, str | bytes, _Pointer[c_int64], _Pointer[c_int64]], None
491491
] = _func(
492492
'openslide_get_associated_image_dimensions',
493493
None,
@@ -496,46 +496,54 @@ def read_icc_profile(slide: _OpenSlide) -> bytes | None:
496496

497497

498498
@_wraps_funcs([_get_associated_image_dimensions])
499-
def get_associated_image_dimensions(slide: _OpenSlide, name: str) -> tuple[int, int]:
499+
def get_associated_image_dimensions(
500+
slide: _OpenSlide, name: str | bytes
501+
) -> tuple[int, int]:
500502
w, h = c_int64(), c_int64()
501503
_get_associated_image_dimensions(slide, name, byref(w), byref(h))
502504
return w.value, h.value
503505

504506

505-
_read_associated_image: _Func[[_OpenSlide, str, _Pointer[c_uint32]], None] = _func(
506-
'openslide_read_associated_image', None, [_OpenSlide, _utf8_p, POINTER(c_uint32)]
507+
_read_associated_image: _Func[[_OpenSlide, str | bytes, _Pointer[c_uint32]], None] = (
508+
_func(
509+
'openslide_read_associated_image',
510+
None,
511+
[_OpenSlide, _utf8_p, POINTER(c_uint32)],
512+
)
507513
)
508514

509515

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

517523

518-
get_associated_image_icc_profile_size: _Func[[_OpenSlide, str], int] = _func(
524+
get_associated_image_icc_profile_size: _Func[[_OpenSlide, str | bytes], int] = _func(
519525
'openslide_get_associated_image_icc_profile_size',
520526
c_int64,
521527
[_OpenSlide, _utf8_p],
522528
minimum_version='4.0.0',
523529
)
524530

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

534540

535541
@_wraps_funcs(
536542
[get_associated_image_icc_profile_size, _read_associated_image_icc_profile]
537543
)
538-
def read_associated_image_icc_profile(slide: _OpenSlide, name: str) -> bytes | None:
544+
def read_associated_image_icc_profile(
545+
slide: _OpenSlide, name: str | bytes
546+
) -> bytes | None:
539547
size = get_associated_image_icc_profile_size(slide, name)
540548
if size == 0:
541549
return None

0 commit comments

Comments
 (0)