Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-django-classy-tags for
openSUSE:Factory checked in at 2022-09-26 18:48:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-classy-tags (Old)
and /work/SRC/openSUSE:Factory/.python-django-classy-tags.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-django-classy-tags"
Mon Sep 26 18:48:07 2022 rev:6 rq:1005946 version:3.0.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-django-classy-tags/python-django-classy-tags.changes
2022-01-10 23:52:56.704769719 +0100
+++
/work/SRC/openSUSE:Factory/.python-django-classy-tags.new.2275/python-django-classy-tags.changes
2022-09-26 18:48:08.932048027 +0200
@@ -1,0 +2,11 @@
+Mon Sep 26 04:42:51 UTC 2022 - Steve Kowalik <[email protected]>
+
+- Update to 4.0.1:
+ * Update manifest to include all the tests dir (#72)
+ * Added support for Django 3.2 and 4.0
+ * Drop support for python 3.5 and 3.6
+- Drop patch dj40.patch, included upstream.
+- Add patch django-4-1-support.patch:
+ * Add support for Django >= 4.1
+
+-------------------------------------------------------------------
Old:
----
2.0.0.tar.gz
dj40.patch
New:
----
3.0.1.tar.gz
django-4-1-support.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-django-classy-tags.spec ++++++
--- /var/tmp/diff_new_pack.Whs8bn/_old 2022-09-26 18:48:09.376048866 +0200
+++ /var/tmp/diff_new_pack.Whs8bn/_new 2022-09-26 18:48:09.384048881 +0200
@@ -19,19 +19,19 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-django-classy-tags
-Version: 2.0.0
+Version: 3.0.1
Release: 0
Summary: Class based template tags for Django
License: MIT
URL: https://github.com/ojii/django-classy-tags
Source:
https://github.com/divio/django-classy-tags/archive/%{version}.tar.gz
-# https://github.com/django-cms/django-classy-tags/pull/66
-Patch0: dj40.patch
-BuildRequires: %{python_module Django >= 2.2}
+# PATCH-FIX-UPSTREAM Support django >= 4.1 gh#django-cms/django-classy-tags#86
+Patch0: django-4-1-support.patch
+BuildRequires: %{python_module Django >= 3.2}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-Django >= 2.2
+Requires: python-Django >= 3.2
BuildArch: noarch
%python_subpackages
@@ -40,8 +40,7 @@
which is fully compatible with the current Django templating infrastructure.
%prep
-%setup -q -n django-classy-tags-%{version}
-%patch0 -p1
+%autosetup -p1 -n django-classy-tags-%{version}
sed -i 's/verbosity=1/verbosity=2/' tests/settings.py
%build
@@ -50,7 +49,6 @@
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%python_expand rm -r %{buildroot}%{$python_sitelib}/tests
%check
export PYTHONPATH='.'
@@ -58,7 +56,7 @@
%files %{python_files}
%doc README.rst
-%license LICENSE.txt
+%license LICENSE
%{python_sitelib}/classytags/
%{python_sitelib}/django_classy_tags*egg-info/
++++++ 2.0.0.tar.gz -> 3.0.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-classy-tags-2.0.0/.github/workflows/codeql-analysis.yml
new/django-classy-tags-3.0.1/.github/workflows/codeql-analysis.yml
--- old/django-classy-tags-2.0.0/.github/workflows/codeql-analysis.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/.github/workflows/codeql-analysis.yml
2022-02-01 23:26:47.000000000 +0100
@@ -0,0 +1,68 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ master ]
+ schedule:
+ - cron: '22 13 * * 0'
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'python' ]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a
config file.
+ # By default, queries listed here will override any specified in a
config file.
+ # Prefix the list here with "+" to use these queries and those in the
config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually
(see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # ?????? Command-line programs to run using the OS shell.
+ # ???? https://git.io/JvXDl
+
+ # ?????? If the Autobuild fails above, remove it and uncomment the
following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/.github/workflows/lint.yml
new/django-classy-tags-3.0.1/.github/workflows/lint.yml
--- old/django-classy-tags-2.0.0/.github/workflows/lint.yml 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/.github/workflows/lint.yml 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,38 @@
+name: Lint
+
+on: [push, pull_request]
+
+jobs:
+ flake8:
+ name: flake8
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - name: Install flake8
+ run: pip install --upgrade flake8
+ - name: Run flake8
+ uses: liskin/gh-problem-matcher-wrap@v1
+ with:
+ linters: flake8
+ run: flake8
+
+ isort:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.9
+ - run: python -m pip install isort
+ - name: isort
+ uses: liskin/gh-problem-matcher-wrap@v1
+ with:
+ linters: isort
+ run: isort -c -rc -df classytags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-classy-tags-2.0.0/.github/workflows/publish-to-live-pypi.yml
new/django-classy-tags-3.0.1/.github/workflows/publish-to-live-pypi.yml
--- old/django-classy-tags-2.0.0/.github/workflows/publish-to-live-pypi.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/.github/workflows/publish-to-live-pypi.yml
2022-02-01 23:26:47.000000000 +0100
@@ -0,0 +1,39 @@
+name: Publish Python ???? distributions ???? to pypi
+
+on:
+ release:
+ types:
+ - published
+
+jobs:
+ build-n-publish:
+ name: Build and publish Python ???? distributions ???? to pypi
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@master
+ - name: Set up Python 3.9
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.9
+
+ - name: Install pypa/build
+ run: >-
+ python -m
+ pip install
+ build
+ --user
+ - name: Build a binary wheel and a source tarball
+ run: >-
+ python -m
+ build
+ --sdist
+ --wheel
+ --outdir dist/
+ .
+
+ - name: Publish distribution ???? to PyPI
+ if: startsWith(github.ref, 'refs/tags')
+ uses: pypa/gh-action-pypi-publish@master
+ with:
+ user: __token__
+ password: ${{ secrets.PYPI_API_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/django-classy-tags-2.0.0/.github/workflows/publish-to-test-pypi.yml
new/django-classy-tags-3.0.1/.github/workflows/publish-to-test-pypi.yml
--- old/django-classy-tags-2.0.0/.github/workflows/publish-to-test-pypi.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/.github/workflows/publish-to-test-pypi.yml
2022-02-01 23:26:47.000000000 +0100
@@ -0,0 +1,40 @@
+name: Publish Python ???? distributions ???? to TestPyPI
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ build-n-publish:
+ name: Build and publish Python ???? distributions ???? to TestPyPI
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@master
+ - name: Set up Python 3.9
+ uses: actions/setup-python@v1
+ with:
+ python-version: 3.9
+
+ - name: Install pypa/build
+ run: >-
+ python -m
+ pip install
+ build
+ --user
+ - name: Build a binary wheel and a source tarball
+ run: >-
+ python -m
+ build
+ --sdist
+ --wheel
+ --outdir dist/
+ .
+
+ - name: Publish distribution ???? to Test PyPI
+ uses: pypa/gh-action-pypi-publish@master
+ with:
+ user: __token__
+ password: ${{ secrets.TEST_PYPI_API_TOKEN }}
+ repository_url: https://test.pypi.org/legacy/
+ skip_existing: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/.github/workflows/test.yml
new/django-classy-tags-3.0.1/.github/workflows/test.yml
--- old/django-classy-tags-2.0.0/.github/workflows/test.yml 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/.github/workflows/test.yml 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,63 @@
+name: CodeCov
+
+on: [push, pull_request]
+
+jobs:
+ unit-tests:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ python-version: ['3.7', '3.8', '3.9', '3.10']
+ django-version: ['2.2', '3.1', '3.2']
+ os: [
+ ubuntu-20.04,
+ ]
+
+ steps:
+ - uses: actions/checkout@v1
+ - name: Set up Python ${{ matrix.python-version }}
+
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install django==${{ matrix.django-version }} coverage
+ python setup.py install
+
+ - name: Run coverage
+ run: coverage run setup.py test
+
+ - name: Upload Coverage to Codecov
+ uses: codecov/codecov-action@v1
+
+ unit-tests-dj4:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ python-version: ['3.8', '3.9', '3.10']
+ os: [
+ ubuntu-20.04,
+ ]
+
+ steps:
+ - uses: actions/checkout@v1
+ - name: Set up Python ${{ matrix.python-version }}
+
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install "django>=4.0,<4.1" coverage
+ python setup.py install
+
+ - name: Run coverage
+ run: coverage run setup.py test
+
+ - name: Upload Coverage to Codecov
+ uses: codecov/codecov-action@v1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/.gitignore
new/django-classy-tags-3.0.1/.gitignore
--- old/django-classy-tags-2.0.0/.gitignore 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/.gitignore 2022-02-01 23:26:47.000000000
+0100
@@ -4,7 +4,7 @@
*.log
*.pot
.DS_Store
-.coverage/
+.coverage
.eggs/
.idea/
.project/
@@ -16,5 +16,7 @@
build/
dist/
env/
+/*docs/env*/
+/*docs/_build*/
local.sqlite
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/.pre-commit-config.yaml
new/django-classy-tags-3.0.1/.pre-commit-config.yaml
--- old/django-classy-tags-2.0.0/.pre-commit-config.yaml 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/.pre-commit-config.yaml 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,33 @@
+repos:
+ - repo: https://github.com/asottile/pyupgrade
+ rev: v2.31.0
+ hooks:
+ - id: pyupgrade
+ args: ["--py37-plus"]
+
+ - repo: https://github.com/adamchainz/django-upgrade
+ rev: '1.4.0'
+ hooks:
+ - id: django-upgrade
+ args: [--target-version, "2.2"]
+
+ - repo: https://github.com/PyCQA/flake8
+ rev: 4.0.1
+ hooks:
+ - id: flake8
+
+ - repo: https://github.com/asottile/yesqa
+ rev: v1.3.0
+ hooks:
+ - id: yesqa
+
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.1.0
+ hooks:
+ - id: check-merge-conflict
+ - id: mixed-line-ending
+
+ - repo: https://github.com/pycqa/isort
+ rev: 5.10.1
+ hooks:
+ - id: isort
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/.travis.yml
new/django-classy-tags-3.0.1/.travis.yml
--- old/django-classy-tags-2.0.0/.travis.yml 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/.travis.yml 1970-01-01 01:00:00.000000000
+0100
@@ -1,39 +0,0 @@
-language: python
-
-dist: xenial
-
-matrix:
- include:
- - python: 3.5
- env: TOX_ENV='flake8'
- - python: 3.5
- env: TOX_ENV='isort'
- # Django 2.2, run all supported versions for LTS releases
- - python: 3.5
- env: DJANGO='dj22'
- - python: 3.6
- env: DJANGO='dj22'
- - python: 3.7
- env: DJANGO='dj22'
- - python: 3.8
- env: DJANGO='dj22'
- # Django 3.0, always run the lowest supported version
- - python: 3.6
- env: DJANGO='dj30'
- # Django 3.1, always run the lowest supported version
- - python: 3.6
- env: DJANGO='dj31'
-
-install:
- - pip install coverage isort tox
- - "if [[ $TRAVIS_PYTHON_VERSION == '3.5' ]]; then export PY_VER=py35; fi"
- - "if [[ $TRAVIS_PYTHON_VERSION == '3.6' ]]; then export PY_VER=py36; fi"
- - "if [[ $TRAVIS_PYTHON_VERSION == '3.7' ]]; then export PY_VER=py37; fi"
- - "if [[ $TRAVIS_PYTHON_VERSION == '3.8' ]]; then export PY_VER=py38; fi"
- - "if [[ ${DJANGO}z != 'z' ]]; then export TOX_ENV=$PY_VER; fi"
-
-script:
- - tox -e $TOX_ENV
-
-after_success:
- - bash <(curl -s https://codecov.io/bash)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/CHANGELOG.rst
new/django-classy-tags-3.0.1/CHANGELOG.rst
--- old/django-classy-tags-2.0.0/CHANGELOG.rst 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/CHANGELOG.rst 2022-02-01 23:26:47.000000000
+0100
@@ -2,6 +2,19 @@
Changelog
=========
+unreleased
+==========
+
+3.0.1 2022-02-01
+================
+
+* Update manifest to include all the tests dir (#72)
+
+3.0.0 2022-01-22
+================
+
+* Added support for Django 3.2 and 4.0
+* Drop support for python 3.5 and 3.6
2.0.0 (2020-08-26)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/LICENSE
new/django-classy-tags-3.0.1/LICENSE
--- old/django-classy-tags-2.0.0/LICENSE 1970-01-01 01:00:00.000000000
+0100
+++ new/django-classy-tags-3.0.1/LICENSE 2022-02-01 23:26:47.000000000
+0100
@@ -0,0 +1,24 @@
+Copyright (c) 2010, Jonas Obrist
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Jonas Obrist nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL JONAS OBRIST BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/LICENSE.txt
new/django-classy-tags-3.0.1/LICENSE.txt
--- old/django-classy-tags-2.0.0/LICENSE.txt 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/LICENSE.txt 1970-01-01 01:00:00.000000000
+0100
@@ -1,24 +0,0 @@
-Copyright (c) 2010, Jonas Obrist
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of Jonas Obrist nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL JONAS OBRIST BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/MANIFEST.in
new/django-classy-tags-3.0.1/MANIFEST.in
--- old/django-classy-tags-2.0.0/MANIFEST.in 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/MANIFEST.in 2022-02-01 23:26:47.000000000
+0100
@@ -1,3 +1,6 @@
-include LICENSE.txt
+include LICENSE
include README.rst
recursive-exclude * *.py[co]
+recursive-include tests *.html
+recursive-include tests *.py
+recursive-include tests *.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/README.rst
new/django-classy-tags-3.0.1/README.rst
--- old/django-classy-tags-2.0.0/README.rst 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/README.rst 2022-02-01 23:26:47.000000000
+0100
@@ -17,16 +17,27 @@
* Extensible!
-Contributing
-============
+.. note::
-This is a an open-source project. We'll be delighted to receive your
+ This project is considered 3rd party (no supervision by the `django CMS
Association <https://www.django-cms.org/en/about-us/>`_). Join us on `Slack
<https://www.django-cms.org/slack/>`_ for more information.
+
+
+*******************************************
+Contribute to this project and win rewards
+*******************************************
+
+Because this is a an open-source project, we welcome everyone to
+`get involved in the project <https://www.django-cms.org/en/contribute/>`_ and
+`receive a reward <https://www.django-cms.org/en/bounty-program/>`_ for their
contribution.
+Become part of a fantastic community and help us make django CMS the best CMS
in the world.
+
+We'll be delighted to receive your
feedback in the form of issues and pull requests. Before submitting your
pull request, please review our `contribution guidelines
<http://docs.django-cms.org/en/latest/contributing/index.html>`_.
We're grateful to all contributors who have helped create and maintain this
package.
-Contributors are listed at the `contributors
<https://github.com/divio/django-classy-tags/graphs/contributors>`_
+Contributors are listed at the `contributors
<https://github.com/django-cms/django-classy-tags/graphs/contributors>`_
section.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/classytags/__init__.py
new/django-classy-tags-3.0.1/classytags/__init__.py
--- old/django-classy-tags-2.0.0/classytags/__init__.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/classytags/__init__.py 2022-02-01
23:26:47.000000000 +0100
@@ -1 +1 @@
-__version__ = '2.0.0'
+__version__ = '3.0.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/classytags/arguments.py
new/django-classy-tags-3.0.1/classytags/arguments.py
--- old/django-classy-tags-2.0.0/classytags/arguments.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/classytags/arguments.py 2022-02-01
23:26:47.000000000 +0100
@@ -3,10 +3,7 @@
from classytags.exceptions import InvalidFlag
from classytags.utils import NULL, TemplateConstant, mixin
-from classytags.values import (
- ChoiceValue, DictValue, IntegerValue, ListValue, StrictStringValue,
- StringValue,
-)
+from classytags.values import ChoiceValue, DictValue, IntegerValue, ListValue,
StrictStringValue, StringValue
class Argument:
@@ -22,7 +19,7 @@
self.resolve = resolve
def __repr__(self): # pragma: no cover
- return '<%s: %s>' % (self.__class__.__name__, self.name)
+ return f'<{self.__class__.__name__}: {self.name}>'
def get_default(self):
"""
@@ -164,7 +161,7 @@
def get_default(self):
items = self.default.items()
return self.wrapper_class(
- dict([(key, TemplateConstant(value)) for key, value in items])
+ {key: TemplateConstant(value) for key, value in items}
)
def parse(self, parser, token, tagname, kwargs):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/classytags/core.py
new/django-classy-tags-3.0.1/classytags/core.py
--- old/django-classy-tags-2.0.0/classytags/core.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/classytags/core.py 2022-02-01
23:26:47.000000000 +0100
@@ -59,7 +59,7 @@
blocks = ';%s' % ','.join(map(attrgetter('alias'), self.blocks))
else: # pragma: no cover
blocks = ''
- return '<Options:%s%s>' % (options, blocks)
+ return f'<Options:{options}{blocks}>'
def __add__(self, other):
if not isinstance(other, Options):
@@ -146,9 +146,9 @@
Usually you should not override this method, but rather use render_tag.
"""
items = self.kwargs.items()
- kwargs = dict([(key, value.resolve(context)) for key, value in items])
+ kwargs = {key: value.resolve(context) for key, value in items}
kwargs.update(self.blocks)
- return self.render_tag(context, **kwargs)
+ return str(self.render_tag(context, **kwargs))
def render_tag(self, context, **kwargs):
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/classytags/parser.py
new/django-classy-tags-3.0.1/classytags/parser.py
--- old/django-classy-tags-2.0.0/classytags/parser.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/classytags/parser.py 2022-02-01
23:26:47.000000000 +0100
@@ -2,10 +2,7 @@
from django import template
-from classytags.exceptions import (
- ArgumentRequiredError, BreakpointExpected, TooManyArguments,
- TrailingBreakpoint,
-)
+from classytags.exceptions import ArgumentRequiredError, BreakpointExpected,
TooManyArguments, TrailingBreakpoint
class Parser:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/classytags/utils.py
new/django-classy-tags-3.0.1/classytags/utils.py
--- old/django-classy-tags-2.0.0/classytags/utils.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/classytags/utils.py 2022-02-01
23:26:47.000000000 +0100
@@ -39,9 +39,9 @@
self.breakpoints = copy(breakpoints)
self.blocks = copy(blocks)
self.combined_breakpoints = dict(combind_breakpoints.items())
- self.reversed_combined_breakpoints = dict(
- (v, k) for k, v in combind_breakpoints.items()
- )
+ self.reversed_combined_breakpoints = {
+ v: k for k, v in combind_breakpoints.items()
+ }
self.current_breakpoint = None
if self.breakpoints:
self.next_breakpoint = self.breakpoints.pop(0)
@@ -79,7 +79,7 @@
def mixin(parent, child, attrs=None):
attrs = attrs or {}
return type(
- '%sx%s' % (parent.__name__, child.__name__),
+ f'{parent.__name__}x{child.__name__}',
(child, parent),
attrs
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/classytags/values.py
new/django-classy-tags-3.0.1/classytags/values.py
--- old/django-classy-tags-2.0.0/classytags/values.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/classytags/values.py 2022-02-01
23:26:47.000000000 +0100
@@ -83,9 +83,9 @@
dict.__init__(self, value)
def resolve(self, context):
- resolved = dict(
- [(key, value.resolve(context)) for key, value in self.items()]
- )
+ resolved = {
+ key: value.resolve(context) for key, value in self.items()
+ }
return self.clean(resolved)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/docs/Makefile
new/django-classy-tags-3.0.1/docs/Makefile
--- old/django-classy-tags-2.0.0/docs/Makefile 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/docs/Makefile 2022-02-01 23:26:47.000000000
+0100
@@ -6,6 +6,8 @@
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
+VENV = env/bin/activate
+PORT = 8001
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
@@ -30,34 +32,49 @@
clean:
-rm -rf $(BUILDDIR)/*
+install:
+ @echo "... setting up virtualenv"
+ python3 -m venv env
+ . $(VENV); pip install -r requirements.txt
+
+ @echo "\n" \
+
"--------------------------------------------------------------------------------------------------
\n" \
+ "* watch, build and serve the documentation: make run \n" \
+ "* check spelling: make spelling \n" \
+ "\n" \
+ "enchant must be installed in order for
pyenchant (and therefore spelling checks) to work. See \n" \
+
"http://docs.django-cms.org/en/latest/contributing/documentation.html#install-the-spelling-software
\n" \
+
"--------------------------------------------------------------------------------------------------
\n" \
+
+
html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ . $(VENV); $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ . $(VENV); $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS)
$(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ . $(VENV); $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ . $(VENV); $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ . $(VENV); $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS)
$(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ . $(VENV); $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the"
\
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@@ -66,24 +83,27 @@
@echo "# assistant -collectionFile
$(BUILDDIR)/qthelp/django-classy-tags.qhc"
latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ . $(VENV); $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."
changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ . $(VENV); $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS)
$(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ . $(VENV); $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS)
$(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ . $(VENV); $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS)
$(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
+
+run:
+ . $(VENV); sphinx-autobuild $(ALLSPHINXOPTS) build/html --host 0.0.0.0
--port $(PORT)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/docs/conf.py
new/django-classy-tags-3.0.1/docs/conf.py
--- old/django-classy-tags-2.0.0/docs/conf.py 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/docs/conf.py 2022-02-01 23:26:47.000000000
+0100
@@ -10,8 +10,7 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
-import os
-import sys
+import datetime
# If extensions (or modules to document with autodoc) are in another directory,
@@ -25,7 +24,9 @@
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ["sphinx.ext.intersphinx"]
-intersphinx_mapping = {'django':
('http://readthedocs.org/projects/eric/django/docs/', None)}
+intersphinx_mapping = {
+ 'django': ('https://docs.djangoproject.com/en/3.2/',
'https://docs.djangoproject.com/en/3.2/_objects/'),
+}
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -39,18 +40,19 @@
# The master toctree document.
master_doc = 'index'
+current_year = datetime.datetime.now().year
# General information about the project.
-project = u'django-classy-tags'
-copyright = u'2010, Jonas Obrist'
+project = 'django-classy-tags'
+copyright = f'2010-{current_year}, Jonas Obrist'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = '0.3'
+version = '3.0.1'
# The full version, including alpha/beta/rc tags.
-release = '0.3.0'
+release = '3.0.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -94,7 +96,15 @@
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'default'
+try:
+ import furo
+
+ html_theme = 'furo'
+ html_theme_options = {
+ "navigation_with_keys": True,
+ }
+except ImportError:
+ html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
@@ -175,8 +185,8 @@
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
[howto/manual]).
latex_documents = [
- ('index', 'django-classy-tags.tex', u'django-classy-tags Documentation',
- u'Jonas Obrist', 'manual'),
+ ('index', 'django-classy-tags.tex', 'django-classy-tags Documentation',
+ 'Jonas Obrist', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/docs/requirements.in
new/django-classy-tags-3.0.1/docs/requirements.in
--- old/django-classy-tags-2.0.0/docs/requirements.in 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/docs/requirements.in 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,9 @@
+MarkupSafe
+Pygments
+furo
+Sphinx>=4.2.0
+sphinxcontrib-spelling
+pyenchant>3
+sphinx-autobuild
+datetime
+pip-tools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/docs/requirements.txt
new/django-classy-tags-3.0.1/docs/requirements.txt
--- old/django-classy-tags-2.0.0/docs/requirements.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/docs/requirements.txt 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,111 @@
+#
+# This file is autogenerated by pip-compile with python 3.9
+# To update, run:
+#
+# pip-compile
+#
+--trusted-host pypi.python.org
+--trusted-host pypi.org
+--trusted-host files.pythonhosted.org
+
+alabaster==0.7.12
+ # via sphinx
+babel==2.9.1
+ # via sphinx
+beautifulsoup4==4.10.0
+ # via furo
+certifi==2021.10.8
+ # via requests
+charset-normalizer==2.0.10
+ # via requests
+click==8.0.3
+ # via pip-tools
+colorama==0.4.4
+ # via sphinx-autobuild
+datetime==4.3
+ # via -r requirements.in
+docutils==0.17.1
+ # via sphinx
+furo==2022.1.2
+ # via -r requirements.in
+idna==3.3
+ # via requests
+imagesize==1.3.0
+ # via sphinx
+importlib-metadata==4.10.1
+ # via sphinx
+jinja2==3.0.3
+ # via sphinx
+livereload==2.6.3
+ # via sphinx-autobuild
+markupsafe==2.0.1
+ # via
+ # -r requirements.in
+ # jinja2
+packaging==21.3
+ # via sphinx
+pep517==0.12.0
+ # via pip-tools
+pip-tools==6.4.0
+ # via -r requirements.in
+pyenchant==3.2.2
+ # via
+ # -r requirements.in
+ # sphinxcontrib-spelling
+pygments==2.11.2
+ # via
+ # -r requirements.in
+ # furo
+ # sphinx
+pyparsing==3.0.7
+ # via packaging
+pytz==2021.3
+ # via
+ # babel
+ # datetime
+requests==2.27.1
+ # via sphinx
+six==1.16.0
+ # via livereload
+snowballstemmer==2.2.0
+ # via sphinx
+soupsieve==2.3.1
+ # via beautifulsoup4
+sphinx==4.4.0
+ # via
+ # -r requirements.in
+ # furo
+ # sphinx-autobuild
+ # sphinxcontrib-spelling
+sphinx-autobuild==2021.3.14
+ # via -r requirements.in
+sphinxcontrib-applehelp==1.0.2
+ # via sphinx
+sphinxcontrib-devhelp==1.0.2
+ # via sphinx
+sphinxcontrib-htmlhelp==2.0.0
+ # via sphinx
+sphinxcontrib-jsmath==1.0.1
+ # via sphinx
+sphinxcontrib-qthelp==1.0.3
+ # via sphinx
+sphinxcontrib-serializinghtml==1.1.5
+ # via sphinx
+sphinxcontrib-spelling==7.3.2
+ # via -r requirements.in
+tomli==2.0.0
+ # via pep517
+tornado==6.1
+ # via livereload
+urllib3==1.26.8
+ # via requests
+wheel==0.37.1
+ # via pip-tools
+zipp==3.7.0
+ # via importlib-metadata
+zope.interface==5.4.0
+ # via datetime
+
+# The following packages are considered to be unsafe in a requirements file:
+# pip
+# setuptools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/requirements.in
new/django-classy-tags-3.0.1/requirements.in
--- old/django-classy-tags-2.0.0/requirements.in 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/requirements.in 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,5 @@
+bump2version
+Django>2.2
+pip-tools
+pre-commit
+wheel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/requirements.txt
new/django-classy-tags-3.0.1/requirements.txt
--- old/django-classy-tags-2.0.0/requirements.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/requirements.txt 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,56 @@
+#
+# This file is autogenerated by pip-compile with python 3.9
+# To update, run:
+#
+# pip-compile
+#
+--trusted-host pypi.python.org
+--trusted-host pypi.org
+--trusted-host files.pythonhosted.org
+
+asgiref==3.4.1
+ # via django
+bump2version==1.0.1
+ # via -r requirements.in
+cfgv==3.3.1
+ # via pre-commit
+click==8.0.3
+ # via pip-tools
+distlib==0.3.4
+ # via virtualenv
+django==4.0.1
+ # via -r requirements.in
+filelock==3.4.2
+ # via virtualenv
+identify==2.4.4
+ # via pre-commit
+nodeenv==1.6.0
+ # via pre-commit
+pep517==0.12.0
+ # via pip-tools
+pip-tools==6.4.0
+ # via -r requirements.in
+platformdirs==2.4.1
+ # via virtualenv
+pre-commit==2.17.0
+ # via -r requirements.in
+pyyaml==6.0
+ # via pre-commit
+six==1.16.0
+ # via virtualenv
+sqlparse==0.4.2
+ # via django
+toml==0.10.2
+ # via pre-commit
+tomli==2.0.0
+ # via pep517
+virtualenv==20.13.0
+ # via pre-commit
+wheel==0.37.1
+ # via
+ # -r requirements.in
+ # pip-tools
+
+# The following packages are considered to be unsafe in a requirements file:
+# pip
+# setuptools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/setup.cfg
new/django-classy-tags-3.0.1/setup.cfg
--- old/django-classy-tags-2.0.0/setup.cfg 1970-01-01 01:00:00.000000000
+0100
+++ new/django-classy-tags-3.0.1/setup.cfg 2022-02-01 23:26:47.000000000
+0100
@@ -0,0 +1,56 @@
+[bumpversion]
+current_version = 3.0.1
+commit = True
+tag = False
+
+[bumpversion:file:setup.py]
+search = version='{current_version}'
+replace = version='{new_version}'
+
+[bumpversion:file:classytags/__init__.py]
+search = __version__ = '{current_version}'
+replace = __version__ = '{new_version}'
+
+[bumpversion:file:docs/conf.py]
+search = '{current_version}'
+replace = '{new_version}'
+
+[bumpversion:file:CHANGELOG.rst]
+search =
+ unreleased
+ ==========
+replace =
+ unreleased
+ ==========
+
+ {new_version} {utcnow:%%Y-%%m-%%d}
+ ================
+
+[flake8]
+max-line-length = 119
+exclude =
+ *.egg-info,
+ .eggs,
+ .env,
+ .git,
+ .settings,
+ .tox,
+ .venv,
+ build,
+ data,
+ dist,
+ docs/conf.py,
+ *migrations*,
+ requirements,
+ tmp
+
+[isort]
+line_length = 119
+skip = manage.py, *migrations*, .tox, .eggs, data, .env, .venv
+include_trailing_comma = true
+multi_line_output = 5
+lines_after_imports = 2
+default_section = THIRDPARTY
+sections = FUTURE, STDLIB, DJANGO, THIRDPARTY, FIRSTPARTY, LOCALFOLDER
+known_first_party = classytags
+known_django = django
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/setup.py
new/django-classy-tags-3.0.1/setup.py
--- old/django-classy-tags-2.0.0/setup.py 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/setup.py 2022-02-01 23:26:47.000000000
+0100
@@ -1,7 +1,7 @@
#!/usr/bin/env python
-from setuptools import find_packages, setup
+from pathlib import Path
-from classytags import __version__
+from setuptools import find_packages, setup
REQUIREMENTS = [
@@ -15,33 +15,39 @@
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: OS Independent',
- 'Programming Language :: Python',
'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.5',
- 'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
'Framework :: Django',
'Framework :: Django :: 2.2',
- 'Framework :: Django :: 3.0',
'Framework :: Django :: 3.1',
+ 'Framework :: Django :: 3.2',
+ 'Framework :: Django :: 4.0',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
'Topic :: Software Development',
'Topic :: Software Development :: Libraries',
]
+this_directory = Path(__file__).parent
+long_description = (this_directory / "README.rst").read_text()
setup(
name='django-classy-tags',
- version=__version__,
+ version='3.0.1',
author='Jonas Obrist',
author_email='[email protected]',
- url='http://github.com/ojii/django-classy-tags',
+ maintainer='Django CMS Association and contributors',
+ maintainer_email='[email protected]',
+ url='https://github.com/django-cms/django-classy-tags',
license='BSD',
description='Class based template tags for Django',
- long_description=open('README.rst').read(),
- packages=find_packages(),
+ long_description=long_description,
+ long_description_content_type='text/x-rst',
+ packages=find_packages(exclude=['tests']),
+ python_requires='>=3.7',
include_package_data=True,
zip_safe=False,
install_requires=REQUIREMENTS,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/tests/requirements/base.txt
new/django-classy-tags-3.0.1/tests/requirements/base.txt
--- old/django-classy-tags-2.0.0/tests/requirements/base.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/django-classy-tags-3.0.1/tests/requirements/base.txt 2022-02-01
23:26:47.000000000 +0100
@@ -0,0 +1,4 @@
+# other requirements
+tox
+coverage
+flake8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/tests/requirements.txt
new/django-classy-tags-3.0.1/tests/requirements.txt
--- old/django-classy-tags-2.0.0/tests/requirements.txt 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/tests/requirements.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-# other requirements
-tox
-coverage
-flake8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/tests/test_core.py
new/django-classy-tags-3.0.1/tests/test_core.py
--- old/django-classy-tags-2.0.0/tests/test_core.py 2020-08-26
11:20:50.000000000 +0200
+++ new/django-classy-tags-3.0.1/tests/test_core.py 2022-02-01
23:26:47.000000000 +0100
@@ -9,12 +9,9 @@
from django.template import Context, RequestContext
from django.test import RequestFactory
-from tests.context_managers import SettingsOverride, TemplateTags
-
-from classytags import (
- arguments, core, exceptions, helpers, parser, utils, values,
-)
+from classytags import arguments, core, exceptions, helpers, parser, utils,
values
from classytags.blocks import BlockDefinition, VariableBlockName
+from tests.context_managers import SettingsOverride, TemplateTags
CLASSY_TAGS_DIR = os.path.abspath(os.path.dirname(__file__))
@@ -639,7 +636,7 @@
)
def render_tag(self, context, kwargs):
- return '|'.join('%s:%s' % (k, v) for k, v in kwargs.items())
+ return '|'.join(f'{k}:{v}' for k, v in kwargs.items())
tpls = [
('{% filtered hello="world" %}', 'hello:world', {}),
('{% filtered hello=var %}', 'hello:world', {'var': 'world'}),
@@ -894,7 +891,7 @@
)
def render_tag(self, context, named):
- return '%s:%s' % (
+ return '{}:{}'.format(
list(named.keys())[0], list(named.values())[0]
)
@@ -999,7 +996,7 @@
)
def render_tag(self, context, named):
- return '%s:%s' % (
+ return '{}:{}'.format(
list(named.keys())[0], list(named.values())[0]
)
@@ -1010,7 +1007,7 @@
)
def render_tag(self, context, named):
- return '%s:%s' % (
+ return '{}:{}'.format(
list(named.keys())[0], list(named.values())[0]
)
@@ -1106,8 +1103,10 @@
)
def render_tag(self, context, myarg, nodelist):
- return "nodelist:%s;myarg:%s" % (nodelist.render(context),
- myarg)
+ return "nodelist:{};myarg:{}".format(
+ nodelist.render(context),
+ myarg
+ )
with TemplateTags(StartBlock):
ctx = template.Context()
@@ -1145,8 +1144,10 @@
)
def render_tag(self, context, myarg, nodelist):
- return "nodelist:%s;myarg:%s" % (nodelist.render(context),
- myarg)
+ return "nodelist:{};myarg:{}".format(
+ nodelist.render(context),
+ myarg
+ )
with TemplateTags(StartBlock):
ctx = template.Context()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/django-classy-tags-2.0.0/tox.ini
new/django-classy-tags-3.0.1/tox.ini
--- old/django-classy-tags-2.0.0/tox.ini 2020-08-26 11:20:50.000000000
+0200
+++ new/django-classy-tags-3.0.1/tox.ini 2022-02-01 23:26:47.000000000
+0100
@@ -2,45 +2,18 @@
envlist =
flake8
isort
- py{35,36,37,38}-dj{22}
- py{36,37,38}-dj{30,31}
+ py{37,38,39}-dj{22,31,32}
+ py{38,39,310}-dj{31,32,40}
skip_missing_interpreters=True
-[flake8]
-max-line-length = 119
-exclude =
- *.egg-info,
- .eggs,
- .git,
- .settings,
- .tox,
- build,
- data,
- dist,
- docs,
- *migrations*,
- requirements,
- tmp
-
-[isort]
-line_length = 79
-skip = manage.py, *migrations*, .tox, .eggs, data
-include_trailing_comma = true
-multi_line_output = 5
-not_skip = __init__.py
-lines_after_imports = 2
-default_section = THIRDPARTY
-sections = FUTURE, STDLIB, DJANGO, THIRDPARTY, FIRSTPARTY, LIB, LOCALFOLDER
-known_first_party = classytags
-known_django = django
-
[testenv]
deps =
- -r{toxinidir}/tests/requirements.txt
+ -r{toxinidir}/tests/requirements/base.txt
dj22: Django>=2.2,<3.0
- dj30: Django>=3.0,<3.1
dj31: Django>=3.1,<3.2
+ dj32: Django>=3.2,<3.3
+ dj40: Django>=4.0,<4.1
commands =
{envpython} --version
{env:COMMAND:coverage} erase
@@ -53,5 +26,5 @@
[testenv:isort]
deps = isort
-commands = isort -c -rc -df classytags
+commands = isort -c --df classytags
skip_install = true
++++++ django-4-1-support.patch ++++++
>From 191dc768b564e3b41f8f130561a4ddc51d82b9e9 Mon Sep 17 00:00:00 2001
From: Kevin Marsh <[email protected]>
Date: Fri, 23 Sep 2022 10:08:10 -0700
Subject: [PATCH 1/3] Stop supporting older deprecated Django versions (2.2 and
3.1)
---
.github/workflows/test.yml | 6 +-----
.pre-commit-config.yaml | 2 +-
README.rst | 4 ++--
requirements.in | 2 +-
setup.py | 4 +---
tox.ini | 6 ++----
6 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/requirements.in b/requirements.in
index d9a47c7..ed4b0d4 100644
--- a/requirements.in
+++ b/requirements.in
@@ -1,5 +1,5 @@
bump2version
-Django>2.2
+Django>3.2
pip-tools
pre-commit
wheel
diff --git a/setup.py b/setup.py
index 212157e..bde3794 100644
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@
REQUIREMENTS = [
- 'django>=2.2',
+ 'django>=3.2',
]
@@ -21,8 +21,6 @@
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Framework :: Django',
- 'Framework :: Django :: 2.2',
- 'Framework :: Django :: 3.1',
'Framework :: Django :: 3.2',
'Framework :: Django :: 4.0',
'Topic :: Internet :: WWW/HTTP',
>From c345edf1e2180eea641a69f10939475820c6df8c Mon Sep 17 00:00:00 2001
From: Kevin Marsh <[email protected]>
Date: Fri, 23 Sep 2022 09:42:21 -0700
Subject: [PATCH 2/3] Fix `Tag` name breaking in Django 4.1
Django underwent some refactoring with regards to how it's
tag names are generated and registered in the template library
Closes #84
---
classytags/core.py | 15 +++------------
tests/test_core.py | 22 ++++++++++++++++++++++
2 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/classytags/core.py b/classytags/core.py
index 9a991e1..8190e40 100644
--- a/classytags/core.py
+++ b/classytags/core.py
@@ -108,22 +108,13 @@ def parse(self, parser, tokens):
class TagMeta(type):
"""
Metaclass for the Tag class that set's the name attribute onto the class
- and a _decorated_function pseudo-function which is used by Django's
- template system to get the tag name.
"""
def __new__(cls, name, bases, attrs):
- parents = [base for base in bases if isinstance(base, TagMeta)]
- if not parents:
+ if not any(base for base in bases if isinstance(base, TagMeta)):
return super().__new__(cls, name, bases, attrs)
tag_name = str(attrs.get('name', get_default_name(name)))
-
- def fake_func():
- pass # pragma: no cover
-
- fake_func.__name__ = tag_name
- attrs['_decorated_function'] = fake_func
- attrs['name'] = str(tag_name)
- return super().__new__(cls, name, bases, attrs)
+ attrs['name'] = tag_name
+ return super().__new__(cls, tag_name, bases, attrs)
class Tag(TagMeta('TagMeta', (Node,), {})):
diff --git a/tests/test_core.py b/tests/test_core.py
index e1cc8ae..13d6a2e 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -591,6 +591,22 @@ class MyTag2(core.Tag):
msg = "'my_tag2' in %s" % lib.tags.keys()
self.assertTrue('my_tag2' not in lib.tags, msg)
+ # test decorated naming
+ lib = template.Library()
+
+ @lib.tag(name="my_decorated_tag_5")
+ class MyTag5(core.Tag):
+ pass
+ msg = "'my_decorated_tag_5' not in %s" % lib.tags.keys()
+ self.assertTrue('my_decorated_tag_5' in lib.tags, msg)
+
+ # test decorated and explicit naming
+ # the tag registration takes precedence over the name attribute
+ lib = template.Library()
+ lib.tag('my_decorated_tag_6', MyTag2)
+ msg = "'my_decorated_tag_6' not in %s" % lib.tags.keys()
+ self.assertTrue('my_decorated_tag_6' in lib.tags, msg)
+
def test_hello_world(self):
class Hello(core.Tag):
options = core.Options(
@@ -971,6 +987,12 @@ class MyTag(core.Tag):
tag = MyTag(dummy_parser, DummyTokens())
self.assertEqual('<Tag: mytag>', repr(tag))
+ def test_repr_without_explicit_name(self):
+ class MyTag(core.Tag):
+ pass
+ tag = MyTag(dummy_parser, DummyTokens())
+ self.assertEqual('<Tag: my_tag>', repr(tag))
+
def test_non_required_multikwarg(self):
options = core.Options(
arguments.MultiKeywordArgument('multi', required=False),
>From 3292aeeaae38694e0efdf0842c6894efc25f6a3f Mon Sep 17 00:00:00 2001
From: Kevin Marsh <[email protected]>
Date: Fri, 23 Sep 2022 09:46:03 -0700
Subject: [PATCH 3/3] Officially support Django 4.1
---
.github/workflows/test.yml | 5 +++--
CHANGELOG.rst | 4 +++-
setup.py | 1 +
tox.ini | 2 --
4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/setup.py b/setup.py
index bde3794..c8c7d43 100644
--- a/setup.py
+++ b/setup.py
@@ -23,6 +23,7 @@
'Framework :: Django',
'Framework :: Django :: 3.2',
'Framework :: Django :: 4.0',
+ 'Framework :: Django :: 4.1',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
'Topic :: Software Development',