diff --git a/.gitignore b/.gitignore index de0294c..e5d2aa8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ -/django_compressor-1.2.tar.gz -/django_compressor-1.3.tar.gz -/django_compressor-1.4.tar.gz +/python-django-compressor-*.tar.gz +/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/changelog b/changelog new file mode 100644 index 0000000..7593c83 --- /dev/null +++ b/changelog @@ -0,0 +1,124 @@ +* Mon Jun 13 2022 Python Maint - 2.4.1-2 +- Rebuilt for Python 3.11 + +* Mon Mar 14 2022 Karolina Kula - 2.4.1-1 +- Update to 2.4.1 + +* Fri Jan 21 2022 Fedora Release Engineering - 2.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 2.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 2.4-3 +- Rebuilt for Python 3.10 + +* Wed Jan 27 2021 Fedora Release Engineering - 2.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Sep 09 2020 Yatin Karel - 2.4-1 +- Update to 2.4 + +* Wed Jul 29 2020 Fedora Release Engineering - 2.2-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue May 26 2020 Miro Hrončok - 2.2-10 +- Rebuilt for Python 3.9 + +* Thu Jan 30 2020 Fedora Release Engineering - 2.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Oct 03 2019 Miro Hrončok - 2.2-8 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Mon Aug 19 2019 Miro Hrončok - 2.2-7 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 2.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 2.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 2.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 19 2018 Miro Hrončok - 2.2-3 +- Rebuilt for Python 3.7 + +* Fri Feb 09 2018 Fedora Release Engineering - 2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 31 2018 Matthias Runge - 2.2-1 +- update to 2.2 + +* Fri Jan 26 2018 Matthias Runge - 2.1-6 +- Drop python2 package for https://fedoraproject.org/wiki/Changes/Django20 + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 2.1-5 +- Python 2 binary package renamed to python2-django-compressor + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Thu Jul 27 2017 Fedora Release Engineering - 2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Dec 19 2016 Miro Hrončok - 2.1-2 +- Rebuild for Python 3.6 + +* Thu Aug 11 2016 Matthias Runge - 2.1-1 +- update to 2.1 (rhbz#1365700) +- modernize spec + +* Tue Jul 19 2016 Fedora Release Engineering - 2.0-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri Feb 26 2016 Matthias Runge - 2.0-1 +- update to 2.0 (rhbz#1296716) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Nov 20 2015 Matthias Runge - 1.6-1 +- update to 1.6 (rhbz#1283807) + +* Tue Nov 10 2015 Fedora Release Engineering - 1.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Thu Aug 27 2015 Matthias Runge - 1.5-2 +- add python3 subpackage + +* Wed Aug 26 2015 Matthias Runge - 1.5-1 +- update to 1.5 + +* Thu Jun 18 2015 Fedora Release Engineering - 1.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Apr 15 2015 Matthias Runge - 1.4-3 +- make compress command work on django-1.8 + +* Sat Jun 07 2014 Fedora Release Engineering - 1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 26 2014 Matthias Runge - 1.4-1 +- update to 1.4 (rhbz#1100732) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Mar 20 2013 Matthias Runge - 1.3-1 +- update to python-django-compressor-1.3 (rhbz#923735) + +* Thu Feb 14 2013 Fedora Release Engineering - 1.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Sep 24 2012 Matthias Runge - 1.2-3 +- add requirement Django/python-django + +* Fri Sep 14 2012 Matthias Runge - 1.2-2 +- add requirement python-versiontools + +* Tue Sep 11 2012 Matthias Runge - 1.2-1 +- Initial package. diff --git a/django-compressor-fix-attributeerror-in-offline.patch b/django-compressor-fix-attributeerror-in-offline.patch deleted file mode 100644 index 75a1dc7..0000000 --- a/django-compressor-fix-attributeerror-in-offline.patch +++ /dev/null @@ -1,37 +0,0 @@ -From ac70fbfb7f8349e5c1150f40bf1d21ba635d0cb8 Mon Sep 17 00:00:00 2001 -From: Chirag Jadwani -Date: Fri, 29 Aug 2014 13:15:35 +0530 -Subject: [PATCH] Fix AttributeError in offline compression - ---- - compressor/offline/django.py | 2 ++ - .../test_block_super_base_compressed/test_compressor_offline.html | 5 +++++ - 2 files changed, 7 insertions(+) - -diff --git a/compressor/offline/django.py b/compressor/offline/django.py -index 3986562..b326093 100644 ---- a/compressor/offline/django.py -+++ b/compressor/offline/django.py -@@ -54,6 +54,8 @@ def remove_block_nodes(nodelist, block_stack, block_context): - if not block_stack: - continue - node = block_context.get_block(block_stack[-1].name) -+ if not node: -+ continue - if isinstance(node, BlockNode): - expanded_block = expand_blocknode(node, block_stack, block_context) - new_nodelist.extend(expanded_block) -diff --git a/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html b/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html -index 01382ec..10097c1 100644 ---- a/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html -+++ b/compressor/tests/test_templates/test_block_super_base_compressed/test_compressor_offline.html -@@ -5,4 +5,9 @@ - -+ {% block orphan %} -+ {{ block.super }} -+ An 'orphan' block that refers to a non-existent super block. -+ Contents of this block are ignored. -+ {% endblock %} - {% endspaceless %}{% endblock %} diff --git a/django-compressor-make-compress-run-through.patch b/django-compressor-make-compress-run-through.patch deleted file mode 100644 index 4252405..0000000 --- a/django-compressor-make-compress-run-through.patch +++ /dev/null @@ -1,162 +0,0 @@ -From 72b33ddbcdc41eb5af42b86329d81d96894a9d10 Mon Sep 17 00:00:00 2001 -From: Carlton Gibson -Date: Tue, 10 Mar 2015 20:04:07 +0100 -Subject: [PATCH] Make `compress` command (at least) run through on 1.8 - -FAILED (failures=15, errors=15, skipped=1) - -AssertionError: 2 != 12 -OfflineGenerationError: ... key "XYZ" missing ... ---- - compressor/management/commands/compress.py | 41 +++++++++++++++++------------- - compressor/offline/django.py | 27 ++++++++++++++------ - 2 files changed, 43 insertions(+), 25 deletions(-) - -diff --git a/compressor/management/commands/compress.py b/compressor/management/commands/compress.py -index 6be215e..0bc436a 100644 ---- a/compressor/management/commands/compress.py -+++ b/compressor/management/commands/compress.py -@@ -5,6 +5,7 @@ - from fnmatch import fnmatch - from optparse import make_option - -+import django - from django.core.management.base import NoArgsCommand, CommandError - import django.template - from django.template import Context -@@ -53,24 +54,30 @@ class Command(NoArgsCommand): - requires_model_validation = False - - def get_loaders(self): -- from django.template.loader import template_source_loaders -- if template_source_loaders is None: -- try: -- from django.template.loader import ( -- find_template as finder_func) -- except ImportError: -- from django.template.loader import ( -- find_template_source as finder_func) # noqa -- try: -- # Force django to calculate template_source_loaders from -- # TEMPLATE_LOADERS settings, by asking to find a dummy template -- source, name = finder_func('test') -- except django.template.TemplateDoesNotExist: -- pass -- # Reload template_source_loaders now that it has been calculated ; -- # it should contain the list of valid, instanciated template loaders -- # to use. -+ if django.VERSION < (1, 8): - from django.template.loader import template_source_loaders -+ if template_source_loaders is None: -+ try: -+ from django.template.loader import ( -+ find_template as finder_func) -+ except ImportError: -+ from django.template.loader import ( -+ find_template_source as finder_func) # noqa -+ try: -+ # Force django to calculate template_source_loaders from -+ # TEMPLATE_LOADERS settings, by asking to find a dummy template -+ source, name = finder_func('test') -+ except django.template.TemplateDoesNotExist: -+ pass -+ # Reload template_source_loaders now that it has been calculated ; -+ # it should contain the list of valid, instanciated template loaders -+ # to use. -+ from django.template.loader import template_source_loaders -+ else: -+ from django.template import engines -+ template_source_loaders = [] -+ for e in engines.all(): -+ template_source_loaders.extend(e.engine.get_template_loaders(e.engine.loaders)) - loaders = [] - # If template loader is CachedTemplateLoader, return the loaders - # that it wraps around. So if we have -diff --git a/compressor/offline/django.py b/compressor/offline/django.py -index b326093..107c6e4 100644 ---- a/compressor/offline/django.py -+++ b/compressor/offline/django.py -@@ -1,6 +1,7 @@ - from __future__ import absolute_import - from copy import copy - -+import django - from django import template - from django.conf import settings - from django.template import Context -@@ -14,7 +15,7 @@ - from compressor.templatetags.compress import CompressorNode - - --def handle_extendsnode(extendsnode, block_context=None): -+def handle_extendsnode(extendsnode, block_context=None, original=None): - """Create a copy of Node tree of a derived template replacing - all blocks tags with the nodes of appropriate blocks. - Also handles {{ block.super }} tags. -@@ -26,6 +27,9 @@ def handle_extendsnode(extendsnode, block_context=None): - block_context.add_blocks(blocks) - - context = Context(settings.COMPRESS_OFFLINE_CONTEXT) -+ if original is not None: -+ context.template = original -+ - compiled_parent = extendsnode.get_parent(context) - parent_nodelist = compiled_parent.nodelist - # If the parent template has an ExtendsNode it is not the root. -@@ -33,7 +37,7 @@ def handle_extendsnode(extendsnode, block_context=None): - # The ExtendsNode has to be the first non-text node. - if not isinstance(node, TextNode): - if isinstance(node, ExtendsNode): -- return handle_extendsnode(node, block_context) -+ return handle_extendsnode(node, block_context, original) - break - # Add blocks of the root template to block context. - blocks = dict((n.name, n) for n in -@@ -95,7 +99,10 @@ def __init__(self, charset): - - def parse(self, template_name): - try: -- return get_template(template_name) -+ if django.VERSION < (1, 8): -+ return get_template(template_name) -+ else: -+ return get_template(template_name).template - except template.TemplateSyntaxError as e: - raise TemplateSyntaxError(str(e)) - except template.TemplateDoesNotExist as e: -@@ -111,15 +118,17 @@ def process_node(self, template, context, node): - pass - - def render_nodelist(self, template, context, node): -+ if django.VERSION >= (1, 8): -+ context.template = template - return node.nodelist.render(context) - - def render_node(self, template, context, node): - return node.render(context, forced=True) - -- def get_nodelist(self, node): -+ def get_nodelist(self, node, original=None): - if isinstance(node, ExtendsNode): - try: -- return handle_extendsnode(node) -+ return handle_extendsnode(node, block_context=None, original=original) - except template.TemplateSyntaxError as e: - raise TemplateSyntaxError(str(e)) - except template.TemplateDoesNotExist as e: -@@ -134,10 +143,12 @@ def get_nodelist(self, node): - nodelist = getattr(node, 'nodelist', []) - return nodelist - -- def walk_nodes(self, node): -- for node in self.get_nodelist(node): -+ def walk_nodes(self, node, original=None): -+ if django.VERSION >= (1, 8) and original is None: -+ original = node -+ for node in self.get_nodelist(node, original): - if isinstance(node, CompressorNode) and node.is_offline_compression_enabled(forced=True): - yield node - else: -- for node in self.walk_nodes(node): -+ for node in self.walk_nodes(node, original): - yield node diff --git a/django-compressor-use-get_template.patch b/django-compressor-use-get_template.patch deleted file mode 100644 index b890d49..0000000 --- a/django-compressor-use-get_template.patch +++ /dev/null @@ -1,48 +0,0 @@ -From c8495264b503a595fbc89e6c8a83a402eff445c6 Mon Sep 17 00:00:00 2001 -From: Mathieu Pillard -Date: Sun, 25 May 2014 14:09:33 +0200 -Subject: [PATCH] Use get_template() when dealing with django templates - ---- - compressor/offline/django.py | 16 +++++++--------- - 1 file changed, 7 insertions(+), 9 deletions(-) - -diff --git a/compressor/offline/django.py b/compressor/offline/django.py -index 6541471..3986562 100644 ---- a/compressor/offline/django.py -+++ b/compressor/offline/django.py -@@ -1,13 +1,12 @@ - from __future__ import absolute_import --import io - from copy import copy - - from django import template - from django.conf import settings --from django.template import Template - from django.template import Context - from django.template.base import Node, VariableNode, TextNode, NodeList - from django.template.defaulttags import IfNode -+from django.template.loader import get_template - from django.template.loader_tags import ExtendsNode, BlockNode, BlockContext - - -@@ -93,13 +92,12 @@ def __init__(self, charset): - self.charset = charset - - def parse(self, template_name): -- with io.open(template_name, mode='rb') as file: -- try: -- return Template(file.read().decode(self.charset)) -- except template.TemplateSyntaxError as e: -- raise TemplateSyntaxError(str(e)) -- except template.TemplateDoesNotExist as e: -- raise TemplateDoesNotExist(str(e)) -+ try: -+ return get_template(template_name) -+ except template.TemplateSyntaxError as e: -+ raise TemplateSyntaxError(str(e)) -+ except template.TemplateDoesNotExist as e: -+ raise TemplateDoesNotExist(str(e)) - - def process_template(self, template, context): - return True 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 diff --git a/python-django-compressor.spec b/python-django-compressor.spec index d975aca..fa81435 100644 --- a/python-django-compressor.spec +++ b/python-django-compressor.spec @@ -1,107 +1,65 @@ +%global srcname django-compressor %global pypi_name django_compressor - -Name: python-django-compressor -Version: 1.4 -Release: 4%{?dist} -Summary: Compresses linked and inline JavaScript or CSS into single cached files - -License: MIT -URL: http://pypi.python.org/pypi/django_compressor/%{version} -Source0: http://pypi.python.org/packages/source/d/%{pypi_name}/%{pypi_name}-%{version}.tar.gz - -# All patches are directly connected to Django-1.8 -# -# cherry-pick from upstream -# https://github.com/django-compressor/django-compressor/commit/c8495264b503a595fbc89e6c8a83a402eff445c6.patch -Patch0001: django-compressor-use-get_template.patch -# cherry-pick from upstream -# https://github.com/django-compressor/django-compressor/commit/ac70fbfb7f8349e5c1150f40bf1d21ba635d0cb8.patch -Patch0002: django-compressor-fix-attributeerror-in-offline.patch -# cherry-pick from upstream -# https://github.com/django-compressor/django-compressor/commit/72b33ddbcdc41eb5af42b86329d81d96894a9d10.patch -Patch0003: django-compressor-make-compress-run-through.patch - -BuildArch: noarch - -BuildRequires: python2-devel -BuildRequires: python-setuptools - -Requires: python-django-appconf >= 0.4 -Requires: python-versiontools - -%if 0%{?rhel}<7 || 0%{?fedora} < 18 -Requires: Django -%else -Requires: python-django -%endif - -%description -Django Compressor combines and compresses linked and inline Javascript -or CSS in a Django templates into cacheable static files by using the -``compress`` template tag. HTML in between -``{% compress js/css %}`` and ``{% endcompress %}`` is -parsed and searched for CSS or JS. These styles and scripts are subsequently +%global _desc\ +Django Compressor combines and compresses linked and inline Javascript\ +or CSS in a Django templates into cacheable static files by using the\ +``compress`` template tag. HTML in between\ +``{% compress js/css %}`` and ``{% endcompress %}`` is\ +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 +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 + +BuildRequires: python3-devel + +%description %_desc + +%package -n python3-%{srcname} +Summary: %{summary} + +# Added in f28 cycle. +Obsoletes: python2-%{srcname} < 2.1-6 +Obsoletes: python-%{srcname} < 2.1-6 + +%description -n python3-%{srcname} %_desc %prep -%setup -q -n %{pypi_name}-%{version} -%patch0001 -p1 -%patch0002 -p1 -%patch0003 -p1 - -# Remove bundled egg-info -rm -rf %{pypi_name}.egg-info - -# remove /usr/bin/env from scripts -#for i in compressor/tests/precompiler.py \ - #compressor/filters/cssmin/cssmin.py \ - #compressor/filters/jsmin/rjsmin.py; - #do sed -i -e "1d" $i; -#done - +%autosetup -p1 -n %{pypi_name}-%{version} +%if %{with old_setuptools} +rm pyproject.toml +cp -p %{SOURCE1} setup.py +%endif +%generate_buildrequires +%pyproject_buildrequires %build -%{__python} setup.py build - +%pyproject_wheel %install -%{__python} setup.py install --skip-build --root %{buildroot} +%pyproject_install +%pyproject_save_files compressor - -%files -%doc README.rst LICENSE -%{python_sitelib}/compressor -%{python_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info +%files -n python3-%{srcname} -f %{pyproject_files} +%doc README.rst %changelog -* Thu Jun 18 2015 Fedora Release Engineering - 1.4-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Wed Apr 15 2015 Matthias Runge - 1.4-3 -- make compress command work on django-1.8 - -* Sat Jun 07 2014 Fedora Release Engineering - 1.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Mon May 26 2014 Matthias Runge - 1.4-1 -- update to 1.4 (rhbz#1100732) - -* Sun Aug 04 2013 Fedora Release Engineering - 1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Wed Mar 20 2013 Matthias Runge - 1.3-1 -- update to python-django-compressor-1.3 (rhbz#923735) - -* Thu Feb 14 2013 Fedora Release Engineering - 1.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Mon Sep 24 2012 Matthias Runge - 1.2-3 -- add requirement Django/python-django - -* Fri Sep 14 2012 Matthias Runge - 1.2-2 -- add requirement python-versiontools - -* Tue Sep 11 2012 Matthias Runge - 1.2-1 -- Initial package. +%autochangelog 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", + ], +) diff --git a/sources b/sources index dbef1f5..dec55a4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -dc050f1a85f83f927f94bcb09e8bdd0f django_compressor-1.4.tar.gz +SHA512 (django_compressor-4.6.0.tar.gz) = 5bb5fc01b3beb022623b6409f710640eb51196349c0268c1d85239ce2c6a8889761c3efb16e9cc4e7b1d6bdd7f3a16ea8abf4ba9083a03500bcd10344457e0a2