mirror of
https://github.com/python/cpython.git
synced 2025-08-02 16:13:13 +00:00
Issue #28228: imghdr now supports pathlib
This commit is contained in:
parent
6c63f197df
commit
ef223a19f7
4 changed files with 15 additions and 1 deletions
|
@ -20,6 +20,9 @@ The :mod:`imghdr` module defines the following function:
|
||||||
string describing the image type. If optional *h* is provided, the *filename*
|
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.
|
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
|
The following image types are recognized, as listed below with the return value
|
||||||
from :func:`what`:
|
from :func:`what`:
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
"""Recognize image file formats based on their first few bytes."""
|
"""Recognize image file formats based on their first few bytes."""
|
||||||
|
|
||||||
|
from os import PathLike
|
||||||
|
|
||||||
__all__ = ["what"]
|
__all__ = ["what"]
|
||||||
|
|
||||||
#-------------------------#
|
#-------------------------#
|
||||||
|
@ -10,7 +12,7 @@ def what(file, h=None):
|
||||||
f = None
|
f = None
|
||||||
try:
|
try:
|
||||||
if h is None:
|
if h is None:
|
||||||
if isinstance(file, str):
|
if isinstance(file, (str, PathLike)):
|
||||||
f = open(file, 'rb')
|
f = open(file, 'rb')
|
||||||
h = f.read(32)
|
h = f.read(32)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import imghdr
|
import imghdr
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
import pathlib
|
||||||
import unittest
|
import unittest
|
||||||
import warnings
|
import warnings
|
||||||
from test.support import findfile, TESTFN, unlink
|
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, data), expected)
|
||||||
self.assertEqual(imghdr.what(None, bytearray(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_register_test(self):
|
||||||
def test_jumbo(h, file):
|
def test_jumbo(h, file):
|
||||||
if h.startswith(b'eggs'):
|
if h.startswith(b'eggs'):
|
||||||
|
|
|
@ -46,6 +46,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #28228: imghdr now supports pathlib.
|
||||||
|
|
||||||
- Issue #28226: compileall now supports pathlib.
|
- Issue #28226: compileall now supports pathlib.
|
||||||
|
|
||||||
- Issue #28314: Fix function declaration (C flags) for the getiterator() method
|
- Issue #28314: Fix function declaration (C flags) for the getiterator() method
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue