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