Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-blockdiag for openSUSE:Factory checked in at 2023-10-04 22:31:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-blockdiag (Old) and /work/SRC/openSUSE:Factory/.python-blockdiag.new.28202 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-blockdiag" Wed Oct 4 22:31:43 2023 rev:10 rq:1115014 version:3.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-blockdiag/python-blockdiag.changes 2023-05-03 15:42:16.290717159 +0200 +++ /work/SRC/openSUSE:Factory/.python-blockdiag.new.28202/python-blockdiag.changes 2023-10-04 22:32:47.246538373 +0200 @@ -1,0 +2,5 @@ +Tue Oct 3 12:06:41 UTC 2023 - Markéta Machová <mmach...@suse.com> + +- Add upstream pillow10.patch to fix compatibility with Pillow 10.0.0 + +------------------------------------------------------------------- New: ---- pillow10.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-blockdiag.spec ++++++ --- /var/tmp/diff_new_pack.aHrKA6/_old 2023-10-04 22:32:48.290576108 +0200 +++ /var/tmp/diff_new_pack.aHrKA6/_new 2023-10-04 22:32:48.290576108 +0200 @@ -28,6 +28,8 @@ # PATCH-FIX-UPSTREAM python-blockdiag-nose-to-pytest.patch gh#blockdiag/blockdiag#131 pgaj...@suse.com # Remove the last silly dependency on nose Patch0: python-blockdiag-nose-to-pytest.patch +# PATCH-FIX-UPSTREAM https://github.com/blockdiag/blockdiag/pull/179 Add support for Pillow 10 +Patch1: pillow10.patch BuildRequires: %{python_module Pillow >= 3} BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module funcparserlib >= 1.0.0~a0} ++++++ pillow10.patch ++++++ >From 20d780cad84e7b010066cb55f848477957870165 Mon Sep 17 00:00:00 2001 From: Theodore Ni <3806110+t...@users.noreply.github.com> Date: Sat, 5 Aug 2023 10:43:46 -0700 Subject: [PATCH] Add support for Pillow 10 Fix a bunch of breaking changes in a backwards compatible way. --- src/blockdiag/imagedraw/png.py | 47 ++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/blockdiag/imagedraw/png.py b/src/blockdiag/imagedraw/png.py index 3cac05a..12f0514 100644 --- a/src/blockdiag/imagedraw/png.py +++ b/src/blockdiag/imagedraw/png.py @@ -30,6 +30,21 @@ from blockdiag.utils.myitertools import istep, stepslice +# to support pillow < 9.1.0 +if not hasattr(Image, 'Resampling'): + from enum import IntEnum + + class Resampling(IntEnum): + NEAREST = 0 + BOX = 4 + BILINEAR = 2 + HAMMING = 5 + BICUBIC = 3 + LANCZOS = 1 + + Image.Resampling = Resampling + + def point_pairs(xylist): iterable = iter(xylist) for pt in iterable: @@ -147,7 +162,7 @@ def set_canvas_size(self, size): self.draw = ImageDraw.Draw(self._image) def resizeCanvas(self, size): - self._image = self._image.resize(size, Image.ANTIALIAS) + self._image = self._image.resize(size, Image.Resampling.LANCZOS) self.draw = ImageDraw.Draw(self._image) def arc(self, box, start, end, **kwargs): @@ -273,13 +288,21 @@ def textfolder(self): def textlinesize(self, string, font): ttfont = ttfont_for(font) if ttfont is None: - size = self.draw.textsize(string, font=None) + if hasattr(self.draw, 'textbbox'): + left, top, right, bottom = self.draw.textbbox((0, 0), string) + size = (right - left, bottom - top) + else: + size = self.draw.textsize(string, font=None) font_ratio = font.size * 1.0 / FontMap.BASE_FONTSIZE size = Size(int(size[0] * font_ratio), int(size[1] * font_ratio)) else: - size = Size(*ttfont.getsize(string)) + if hasattr(ttfont, 'getbbox'): + left, top, right, bottom = ttfont.getbbox(string) + size = Size(right - left, bottom - top) + else: + size = Size(*ttfont.getsize(string)) return size @@ -291,7 +314,11 @@ def text(self, xy, string, font, **kwargs): if self.scale_ratio == 1 and font.size == FontMap.BASE_FONTSIZE: self.draw.text(xy, string, fill=fill) else: - size = self.draw.textsize(string) + if hasattr(self.draw, 'textbbox'): + left, top, right, bottom = self.draw.textbbox((0, 0), string) + size = (right - left, bottom - top) + else: + size = self.draw.textsize(string) image = Image.new('RGBA', size) draw = ImageDraw.Draw(image) draw.text((0, 0), string, fill=fill) @@ -299,10 +326,14 @@ def text(self, xy, string, font, **kwargs): basesize = (size[0] * self.scale_ratio, size[1] * self.scale_ratio) - text_image = image.resize(basesize, Image.ANTIALIAS) + text_image = image.resize(basesize, Image.Resampling.LANCZOS) self.paste(text_image, xy, text_image) else: - size = ttfont.getsize(string) + if hasattr(ttfont, 'getbbox'): + left, top, right, bottom = ttfont.getbbox(string) + size = (right - left, bottom - top) + else: + size = ttfont.getsize(string) # Generate mask to support BDF(bitmap font) mask = Image.new('1', size) @@ -370,7 +401,7 @@ def image(self, box, url): # resize image. w = min([box.width, image.size[0] * self.scale_ratio]) h = min([box.height, image.size[1] * self.scale_ratio]) - image.thumbnail((w, h), Image.ANTIALIAS) + image.thumbnail((w, h), Image.Resampling.LANCZOS) # centering image. w, h = image.size @@ -404,7 +435,7 @@ def save(self, filename, size, _format): y = int(self._image.size[1] / self.scale_ratio) size = (x, y) - self._image.thumbnail(size, Image.ANTIALIAS) + self._image.thumbnail(size, Image.Resampling.LANCZOS) if self.filename: self._image.save(self.filename, _format)