Issue #28228: imghdr now supports pathlib
diff --git a/Lib/imghdr.py b/Lib/imghdr.py
index b267925..76e8abb 100644
--- a/Lib/imghdr.py
+++ b/Lib/imghdr.py
@@ -1,5 +1,7 @@
"""Recognize image file formats based on their first few bytes."""
+from os import PathLike
+
__all__ = ["what"]
#-------------------------#
@@ -10,7 +12,7 @@
f = None
try:
if h is None:
- if isinstance(file, str):
+ if isinstance(file, (str, PathLike)):
f = open(file, 'rb')
h = f.read(32)
else:
diff --git a/Lib/test/test_imghdr.py b/Lib/test/test_imghdr.py
index b54daf8..476ba95 100644
--- a/Lib/test/test_imghdr.py
+++ b/Lib/test/test_imghdr.py
@@ -1,6 +1,7 @@
import imghdr
import io
import os
+import pathlib
import unittest
import warnings
from test.support import findfile, TESTFN, unlink
@@ -49,6 +50,12 @@
self.assertEqual(imghdr.what(None, data), expected)
self.assertEqual(imghdr.what(None, bytearray(data)), expected)
+ def test_pathlike_filename(self):
+ for filename, expected in TEST_FILES:
+ with self.subTest(filename=filename):
+ filename = findfile(filename, subdir='imghdrdata')
+ self.assertEqual(imghdr.what(pathlib.Path(filename)), expected)
+
def test_register_test(self):
def test_jumbo(h, file):
if h.startswith(b'eggs'):