mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Use pathlib2 for Path objects on Python < 3.4
The pathlib backport module is no longer maintained. The development has moved to the pathlib2 module instead. Quoting from the pathlib's README: "Attention: this backport module isn't maintained anymore. If you want to report issues or contribute patches, please consider the pathlib2 project instead." Other projects have already switched to pathlib2, most notably IPython and its dependencies.
This commit is contained in:
		
							parent
							
								
									3f372ef54a
								
							
						
					
					
						commit
						7e8a6c61f8
					
				
							
								
								
									
										21
									
								
								PIL/Image.py
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								PIL/Image.py
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -132,6 +132,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):
 | 
			
		||||
    """
 | 
			
		||||
| 
						 | 
				
			
			@ -1652,9 +1662,7 @@ 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):
 | 
			
		||||
        elif HAS_PATHLIB and isinstance(fp, Path):
 | 
			
		||||
            filename = str(fp)
 | 
			
		||||
            open_fp = True
 | 
			
		||||
        if not filename and hasattr(fp, "name") and isPath(fp.name):
 | 
			
		||||
| 
						 | 
				
			
			@ -2267,13 +2275,8 @@ def open(fp, mode="r"):
 | 
			
		|||
    filename = ""
 | 
			
		||||
    if isPath(fp):
 | 
			
		||||
        filename = fp
 | 
			
		||||
    else:
 | 
			
		||||
        try:
 | 
			
		||||
            from pathlib import Path
 | 
			
		||||
            if isinstance(fp, Path):
 | 
			
		||||
    elif HAS_PATHLIB and isinstance(fp, Path):
 | 
			
		||||
        filename = str(fp.resolve())
 | 
			
		||||
        except ImportError:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
    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):
 | 
			
		||||
| 
						 | 
				
			
			@ -50,10 +49,9 @@ class TestImage(PillowTestCase):
 | 
			
		|||
            im = io.BytesIO(b'')
 | 
			
		||||
        self.assertRaises(IOError, lambda: Image.open(im))
 | 
			
		||||
 | 
			
		||||
    @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