gnu: python-django-compressor: Patch for Django 5.2 compatibility.

* gnu/packages/patches/django-compressor-build-with-beautifulsoup-4.14+.patch:
New patch.
* gnu/packages/django.scm (python-django-compressor)[source]: Patch
with https://github.com/django-compressor/django-compressor/pull/1296,
minus conflicting changes to requirements/tests.txt.

Change-Id: Ic22268f6870b30c3ace689a4cadb63a77f69ca9e
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
This commit is contained in:
Charles Roelli 2025-10-01 14:50:32 +02:00 committed by Sharlatan Hellseher
parent f5d972eb3a
commit e0a350ba27
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5
2 changed files with 43 additions and 1 deletions

View file

@ -1748,7 +1748,9 @@ forms using your favorite CSS framework, without writing template code.")
(method url-fetch)
(uri (pypi-uri "django_compressor" version))
(sha256
(base32 "08m8cs1mnpwd2zlck8cbl4cdp21dgv4vj7j17krbgn745s5a9n61"))))
(base32 "08m8cs1mnpwd2zlck8cbl4cdp21dgv4vj7j17krbgn745s5a9n61"))
(patches
(search-patches "django-compressor-build-with-beautifulsoup-4.14+.patch"))))
(build-system pyproject-build-system)
(arguments
(list

View file

@ -0,0 +1,40 @@
From 53f50bc0cee1cdfaf023ba65e1524b820cb7c18e Mon Sep 17 00:00:00 2001
From: Matthias Kestenholz <mk@feinheit.ch>
Date: Thu, 22 May 2025 10:37:20 +0200
Subject: [PATCH 1/2] Disable bs4's multi valued attributes
---
compressor/parser/beautifulsoup.py | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/compressor/parser/beautifulsoup.py b/compressor/parser/beautifulsoup.py
index 91897485..f673410e 100644
--- a/compressor/parser/beautifulsoup.py
+++ b/compressor/parser/beautifulsoup.py
@@ -10,7 +10,9 @@ def __init__(self, content):
try:
from bs4 import BeautifulSoup
- self.soup = BeautifulSoup(self.content, "html.parser")
+ # Disable multi_valued_attributes
+ # http://www.crummy.com/software/BeautifulSoup/bs4/doc/#multi-valued-attributes
+ self.soup = BeautifulSoup(self.content, "html.parser", multi_valued_attributes={})
except ImportError as err:
raise ImproperlyConfigured("Error while importing BeautifulSoup: %s" % err)
@@ -21,13 +23,7 @@ def js_elems(self):
return self.soup.find_all("script")
def elem_attribs(self, elem):
- attrs = dict(elem.attrs)
- # hack around changed behaviour in bs4, it returns lists now instead of one string, see
- # http://www.crummy.com/software/BeautifulSoup/bs4/doc/#multi-valued-attributes
- for key, value in attrs.items():
- if type(value) is list:
- attrs[key] = " ".join(value)
- return attrs
+ return elem.attrs
def elem_content(self, elem):
return elem.string