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",
     ],

Reply via email to