diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2016-10-01 02:01:54 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2016-10-01 02:01:54 (GMT) |
commit | ef223a19f76101a914ccff8b4690d9e4717e109e (patch) | |
tree | bdad4d3c2616ab612149201f523ed0491198bd22 | |
parent | 6c63f197dff23f56b15c61dea8bea30d83350c63 (diff) | |
download | cpython-ef223a19f76101a914ccff8b4690d9e4717e109e.zip cpython-ef223a19f76101a914ccff8b4690d9e4717e109e.tar.gz cpython-ef223a19f76101a914ccff8b4690d9e4717e109e.tar.bz2 |
Issue #28228: imghdr now supports pathlib
-rw-r--r-- | Doc/library/imghdr.rst | 3 | ||||
-rw-r--r-- | Lib/imghdr.py | 4 | ||||
-rw-r--r-- | Lib/test/test_imghdr.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
4 files changed, 15 insertions, 1 deletions
diff --git a/Doc/library/imghdr.rst b/Doc/library/imghdr.rst index f11f6dc..800e919 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 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 @@ 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 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 @@ 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'): @@ -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 |