mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 09:56:17 +03:00
Merge pull request #2291 from asergi/pathlib2
Use pathlib2 for Path objects on Python < 3.4
This commit is contained in:
commit
c786213b09
27
PIL/Image.py
27
PIL/Image.py
|
@ -123,6 +123,16 @@ try:
|
|||
except ImportError:
|
||||
HAS_CFFI = False
|
||||
|
||||
try:
|
||||
from pathlib import Path
|
||||
HAS_PATHLIB = True
|
||||
except ImportError:
|
||||
try:
|
||||
from pathlib2 import Path
|
||||
HAS_PATHLIB = True
|
||||
except ImportError:
|
||||
HAS_PATHLIB = False
|
||||
|
||||
|
||||
def isImageType(t):
|
||||
"""
|
||||
|
@ -1875,11 +1885,9 @@ class Image(object):
|
|||
if isPath(fp):
|
||||
filename = fp
|
||||
open_fp = True
|
||||
elif sys.version_info >= (3, 4):
|
||||
from pathlib import Path
|
||||
if isinstance(fp, Path):
|
||||
filename = str(fp)
|
||||
open_fp = True
|
||||
elif HAS_PATHLIB and isinstance(fp, Path):
|
||||
filename = str(fp)
|
||||
open_fp = True
|
||||
if not filename and hasattr(fp, "name") and isPath(fp.name):
|
||||
# only set the name for metadata purposes
|
||||
filename = fp.name
|
||||
|
@ -2516,13 +2524,8 @@ def open(fp, mode="r"):
|
|||
filename = ""
|
||||
if isPath(fp):
|
||||
filename = fp
|
||||
else:
|
||||
try:
|
||||
from pathlib import Path
|
||||
if isinstance(fp, Path):
|
||||
filename = str(fp.resolve())
|
||||
except ImportError:
|
||||
pass
|
||||
elif HAS_PATHLIB and isinstance(fp, Path):
|
||||
filename = str(fp.resolve())
|
||||
|
||||
if filename:
|
||||
fp = builtins.open(filename, "rb")
|
||||
|
|
|
@ -2,7 +2,6 @@ from helper import unittest, PillowTestCase, hopper
|
|||
|
||||
from PIL import Image
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
class TestImage(PillowTestCase):
|
||||
|
@ -72,10 +71,9 @@ class TestImage(PillowTestCase):
|
|||
def test_bad_mode(self):
|
||||
self.assertRaises(ValueError, Image.open, "filename", "bad mode")
|
||||
|
||||
@unittest.skipIf(sys.version_info < (3, 4),
|
||||
"pathlib only available in Python 3.4 or later")
|
||||
@unittest.skipUnless(Image.HAS_PATHLIB, "requires pathlib/pathlib2")
|
||||
def test_pathlib(self):
|
||||
from pathlib import Path
|
||||
from PIL.Image import Path
|
||||
im = Image.open(Path("Tests/images/hopper.jpg"))
|
||||
self.assertEqual(im.mode, "RGB")
|
||||
self.assertEqual(im.size, (128, 128))
|
||||
|
|
Loading…
Reference in New Issue
Block a user