From 66ec10d2b95cc3b6201afacb051ccf934e3b5a9b Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Fri, 20 Dec 2024 16:28:25 -0600 Subject: [PATCH 01/12] Update to 4.5.1 (resolves: rhbz#2292613) Signed-off-by: Michel Lind --- .gitignore | 1 + python-django-compressor.spec | 2 +- rdep-version.patch | 10 +++++----- sources | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 8e9edb6..19ab6e1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /python-django-compressor-*.tar.gz /django-compressor-*.tar.gz /django_compressor-4.4.tar.gz +/django_compressor-4.5.1.tar.gz diff --git a/python-django-compressor.spec b/python-django-compressor.spec index 09c0c1e..5f2e927 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -9,7 +9,7 @@ parsed and searched for CSS or JS. These styles and scripts are subsequently\ processed with optional, configurable compilers and filters. Name: python-django-compressor -Version: 4.4 +Version: 4.5.1 Release: %autorelease Summary: Compresses linked and inline JavaScript or CSS into single cached files diff --git a/rdep-version.patch b/rdep-version.patch index 73e620c..8a0e5b4 100644 --- a/rdep-version.patch +++ b/rdep-version.patch @@ -1,12 +1,12 @@ --- a/setup.py +++ b/setup.py @@ -164,7 +164,7 @@ setup( - zip_safe=False, install_requires=[ + "Django >= 4.2", "django-appconf >= 1.0.3", -- "rcssmin == 1.1.1", -- "rjsmin == 1.2.1", -+ "rcssmin >= 1.1.1", -+ "rjsmin >= 1.2.1", +- "rcssmin == 1.1.2", +- "rjsmin == 1.2.2", ++ "rcssmin >= 1.1.2", ++ "rjsmin >= 1.2.2", ], ) diff --git a/sources b/sources index 2cab061..153f926 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (django_compressor-4.4.tar.gz) = 54a3443f8900aca89534bb792f6e1d7d46ec9cec81c2bb2e019ea2a0e861845805d187748cc12531209be25c3d9f5dd3cd0f019fb9f439c9b1e7ad2a5785c6c8 +SHA512 (django_compressor-4.5.1.tar.gz) = 696e032de9c6cd39a924e28e98a476f49fc25629ec1f1d446d78e6be93695435a9cf1b3222807dd6644efd19955c2252648105bacc207b2ee5c00a6338e7046a From 8da4cb4feaf06a156faf6b660983d0cda733727f Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Fri, 20 Dec 2024 16:52:55 -0600 Subject: [PATCH 02/12] Fix building with Python 3.14; resolves: rhbz#2322719 Signed-off-by: Michel Lind --- django-compressor-py314-ast.diff | 11 +++++++++++ python-django-compressor.spec | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 django-compressor-py314-ast.diff diff --git a/django-compressor-py314-ast.diff b/django-compressor-py314-ast.diff new file mode 100644 index 0000000..75d8a43 --- /dev/null +++ b/django-compressor-py314-ast.diff @@ -0,0 +1,11 @@ +--- a/setup.py ++++ b/setup.py +@@ -14,7 +14,7 @@ class VersionFinder(ast.NodeVisitor): + + def visit_Assign(self, node): + if node.targets[0].id == "__version__": +- self.version = node.value.s ++ self.version = node.value.value + + + def read(*parts): diff --git a/python-django-compressor.spec b/python-django-compressor.spec index 5f2e927..1b34fd5 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -17,7 +17,10 @@ License: MIT URL: https://github.com/django-compressor/django-compressor Source0: %{pypi_source django_compressor} -Patch0: rdep-version.patch +Patch: rdep-version.patch +# Fix for https://github.com/django-compressor/django-compressor/issues/1270 +# https://github.com/django-compressor/django-compressor/pull/1271 +Patch: django-compressor-py314-ast.diff BuildArch: noarch From d38151b86e7b79c441e10650ed63b1e5a8c7d16d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 18 Jan 2025 13:39:33 +0000 Subject: [PATCH 03/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From a60ba9a21fbe98cd6639524529da9c18184ab9ad Mon Sep 17 00:00:00 2001 From: Tim Landscheidt Date: Sun, 23 Mar 2025 18:15:48 +0000 Subject: [PATCH 04/12] Fix Obsoletes fields for python3-django-compressor --- python-django-compressor.spec | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/python-django-compressor.spec b/python-django-compressor.spec index 1b34fd5..775e876 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -31,13 +31,12 @@ BuildRequires: python3-devel %package -n python3-%{srcname} Summary: %{summary} -%description -n python3-%{srcname} -%_desc - # Added in f28 cycle. Obsoletes: python2-%{srcname} < 2.1-6 Obsoletes: python-%{srcname} < 2.1-6 +%description -n python3-%{srcname} %_desc + %prep %autosetup -p1 -n %{pypi_name}-%{version} From 20499935df4d239c0f865e2fdb87d3be86079c8b Mon Sep 17 00:00:00 2001 From: Python Maint Date: Tue, 3 Jun 2025 12:20:58 +0200 Subject: [PATCH 05/12] Rebuilt for Python 3.14 From e8cf3aab29af92161605db1d777e30bb06ba5230 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 07:34:48 +0000 Subject: [PATCH 06/12] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From 2c695380716ae88643511d1cbf12cd6cb7b6c5a5 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 15 Aug 2025 13:36:42 +0200 Subject: [PATCH 07/12] Rebuilt for Python 3.14.0rc2 bytecode From a3b82fdbcfefd3f282b9fdb9beede48aaeae0317 Mon Sep 17 00:00:00 2001 From: Python Maint Date: Fri, 19 Sep 2025 13:09:36 +0200 Subject: [PATCH 08/12] Rebuilt for Python 3.14.0rc3 bytecode From 1a5548185bfba43986d492de943b06dad703ed16 Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Wed, 10 Dec 2025 22:00:43 +0000 Subject: [PATCH 09/12] Enable Packit [skip changelog] Signed-off-by: Michel Lind --- packit.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 packit.yaml diff --git a/packit.yaml b/packit.yaml new file mode 100644 index 0000000..fdf84eb --- /dev/null +++ b/packit.yaml @@ -0,0 +1,16 @@ +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +copy_upstream_release_description: false + +jobs: +- job: pull_from_upstream + trigger: release + dist_git_branches: + - fedora-rawhide + +- job: koji_build + trigger: commit + allowed_committers: ['packit'] + dist_git_branches: + - fedora-rawhide From fcfc8dd48490e30a9b45803e241b6b3797a18f1e Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Wed, 10 Dec 2025 22:02:17 +0000 Subject: [PATCH 10/12] Update to 4.6.0 upstream release - Resolves: rhbz#2413786 Commit authored by Packit automation (https://packit.dev/) --- .gitignore | 1 + README.packit | 3 +++ python-django-compressor.spec | 2 +- sources | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 README.packit diff --git a/.gitignore b/.gitignore index 19ab6e1..e5d2aa8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /django-compressor-*.tar.gz /django_compressor-4.4.tar.gz /django_compressor-4.5.1.tar.gz +/django_compressor-4.6.0.tar.gz diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..2511bf4 --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 1.12.0. diff --git a/python-django-compressor.spec b/python-django-compressor.spec index 775e876..f039f17 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -9,7 +9,7 @@ parsed and searched for CSS or JS. These styles and scripts are subsequently\ processed with optional, configurable compilers and filters. Name: python-django-compressor -Version: 4.5.1 +Version: 4.6.0 Release: %autorelease Summary: Compresses linked and inline JavaScript or CSS into single cached files diff --git a/sources b/sources index 153f926..dec55a4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (django_compressor-4.5.1.tar.gz) = 696e032de9c6cd39a924e28e98a476f49fc25629ec1f1d446d78e6be93695435a9cf1b3222807dd6644efd19955c2252648105bacc207b2ee5c00a6338e7046a +SHA512 (django_compressor-4.6.0.tar.gz) = 5bb5fc01b3beb022623b6409f710640eb51196349c0268c1d85239ce2c6a8889761c3efb16e9cc4e7b1d6bdd7f3a16ea8abf4ba9083a03500bcd10344457e0a2 From c47467d43f54b873c2abcc1c30938654d325238c Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Wed, 10 Dec 2025 22:45:58 +0000 Subject: [PATCH 11/12] Remove unneeded patches Signed-off-by: Michel Lind --- python-django-compressor.spec | 5 ----- 1 file changed, 5 deletions(-) diff --git a/python-django-compressor.spec b/python-django-compressor.spec index f039f17..16fcfb1 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -17,11 +17,6 @@ License: MIT URL: https://github.com/django-compressor/django-compressor Source0: %{pypi_source django_compressor} -Patch: rdep-version.patch -# Fix for https://github.com/django-compressor/django-compressor/issues/1270 -# https://github.com/django-compressor/django-compressor/pull/1271 -Patch: django-compressor-py314-ast.diff - BuildArch: noarch BuildRequires: python3-devel From 4088983b633af3a468230b8ddd036885276aca54 Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Thu, 11 Dec 2025 17:14:51 +0000 Subject: [PATCH 12/12] Revert pyproject.toml conversion when building with older setuptools - Drop patches Signed-off-by: Michel Lind --- django-compressor-py314-ast.diff | 11 -- python-django-compressor.spec | 13 +++ rdep-version.patch | 12 --- setup.py | 172 +++++++++++++++++++++++++++++++ 4 files changed, 185 insertions(+), 23 deletions(-) delete mode 100644 django-compressor-py314-ast.diff delete mode 100644 rdep-version.patch create mode 100644 setup.py diff --git a/django-compressor-py314-ast.diff b/django-compressor-py314-ast.diff deleted file mode 100644 index 75d8a43..0000000 --- a/django-compressor-py314-ast.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- a/setup.py -+++ b/setup.py -@@ -14,7 +14,7 @@ class VersionFinder(ast.NodeVisitor): - - def visit_Assign(self, node): - if node.targets[0].id == "__version__": -- self.version = node.value.s -+ self.version = node.value.value - - - def read(*parts): diff --git a/python-django-compressor.spec b/python-django-compressor.spec index 16fcfb1..fa81435 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -8,6 +8,13 @@ or CSS in a Django templates into cacheable static files by using the\ parsed and searched for CSS or JS. These styles and scripts are subsequently\ processed with optional, configurable compilers and filters. +# setuptools < 77.0.3 +%if (%{defined fedora} && 0%{?fedora} <= 42) || (%{defined rhel} && 0%{?rhel} <= 10) +%bcond old_setuptools 1 +%else +%bcond old_setuptools 0 +%endif + Name: python-django-compressor Version: 4.6.0 Release: %autorelease @@ -16,6 +23,8 @@ Summary: Compresses linked and inline JavaScript or CSS into single cached files License: MIT URL: https://github.com/django-compressor/django-compressor Source0: %{pypi_source django_compressor} +# deleted in 4e543307 - migration to pyproject.toml +Source1: setup.py BuildArch: noarch @@ -34,6 +43,10 @@ Obsoletes: python-%{srcname} < 2.1-6 %prep %autosetup -p1 -n %{pypi_name}-%{version} +%if %{with old_setuptools} +rm pyproject.toml +cp -p %{SOURCE1} setup.py +%endif %generate_buildrequires %pyproject_buildrequires diff --git a/rdep-version.patch b/rdep-version.patch deleted file mode 100644 index 8a0e5b4..0000000 --- a/rdep-version.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/setup.py -+++ b/setup.py -@@ -164,7 +164,7 @@ setup( - install_requires=[ - "Django >= 4.2", - "django-appconf >= 1.0.3", -- "rcssmin == 1.1.2", -- "rjsmin == 1.2.2", -+ "rcssmin >= 1.1.2", -+ "rjsmin >= 1.2.2", - ], - ) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..be846ae --- /dev/null +++ b/setup.py @@ -0,0 +1,172 @@ +import ast +import codecs +import os +import sys +from fnmatch import fnmatchcase +from pathlib import Path + +from setuptools import find_packages, setup + + +class VersionFinder(ast.NodeVisitor): + def __init__(self): + self.version = None + + def visit_Assign(self, node): + if node.targets[0].id == "__version__": + self.version = node.value.value + + +def read(*parts): + filename = os.path.join(os.path.dirname(__file__), *parts) + with codecs.open(filename, encoding="utf-8") as fp: + return fp.read() + + +def find_version(*parts): + finder = VersionFinder() + finder.visit(ast.parse(read(*parts))) + return finder.version + + +# Provided as an attribute, so you can append to these instead +# of replicating them: +standard_exclude = ("*.py", "*.pyc", "*$py.class", "*~", ".*", "*.bak") +standard_exclude_directories = ( + ".*", + "CVS", + "_darcs", + "./build", + "./dist", + "EGG-INFO", + "*.egg-info", +) + + +# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) +# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php +# Note: you may want to copy this into your setup.py file verbatim, as +# you can't import this from another package, when you don't know if +# that package is installed yet. +def find_package_data( + where=".", + package="", + exclude=standard_exclude, + exclude_directories=standard_exclude_directories, + only_in_packages=True, + show_ignored=False, +): + """ + Return a dictionary suitable for use in ``package_data`` + in a distutils ``setup.py`` file. + + The dictionary looks like:: + + {'package': [files]} + + Where ``files`` is a list of all the files in that package that + don't match anything in ``exclude``. + + If ``only_in_packages`` is true, then top-level directories that + are not packages won't be included (but directories under packages + will). + + Directories matching any pattern in ``exclude_directories`` will + be ignored; by default directories with leading ``.``, ``CVS``, + and ``_darcs`` will be ignored. + + If ``show_ignored`` is true, then all the files that aren't + included in package data are shown on stderr (for debugging + purposes). + + Note patterns use wildcards, or can be exact paths (including + leading ``./``), and all searching is case-insensitive. + """ + + out = {} + stack = [(str(Path(where)), "", package, only_in_packages)] + while stack: + where, prefix, package, only_in_packages = stack.pop(0) + for name in os.listdir(where): + fn = os.path.join(where, name) + if os.path.isdir(fn): + bad_name = False + for pattern in exclude_directories: + if fnmatchcase(name, pattern) or fn.lower() == pattern.lower(): + bad_name = True + if show_ignored: + print( + "Directory %s ignored by pattern %s" % (fn, pattern), + file=sys.stderr, + ) + break + if bad_name: + continue + if os.path.isfile(os.path.join(fn, "__init__.py")) and not prefix: + if not package: + new_package = name + else: + new_package = package + "." + name + stack.append((fn, "", new_package, False)) + else: + stack.append((fn, prefix + name + "/", package, only_in_packages)) + elif package or not only_in_packages: + # is a file + bad_name = False + for pattern in exclude: + if fnmatchcase(name, pattern) or fn.lower() == pattern.lower(): + bad_name = True + if show_ignored: + print( + "File %s ignored by pattern %s" % (fn, pattern), + file=sys.stderr, + ) + break + if bad_name: + continue + out.setdefault(package, []).append(prefix + name) + return out + + +setup( + name="django_compressor", + version=find_version("compressor", "__init__.py"), + url="https://django-compressor.readthedocs.io/en/latest/", + project_urls={ + "Source": "https://github.com/django-compressor/django-compressor", + }, + license="MIT", + description=( + "Compresses linked and inline JavaScript or CSS into single cached files.", + ), + long_description=read("README.rst"), + maintainer="Mathieu Pillard", + packages=find_packages(), + package_data=find_package_data(), + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Framework :: Django", + "Framework :: Django :: 4.2", + "Framework :: Django :: 5.0", + "Framework :: Django :: 5.1", + "Framework :: Django :: 5.2", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Internet :: WWW/HTTP", + ], + zip_safe=False, + python_requires=">=3.10", + install_requires=[ + "Django >= 4.2", + "django-appconf >= 1.0.3", + "rcssmin >= 1.2.1", + "rjsmin >= 1.2.4", + ], +)