Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-django-formtools for 
openSUSE:Factory checked in at 2021-12-26 13:30:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-django-formtools (Old)
 and      /work/SRC/openSUSE:Factory/.python-django-formtools.new.2520 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-django-formtools"

Sun Dec 26 13:30:39 2021 rev:7 rq:942596 version:2.3

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-django-formtools/python-django-formtools.changes
  2020-01-07 23:54:45.984075317 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-django-formtools.new.2520/python-django-formtools.changes
        2021-12-26 13:30:59.974979996 +0100
@@ -1,0 +2,12 @@
+Sun Dec 26 11:51:09 UTC 2021 - John Vandenberg <jay...@gmail.com>
+
+- Updated URL to be https://github.com/jazzband/django-formtools
+- Remove unneeded BuildRequires isort
+- Update to v2.3
+  * Dropped testing for Django 1.11, 2.0 and 2.1.
+  * Added support for Django 3.1 and Python 3.9.
+  * Added support for Django 3.2 and 4.0.
+  * Dropped support for Django 3.0.
+  * Dropped support for Python 3.5.
+
+-------------------------------------------------------------------

Old:
----
  django-formtools-2.2.tar.gz

New:
----
  django-formtools-2.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-django-formtools.spec ++++++
--- /var/tmp/diff_new_pack.UJdHOU/_old  2021-12-26 13:31:00.470980341 +0100
+++ /var/tmp/diff_new_pack.UJdHOU/_new  2021-12-26 13:31:00.474980344 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-django-formtools
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,18 +19,17 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-django-formtools
-Version:        2.2
+Version:        2.3
 Release:        0
 Summary:        A set of high-level abstractions for Django forms
 License:        BSD-3-Clause
-URL:            https://github.com/django/django-formtools
+URL:            https://github.com/jazzband/django-formtools
 Source:         
https://files.pythonhosted.org/packages/source/d/django-formtools/django-formtools-%{version}.tar.gz
-BuildRequires:  %{python_module Django >= 2.0}
-BuildRequires:  %{python_module isort}
-BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module Django >= 2.2}
+BuildRequires:  %{python_module setuptools_scm}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
-Requires:       python-Django >= 2.0
+Requires:       python-Django >= 2.2
 BuildArch:      noarch
 %python_subpackages
 
@@ -51,7 +50,7 @@
 %check
 export DJANGO_SETTINGS_MODULE=tests.settings
 export PYTHONPATH=`pwd`
-%python_expand %{_bindir}/django-admin.py-%{$python_bin_suffix} test -v 2 
tests --pythonpath=`pwd` 
+%python_expand $python -m django test -v 2 tests --pythonpath=`pwd` 
 
 %files %{python_files}
 %license LICENSE

++++++ django-formtools-2.2.tar.gz -> django-formtools-2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/.editorconfig 
new/django-formtools-2.3/.editorconfig
--- old/django-formtools-2.2/.editorconfig      1970-01-01 01:00:00.000000000 
+0100
+++ new/django-formtools-2.3/.editorconfig      2021-04-19 01:00:34.000000000 
+0200
@@ -0,0 +1,14 @@
+# http://editorconfig.org
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+trim_trailing_whitespace = true
+end_of_line = lf
+charset = utf-8
+
+[*.bat]
+end_of_line = crlf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/.github/workflows/release.yml 
new/django-formtools-2.3/.github/workflows/release.yml
--- old/django-formtools-2.2/.github/workflows/release.yml      1970-01-01 
01:00:00.000000000 +0100
+++ new/django-formtools-2.3/.github/workflows/release.yml      2021-04-19 
01:00:34.000000000 +0200
@@ -0,0 +1,40 @@
+name: Release
+
+on:
+  push:
+    tags:
+    - '*'
+
+jobs:
+  build:
+    if: github.repository == 'jazzband/django-formtools'
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+
+      - name: Set up Python
+        uses: actions/setup-python@v2
+        with:
+          python-version: 3.8
+
+      - name: Install dependencies
+        run: |
+          python -m pip install -U pip
+          python -m pip install -U setuptools twine wheel
+
+      - name: Build package
+        run: |
+          python setup.py --version
+          python setup.py sdist --format=gztar bdist_wheel
+          twine check dist/*
+
+      - name: Upload packages to Jazzband
+        if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
+        uses: pypa/gh-action-pypi-publish@master
+        with:
+          user: jazzband
+          password: ${{ secrets.JAZZBAND_RELEASE_KEY }}
+          repository_url: https://jazzband.co/projects/django-formtools/upload
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/.github/workflows/test.yml 
new/django-formtools-2.3/.github/workflows/test.yml
--- old/django-formtools-2.2/.github/workflows/test.yml 1970-01-01 
01:00:00.000000000 +0100
+++ new/django-formtools-2.3/.github/workflows/test.yml 2021-04-19 
01:00:34.000000000 +0200
@@ -0,0 +1,48 @@
+name: Test
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      max-parallel: 5
+      matrix:
+        python-version: ['3.6', '3.7', '3.8', '3.9']
+
+    steps:
+    - uses: actions/checkout@v2
+
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ matrix.python-version }}
+
+    - name: Get pip cache dir
+      id: pip-cache
+      run: |
+        echo "::set-output name=dir::$(pip cache dir)"
+
+    - name: Cache
+      uses: actions/cache@v2
+      with:
+        path: ${{ steps.pip-cache.outputs.dir }}
+        key:
+          ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.py') }}-${{ 
hashFiles('**/tox.ini') }}
+        restore-keys: |
+          ${{ matrix.python-version }}-v1-
+
+    - name: Install dependencies
+      run: |
+        python -m pip install --upgrade pip
+        python -m pip install --upgrade tox tox-gh-actions
+
+    - name: Tox tests
+      run: |
+        tox -v
+
+    - name: Upload coverage
+      uses: codecov/codecov-action@v1
+      with:
+        name: Python ${{ matrix.python-version }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/.gitignore 
new/django-formtools-2.3/.gitignore
--- old/django-formtools-2.2/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/django-formtools-2.3/.gitignore 2021-04-19 01:00:34.000000000 +0200
@@ -0,0 +1,11 @@
+*.pyc
+.*.swp
+MANIFEST
+build
+dist
+*.egg-info
+docs/_build
+.tox/
+*.egg/
+.coverage
+coverage.xml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/.tx/config 
new/django-formtools-2.3/.tx/config
--- old/django-formtools-2.2/.tx/config 1970-01-01 01:00:00.000000000 +0100
+++ new/django-formtools-2.3/.tx/config 2021-04-19 01:00:34.000000000 +0200
@@ -0,0 +1,8 @@
+[main]
+host = https://www.transifex.com
+lang_map = sr@latin:sr_Latn, zh_CN:zh_Hans, zh_TW:zh_Hant
+
+[django-formtools.main]
+file_filter = formtools/locale/<lang>/LC_MESSAGES/django.po
+source_file = formtools/locale/en/LC_MESSAGES/django.po
+source_lang = en
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/MANIFEST.in 
new/django-formtools-2.3/MANIFEST.in
--- old/django-formtools-2.2/MANIFEST.in        2015-06-16 12:54:37.000000000 
+0200
+++ new/django-formtools-2.3/MANIFEST.in        2021-04-19 01:00:34.000000000 
+0200
@@ -5,5 +5,6 @@
 include tox.ini
 include .coveragerc
 recursive-include formtools/locale *.po *.mo
+recursive-include formtools/templates *.html
 recursive-include docs *
 recursive-include tests *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/Makefile 
new/django-formtools-2.3/Makefile
--- old/django-formtools-2.2/Makefile   1970-01-01 01:00:00.000000000 +0100
+++ new/django-formtools-2.3/Makefile   2021-04-19 01:00:34.000000000 +0200
@@ -0,0 +1,29 @@
+export DJANGO_SETTINGS_MODULE = tests.settings
+export PYTHONPATH := $(shell pwd)
+
+clean:
+       git clean -Xfd
+
+maketranslations:
+       cd formtools; django-admin.py makemessages -a -v2
+
+pulltranslations:
+       tx pull -f -a --minimum-perc=1
+
+compiletranslations:
+       cd formtools; django-admin.py compilemessages
+
+translations: pulltranslations maketranslations compiletranslations
+       @echo "Pulling, making and compiling translations"
+
+docs:
+       $(MAKE) -C docs clean html
+
+test:
+       @flake8
+       @isort --check-only --diff formtools tests
+       @ coverage run `which django-admin` test tests
+       @coverage report
+       @coverage xml
+
+.PHONY: clean docs test maketranslations pulltranslations compiletranslations
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/PKG-INFO 
new/django-formtools-2.3/PKG-INFO
--- old/django-formtools-2.2/PKG-INFO   2019-12-05 18:01:04.000000000 +0100
+++ new/django-formtools-2.3/PKG-INFO   2021-04-19 01:00:45.920318000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: django-formtools
-Version: 2.2
+Version: 2.3
 Summary: A set of high-level abstractions for Django forms
 Home-page: https://django-formtools.readthedocs.io/en/latest/
 Author: Django Software Foundation
@@ -22,13 +22,13 @@
             :alt: Supported Python versions
             :target: https://pypi.org/project/django-formtools/
         
-        .. image:: 
https://img.shields.io/travis/jazzband/django-formtools/master.svg
-            :alt: TravisCI Build Status
-            :target: https://travis-ci.org/jazzband/django-formtools
-        
-        .. image:: 
https://img.shields.io/coveralls/jazzband/django-formtools/master.svg
-            :alt: Coveralls Test Coverage
-            :target: 
https://coveralls.io/r/jazzband/django-formtools?branch=master
+        .. image:: 
https://github.com/jazzband/django-formtools/workflows/Test/badge.svg
+           :target: https://github.com/jazzband/django-formtools/actions
+           :alt: GitHub Actions
+        
+        .. image:: 
https://codecov.io/gh/jazzband/django-formtools/branch/master/graph/badge.svg
+           :target: https://codecov.io/gh/jazzband/django-formtools
+           :alt: Test Coverage
         
         Django's "formtools" is a set of high-level abstractions for Django 
forms.
         Currently for form previews and multi-step forms.
@@ -73,12 +73,12 @@
         
             $ tox -l
             ...
-            py35-django-AB
-            py35-django-master
+            py38-django-AB
+            py38-django-master
         
         You can run each environment with the ``-e`` option::
         
-            $ tox -e py35-django-AB  # runs the tests only on Python 3.5 and 
Django A.B.x
+            $ tox -e py38-django-AB  # runs the tests only on Python 3.5 and 
Django A.B.x
         
         Optionally you can also specify a country whose tests you want to run::
         
@@ -86,7 +86,7 @@
         
         And combine both options::
         
-            $ COUNTRY=us tox -e py35-django-AB
+            $ COUNTRY=us tox -e py38-django-AB
         
         __ https://tox.readthedocs.io/en/latest/install.html
         
@@ -94,18 +94,19 @@
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
 Classifier: Framework :: Django
-Classifier: Framework :: Django :: 1.11
-Classifier: Framework :: Django :: 2.0
-Classifier: Framework :: Django :: 2.1
 Classifier: Framework :: Django :: 2.2
-Classifier: Framework :: Django :: 3.0
+Classifier: Framework :: Django :: 3.1
+Classifier: Framework :: Django :: 3.2
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.6
+Description-Content-Type: text/x-rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/README.rst 
new/django-formtools-2.3/README.rst
--- old/django-formtools-2.2/README.rst 2019-12-05 17:16:53.000000000 +0100
+++ new/django-formtools-2.3/README.rst 2021-04-19 01:00:34.000000000 +0200
@@ -14,13 +14,13 @@
     :alt: Supported Python versions
     :target: https://pypi.org/project/django-formtools/
 
-.. image:: https://img.shields.io/travis/jazzband/django-formtools/master.svg
-    :alt: TravisCI Build Status
-    :target: https://travis-ci.org/jazzband/django-formtools
-
-.. image:: 
https://img.shields.io/coveralls/jazzband/django-formtools/master.svg
-    :alt: Coveralls Test Coverage
-    :target: https://coveralls.io/r/jazzband/django-formtools?branch=master
+.. image:: 
https://github.com/jazzband/django-formtools/workflows/Test/badge.svg
+   :target: https://github.com/jazzband/django-formtools/actions
+   :alt: GitHub Actions
+
+.. image:: 
https://codecov.io/gh/jazzband/django-formtools/branch/master/graph/badge.svg
+   :target: https://codecov.io/gh/jazzband/django-formtools
+   :alt: Test Coverage
 
 Django's "formtools" is a set of high-level abstractions for Django forms.
 Currently for form previews and multi-step forms.
@@ -65,12 +65,12 @@
 
     $ tox -l
     ...
-    py35-django-AB
-    py35-django-master
+    py38-django-AB
+    py38-django-master
 
 You can run each environment with the ``-e`` option::
 
-    $ tox -e py35-django-AB  # runs the tests only on Python 3.5 and Django 
A.B.x
+    $ tox -e py38-django-AB  # runs the tests only on Python 3.5 and Django 
A.B.x
 
 Optionally you can also specify a country whose tests you want to run::
 
@@ -78,6 +78,6 @@
 
 And combine both options::
 
-    $ COUNTRY=us tox -e py35-django-AB
+    $ COUNTRY=us tox -e py38-django-AB
 
 __ https://tox.readthedocs.io/en/latest/install.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-formtools-2.2/django_formtools.egg-info/PKG-INFO 
new/django-formtools-2.3/django_formtools.egg-info/PKG-INFO
--- old/django-formtools-2.2/django_formtools.egg-info/PKG-INFO 2019-12-05 
18:01:03.000000000 +0100
+++ new/django-formtools-2.3/django_formtools.egg-info/PKG-INFO 2021-04-19 
01:00:45.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: django-formtools
-Version: 2.2
+Version: 2.3
 Summary: A set of high-level abstractions for Django forms
 Home-page: https://django-formtools.readthedocs.io/en/latest/
 Author: Django Software Foundation
@@ -22,13 +22,13 @@
             :alt: Supported Python versions
             :target: https://pypi.org/project/django-formtools/
         
-        .. image:: 
https://img.shields.io/travis/jazzband/django-formtools/master.svg
-            :alt: TravisCI Build Status
-            :target: https://travis-ci.org/jazzband/django-formtools
-        
-        .. image:: 
https://img.shields.io/coveralls/jazzband/django-formtools/master.svg
-            :alt: Coveralls Test Coverage
-            :target: 
https://coveralls.io/r/jazzband/django-formtools?branch=master
+        .. image:: 
https://github.com/jazzband/django-formtools/workflows/Test/badge.svg
+           :target: https://github.com/jazzband/django-formtools/actions
+           :alt: GitHub Actions
+        
+        .. image:: 
https://codecov.io/gh/jazzband/django-formtools/branch/master/graph/badge.svg
+           :target: https://codecov.io/gh/jazzband/django-formtools
+           :alt: Test Coverage
         
         Django's "formtools" is a set of high-level abstractions for Django 
forms.
         Currently for form previews and multi-step forms.
@@ -73,12 +73,12 @@
         
             $ tox -l
             ...
-            py35-django-AB
-            py35-django-master
+            py38-django-AB
+            py38-django-master
         
         You can run each environment with the ``-e`` option::
         
-            $ tox -e py35-django-AB  # runs the tests only on Python 3.5 and 
Django A.B.x
+            $ tox -e py38-django-AB  # runs the tests only on Python 3.5 and 
Django A.B.x
         
         Optionally you can also specify a country whose tests you want to run::
         
@@ -86,7 +86,7 @@
         
         And combine both options::
         
-            $ COUNTRY=us tox -e py35-django-AB
+            $ COUNTRY=us tox -e py38-django-AB
         
         __ https://tox.readthedocs.io/en/latest/install.html
         
@@ -94,18 +94,19 @@
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
 Classifier: Framework :: Django
-Classifier: Framework :: Django :: 1.11
-Classifier: Framework :: Django :: 2.0
-Classifier: Framework :: Django :: 2.1
 Classifier: Framework :: Django :: 2.2
-Classifier: Framework :: Django :: 3.0
+Classifier: Framework :: Django :: 3.1
+Classifier: Framework :: Django :: 3.2
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.6
+Description-Content-Type: text/x-rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-formtools-2.2/django_formtools.egg-info/SOURCES.txt 
new/django-formtools-2.3/django_formtools.egg-info/SOURCES.txt
--- old/django-formtools-2.2/django_formtools.egg-info/SOURCES.txt      
2019-12-05 18:01:03.000000000 +0100
+++ new/django-formtools-2.3/django_formtools.egg-info/SOURCES.txt      
2021-04-19 01:00:45.000000000 +0200
@@ -1,12 +1,18 @@
 .coveragerc
+.editorconfig
+.gitignore
 AUTHORS.rst
 CONTRIBUTING.rst
 LICENSE
 MANIFEST.in
+Makefile
 README.rst
 setup.cfg
 setup.py
 tox.ini
+.github/workflows/release.yml
+.github/workflows/test.yml
+.tx/config
 django_formtools.egg-info/PKG-INFO
 django_formtools.egg-info/SOURCES.txt
 django_formtools.egg-info/dependency_links.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-formtools-2.2/django_formtools.egg-info/requires.txt 
new/django-formtools-2.3/django_formtools.egg-info/requires.txt
--- old/django-formtools-2.2/django_formtools.egg-info/requires.txt     
2019-12-05 18:01:03.000000000 +0100
+++ new/django-formtools-2.3/django_formtools.egg-info/requires.txt     
2021-04-19 01:00:45.000000000 +0200
@@ -1 +1 @@
-Django>=1.11
+Django>=2.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/docs/changelog.rst 
new/django-formtools-2.3/docs/changelog.rst
--- old/django-formtools-2.2/docs/changelog.rst 2019-12-05 17:58:37.000000000 
+0100
+++ new/django-formtools-2.3/docs/changelog.rst 2021-04-19 01:00:34.000000000 
+0200
@@ -3,6 +3,19 @@
 
 This page details the changes in the various ``django-formtools`` releases.
 
+2.3 (2021-04-18)
+----------------
+
+- Dropped testing for Django 1.11, 2.0 and 2.1.
+
+- Added support for Django 3.1 and Python 3.9.
+
+- Added support for Django 3.2.
+
+- Dropped support for Django 3.0.
+
+- Dropped support for Python 3.5.
+
 2.2 (2019-12-05)
 ----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/docs/preview.rst 
new/django-formtools-2.3/docs/preview.rst
--- old/django-formtools-2.2/docs/preview.rst   2016-05-28 18:02:17.000000000 
+0200
+++ new/django-formtools-2.3/docs/preview.rst   2021-04-19 01:00:34.000000000 
+0200
@@ -15,6 +15,9 @@
 To force a preview of a form submission, all you have to do is write a short
 Python class.
 
+.. note::
+    Form preview doesn't work with file uploads.
+
 Overview
 =========
 
@@ -84,7 +87,7 @@
 
    ...and add the following line to the appropriate model in your URLconf::
 
-       url(r'^post/$', SomeModelFormPreview(SomeModelForm)),
+       path('post/', SomeModelFormPreview(SomeModelForm)),
 
    where ``SomeModelForm`` is a Form or ModelForm class for the model.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/docs/wizard.rst 
new/django-formtools-2.3/docs/wizard.rst
--- old/django-formtools-2.2/docs/wizard.rst    2019-12-05 17:16:53.000000000 
+0100
+++ new/django-formtools-2.3/docs/wizard.rst    2021-04-19 01:00:34.000000000 
+0200
@@ -250,13 +250,13 @@
 wizard's ``as_view()`` method takes a list of your
 :class:`~django.forms.Form` classes as an argument during instantiation::
 
-    from django.conf.urls import url
+    from django.path import path
 
     from myapp.forms import ContactForm1, ContactForm2
     from myapp.views import ContactWizard
 
     urlpatterns = [
-        url(r'^contact/$', ContactWizard.as_view([ContactForm1, 
ContactForm2])),
+        path('contact/', ContactWizard.as_view([ContactForm1, ContactForm2])),
     ]
 
 You can also pass the form list as a class attribute named ``form_list``::
@@ -311,7 +311,7 @@
 The ``urls.py`` file would contain something like::
 
     urlpatterns = [
-        url(r'^checkout/$', OrderWizard.as_view(FORMS, condition_dict={'cc': 
pay_by_credit_card})),
+        path('checkout/', OrderWizard.as_view(FORMS, condition_dict={'cc': 
pay_by_credit_card})),
     ]
 
 The ``condition_dict`` can be passed as attribute for the ``as_view()``
@@ -681,7 +681,7 @@
 
 We need to add the ``ContactWizard`` to our ``urls.py`` file::
 
-    from django.conf.urls import url
+    from django.urls import path
 
     from myapp.forms import ContactForm1, ContactForm2
     from myapp.views import ContactWizard, show_message_form_condition
@@ -689,7 +689,7 @@
     contact_forms = [ContactForm1, ContactForm2]
 
     urlpatterns = [
-        url(r'^contact/$', ContactWizard.as_view(contact_forms,
+        path('contact/', ContactWizard.as_view(contact_forms,
             condition_dict={'1': show_message_form_condition}
         )),
     ]
@@ -734,7 +734,7 @@
 This is an example of a ``urls.py`` for a contact wizard with two steps, step 
1 named
 ``contactdata`` and step 2 named ``leavemessage``::
 
-    from django.conf.urls import url
+    from django.urls import path, re_path
 
     from myapp.forms import ContactForm1, ContactForm2
     from myapp.views import ContactWizard
@@ -748,8 +748,8 @@
         url_name='contact_step', done_step_name='finished')
 
     urlpatterns = [
-        url(r'^contact/(?P<step>.+)/$', contact_wizard, name='contact_step'),
-        url(r'^contact/$', contact_wizard, name='contact'),
+        re_path(r'^contact/(?P<step>.+)/$', contact_wizard, 
name='contact_step'),
+        path('contact/', contact_wizard, name='contact'),
     ]
 
 Advanced ``NamedUrlWizardView`` methods
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/formtools/__init__.py 
new/django-formtools-2.3/formtools/__init__.py
--- old/django-formtools-2.2/formtools/__init__.py      2019-12-05 
17:16:53.000000000 +0100
+++ new/django-formtools-2.3/formtools/__init__.py      2021-04-19 
01:00:34.000000000 +0200
@@ -1,3 +1,11 @@
-__version__ = '2.2'
+import django
+from pkg_resources import DistributionNotFound, get_distribution
 
-default_app_config = 'formtools.apps.FormToolsConfig'
+try:
+    __version__ = get_distribution("django-formtools").version
+except DistributionNotFound:
+    # package is not installed
+    __version__ = None
+
+if django.VERSION <= (3, 2):
+    default_app_config = 'formtools.apps.FormToolsConfig'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/formtools/wizard/views.py 
new/django-formtools-2.3/formtools/wizard/views.py
--- old/django-formtools-2.2/formtools/wizard/views.py  2019-12-05 
17:16:53.000000000 +0100
+++ new/django-formtools-2.3/formtools/wizard/views.py  2021-04-19 
01:00:34.000000000 +0200
@@ -355,7 +355,7 @@
         # render the done view and reset the wizard before returning the
         # response. This is needed to prevent from rendering done with the
         # same data twice.
-        done_response = self.done(final_forms.values(), form_dict=final_forms, 
**kwargs)
+        done_response = self.done(list(final_forms.values()), 
form_dict=final_forms, **kwargs)
         self.storage.reset()
         return done_response
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/setup.cfg 
new/django-formtools-2.3/setup.cfg
--- old/django-formtools-2.2/setup.cfg  2019-12-05 18:01:04.000000000 +0100
+++ new/django-formtools-2.3/setup.cfg  2021-04-19 01:00:45.920318000 +0200
@@ -8,14 +8,10 @@
 known_first_party = formtools
 line_length = 79
 multi_line_output = 5
-not_skip = __init__.py
 
 [metadata]
 license-file = LICENSE
 
-[wheel]
-universal = 1
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/setup.py 
new/django-formtools-2.3/setup.py
--- old/django-formtools-2.2/setup.py   2019-12-05 17:16:53.000000000 +0100
+++ new/django-formtools-2.3/setup.py   2021-04-19 01:00:34.000000000 +0200
@@ -1,144 +1,46 @@
-import codecs
 import os
-import re
-import sys
-from distutils.util import convert_path
-from fnmatch import fnmatchcase
-
 from setuptools import find_packages, setup
 
 
 def read(*parts):
     filename = os.path.join(os.path.dirname(__file__), *parts)
-    with codecs.open(filename, encoding='utf-8') as fp:
+    with open(filename, encoding="utf-8") as fp:
         return fp.read()
 
 
-def find_version(*file_paths):
-    version_file = read(*file_paths)
-    version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
-                              version_file, re.M)
-    if version_match:
-        return version_match.group(1)
-    raise RuntimeError("Unable to find version string.")
-
-
-# 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 = [(convert_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-formtools",
-    version=find_version("formtools", "__init__.py"),
-    url='https://django-formtools.readthedocs.io/en/latest/',
-    license='BSD',
+    use_scm_version={"version_scheme": "post-release", "local_scheme": 
"dirty-tag"},
+    setup_requires=["setuptools_scm"],
+    url="https://django-formtools.readthedocs.io/en/latest/";,
+    license="BSD",
     description="A set of high-level abstractions for Django forms",
-    long_description=read('README.rst'),
-    author='Django Software Foundation',
-    author_email='foundat...@djangoproject.com',
-    packages=find_packages(exclude=['tests', 'tests.*']),
-    package_data=find_package_data(),
-    install_requires=['Django>=1.11'],
+    long_description=read("README.rst"),
+    long_description_content_type="text/x-rst",
+    author="Django Software Foundation",
+    author_email="foundat...@djangoproject.com",
+    packages=find_packages(exclude=["tests", "tests.*"]),
+    include_package_data=True,
+    install_requires=["Django>=2.2"],
+    python_requires=">=3.6",
     classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'Environment :: Web Environment',
-        'Framework :: Django',
-        'Framework :: Django :: 1.11',
-        'Framework :: Django :: 2.0',
-        'Framework :: Django :: 2.1',
-        'Framework :: Django :: 2.2',
-        'Framework :: Django :: 3.0',
-        'Intended Audience :: Developers',
-        'License :: OSI Approved :: BSD License',
-        'Operating System :: OS Independent',
-        'Programming Language :: Python',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        'Programming Language :: Python :: 3.7',
-        'Topic :: Internet :: WWW/HTTP',
+        "Development Status :: 5 - Production/Stable",
+        "Environment :: Web Environment",
+        "Framework :: Django",
+        "Framework :: Django :: 2.2",
+        "Framework :: Django :: 3.1",
+        "Framework :: Django :: 3.2",
+        "Intended Audience :: Developers",
+        "License :: OSI Approved :: BSD License",
+        "Operating System :: OS Independent",
+        "Programming Language :: Python",
+        "Programming Language :: Python :: 3",
+        "Programming Language :: Python :: 3 :: Only",
+        "Programming Language :: Python :: 3.6",
+        "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
+        "Topic :: Internet :: WWW/HTTP",
     ],
     zip_safe=False,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/tests/requirements.txt 
new/django-formtools-2.3/tests/requirements.txt
--- old/django-formtools-2.2/tests/requirements.txt     2017-02-03 
15:22:49.000000000 +0100
+++ new/django-formtools-2.3/tests/requirements.txt     2021-04-19 
01:00:34.000000000 +0200
@@ -1,3 +1,3 @@
-coverage==3.7.1
+coverage==4.5.4
 flake8
 isort
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/tests/settings.py 
new/django-formtools-2.3/tests/settings.py
--- old/django-formtools-2.2/tests/settings.py  2019-12-05 17:16:53.000000000 
+0100
+++ new/django-formtools-2.3/tests/settings.py  2021-04-19 01:00:34.000000000 
+0200
@@ -38,3 +38,5 @@
 
 MEDIA_ROOT = 'media'
 STATIC_ROOT = 'static'
+
+DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/tests/urls.py 
new/django-formtools-2.3/tests/urls.py
--- old/django-formtools-2.2/tests/urls.py      2017-02-03 15:06:30.000000000 
+0100
+++ new/django-formtools-2.3/tests/urls.py      2021-04-19 01:00:34.000000000 
+0200
@@ -2,11 +2,11 @@
 This is a URLconf to be loaded by tests.py. Add any URLs needed for tests only.
 """
 
-from django.conf.urls import url
+from django.urls import path
 
 from .forms import TestForm
 from .tests import TestFormPreview
 
 urlpatterns = [
-    url(r'^preview/', TestFormPreview(TestForm)),
+    path('preview/', TestFormPreview(TestForm)),
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-formtools-2.2/tests/wizard/namedwizardtests/urls.py 
new/django-formtools-2.3/tests/wizard/namedwizardtests/urls.py
--- old/django-formtools-2.2/tests/wizard/namedwizardtests/urls.py      
2017-10-30 19:07:03.000000000 +0100
+++ new/django-formtools-2.3/tests/wizard/namedwizardtests/urls.py      
2021-04-19 01:00:34.000000000 +0200
@@ -1,4 +1,4 @@
-from django.conf.urls import url
+from django.urls import path, re_path
 
 from .forms import (
     CookieContactWizard, Page1, Page2, Page3, Page4, SessionContactWizard,
@@ -22,8 +22,8 @@
 
 
 urlpatterns = [
-    url(r'^nwiz_session/(?P<step>.+)/$', get_named_session_wizard(), 
name='nwiz_session'),
-    url(r'^nwiz_session/$', get_named_session_wizard(), 
name='nwiz_session_start'),
-    url(r'^nwiz_cookie/(?P<step>.+)/$', get_named_cookie_wizard(), 
name='nwiz_cookie'),
-    url(r'^nwiz_cookie/$', get_named_cookie_wizard(), 
name='nwiz_cookie_start'),
+    re_path(r'^nwiz_session/(?P<step>.+)/$', get_named_session_wizard(), 
name='nwiz_session'),
+    path('nwiz_session/', get_named_session_wizard(), 
name='nwiz_session_start'),
+    re_path(r'nwiz_cookie/(?P<step>.+)/$', get_named_cookie_wizard(), 
name='nwiz_cookie'),
+    path('nwiz_cookie/', get_named_cookie_wizard(), name='nwiz_cookie_start'),
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/tests/wizard/test_forms.py 
new/django-formtools-2.3/tests/wizard/test_forms.py
--- old/django-formtools-2.2/tests/wizard/test_forms.py 2019-12-05 
17:16:53.000000000 +0100
+++ new/django-formtools-2.3/tests/wizard/test_forms.py 2021-04-19 
01:00:34.000000000 +0200
@@ -85,6 +85,12 @@
     instance_dict = {'start': User()}
 
 
+class TestWizardWithTypeCheck(TestWizard):
+    def done(self, form_list, **kwargs):
+        assert type(form_list) is list, "`form_list` was {}, should be a 
list".format(type(form_list))
+        return http.HttpResponse("All good")
+
+
 class FormTests(TestCase):
     def test_form_init(self):
         testform = TestWizard.get_initkwargs([Step1, Step2])
@@ -237,6 +243,12 @@
         instance.render_done(None)
         self.assertEqual(instance.storage.current_step, 'start')
 
+    def test_form_list_type(self):
+        request = get_request({'test_wizard_with_type_check-current_step': 
'start', 'start-name': 'data1'})
+        testform = TestWizardWithTypeCheck.as_view([('start', Step1)])
+        response, instance = testform(request)
+        self.assertEqual(response.status_code, 200)
+
 
 class SessionFormTests(TestCase):
     def test_init(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/django-formtools-2.2/tests/wizard/wizardtests/urls.py 
new/django-formtools-2.3/tests/wizard/wizardtests/urls.py
--- old/django-formtools-2.2/tests/wizard/wizardtests/urls.py   2017-02-03 
15:06:30.000000000 +0100
+++ new/django-formtools-2.3/tests/wizard/wizardtests/urls.py   2021-04-19 
01:00:34.000000000 +0200
@@ -1,21 +1,21 @@
-from django.conf.urls import url
+from django.urls import path
 
 from .forms import (
     CookieContactWizard, Page1, Page2, Page3, Page4, SessionContactWizard,
 )
 
 urlpatterns = [
-    url(r'^wiz_session/$', SessionContactWizard.as_view(
+    path('wiz_session/', SessionContactWizard.as_view(
         [('form1', Page1),
          ('form2', Page2),
          ('form3', Page3),
          ('form4', Page4)])),
-    url(r'^wiz_cookie/$', CookieContactWizard.as_view(
+    path('wiz_cookie/', CookieContactWizard.as_view(
         [('form1', Page1),
          ('form2', Page2),
          ('form3', Page3),
          ('form4', Page4)])),
-    url(r'^wiz_other_template/$', CookieContactWizard.as_view(
+    path('wiz_other_template/', CookieContactWizard.as_view(
         [('form1', Page1),
          ('form2', Page2),
          ('form3', Page3),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/django-formtools-2.2/tox.ini 
new/django-formtools-2.3/tox.ini
--- old/django-formtools-2.2/tox.ini    2019-12-05 17:16:53.000000000 +0100
+++ new/django-formtools-2.3/tox.ini    2021-04-19 01:00:34.000000000 +0200
@@ -1,25 +1,28 @@
 [tox]
 args_are_paths = false
 envlist =
-    py34-django-{111,20}
-    {py35,py36,py37}-django-{111,20,21,22}
-    {py36,py37}-django-{30,master}
+    py{36,37,38,39}-django{22,31,32}
+    py{38,39}-djangomain
 
 [testenv]
-basepython =
-    py34: python3.4
-    py35: python3.5
-    py36: python3.6
-    py37: python3.7
 usedevelop = true
-whitelist_externals = make
+allowlist_externals = make
 commands = make test
 pip_pre = true
 deps =
-    django-111: Django>=1.11a1,<2.0
-    django-20: Django>=2.0a1,<2.1
-    django-21: Django>=2.1a1,<2.2
-    django-22: Django>=2.2a1,<3.0
-    django-30: Django>=3.0a1,<3.1
-    django-master: https://github.com/django/django/archive/master.tar.gz
+    django22: Django>=2.2,<3.0
+    django31: Django>=3.1,<3.2
+    django32: Django>=3.2,<4.0
+    djangomain: https://github.com/django/django/archive/main.tar.gz
     -r{toxinidir}/tests/requirements.txt
+ignore_outcome =
+    djmain: True
+ignore_errors =
+    djmain: True
+
+[gh-actions]
+python =
+    3.6: py36
+    3.7: py37
+    3.8: py38
+    3.9: py39

Reply via email to