Issue #28228: imghdr now supports pathlib

This commit is contained in:
Berker Peksag 2016-10-01 05:01:54 +03:00
parent 6c63f197df
commit ef223a19f7
4 changed files with 15 additions and 1 deletions

View File

@ -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`:

View File

@ -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:

View File

@ -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'):

View File

@ -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