[Python-checkins] cpython (merge 3.6 -> default): Issue #28228: Merge from 3.6

berker.peksag python-checkins at python.org
Fri Sep 30 22:00:13 EDT 2016


https://hg.python.org/cpython/rev/013b3b5d3b6c
changeset: 104208:013b3b5d3b6c
parent: 104206:4ba2f6bce7f4
parent: 104207:929e3adefe7a
user: Berker Peksag <berker.peksag at gmail.com>
date: Sat Oct 01 05:02:22 2016 +0300
summary:
 Issue #28228: Merge from 3.6
files:
 Doc/library/imghdr.rst | 3 +++
 Lib/imghdr.py | 4 +++-
 Lib/test/test_imghdr.py | 7 +++++++
 Misc/NEWS | 2 ++
 4 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/Doc/library/imghdr.rst b/Doc/library/imghdr.rst
--- a/Doc/library/imghdr.rst
+++ b/Doc/library/imghdr.rst
@@ -20,6 +20,9 @@
 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
--- 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
--- 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'):
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -54,6 +54,8 @@
 Library
 -------
 
+- Issue #28228: imghdr now supports pathlib.
+
 - Issue #28226: compileall now supports pathlib.
 
 - Issue #28314: Fix function declaration (C flags) for the getiterator() method
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /