143 lines
4.9 KiB
Diff
143 lines
4.9 KiB
Diff
From 86944abbabad62e53e644bd7375b9a56d66c1675 Mon Sep 17 00:00:00 2001
|
|
From: Andrew Murray <radarhere@users.noreply.github.com>
|
|
Date: Sat, 15 Jan 2022 16:08:37 +1100
|
|
Subject: [PATCH] Deprecated show_file "file" argument in favour of "path"
|
|
|
|
Conflict:NA
|
|
Reference:https://github.com/python-pillow/Pillow/commit/86944abbabad62e53e644bd7375b9a56d66c1675
|
|
|
|
---
|
|
Tests/test_imageshow.py | 15 +++++++++++
|
|
src/PIL/ImageShow.py | 59 +++++++++++++++++++++++++++++++----------
|
|
2 files changed, 60 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/Tests/test_imageshow.py b/Tests/test_imageshow.py
|
|
index 78e80f5..f79a531 100644
|
|
--- a/Tests/test_imageshow.py
|
|
+++ b/Tests/test_imageshow.py
|
|
@@ -63,3 +63,18 @@ def test_viewer():
|
|
def test_viewers():
|
|
for viewer in ImageShow._viewers:
|
|
viewer.get_command("test.jpg")
|
|
+
|
|
+
|
|
+@pytest.mark.skipif(
|
|
+ not on_ci() or is_win32(),
|
|
+ reason="Only run on CIs; hangs on Windows CIs",
|
|
+)
|
|
+def test_file_deprecated():
|
|
+ for viewer in ImageShow._viewers:
|
|
+ with pytest.warns(DeprecationWarning):
|
|
+ try:
|
|
+ viewer.show_file(file="test.jpg")
|
|
+ except NotImplementedError:
|
|
+ pass
|
|
+ with pytest.raises(TypeError):
|
|
+ viewer.show_file()
|
|
diff --git a/src/PIL/ImageShow.py b/src/PIL/ImageShow.py
|
|
index 137135e..b3b9a5b 100644
|
|
--- a/src/PIL/ImageShow.py
|
|
+++ b/src/PIL/ImageShow.py
|
|
@@ -16,6 +16,7 @@ import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
+import warnings
|
|
from shlex import quote
|
|
|
|
from PIL import Image
|
|
@@ -106,9 +107,19 @@ class Viewer:
|
|
"""Display the given image."""
|
|
return self.show_file(self.save_image(image), **options)
|
|
|
|
- def show_file(self, file, **options):
|
|
- """Display the given file."""
|
|
- os.system(self.get_command(file, **options))
|
|
+ def show_file(self, path=None, **options):
|
|
+ """Display given file."""
|
|
+ if path is None:
|
|
+ if "file" in options:
|
|
+ warnings.warn(
|
|
+ "The 'file' argument is deprecated and will be removed in Pillow "
|
|
+ "10 (2023-07-01). Use 'path' instead.",
|
|
+ DeprecationWarning,
|
|
+ )
|
|
+ path = options.pop("file")
|
|
+ else:
|
|
+ raise TypeError("Missing required argument: 'path'")
|
|
+ os.system(self.get_command(path, **options))
|
|
return 1
|
|
|
|
|
|
@@ -146,18 +157,28 @@ class MacViewer(Viewer):
|
|
command = f"({command} {quote(file)}; sleep 20; rm -f {quote(file)})&"
|
|
return command
|
|
|
|
- def show_file(self, file, **options):
|
|
+ def show_file(self, path=None, **options):
|
|
"""Display given file"""
|
|
- fd, path = tempfile.mkstemp()
|
|
+ if path is None:
|
|
+ if "file" in options:
|
|
+ warnings.warn(
|
|
+ "The 'file' argument is deprecated and will be removed in Pillow "
|
|
+ "10 (2023-07-01). Use 'path' instead.",
|
|
+ DeprecationWarning,
|
|
+ )
|
|
+ path = options.pop("file")
|
|
+ else:
|
|
+ raise TypeError("Missing required argument: 'path'")
|
|
+ fd, temp_path = tempfile.mkstemp()
|
|
with os.fdopen(fd, "w") as f:
|
|
- f.write(file)
|
|
- with open(path) as f:
|
|
+ f.write(path)
|
|
+ with open(temp_path) as f:
|
|
subprocess.Popen(
|
|
["im=$(cat); open -a Preview.app $im; sleep 20; rm -f $im"],
|
|
shell=True,
|
|
stdin=f,
|
|
)
|
|
- os.remove(path)
|
|
+ os.remove(temp_path)
|
|
return 1
|
|
|
|
|
|
@@ -173,17 +194,27 @@ class UnixViewer(Viewer):
|
|
command = self.get_command_ex(file, **options)[0]
|
|
return f"({command} {quote(file)}; rm -f {quote(file)})&"
|
|
|
|
- def show_file(self, file, **options):
|
|
+ def show_file(self, path=None, **options):
|
|
"""Display given file"""
|
|
- fd, path = tempfile.mkstemp()
|
|
+ if path is None:
|
|
+ if "file" in options:
|
|
+ warnings.warn(
|
|
+ "The 'file' argument is deprecated and will be removed in Pillow "
|
|
+ "10 (2023-07-01). Use 'path' instead.",
|
|
+ DeprecationWarning,
|
|
+ )
|
|
+ path = options.pop("file")
|
|
+ else:
|
|
+ raise TypeError("Missing required argument: 'path'")
|
|
+ fd, temp_path = tempfile.mkstemp()
|
|
with os.fdopen(fd, "w") as f:
|
|
- f.write(file)
|
|
- with open(path) as f:
|
|
- command = self.get_command_ex(file, **options)[0]
|
|
+ f.write(path)
|
|
+ with open(temp_path) as f:
|
|
+ command = self.get_command_ex(path, **options)[0]
|
|
subprocess.Popen(
|
|
["im=$(cat);" + command + " $im; rm -f $im"], shell=True, stdin=f
|
|
)
|
|
- os.remove(path)
|
|
+ os.remove(temp_path)
|
|
return 1
|
|
|
|
class XDGViewer(UnixViewer):
|
|
--
|
|
2.27.0
|
|
|