summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2016-10-01 05:01:54 +0300
committerBerker Peksag <berker.peksag@gmail.com>2016-10-01 05:01:54 +0300
commita0be625be517f6bdcb5863a4d690a8bbeccc34fe (patch)
tree346e27e883ea33db4d3bad3cc8dfac32a8cc257a
parent6a587bf81672564a34e2cb7cd37d39ec555f784b (diff)
downloadcpython-a0be625be517f6bdcb5863a4d690a8bbeccc34fe.tar.gz
Issue #28228: imghdr now supports pathlib
-rw-r--r--Doc/library/imghdr.rst3
-rw-r--r--Lib/imghdr.py4
-rw-r--r--Lib/test/test_imghdr.py7
-rw-r--r--Misc/NEWS2
4 files changed, 15 insertions, 1 deletions
diff --git a/Doc/library/imghdr.rst b/Doc/library/imghdr.rst
index f11f6dcf8e..800e919599 100644
--- a/Doc/library/imghdr.rst
+++ b/Doc/library/imghdr.rst
@@ -20,6 +20,9 @@ The :mod:`imghdr` module defines the following function:
string describing the image type. If optional *h* is provided, the *filename*
is ignored and *h* is assumed to contain the byte stream to test.
+ .. versionchanged:: 3.6
+ Accepts a :term:`path-like object`.
+
The following image types are recognized, as listed below with the return value
from :func:`what`:
diff --git a/Lib/imghdr.py b/Lib/imghdr.py
index b26792539d..76e8abb2d5 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 @@ def what(file, h=None):
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 b54daf8e2c..476ba95f17 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 @@ class TestImghdr(unittest.TestCase):
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'):
diff --git a/Misc/NEWS b/Misc/NEWS
index 62fc004d93..d3983f2fce 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -46,6 +46,8 @@ Core and Builtins
Library
-------
+- Issue #28228: imghdr now supports pathlib.
+
- Issue #28226: compileall now supports pathlib.
- Issue #28314: Fix function declaration (C flags) for the getiterator() method