Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-Flask-WTF for 
openSUSE:Factory checked in at 2023-06-30 19:59:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask-WTF (Old)
 and      /work/SRC/openSUSE:Factory/.python-Flask-WTF.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Flask-WTF"

Fri Jun 30 19:59:48 2023 rev:12 rq:1096052 version:1.1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Flask-WTF/python-Flask-WTF.changes        
2022-04-10 00:42:08.608954246 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-Flask-WTF.new.13546/python-Flask-WTF.changes 
    2023-06-30 20:00:07.626091291 +0200
@@ -1,0 +2,14 @@
+Fri Jun 30 05:16:29 UTC 2023 - Steve Kowalik <steven.kowa...@suse.com>
+
+- Update to 1.1.1:
+  * Fixed `validate` `extra_validators` parameter. :pr:`548`
+  * Drop support for Python 3.6.
+  * ``validate_on_submit`` takes a ``extra_validators`` parameters :pr:`479`
+  * Stop supporting Flask-Babelex :pr:`540`
+  * Support for python 3.11 :pr:`542`
+  * Remove unused call to `JSONEncoder` :pr:`536`
+- Add patch flask-2.3-support.patch:
+  * Support Flask 2.3 changes.
+- Switch to pyproject macros.
+
+-------------------------------------------------------------------

Old:
----
  Flask-WTF-1.0.1.tar.gz

New:
----
  Flask-WTF-1.1.1.tar.gz
  flask-2.3-support.patch

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

Other differences:
------------------
++++++ python-Flask-WTF.spec ++++++
--- /var/tmp/diff_new_pack.30P5nd/_old  2023-06-30 20:00:08.550096787 +0200
+++ /var/tmp/diff_new_pack.30P5nd/_new  2023-06-30 20:00:08.554096811 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Flask-WTF
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,19 +16,20 @@
 #
 
 
-%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%define skip_python2 1
 %bcond_without     test
 Name:           python-Flask-WTF
-Version:        1.0.1
+Version:        1.1.1
 Release:        0
 Summary:        WTForms support for Flask
 License:        BSD-3-Clause
-Group:          Development/Languages/Python
 URL:            https://github.com/lepture/flask-wtf
 Source:         
https://files.pythonhosted.org/packages/source/F/Flask-WTF/Flask-WTF-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM gh#wtforms/flask-wtf#565
+Patch0:         flask-2.3-support.patch
 BuildRequires:  %{python_module base >= 3.7}
+BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-Flask
@@ -38,7 +39,6 @@
 Recommends:     python-email_validator
 BuildArch:      noarch
 %if %{with test}
-BuildRequires:  %{python_module Flask-BabelEx}
 BuildRequires:  %{python_module Flask-Babel}
 BuildRequires:  %{python_module Flask}
 BuildRequires:  %{python_module WTForms}
@@ -52,13 +52,13 @@
 Adds WTForms support to your Flask application
 
 %prep
-%setup -q -n Flask-WTF-%{version}
+%autosetup -p1 -n Flask-WTF-%{version}
 
 %build
-%python_build
+%pyproject_wheel
 
 %install
-%python_install
+%pyproject_install
 %fdupes %{buildroot}%{_prefix}
 
 %if %{with test}
@@ -72,6 +72,6 @@
 %license LICENSE.rst
 %doc README.rst
 %{python_sitelib}/flask_wtf
-%{python_sitelib}/Flask_WTF-%{version}-py*.egg-info
+%{python_sitelib}/Flask_WTF-%{version}.dist-info
 
 %changelog

++++++ Flask-WTF-1.0.1.tar.gz -> Flask-WTF-1.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.editorconfig 
new/Flask-WTF-1.1.1/.editorconfig
--- old/Flask-WTF-1.0.1/.editorconfig   1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.editorconfig   2022-12-24 14:11:35.000000000 +0100
@@ -0,0 +1,13 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+trim_trailing_whitespace = true
+end_of_line = lf
+charset = utf-8
+max_line_length = 88
+
+[*.{yml,yaml,json,js,css,html}]
+indent_size = 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.github/ISSUE_TEMPLATE/bug-report.md 
new/Flask-WTF-1.1.1/.github/ISSUE_TEMPLATE/bug-report.md
--- old/Flask-WTF-1.0.1/.github/ISSUE_TEMPLATE/bug-report.md    1970-01-01 
01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.github/ISSUE_TEMPLATE/bug-report.md    2022-12-24 
14:11:35.000000000 +0100
@@ -0,0 +1,28 @@
+---
+name: Bug report
+about: Report a bug in Flask-WTF
+---
+
+<!--
+This issue tracker is a tool to address bugs in Flask-WTF itself. Please
+use our Discord or Stack Overflow for questions about your own code.
+
+Replace this comment with a clear outline of what the bug is.
+-->
+
+<!--
+Describe how to replicate the bug.
+
+Include a minimal reproducible example that demonstrates the bug.
+Include the full traceback if there was an exception.
+-->
+
+<!--
+Describe the expected behavior that should have happened but didn't.
+-->
+
+Environment:
+
+- Python version:
+- Flask-WTF version:
+- Flask version:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.github/ISSUE_TEMPLATE/config.yml 
new/Flask-WTF-1.1.1/.github/ISSUE_TEMPLATE/config.yml
--- old/Flask-WTF-1.0.1/.github/ISSUE_TEMPLATE/config.yml       1970-01-01 
01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.github/ISSUE_TEMPLATE/config.yml       2022-12-24 
14:11:35.000000000 +0100
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+  - name: Questions
+    url: https://stackoverflow.com/questions/tagged/flask-wtforms?tab=Frequent
+    about: Search for and ask questions about your code on Stack Overflow.
+  - name: Questions and discussions
+    url: https://discord.gg/pallets
+    about: Discuss questions about your code on our Discord chat.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-WTF-1.0.1/.github/ISSUE_TEMPLATE/feature-request.md 
new/Flask-WTF-1.1.1/.github/ISSUE_TEMPLATE/feature-request.md
--- old/Flask-WTF-1.0.1/.github/ISSUE_TEMPLATE/feature-request.md       
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.github/ISSUE_TEMPLATE/feature-request.md       
2022-12-24 14:11:35.000000000 +0100
@@ -0,0 +1,15 @@
+---
+name: Feature request
+about: Suggest a new feature for Flask-WTF
+---
+
+<!--
+Replace this comment with a description of what the feature should do.
+Include details such as links to relevant specs or previous discussions.
+-->
+
+<!--
+Replace this comment with an example of the problem which this feature
+would resolve. Is this problem solvable without changes to Flask-WTF,
+such as by subclassing or using existing utilities?
+-->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.github/dependabot.yml 
new/Flask-WTF-1.1.1/.github/dependabot.yml
--- old/Flask-WTF-1.0.1/.github/dependabot.yml  1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/.github/dependabot.yml  2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1,9 @@
+version: 2
+updates:
+- package-ecosystem: "github-actions"
+  directory: "/"
+  schedule:
+    interval: "monthly"
+    day: "monday"
+    time: "16:00"
+    timezone: "UTC"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.github/pull_request_template.md 
new/Flask-WTF-1.1.1/.github/pull_request_template.md
--- old/Flask-WTF-1.0.1/.github/pull_request_template.md        1970-01-01 
01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.github/pull_request_template.md        2022-12-24 
14:11:35.000000000 +0100
@@ -0,0 +1,28 @@
+<!--
+If you have not contributed to the project before, open a ticket
+describing the issue or feature the PR will address to allow discussion
+first.
+
+Replace this comment with a description of the change. Describe how it
+addresses the linked ticket.
+-->
+
+<!--
+Link to relevant issues or previous PRs, one per line. Use "fixes" to
+automatically close an issue.
+-->
+
+- fixes #<issue number>
+
+<!--
+Ensure each step for contributing is complete by adding an "x" to each
+box below.
+
+If only docs were changed, these aren't relevant and can be removed.
+-->
+
+Checklist:
+
+- [ ] Add tests that demonstrate the correct behavior of the change. Tests 
should fail without the change.
+- [ ] Add or update relevant docs, in the docs folder and in code.
+- [ ] Add an entry in `docs/changes.rst` summarizing the change and linking to 
the issue. Add `.. versionchanged::` entries in any relevant code docs.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.github/workflows/lock.yaml 
new/Flask-WTF-1.1.1/.github/workflows/lock.yaml
--- old/Flask-WTF-1.0.1/.github/workflows/lock.yaml     1970-01-01 
01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.github/workflows/lock.yaml     2023-01-13 
14:39:58.000000000 +0100
@@ -0,0 +1,15 @@
+name: 'Lock threads'
+
+on:
+  schedule:
+    - cron: '0 0 * * *'
+
+jobs:
+  lock:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: dessant/lock-threads@v4
+        with:
+          github-token: ${{ github.token }}
+          issue-inactive-days: 14
+          pr-inactive-days: 14
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.github/workflows/tests.yaml 
new/Flask-WTF-1.1.1/.github/workflows/tests.yaml
--- old/Flask-WTF-1.0.1/.github/workflows/tests.yaml    1970-01-01 
01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.github/workflows/tests.yaml    2023-01-13 
14:39:58.000000000 +0100
@@ -0,0 +1,41 @@
+name: Tests
+on:
+  push:
+    branches:
+      - main
+      - '*.x'
+  pull_request:
+    branches:
+      - main
+      - '*.x'
+    paths-ignore:
+      - 'docs/**'
+      - '*.rst'
+jobs:
+  tests:
+    name: ${{ matrix.name }}
+    runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - {name: '3.11', python: '3.11', tox: 'py311,py-no-babel'}
+          - {name: '3.10', python: '3.10', tox: py310}
+          - {name: '3.9', python: '3.9', tox: py39}
+          - {name: '3.8', python: '3.8', tox: py38}
+          - {name: '3.7', python: '3.7', tox: py37}
+          - {name: 'PyPy', python: 'pypy-3.8', tox: pypy38}
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python }}
+          cache: 'pip'
+          cache-dependency-path: 'requirements/*.txt'
+      - name: update pip
+        run: |
+          pip install -U wheel
+          pip install -U setuptools
+          python -m pip install -U pip
+      - run: pip install tox
+      - run: tox -e ${{ matrix.tox }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.gitignore 
new/Flask-WTF-1.1.1/.gitignore
--- old/Flask-WTF-1.0.1/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-WTF-1.1.1/.gitignore      2022-12-24 14:11:35.000000000 +0100
@@ -0,0 +1,14 @@
+/.idea/
+/.vscode/
+/env/
+/venv/
+/.venv/
+__pycache__/
+*.pyc
+*.egg-info
+/build/
+/dist/
+/.tox/
+/.pytest_cache/
+/.mypy_cache/
+/docs/_build/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.pre-commit-config.yaml 
new/Flask-WTF-1.1.1/.pre-commit-config.yaml
--- old/Flask-WTF-1.0.1/.pre-commit-config.yaml 1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/.pre-commit-config.yaml 2023-01-13 14:57:43.000000000 
+0100
@@ -0,0 +1,35 @@
+ci:
+  autoupdate_schedule: monthly
+repos:
+  - repo: https://github.com/asottile/pyupgrade
+    rev: v3.3.1
+    hooks:
+      - id: pyupgrade
+        args: ["--py37-plus"]
+  - repo: https://github.com/asottile/reorder_python_imports
+    rev: v3.9.0
+    hooks:
+      - id: reorder-python-imports
+        args: ["--application-directories", "src"]
+        additional_dependencies: ["setuptools>60.9"]
+  - repo: https://github.com/psf/black
+    rev: 22.12.0
+    hooks:
+      - id: black
+  - repo: https://github.com/PyCQA/flake8
+    rev: 6.0.0
+    hooks:
+      - id: flake8
+        additional_dependencies:
+          - flake8-bugbear
+          - flake8-implicit-str-concat
+  - repo: https://github.com/peterdemin/pip-compile-multi
+    rev: v2.6.1
+    hooks:
+      - id: pip-compile-multi-verify
+  - repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: v4.4.0
+    hooks:
+      - id: fix-byte-order-marker
+      - id: trailing-whitespace
+      - id: end-of-file-fixer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/.readthedocs.yaml 
new/Flask-WTF-1.1.1/.readthedocs.yaml
--- old/Flask-WTF-1.0.1/.readthedocs.yaml       1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/.readthedocs.yaml       2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1,9 @@
+version: 2
+python:
+  install:
+    - requirements: requirements/docs.txt
+    - method: pip
+      path: .
+sphinx:
+  builder: dirhtml
+  fail_on_warning: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/CONTRIBUTING.rst 
new/Flask-WTF-1.1.1/CONTRIBUTING.rst
--- old/Flask-WTF-1.0.1/CONTRIBUTING.rst        1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/CONTRIBUTING.rst        2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1,222 @@
+How to contribute to Flask-WTF
+==============================
+
+Thank you for considering contributing to Flask-WTF!
+
+
+Support questions
+-----------------
+
+Please don't use the issue tracker for this. The issue tracker is a
+tool to address bugs and feature requests in Flask-WTF itself. Use one of
+the following resources for questions about using Flask-WTF or issues
+with your own code:
+
+-   The ``#get-help`` channel on our Discord chat:
+    https://discord.gg/pallets
+-   The mailing list fl...@python.org for long term discussion or larger
+    issues.
+-   Ask on `Stack Overflow`_. Search with Google first using:
+    ``site:stackoverflow.com flask-wtf {search term, exception message, etc.}``
+
+.. _Stack Overflow: 
https://stackoverflow.com/questions/tagged/flask-wtf?tab=Frequent
+
+
+Reporting issues
+----------------
+
+Include the following information in your post:
+
+-   Describe what you expected to happen.
+-   If possible, include a `minimal reproducible example`_ to help us
+    identify the issue. This also helps check that the issue is not with
+    your own code.
+-   Describe what actually happened. Include the full traceback if there
+    was an exception.
+-   List your Python, Flask-WTF, and WTForms versions. If possible, check if 
this
+    issue is already fixed in the latest releases or the latest code in
+    the repository.
+
+.. _minimal reproducible example: 
https://stackoverflow.com/help/minimal-reproducible-example
+
+
+Submitting patches
+------------------
+
+If there is not an open issue for what you want to submit, prefer
+opening one for discussion before working on a PR. You can work on any
+issue that doesn't have an open PR linked to it or a maintainer assigned
+to it. These show up in the sidebar. No need to ask if you can work on
+an issue that interests you.
+
+Include the following in your patch:
+
+-   Use `Black`_ to format your code. This and other tools will run
+    automatically if you install `pre-commit`_ using the instructions
+    below.
+-   Include tests if your patch adds or changes code. Make sure the test
+    fails without your patch.
+-   Update any relevant docs pages and docstrings. Docs pages and
+    docstrings should be wrapped at 72 characters.
+-   Add an entry in ``CHANGES.rst``. Use the same style as other
+    entries. Also include ``.. versionchanged::`` inline changelogs in
+    relevant docstrings.
+
+.. _Black: https://black.readthedocs.io
+.. _pre-commit: https://pre-commit.com
+
+
+First time setup
+~~~~~~~~~~~~~~~~
+
+-   Download and install the `latest version of git`_.
+-   Configure git with your `username`_ and `email`_.
+
+    .. code-block:: text
+
+        $ git config --global user.name 'your name'
+        $ git config --global user.email 'your email'
+
+-   Make sure you have a `GitHub account`_.
+-   Fork Flask-WTF to your GitHub account by clicking the `Fork`_ button.
+-   `Clone`_ the main repository locally.
+
+    .. code-block:: text
+
+        $ git clone https://github.com/wtforms/flask-wtf
+        $ cd flask-wtf
+
+-   Add your fork as a remote to push your work to. Replace
+    ``{username}`` with your username. This names the remote "fork", the
+    default WTForms remote is "origin".
+
+    .. code-block:: text
+
+        $ git remote add fork https://github.com/{username}/flask-wtf
+
+-   Create a virtualenv.
+
+    .. code-block:: text
+
+        $ python3 -m venv env
+        $ . env/bin/activate
+
+    On Windows, activating is different.
+
+    .. code-block:: text
+
+        > env\Scripts\activate
+
+-   Upgrade pip and setuptools.
+
+    .. code-block:: text
+
+        $ python -m pip install --upgrade pip setuptools
+
+-   Install the development dependencies, then install Flask-WTF in
+    editable mode.
+
+    .. code-block:: text
+
+        $ pip install -r requirements/dev.txt && pip install -e .
+
+-   Install the pre-commit hooks.
+
+    .. code-block:: text
+
+        $ pre-commit install
+
+.. _latest version of git: https://git-scm.com/downloads
+.. _username: 
https://docs.github.com/en/github/using-git/setting-your-username-in-git
+.. _email: 
https://docs.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address
+.. _GitHub account: https://github.com/join
+.. _Fork: https://github.com/wtforms/flask-wtf/fork
+.. _Clone: 
https://docs.github.com/en/github/getting-started-with-github/fork-a-repo#step-2-create-a-local-clone-of-your-fork
+
+
+Start coding
+~~~~~~~~~~~~
+
+-   Create a branch to identify the issue you would like to work on. If
+    you're submitting a bug or documentation fix, branch off of the
+    latest ".x" branch.
+
+    .. code-block:: text
+
+        $ git fetch origin
+        $ git checkout -b your-branch-name origin/1.0.x
+
+    If you're submitting a feature addition or change, branch off of the
+    "main" branch.
+
+    .. code-block:: text
+
+        $ git fetch origin
+        $ git checkout -b your-branch-name origin/main
+
+-   Using your favorite editor, make your changes,
+    `committing as you go`_.
+-   Include tests that cover any code changes you make. Make sure the
+    test fails without your patch. Run the tests as described below.
+-   Push your commits to your fork on GitHub and
+    `create a pull request`_. Link to the issue being addressed with
+    ``fixes #123`` in the pull request.
+
+    .. code-block:: text
+
+        $ git push --set-upstream fork your-branch-name
+
+.. _committing as you go: 
https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html#commit-your-changes
+.. _create a pull request: 
https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request
+
+
+Running the tests
+~~~~~~~~~~~~~~~~~
+
+Run the basic test suite with pytest.
+
+.. code-block:: text
+
+    $ pytest
+
+This runs the tests for the current environment, which is usually
+sufficient. CI will run the full suite when you submit your pull
+request. You can run the full test suite with tox if you don't want to
+wait.
+
+.. code-block:: text
+
+    $ tox
+
+
+Running test coverage
+~~~~~~~~~~~~~~~~~~~~~
+
+Generating a report of lines that do not have test coverage can indicate
+where to start contributing. Run ``pytest`` using ``coverage`` and
+generate a report.
+
+.. code-block:: text
+
+    $ pip install coverage
+    $ coverage run -m pytest
+    $ coverage html
+
+Open ``htmlcov/index.html`` in your browser to explore the report.
+
+Read more about `coverage <https://coverage.readthedocs.io>`__.
+
+
+Building the docs
+~~~~~~~~~~~~~~~~~
+
+Build the docs in the ``docs`` directory using Sphinx.
+
+.. code-block:: text
+
+    $ cd docs
+    $ make html
+
+Open ``_build/html/index.html`` in your browser to view the docs.
+
+Read more about `Sphinx <https://www.sphinx-doc.org/en/stable/>`__.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/MANIFEST.in 
new/Flask-WTF-1.1.1/MANIFEST.in
--- old/Flask-WTF-1.0.1/MANIFEST.in     2022-03-31 17:21:42.000000000 +0200
+++ new/Flask-WTF-1.1.1/MANIFEST.in     2022-12-24 14:11:35.000000000 +0100
@@ -1,5 +1,6 @@
 include tox.ini
 include requirements/*.txt
+include CONTRIBUTING.rst
 graft docs
 prune docs/_build
 graft examples
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/PKG-INFO new/Flask-WTF-1.1.1/PKG-INFO
--- old/Flask-WTF-1.0.1/PKG-INFO        2022-03-31 20:08:15.430014400 +0200
+++ new/Flask-WTF-1.1.1/PKG-INFO        2023-01-17 20:25:53.987326100 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: Flask-WTF
-Version: 1.0.1
+Version: 1.1.1
 Summary: Form rendering, validation, and CSRF protection for Flask with 
WTForms.
 Home-page: https://github.com/wtforms/flask-wtf/
 Author: Dan Jacob
@@ -13,7 +13,6 @@
 Project-URL: Source Code, https://github.com/wtforms/flask-wtf/
 Project-URL: Issue Tracker, https://github.com/wtforms/flask-wtf/issues/
 Project-URL: Chat, https://discord.gg/pallets
-Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
 Classifier: Framework :: Flask
@@ -25,7 +24,7 @@
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
 Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
 Provides-Extra: email
 License-File: LICENSE.rst
@@ -45,5 +44,3 @@
 -   Source Code: https://github.com/wtforms/flask-wtf/
 -   Issue Tracker: https://github.com/wtforms/flask-wtf/issues/
 -   Chat: https://discord.gg/pallets
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/docs/changes.rst 
new/Flask-WTF-1.1.1/docs/changes.rst
--- old/Flask-WTF-1.0.1/docs/changes.rst        2022-03-31 20:07:01.000000000 
+0200
+++ new/Flask-WTF-1.1.1/docs/changes.rst        2023-01-17 20:23:08.000000000 
+0100
@@ -1,6 +1,24 @@
 Changes
 =======
 
+Version 1.1.1
+-------------
+
+Released 2023-01-17
+
+-   Fixed `validate` `extra_validators` parameter. :pr:`548`
+
+Version 1.1.0
+-------------
+
+Released 2023-01-15
+
+-   Drop support for Python 3.6.
+-   ``validate_on_submit`` takes a ``extra_validators`` parameters :pr:`479`
+-   Stop supporting Flask-Babelex :pr:`540`
+-   Support for python 3.11 :pr:`542`
+-   Remove unused call to `JSONEncoder` :pr:`536`
+
 Version 1.0.1
 -------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/examples/babel/app.py 
new/Flask-WTF-1.1.1/examples/babel/app.py
--- old/Flask-WTF-1.0.1/examples/babel/app.py   2021-05-25 23:40:56.000000000 
+0200
+++ new/Flask-WTF-1.1.1/examples/babel/app.py   2023-01-17 20:06:49.000000000 
+0100
@@ -3,28 +3,21 @@
 from flask import request
 from flask_babel import Babel
 from flask_babel import lazy_gettext as _
-from wtforms import TextField
+from wtforms import StringField
 from wtforms.validators import DataRequired
 
 from flask_wtf import FlaskForm
 
 
 class BabelForm(FlaskForm):
-    name = TextField(_("Name"), validators=[DataRequired()])
+    name = StringField(_("Name"), validators=[DataRequired()])
 
 
 DEBUG = True
 SECRET_KEY = "secret"
 WTF_I18N_ENABLED = True
 
-app = Flask(__name__)
-app.config.from_object(__name__)
-
-# config babel
-babel = Babel(app)
-
 
-@babel.localeselector
 def get_locale():
     """how to get the locale is defined by you.
 
@@ -39,6 +32,13 @@
     return code
 
 
+app = Flask(__name__)
+app.config.from_object(__name__)
+
+# config babel
+babel = Babel(app, locale_selector=get_locale)
+
+
 @app.route("/", methods=("GET", "POST"))
 def index():
     form = BabelForm()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/dev.in 
new/Flask-WTF-1.1.1/requirements/dev.in
--- old/Flask-WTF-1.0.1/requirements/dev.in     1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/requirements/dev.in     2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1,5 @@
+-r docs.in
+-r tests.in
+pip-compile-multi
+pre-commit
+tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/dev.txt 
new/Flask-WTF-1.1.1/requirements/dev.txt
--- old/Flask-WTF-1.0.1/requirements/dev.txt    2022-03-31 19:59:02.000000000 
+0200
+++ new/Flask-WTF-1.1.1/requirements/dev.txt    2023-01-13 14:39:58.000000000 
+0100
@@ -5,51 +5,129 @@
 #
 #    pip-compile-multi
 #
--r docs.txt
--r tests.txt
+alabaster==0.7.12
+    # via sphinx
+attrs==21.4.0
+    # via pytest
+babel==2.9.1
+    # via sphinx
+certifi==2022.12.7
+    # via requests
 cfgv==3.3.1
     # via pre-commit
+charset-normalizer==2.0.12
+    # via requests
 click==8.1.1
     # via
     #   pip-compile-multi
     #   pip-tools
 distlib==0.3.4
     # via virtualenv
+docutils==0.17.1
+    # via sphinx
 filelock==3.6.0
     # via
     #   tox
     #   virtualenv
 identify==2.4.12
     # via pre-commit
+idna==3.3
+    # via requests
+imagesize==1.3.0
+    # via sphinx
+iniconfig==1.1.1
+    # via pytest
+jinja2==3.1.1
+    # via sphinx
+markupsafe==2.1.1
+    # via jinja2
 nodeenv==1.6.0
     # via pre-commit
+packaging==21.3
+    # via
+    #   pallets-sphinx-themes
+    #   pytest
+    #   sphinx
+    #   tox
+pallets-sphinx-themes==2.0.2
+    # via -r docs.in
 pep517==0.12.0
     # via pip-tools
 pip-compile-multi==2.4.4
-    # via -r requirements/dev.in
+    # via -r dev.in
 pip-tools==6.5.1
     # via pip-compile-multi
 platformdirs==2.5.1
     # via virtualenv
+pluggy==1.0.0
+    # via
+    #   pytest
+    #   tox
 pre-commit==2.17.0
-    # via -r requirements/dev.in
+    # via -r dev.in
+py==1.11.0
+    # via
+    #   pytest
+    #   tox
+pygments==2.11.2
+    # via sphinx
+pyparsing==3.0.7
+    # via packaging
+pytest==7.1.1
+    # via -r tests.in
+pytz==2022.1
+    # via babel
 pyyaml==6.0
     # via pre-commit
+requests==2.27.1
+    # via sphinx
 six==1.16.0
     # via
     #   tox
     #   virtualenv
+snowballstemmer==2.2.0
+    # via sphinx
+sphinx==4.5.0
+    # via
+    #   -r docs.in
+    #   pallets-sphinx-themes
+    #   sphinx-issues
+    #   sphinxcontrib-log-cabinet
+sphinx-issues==3.0.1
+    # via -r docs.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-log-cabinet==1.0.1
+    # via -r docs.in
+sphinxcontrib-qthelp==1.0.3
+    # via sphinx
+sphinxcontrib-serializinghtml==1.1.5
+    # via sphinx
+toml==0.10.2
+    # via
+    #   pre-commit
+    #   tox
 tomli==2.0.1
-    # via pep517
+    # via
+    #   pep517
+    #   pytest
 toposort==1.7
     # via pip-compile-multi
 tox==3.24.5
-    # via -r requirements/dev.in
+    # via -r dev.in
+urllib3==1.26.9
+    # via requests
 virtualenv==20.14.0
     # via
     #   pre-commit
     #   tox
-wheel==0.37.1
+wheel==0.38.1
     # via pip-tools
 
 # The following packages are considered to be unsafe in a requirements file:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/docs.in 
new/Flask-WTF-1.1.1/requirements/docs.in
--- old/Flask-WTF-1.0.1/requirements/docs.in    1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/requirements/docs.in    2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1,4 @@
+Pallets-Sphinx-Themes
+Sphinx
+sphinx-issues
+sphinxcontrib-log-cabinet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/docs.txt 
new/Flask-WTF-1.1.1/requirements/docs.txt
--- old/Flask-WTF-1.0.1/requirements/docs.txt   2022-03-31 19:59:02.000000000 
+0200
+++ new/Flask-WTF-1.1.1/requirements/docs.txt   2023-01-13 14:39:58.000000000 
+0100
@@ -9,7 +9,7 @@
     # via sphinx
 babel==2.9.1
     # via sphinx
-certifi==2021.10.8
+certifi==2022.12.7
     # via requests
 charset-normalizer==2.0.12
     # via requests
@@ -28,7 +28,7 @@
     #   pallets-sphinx-themes
     #   sphinx
 pallets-sphinx-themes==2.0.2
-    # via -r requirements/docs.in
+    # via -r docs.in
 pygments==2.11.2
     # via sphinx
 pyparsing==3.0.7
@@ -41,12 +41,12 @@
     # via sphinx
 sphinx==4.5.0
     # via
-    #   -r requirements/docs.in
+    #   -r docs.in
     #   pallets-sphinx-themes
     #   sphinx-issues
     #   sphinxcontrib-log-cabinet
 sphinx-issues==3.0.1
-    # via -r requirements/docs.in
+    # via -r docs.in
 sphinxcontrib-applehelp==1.0.2
     # via sphinx
 sphinxcontrib-devhelp==1.0.2
@@ -56,7 +56,7 @@
 sphinxcontrib-jsmath==1.0.1
     # via sphinx
 sphinxcontrib-log-cabinet==1.0.1
-    # via -r requirements/docs.in
+    # via -r docs.in
 sphinxcontrib-qthelp==1.0.3
     # via sphinx
 sphinxcontrib-serializinghtml==1.1.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/style.in 
new/Flask-WTF-1.1.1/requirements/style.in
--- old/Flask-WTF-1.0.1/requirements/style.in   1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/requirements/style.in   2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1 @@
+pre-commit
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/tests.in 
new/Flask-WTF-1.1.1/requirements/tests.in
--- old/Flask-WTF-1.0.1/requirements/tests.in   1970-01-01 01:00:00.000000000 
+0100
+++ new/Flask-WTF-1.1.1/requirements/tests.in   2022-12-24 14:11:35.000000000 
+0100
@@ -0,0 +1 @@
+pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/requirements/tests.txt 
new/Flask-WTF-1.1.1/requirements/tests.txt
--- old/Flask-WTF-1.0.1/requirements/tests.txt  2022-03-31 19:59:02.000000000 
+0200
+++ new/Flask-WTF-1.1.1/requirements/tests.txt  2022-12-24 14:11:35.000000000 
+0100
@@ -1,4 +1,4 @@
-# SHA1:43b07f68ee4dcf187dce9de79fc8dd462f1c99d6
+# SHA1:0eaa389e1fdb3a1917c0f987514bd561be5718ee
 #
 # This file is autogenerated by pip-compile-multi
 # To update, run:
@@ -17,7 +17,7 @@
     # via pytest
 pyparsing==3.0.7
     # via packaging
-pytest==6.2.5
+pytest==7.1.1
     # via -r requirements/tests.in
-toml==0.10.2
+tomli==2.0.1
     # via pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/setup.cfg 
new/Flask-WTF-1.1.1/setup.cfg
--- old/Flask-WTF-1.0.1/setup.cfg       2022-03-31 20:08:15.430014400 +0200
+++ new/Flask-WTF-1.1.1/setup.cfg       2023-01-17 20:25:53.987326100 +0100
@@ -33,7 +33,7 @@
 packages = find:
 package_dir = = src
 include_package_data = true
-python_requires = >= 3.6
+python_requires = >= 3.7
 
 [options.packages.find]
 where = src
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/src/Flask_WTF.egg-info/PKG-INFO 
new/Flask-WTF-1.1.1/src/Flask_WTF.egg-info/PKG-INFO
--- old/Flask-WTF-1.0.1/src/Flask_WTF.egg-info/PKG-INFO 2022-03-31 
20:08:15.000000000 +0200
+++ new/Flask-WTF-1.1.1/src/Flask_WTF.egg-info/PKG-INFO 2023-01-17 
20:25:53.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: Flask-WTF
-Version: 1.0.1
+Version: 1.1.1
 Summary: Form rendering, validation, and CSRF protection for Flask with 
WTForms.
 Home-page: https://github.com/wtforms/flask-wtf/
 Author: Dan Jacob
@@ -13,7 +13,6 @@
 Project-URL: Source Code, https://github.com/wtforms/flask-wtf/
 Project-URL: Issue Tracker, https://github.com/wtforms/flask-wtf/issues/
 Project-URL: Chat, https://discord.gg/pallets
-Platform: UNKNOWN
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Web Environment
 Classifier: Framework :: Flask
@@ -25,7 +24,7 @@
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
 Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
 Provides-Extra: email
 License-File: LICENSE.rst
@@ -45,5 +44,3 @@
 -   Source Code: https://github.com/wtforms/flask-wtf/
 -   Issue Tracker: https://github.com/wtforms/flask-wtf/issues/
 -   Chat: https://discord.gg/pallets
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/src/Flask_WTF.egg-info/SOURCES.txt 
new/Flask-WTF-1.1.1/src/Flask_WTF.egg-info/SOURCES.txt
--- old/Flask-WTF-1.0.1/src/Flask_WTF.egg-info/SOURCES.txt      2022-03-31 
20:08:15.000000000 +0200
+++ new/Flask-WTF-1.1.1/src/Flask_WTF.egg-info/SOURCES.txt      2023-01-17 
20:25:53.000000000 +0100
@@ -1,9 +1,21 @@
+.editorconfig
+.gitignore
+.pre-commit-config.yaml
+.readthedocs.yaml
+CONTRIBUTING.rst
 LICENSE.rst
 MANIFEST.in
 README.rst
 setup.cfg
 setup.py
 tox.ini
+.github/dependabot.yml
+.github/pull_request_template.md
+.github/ISSUE_TEMPLATE/bug-report.md
+.github/ISSUE_TEMPLATE/config.yml
+.github/ISSUE_TEMPLATE/feature-request.md
+.github/workflows/lock.yaml
+.github/workflows/tests.yaml
 docs/Makefile
 docs/api.rst
 docs/changes.rst
@@ -25,9 +37,13 @@
 examples/recaptcha/templates/index.html
 examples/uploadr/app.py
 examples/uploadr/templates/index.html
+requirements/dev.in
 requirements/dev.txt
+requirements/docs.in
 requirements/docs.txt
+requirements/style.in
 requirements/style.txt
+requirements/tests.in
 requirements/tests.txt
 src/Flask_WTF.egg-info/PKG-INFO
 src/Flask_WTF.egg-info/SOURCES.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/src/flask_wtf/__init__.py 
new/Flask-WTF-1.1.1/src/flask_wtf/__init__.py
--- old/Flask-WTF-1.0.1/src/flask_wtf/__init__.py       2022-03-31 
20:07:01.000000000 +0200
+++ new/Flask-WTF-1.1.1/src/flask_wtf/__init__.py       2023-01-17 
20:22:32.000000000 +0100
@@ -5,4 +5,4 @@
 from .recaptcha import RecaptchaField
 from .recaptcha import RecaptchaWidget
 
-__version__ = "1.0.1"
+__version__ = "1.1.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/src/flask_wtf/form.py 
new/Flask-WTF-1.1.1/src/flask_wtf/form.py
--- old/Flask-WTF-1.0.1/src/flask_wtf/form.py   2022-03-31 17:32:10.000000000 
+0200
+++ new/Flask-WTF-1.1.1/src/flask_wtf/form.py   2023-01-17 19:52:18.000000000 
+0100
@@ -65,7 +65,7 @@
 
         def get_translations(self, form):
             if not current_app.config.get("WTF_I18N_ENABLED", True):
-                return super(FlaskForm.Meta, self).get_translations(form)
+                return super().get_translations(form)
 
             return translations
 
@@ -79,11 +79,11 @@
 
         return _is_submitted()
 
-    def validate_on_submit(self):
+    def validate_on_submit(self, extra_validators=None):
         """Call :meth:`validate` only if the form is submitted.
         This is a shortcut for ``form.is_submitted() and form.validate()``.
         """
-        return self.is_submitted() and self.validate()
+        return self.is_submitted() and 
self.validate(extra_validators=extra_validators)
 
     def hidden_tag(self, *fields):
         """Render the form's hidden fields in one call.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/src/flask_wtf/i18n.py 
new/Flask-WTF-1.1.1/src/flask_wtf/i18n.py
--- old/Flask-WTF-1.0.1/src/flask_wtf/i18n.py   2021-05-25 23:40:56.000000000 
+0200
+++ new/Flask-WTF-1.1.1/src/flask_wtf/i18n.py   2022-12-24 14:41:36.000000000 
+0100
@@ -1,13 +1,9 @@
 from babel import support
 from flask import current_app
 from flask import request
+from flask_babel import get_locale
 from wtforms.i18n import messages_path
 
-try:
-    from flask_babel import get_locale
-except ImportError:
-    from flask_babelex import get_locale
-
 __all__ = ("Translations", "translations")
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/src/flask_wtf/recaptcha/widgets.py 
new/Flask-WTF-1.1.1/src/flask_wtf/recaptcha/widgets.py
--- old/Flask-WTF-1.0.1/src/flask_wtf/recaptcha/widgets.py      2022-03-24 
18:09:20.000000000 +0100
+++ new/Flask-WTF-1.1.1/src/flask_wtf/recaptcha/widgets.py      2023-01-17 
20:21:33.000000000 +0100
@@ -1,10 +1,7 @@
 from flask import current_app
-from flask import json
 from flask import Markup
 from werkzeug.urls import url_encode
 
-JSONEncoder = json.JSONEncoder
-
 RECAPTCHA_SCRIPT_DEFAULT = "https://www.google.com/recaptcha/api.js";
 RECAPTCHA_DIV_CLASS_DEFAULT = "g-recaptcha"
 RECAPTCHA_TEMPLATE = """
@@ -28,7 +25,7 @@
             script += "?" + url_encode(params)
         attrs = current_app.config.get("RECAPTCHA_DATA_ATTRS", {})
         attrs["sitekey"] = public_key
-        snippet = " ".join(f'data-{k}="{attrs[k]}"' for k in attrs)
+        snippet = " ".join(f'data-{k}="{attrs[k]}"' for k in attrs)  # noqa: 
B028
         div_class = current_app.config.get("RECAPTCHA_DIV_CLASS")
         if not div_class:
             div_class = RECAPTCHA_DIV_CLASS_DEFAULT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/tests/test_form.py 
new/Flask-WTF-1.1.1/tests/test_form.py
--- old/Flask-WTF-1.0.1/tests/test_form.py      2022-03-24 18:09:20.000000000 
+0100
+++ new/Flask-WTF-1.1.1/tests/test_form.py      2022-12-24 14:36:45.000000000 
+0100
@@ -109,8 +109,6 @@
         assert not form.validate_on_submit()
         assert "This field is required." in form.name.errors
 
-    client.post("/default", data={"name": "  "})
-
     @app.route("/es", methods=["POST"])
     def es():
         app.config["WTF_I18N_ENABLED"] = False
@@ -128,4 +126,5 @@
         assert not form.validate_on_submit()
         assert "Este campo es obligatorio." in form.name.errors
 
+    client.post("/default", data={"name": "  "})
     client.post("/es", data={"name": "  "})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/tests/test_i18n.py 
new/Flask-WTF-1.1.1/tests/test_i18n.py
--- old/Flask-WTF-1.0.1/tests/test_i18n.py      2022-03-31 19:59:02.000000000 
+0200
+++ new/Flask-WTF-1.1.1/tests/test_i18n.py      2023-01-17 20:06:49.000000000 
+0100
@@ -6,9 +6,7 @@
 
 from flask_wtf import FlaskForm
 
-pytest.importorskip(
-    "flask_wtf.i18n", reason="Neither Flask-Babel nor Flask-BabelEx is 
installed."
-)
+pytest.importorskip("flask_wtf.i18n", reason="Flask-Babel is not installed.")
 
 
 class NameForm(FlaskForm):
@@ -32,17 +30,13 @@
     try:
         from flask_babel import Babel
     except ImportError:
-        try:
-            from flask_babelex import Babel
-        except ImportError:
-            pytest.skip("Flask-Babel or Flask-BabelEx must be installed.")
+        pytest.skip("Flask-Babel must be installed.")
 
-    babel = Babel(app)
-
-    @babel.localeselector
     def get_locale():
         return request.accept_languages.best_match(["en", "zh"], "en")
 
+    Babel(app, locale_selector=get_locale)
+
     @app.route("/", methods=["POST"])
     def index():
         form = NameForm()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-WTF-1.0.1/tox.ini new/Flask-WTF-1.1.1/tox.ini
--- old/Flask-WTF-1.0.1/tox.ini 2022-03-31 19:59:02.000000000 +0200
+++ new/Flask-WTF-1.1.1/tox.ini 2022-12-24 14:41:36.000000000 +0100
@@ -1,7 +1,7 @@
 [tox]
 envlist =
-    py3{11,10,9,8,7,6},pypy3{8,7}
-    py-{babelex,no-babel}
+    py3{11,10,9,8,7},pypy3{8,7}
+    py-{no-babel}
     style
     docs
 
@@ -12,12 +12,6 @@
     Flask-Uploads
 commands = pytest -v --tb=short --basetemp={envtmpdir} {posargs}
 
-[testenv:py-babelex]
-deps =
-    -r requirements/tests.txt
-    Flask-BabelEx
-commands = pytest -v --tb=short --basetemp={envtmpdir} {posargs}
-
 [testenv:py-no-babel]
 deps = -r requirements/tests.txt
 commands = pytest -v --tb=short --basetemp={envtmpdir} {posargs}

++++++ flask-2.3-support.patch ++++++
>From 603318bfb31958572ff250fa29fc4e4678d438c8 Mon Sep 17 00:00:00 2001
From: Matt Shaw <matthew-s...@users.noreply.github.com>
Date: Tue, 25 Apr 2023 22:07:52 +0100
Subject: [PATCH 1/2] fix #561

---
 src/flask_wtf/recaptcha/widgets.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: Flask-WTF-1.1.1/src/flask_wtf/recaptcha/widgets.py
===================================================================
--- Flask-WTF-1.1.1.orig/src/flask_wtf/recaptcha/widgets.py
+++ Flask-WTF-1.1.1/src/flask_wtf/recaptcha/widgets.py
@@ -1,6 +1,7 @@
+from urllib.parse import urlencode
+
 from flask import current_app
-from flask import Markup
-from werkzeug.urls import url_encode
+from markupsafe import Markup
 
 RECAPTCHA_SCRIPT_DEFAULT = "https://www.google.com/recaptcha/api.js";
 RECAPTCHA_DIV_CLASS_DEFAULT = "g-recaptcha"
@@ -22,7 +23,7 @@ class RecaptchaWidget:
         if not script:
             script = RECAPTCHA_SCRIPT_DEFAULT
         if params:
-            script += "?" + url_encode(params)
+            script += "?" + urlencode(params)
         attrs = current_app.config.get("RECAPTCHA_DATA_ATTRS", {})
         attrs["sitekey"] = public_key
         snippet = " ".join(f'data-{k}="{attrs[k]}"' for k in attrs)  # noqa: 
B028
Index: Flask-WTF-1.1.1/docs/changes.rst
===================================================================
--- Flask-WTF-1.1.1.orig/docs/changes.rst
+++ Flask-WTF-1.1.1/docs/changes.rst
@@ -1,6 +1,14 @@
 Changes
 =======
 
+Version 1.1.2
+-------------
+
+Unreleased
+
+-   Fixed Flask 2.3 deprecations of ``werkzeug.urls.url_encode`` and
+    ``flask.Markup`` `:pr:`565` :issue:`561`
+
 Version 1.1.1
 -------------
 
Index: Flask-WTF-1.1.1/src/flask_wtf/recaptcha/validators.py
===================================================================
--- Flask-WTF-1.1.1.orig/src/flask_wtf/recaptcha/validators.py
+++ Flask-WTF-1.1.1/src/flask_wtf/recaptcha/validators.py
@@ -1,9 +1,9 @@
 import json
 from urllib import request as http
+from urllib.parse import urlencode
 
 from flask import current_app
 from flask import request
-from werkzeug.urls import url_encode
 from wtforms import ValidationError
 
 RECAPTCHA_VERIFY_SERVER_DEFAULT = 
"https://www.google.com/recaptcha/api/siteverify";
@@ -54,7 +54,7 @@ class Recaptcha:
         if not verify_server:
             verify_server = RECAPTCHA_VERIFY_SERVER_DEFAULT
 
-        data = url_encode(
+        data = urlencode(
             {"secret": private_key, "remoteip": remote_addr, "response": 
response}
         )
 
Index: Flask-WTF-1.1.1/tests/test_recaptcha.py
===================================================================
--- Flask-WTF-1.1.1.orig/tests/test_recaptcha.py
+++ Flask-WTF-1.1.1/tests/test_recaptcha.py
@@ -80,7 +80,6 @@ def test_render_custom_args(app):
     app.config["RECAPTCHA_DATA_ATTRS"] = {"red": "blue"}
     f = RecaptchaForm()
     render = f.recaptcha()
-    # new versions of url_encode allow more characters
     assert "?key=(value)" in render or "?key=%28value%29" in render
     assert 'data-red="blue"' in render
 

Reply via email to