Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-easy-thumbnails for
openSUSE:Factory checked in at 2026-07-06 15:00:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-easy-thumbnails (Old)
and /work/SRC/openSUSE:Factory/.python-easy-thumbnails.new.1982 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-easy-thumbnails"
Mon Jul 6 15:00:37 2026 rev:8 rq:1364037 version:2.10.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-easy-thumbnails/python-easy-thumbnails.changes
2025-06-03 17:54:22.907701456 +0200
+++
/work/SRC/openSUSE:Factory/.python-easy-thumbnails.new.1982/python-easy-thumbnails.changes
2026-07-06 15:00:39.886746664 +0200
@@ -1,0 +2,7 @@
+Mon Jul 6 11:05:59 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.10.1:
+ * Add support for Django-5.2.
+- drop py313.patch (upstream)
+
+-------------------------------------------------------------------
Old:
----
easy_thumbnails-2.10.tar.gz
py313.patch
New:
----
easy_thumbnails-2.10.1.tar.gz
----------(Old B)----------
Old: * Add support for Django-5.2.
- drop py313.patch (upstream)
----------(Old E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-easy-thumbnails.spec ++++++
--- /var/tmp/diff_new_pack.GJTKKu/_old 2026-07-06 15:00:40.466766601 +0200
+++ /var/tmp/diff_new_pack.GJTKKu/_new 2026-07-06 15:00:40.466766601 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-easy-thumbnails
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,14 +17,12 @@
Name: python-easy-thumbnails
-Version: 2.10
+Version: 2.10.1
Release: 0
Summary: Easy thumbnails for Django
License: BSD-2-Clause
URL: https://github.com/SmileyChris/easy-thumbnails
Source:
https://files.pythonhosted.org/packages/source/e/easy_thumbnails/easy_thumbnails-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM https://github.com/SmileyChris/easy-thumbnails/pull/650
Add support for Python 3.13
-Patch: py313.patch
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
++++++ easy_thumbnails-2.10.tar.gz -> easy_thumbnails-2.10.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/CHANGES.rst
new/easy_thumbnails-2.10.1/CHANGES.rst
--- old/easy_thumbnails-2.10/CHANGES.rst 2024-09-12 14:40:50.000000000
+0200
+++ new/easy_thumbnails-2.10.1/CHANGES.rst 2025-08-17 22:48:58.000000000
+0200
@@ -1,6 +1,10 @@
Changes
=======
+2.10.1 (2025-08-17)
+-------------------
+* Add support for Django-5.2.
+
2.10 (2024-09-11)
-----------------
* Drop support for Python-3.8.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/PKG-INFO
new/easy_thumbnails-2.10.1/PKG-INFO
--- old/easy_thumbnails-2.10/PKG-INFO 2024-09-12 14:40:55.503860000 +0200
+++ new/easy_thumbnails-2.10.1/PKG-INFO 2025-08-17 22:49:05.521606400 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: easy-thumbnails
-Version: 2.10
+Version: 2.10.1
Summary: Easy thumbnails for Django
Home-page: http://github.com/SmileyChris/easy-thumbnails
Author: Chris Beaven
@@ -10,8 +10,8 @@
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
-Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Django :: 5.1
+Classifier: Framework :: Django :: 5.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
@@ -21,6 +21,7 @@
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Application
Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
@@ -30,6 +31,17 @@
Provides-Extra: svg
Requires-Dist: svglib; extra == "svg"
Requires-Dist: reportlab; extra == "svg"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: license-file
+Dynamic: platform
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
===============
Easy Thumbnails
@@ -43,7 +55,7 @@
:target:
https://github.com/SmileyChris/easy-thumbnails/actions/workflows/python.yml
-A powerful, yet easy to implement thumbnailing application for Django 2.2+
+A powerful, yet easy to implement thumbnailing application for Django 4.2+
Below is a quick summary of usage. For more comprehensive information, view the
`full documentation`__ online or the peruse the project's ``docs`` directory.
@@ -232,6 +244,10 @@
Changes
=======
+2.10.1 (2025-08-17)
+-------------------
+* Add support for Django-5.2.
+
2.10 (2024-09-11)
-----------------
* Drop support for Python-3.8.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/README.rst
new/easy_thumbnails-2.10.1/README.rst
--- old/easy_thumbnails-2.10/README.rst 2024-09-12 14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/README.rst 2025-08-17 22:48:58.000000000
+0200
@@ -10,7 +10,7 @@
:target:
https://github.com/SmileyChris/easy-thumbnails/actions/workflows/python.yml
-A powerful, yet easy to implement thumbnailing application for Django 2.2+
+A powerful, yet easy to implement thumbnailing application for Django 4.2+
Below is a quick summary of usage. For more comprehensive information, view the
`full documentation`__ online or the peruse the project's ``docs`` directory.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/easy_thumbnails/__init__.py
new/easy_thumbnails-2.10.1/easy_thumbnails/__init__.py
--- old/easy_thumbnails-2.10/easy_thumbnails/__init__.py 2024-09-12
14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/easy_thumbnails/__init__.py 2025-08-17
22:48:58.000000000 +0200
@@ -1,4 +1,4 @@
-VERSION = (2, 10, 0, 'final', 0)
+VERSION = (2, 10, 1, 'final', 0)
def get_version(*args, **kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/easy_thumbnails/files.py
new/easy_thumbnails-2.10.1/easy_thumbnails/files.py
--- old/easy_thumbnails-2.10/easy_thumbnails/files.py 2024-09-12
14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/easy_thumbnails/files.py 2025-08-17
22:48:58.000000000 +0200
@@ -423,8 +423,9 @@
"""
thumbnail_options = self.get_options(thumbnail_options)
path, source_filename = os.path.split(self.name)
- # remove storage location
- path = path.replace(self.source_storage.location, '')
+ if hasattr(self.source_storage, 'location'): # remote storages do not
have the location attribute
+ # remove storage location
+ path = path.replace(self.source_storage.location, '')
# remove leading slash if present
path = path.lstrip('/')
source_extension = os.path.splitext(source_filename)[1][1:].lower()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/easy_thumbnails/namers.py
new/easy_thumbnails-2.10.1/easy_thumbnails/namers.py
--- old/easy_thumbnails-2.10/easy_thumbnails/namers.py 2024-09-12
14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/easy_thumbnails/namers.py 2025-08-17
22:48:58.000000000 +0200
@@ -1,7 +1,8 @@
import base64
-import hashlib
import os
+from easy_thumbnails.utils import sha1_not_used_for_security
+
def default(thumbnailer, prepared_options, source_filename,
thumbnail_extension, **kwargs):
@@ -38,7 +39,7 @@
for example: ``6qW1buHgLaZ9.jpg``.
"""
parts = ':'.join([source_filename] + prepared_options)
- short_sha = hashlib.sha1(parts.encode('utf-8')).digest()
+ short_sha = sha1_not_used_for_security(parts.encode('utf-8')).digest()
short_hash = base64.urlsafe_b64encode(short_sha[:9]).decode('utf-8')
return '.'.join([short_hash, thumbnail_extension])
@@ -54,10 +55,10 @@
base64 sha1 hash of the thumbnail options. For example:
``1xedFtqllFo9_100x100_QHCa6G1l.jpg``.
"""
- source_sha = hashlib.sha1(source_filename.encode('utf-8')).digest()
+ source_sha =
sha1_not_used_for_security(source_filename.encode('utf-8')).digest()
source_hash = base64.urlsafe_b64encode(source_sha[:9]).decode('utf-8')
parts = ':'.join(prepared_options[1:])
- parts_sha = hashlib.sha1(parts.encode('utf-8')).digest()
+ parts_sha = sha1_not_used_for_security(parts.encode('utf-8')).digest()
options_hash = base64.urlsafe_b64encode(parts_sha[:6]).decode('utf-8')
return '%s_%s_%s.%s' % (
source_hash, prepared_options[0], options_hash, thumbnail_extension)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/easy_thumbnails-2.10/easy_thumbnails/optimize/post_processor.py
new/easy_thumbnails-2.10.1/easy_thumbnails/optimize/post_processor.py
--- old/easy_thumbnails-2.10/easy_thumbnails/optimize/post_processor.py
2024-09-12 14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/easy_thumbnails/optimize/post_processor.py
2025-08-17 22:48:58.000000000 +0200
@@ -1,6 +1,6 @@
import logging
import subprocess
-from imghdr import what as determinetype
+from PIL import Image, UnidentifiedImageError
from django.core.files.base import ContentFile
from django.core.files.temp import NamedTemporaryFile
from easy_thumbnails.optimize.conf import settings
@@ -35,9 +35,30 @@
def optimize_thumbnail(thumbnail):
'''Optimize thumbnail images by removing unnecessary data'''
+ # Ignore remote storage backends.
try:
- optimize_command = settings.THUMBNAIL_OPTIMIZE_COMMAND[
- determinetype(thumbnail.path)]
+ thumbnail_path = thumbnail.path
+ except NotImplementedError:
+ return
+
+ # We can't use thumbnail.image.format directly because it's set to `None`
for images
+ # that have been created by running a method on an existing image. i.e.
It's `None`
+ # because of the thumnailing operations.
+ #
https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.format
+ #
+ # Image.open() is lazy and the full file will not be read when determining
the
+ # format.
+ #
https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.open
+ try:
+ with Image.open(thumbnail_path) as img:
+ # Use the lower case version of format to match the output of
previously used
+ # imghdr.what() (removed in Python 3.13).
+ format = img.format.lower()
+ except UnidentifiedImageError:
+ return
+
+ try:
+ optimize_command = settings.THUMBNAIL_OPTIMIZE_COMMAND[format]
if not optimize_command:
return
except (TypeError, KeyError, NotImplementedError):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/easy_thumbnails/utils.py
new/easy_thumbnails-2.10.1/easy_thumbnails/utils.py
--- old/easy_thumbnails-2.10/easy_thumbnails/utils.py 2024-09-12
14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/easy_thumbnails/utils.py 2025-08-17
22:48:58.000000000 +0200
@@ -65,7 +65,7 @@
if not isinstance(storage, str):
storage_cls = storage.__class__
storage = '%s.%s' % (storage_cls.__module__, storage_cls.__name__)
- return hashlib.md5(storage.encode('utf8')).hexdigest()
+ return md5_not_used_for_security(storage.encode('utf8')).hexdigest()
def is_transparent(image):
@@ -145,3 +145,19 @@
default_timezone = timezone.get_default_timezone()
return timezone.make_aware(modified_time, default_timezone)
return modified_time
+
+def md5_not_used_for_security(data):
+ """
+ Calculate a md5 hash of the given data, but explicitly mark it as not
+ being used for security purposes. Without this flag FIPS compliant
+ systems will raise an exception when used.
+ """
+ return hashlib.new('md5', data, usedforsecurity=False)
+
+def sha1_not_used_for_security(data):
+ """
+ Calculate a sha1 hash of the given data, but explicitly mark it as not
+ being used for security purposes. Without the flag FIPS compliant
+ systems will raise an exception when used.
+ """
+ return hashlib.new('sha1', data, usedforsecurity=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/easy_thumbnails-2.10/easy_thumbnails.egg-info/PKG-INFO
new/easy_thumbnails-2.10.1/easy_thumbnails.egg-info/PKG-INFO
--- old/easy_thumbnails-2.10/easy_thumbnails.egg-info/PKG-INFO 2024-09-12
14:40:55.000000000 +0200
+++ new/easy_thumbnails-2.10.1/easy_thumbnails.egg-info/PKG-INFO
2025-08-17 22:49:05.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: easy-thumbnails
-Version: 2.10
+Version: 2.10.1
Summary: Easy thumbnails for Django
Home-page: http://github.com/SmileyChris/easy-thumbnails
Author: Chris Beaven
@@ -10,8 +10,8 @@
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
-Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Django :: 5.1
+Classifier: Framework :: Django :: 5.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
@@ -21,6 +21,7 @@
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Application
Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
@@ -30,6 +31,17 @@
Provides-Extra: svg
Requires-Dist: svglib; extra == "svg"
Requires-Dist: reportlab; extra == "svg"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: license-file
+Dynamic: platform
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
===============
Easy Thumbnails
@@ -43,7 +55,7 @@
:target:
https://github.com/SmileyChris/easy-thumbnails/actions/workflows/python.yml
-A powerful, yet easy to implement thumbnailing application for Django 2.2+
+A powerful, yet easy to implement thumbnailing application for Django 4.2+
Below is a quick summary of usage. For more comprehensive information, view the
`full documentation`__ online or the peruse the project's ``docs`` directory.
@@ -232,6 +244,10 @@
Changes
=======
+2.10.1 (2025-08-17)
+-------------------
+* Add support for Django-5.2.
+
2.10 (2024-09-11)
-----------------
* Drop support for Python-3.8.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/easy_thumbnails-2.10/setup.py
new/easy_thumbnails-2.10.1/setup.py
--- old/easy_thumbnails-2.10/setup.py 2024-09-12 14:40:50.000000000 +0200
+++ new/easy_thumbnails-2.10.1/setup.py 2025-08-17 22:48:58.000000000 +0200
@@ -47,8 +47,8 @@
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 4.2",
- "Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
+ "Framework :: Django :: 5.2",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
@@ -58,6 +58,7 @@
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Libraries :: Application Frameworks",
"Topic :: Software Development :: Libraries :: Python Modules",
],