Hello community,

here is the log from the commit of package python-Flask for openSUSE:Factory 
checked in at 2020-04-09 23:14:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask (Old)
 and      /work/SRC/openSUSE:Factory/.python-Flask.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Flask"

Thu Apr  9 23:14:07 2020 rev:24 rq:791758 version:1.1.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Flask/python-Flask.changes        
2019-12-07 15:12:50.907817423 +0100
+++ /work/SRC/openSUSE:Factory/.python-Flask.new.3248/python-Flask.changes      
2020-04-09 23:14:09.298199416 +0200
@@ -1,0 +2,10 @@
+Fri Apr  3 17:31:16 UTC 2020 - Petr Cervinka <[email protected]>
+
+- Update to 1.1.2:
+  * Work around an issue when running the flask command with an external
+    debugger on Windows. :issue:`3297`
+  * The static route will not catch all URLs if the Flask static_folder
+    argument ends with a slash. :issue:`3452`
+- Remove python38-exception-test.patch
+
+-------------------------------------------------------------------

Old:
----
  Flask-1.1.1.tar.gz
  python38-exception-test.patch

New:
----
  Flask-1.1.2.tar.gz

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

Other differences:
------------------
++++++ python-Flask.spec ++++++
--- /var/tmp/diff_new_pack.umSDFd/_old  2020-04-09 23:14:10.042199846 +0200
+++ /var/tmp/diff_new_pack.umSDFd/_new  2020-04-09 23:14:10.042199846 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Flask
 #
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,14 +19,13 @@
 %define oldpython python
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-Flask
-Version:        1.1.1
+Version:        1.1.2
 Release:        0
 Summary:        A microframework based on Werkzeug, Jinja2 and good intentions
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
 URL:            http://github.com/mitsuhiko/flask/
 Source:         
https://files.pythonhosted.org/packages/source/F/Flask/Flask-%{version}.tar.gz
-Patch0:         python38-exception-test.patch
 BuildRequires:  %{python_module Jinja2 >= 2.4}
 BuildRequires:  %{python_module Werkzeug >= 0.15}
 BuildRequires:  %{python_module click >= 5.1}
@@ -64,7 +63,6 @@
 
 %prep
 %setup -q -n Flask-%{version}
-%autopatch -p1
 
 %build
 %python_build

++++++ Flask-1.1.1.tar.gz -> Flask-1.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/CHANGES.rst new/Flask-1.1.2/CHANGES.rst
--- old/Flask-1.1.1/CHANGES.rst 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/CHANGES.rst 2020-04-03 19:03:33.000000000 +0200
@@ -1,5 +1,16 @@
 .. currentmodule:: flask
 
+Version 1.1.2
+-------------
+
+Released 2020-04-03
+
+-   Work around an issue when running the ``flask`` command with an
+    external debugger on Windows. :issue:`3297`
+-   The static route will not catch all URLs if the ``Flask``
+    ``static_folder`` argument ends with a slash. :issue:`3452`
+
+
 Version 1.1.1
 -------------
 
@@ -328,6 +339,14 @@
     :pr:`2676`
 
 
+Version 0.12.5
+--------------
+
+Released 2020-02-10
+
+-   Pin Werkzeug to < 1.0.0. :issue:`3497`
+
+
 Version 0.12.4
 --------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/CONTRIBUTING.rst 
new/Flask-1.1.2/CONTRIBUTING.rst
--- old/Flask-1.1.1/CONTRIBUTING.rst    2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/CONTRIBUTING.rst    2020-04-03 16:25:59.000000000 +0200
@@ -79,7 +79,8 @@
 
         pip install -e ".[dev]"
 
-- Install the pre-commit hooks:
+- Install the `pre-commit framework`_.
+- Install the pre-commit hooks::
 
         pre-commit install --install-hooks
 
@@ -89,6 +90,7 @@
 .. _email: 
https://help.github.com/en/articles/setting-your-commit-email-address-in-git
 .. _Fork: https://github.com/pallets/flask/fork
 .. _Clone: 
https://help.github.com/en/articles/fork-a-repo#step-2-create-a-local-clone-of-your-fork
+.. _pre-commit framework: https://pre-commit.com/#install
 
 Start coding
 ~~~~~~~~~~~~
@@ -162,6 +164,7 @@
 Build the docs in the ``docs`` directory using Sphinx::
 
     cd docs
+    pip install -r requirements.txt
     make html
 
 Open ``_build/html/index.html`` in your browser to view the docs.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/MANIFEST.in new/Flask-1.1.2/MANIFEST.in
--- old/Flask-1.1.1/MANIFEST.in 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/MANIFEST.in 2020-04-03 19:10:16.000000000 +0200
@@ -6,3 +6,4 @@
 prune docs/_build
 graft examples
 graft tests
+global-exclude *.pyc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/PKG-INFO new/Flask-1.1.2/PKG-INFO
--- old/Flask-1.1.1/PKG-INFO    2019-07-08 19:59:28.000000000 +0200
+++ new/Flask-1.1.2/PKG-INFO    2020-04-03 19:10:45.406113000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: Flask
-Version: 1.1.1
+Version: 1.1.2
 Summary: A simple framework for building complex web applications.
 Home-page: https://palletsprojects.com/p/flask/
 Author: Armin Ronacher
@@ -106,6 +106,9 @@
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
 Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/Makefile 
new/Flask-1.1.2/docs/Makefile
--- old/Flask-1.1.1/docs/Makefile       2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/Makefile       2020-01-11 02:20:00.000000000 +0100
@@ -1,9 +1,10 @@
 # Minimal makefile for Sphinx documentation
 #
 
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
+# You can set these variables from the command line, and also
+# from the environment for the first two.
+SPHINXOPTS    ?=
+SPHINXBUILD   ?= sphinx-build
 SOURCEDIR     = .
 BUILDDIR      = _build
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/appcontext.rst 
new/Flask-1.1.2/docs/appcontext.rst
--- old/Flask-1.1.1/docs/appcontext.rst 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/appcontext.rst 2020-01-11 02:20:00.000000000 +0100
@@ -144,7 +144,7 @@
 code. You may store internal data on the context itself, but be sure to
 use a sufficiently unique name. The current context is accessed with
 :data:`_app_ctx_stack.top <_app_ctx_stack>`. For more information see
-:doc:`extensiondev`.
+:doc:`/extensiondev`.
 
 
 Events and Signals
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/becomingbig.rst 
new/Flask-1.1.2/docs/becomingbig.rst
--- old/Flask-1.1.1/docs/becomingbig.rst        2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/becomingbig.rst        2020-01-11 02:20:00.000000000 
+0100
@@ -21,13 +21,13 @@
 -------------
 
 The :ref:`api` docs are full of available overrides, hook points, and
-:ref:`signals`. You can provide custom classes for things like the request and
-response objects.  Dig deeper on the APIs you use, and look for the
-customizations which are available out of the box in a Flask release.  Look for
-ways in which your project can be refactored into a collection of utilities and
-Flask extensions.  Explore the many `extensions
-<http://flask.pocoo.org/extensions/>`_ in the community, and look for patterns 
to
-build your own extensions if you do not find the tools you need.
+:ref:`signals`. You can provide custom classes for things like the
+request and response objects. Dig deeper on the APIs you use, and look
+for the customizations which are available out of the box in a Flask
+release. Look for ways in which your project can be refactored into a
+collection of utilities and Flask extensions. Explore the many
+:doc:`/extensions` in the community, and look for patterns to build your
+own extensions if you do not find the tools you need.
 
 Subclass.
 ---------
@@ -97,6 +97,6 @@
 
 The Flask developers keep the framework accessible to users with codebases big
 and small. If you find an obstacle in your way, caused by Flask, don't hesitate
-to contact the developers on the mailing list or IRC channel.  The best way for
+to contact the developers on the mailing list or Discord server.  The best way 
for
 the Flask and Flask extension developers to improve the tools for larger
 applications is getting feedback from users.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/cli.rst new/Flask-1.1.2/docs/cli.rst
--- old/Flask-1.1.1/docs/cli.rst        2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/cli.rst        2020-04-03 16:25:59.000000000 +0200
@@ -491,10 +491,10 @@
 PyCharm Integration
 -------------------
 
-Prior to PyCharm 2018.1, the Flask CLI features weren't yet fully
-integrated into PyCharm. We have to do a few tweaks to get them working
-smoothly. These instructions should be similar for any other IDE you
-might want to use.
+PyCharm Professional provides a special Flask run configuration. For
+the Community Edition, we need to configure it to call the ``flask run``
+CLI command with the correct environment variables. These instructions
+should be similar for any other IDE you might want to use.
 
 In PyCharm, with your project open, click on *Run* from the menu bar and
 go to *Edit Configurations*. You'll be greeted by a screen similar to
@@ -503,7 +503,7 @@
 .. image:: _static/pycharm-runconfig.png
     :align: center
     :class: screenshot
-    :alt: screenshot of pycharm's run configuration settings
+    :alt: Screenshot of PyCharms's run configuration settings.
 
 There's quite a few options to change, but once we've done it for one
 command, we can easily copy the entire configuration and make a single
@@ -511,9 +511,9 @@
 may implement yourself.
 
 Click the + (*Add New Configuration*) button and select *Python*. Give
-the configuration a good descriptive name such as "Run Flask Server".
-For the ``flask run`` command, check "Single instance only" since you
-can't run the server more than once at the same time.
+the configuration a name such as "flask run". For the ``flask run``
+command, check "Single instance only" since you can't run the server
+more than once at the same time.
 
 Select *Module name* from the dropdown (**A**) then input ``flask``.
 
@@ -524,7 +524,8 @@
 You can skip this next step if you're using :ref:`dotenv`. We need to
 add an environment variable (**C**) to identify our application. Click
 on the browse button and add an entry with ``FLASK_APP`` on the left and
-the Python import or file on the right (``hello`` for example).
+the Python import or file on the right (``hello`` for example). Add an
+entry with ``FLASK_ENV`` and set it to ``development``.
 
 Next we need to set the working directory (**D**) to be the folder where
 our application resides.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/conf.py new/Flask-1.1.2/docs/conf.py
--- old/Flask-1.1.1/docs/conf.py        2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/conf.py        2020-04-03 16:25:59.000000000 +0200
@@ -1,3 +1,4 @@
+import packaging.version
 from pallets_sphinx_themes import get_version
 from pallets_sphinx_themes import ProjectLink
 
@@ -74,7 +75,7 @@
     else:
         words = None
 
-    if release.endswith("dev"):
+    if packaging.version.parse(release).is_devrelease:
         url = "{0}master/{1}".format(base_url, text)
     else:
         url = "{0}{1}/{2}".format(base_url, release, text)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/deploying/index.rst 
new/Flask-1.1.2/docs/deploying/index.rst
--- old/Flask-1.1.1/docs/deploying/index.rst    2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/deploying/index.rst    2020-04-03 16:25:59.000000000 
+0200
@@ -17,7 +17,7 @@
 --------------
 
 - `Deploying Flask on Heroku 
<https://devcenter.heroku.com/articles/getting-started-with-python>`_
-- `Deploying Flask on Google App Engine 
<https://cloud.google.com/appengine/docs/standard/python/getting-started/python-standard-env>`_
+- `Deploying Flask on Google App Engine 
<https://cloud.google.com/appengine/docs/standard/python3/runtime>`_
 - `Deploying Flask on AWS Elastic Beanstalk 
<https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html>`_
 - `Deploying on Azure (IIS) 
<https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python>`_
 - `Deploying on PythonAnywhere <https://help.pythonanywhere.com/pages/Flask/>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/errorhandling.rst 
new/Flask-1.1.2/docs/errorhandling.rst
--- old/Flask-1.1.1/docs/errorhandling.rst      2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/errorhandling.rst      2020-04-03 16:25:59.000000000 
+0200
@@ -210,7 +210,7 @@
 If there is an error handler registered for ``InternalServerError``,
 this will be invoked. As of Flask 1.1.0, this error handler will always
 be passed an instance of ``InternalServerError``, not the original
-unhandled error. The original error is available as ``e.original_error``.
+unhandled error. The original error is available as ``e.original_exception``.
 Until Werkzeug 1.0.0, this attribute will only exist during unhandled
 errors, use ``getattr`` to get access it for compatibility.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/extensiondev.rst 
new/Flask-1.1.2/docs/extensiondev.rst
--- old/Flask-1.1.1/docs/extensiondev.rst       2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/extensiondev.rst       2020-01-11 02:20:00.000000000 
+0100
@@ -1,19 +1,15 @@
-.. _extension-dev:
-
 Flask Extension Development
 ===========================
 
 Flask, being a microframework, often requires some repetitive steps to get
 a third party library working. Many such extensions are already available
-on `PyPI <https://pypi.org/search/?c=Framework+%3A%3A+Flask>`_.
+on `PyPI`_.
 
 If you want to create your own Flask extension for something that does not
 exist yet, this guide to extension development will help you get your
 extension running in no time and to feel like users would expect your
 extension to behave.
 
-.. _Flask Extension Registry: http://flask.pocoo.org/extensions/
-
 Anatomy of an Extension
 -----------------------
 
@@ -275,15 +271,14 @@
 Learn from Others
 -----------------
 
-This documentation only touches the bare minimum for extension
-development.  If you want to learn more, it's a very good idea to check
-out existing extensions on the `Flask Extension Registry`_.  If you feel
-lost there is still the `mailinglist`_ and the `IRC channel`_ to get some
-ideas for nice looking APIs.  Especially if you do something nobody before
-you did, it might be a very good idea to get some more input.  This not only
-generates useful feedback on what people might want from an extension, but
-also avoids having multiple developers working in isolation on pretty much the
-same problem.
+This documentation only touches the bare minimum for extension development.
+If you want to learn more, it's a very good idea to check out existing 
extensions
+on the `PyPI`_.  If you feel lost there is still the `mailinglist`_ and the
+`Discord server`_ to get some ideas for nice looking APIs.  Especially if you 
do
+something nobody before you did, it might be a very good idea to get some more
+input.  This not only generates useful feedback on what people might want from
+an extension, but also avoids having multiple developers working in isolation
+on pretty much the same problem.
 
 Remember: good API design is hard, so introduce your project on the
 mailing list, and let other developers give you a helping hand with
@@ -295,50 +290,46 @@
 Approved Extensions
 -------------------
 
-Flask also has the concept of approved extensions.  Approved extensions
-are tested as part of Flask itself to ensure extensions do not break on
-new releases.  These approved extensions are listed on the `Flask
-Extension Registry`_ and marked appropriately.  If you want your own
-extension to be approved you have to follow these guidelines:
+Flask previously had the concept of approved extensions. These came with
+some vetting of support and compatibility. While this list became too
+difficult to maintain over time, the guidelines are still relevant to
+all extensions maintained and developed today, as they help the Flask
+ecosystem remain consistent and compatible.
 
 0.  An approved Flask extension requires a maintainer. In the event an
-    extension author would like to move beyond the project, the project should
-    find a new maintainer including full source hosting transition and PyPI
-    access.  If no maintainer is available, give access to the Flask core team.
-1.  An approved Flask extension must provide exactly one package or module
-    named ``flask_extensionname``.
-2.  It must ship a testing suite that can either be invoked with ``make test``
-    or ``python setup.py test``.  For test suites invoked with ``make
-    test`` the extension has to ensure that all dependencies for the test
-    are installed automatically.  If tests are invoked with ``python setup.py
-    test``, test dependencies can be specified in the :file:`setup.py` file.
-    The test suite also has to be part of the distribution.
-3.  APIs of approved extensions will be checked for the following
-    characteristics:
-
-   -   an approved extension has to support multiple applications
-       running in the same Python process.
-   -   it must be possible to use the factory pattern for creating
-       applications.
-
-4.  The license must be BSD/MIT/WTFPL licensed.
-5.  The naming scheme for official extensions is *Flask-ExtensionName* or
-    *ExtensionName-Flask*.
-6.  Approved extensions must define all their dependencies in the
-    :file:`setup.py` file unless a dependency cannot be met because it is not
-    available on PyPI.
-7.  The documentation must use the ``flask`` theme from the
-    `Official Pallets Themes`_.
-8.  The setup.py description (and thus the PyPI description) has to
-    link to the documentation, website (if there is one) and there
-    must be a link to automatically install the development version
-    (``PackageName==dev``).
-9. The ``zip_safe`` flag in the setup script must be set to ``False``,
-   even if the extension would be safe for zipping.
-10. An extension currently has to support Python 3.4 and newer and 2.7.
-
+    extension author would like to move beyond the project, the project
+    should find a new maintainer and transfer access to the repository,
+    documentation, PyPI, and any other services. If no maintainer
+    is available, give access to the Pallets core team.
+1.  The naming scheme is *Flask-ExtensionName* or *ExtensionName-Flask*.
+    It must provide exactly one package or module named
+    ``flask_extension_name``.
+2.  The extension must be BSD or MIT licensed. It must be open source
+    and publicly available.
+3.  The extension's API must have the following characteristics:
+
+    -   It must support multiple applications running in the same Python
+        process. Use ``current_app`` instead of ``self.app``, store
+        configuration and state per application instance.
+    -   It must be possible to use the factory pattern for creating
+        applications. Use the ``ext.init_app()`` pattern.
+
+4.  From a clone of the repository, an extension with its dependencies
+    must be installable with ``pip install -e .``.
+5.  It must ship a testing suite that can be invoked with ``tox -e py``
+    or ``pytest``. If not using ``tox``, the test dependencies should be
+    specified in a ``requirements.txt`` file. The tests must be part of
+    the sdist distribution.
+6.  The documentation must use the ``flask`` theme from the
+    `Official Pallets Themes`_. A link to the documentation or project
+    website must be in the PyPI metadata or the readme.
+7.  For maximum compatibility, the extension should support the same
+    versions of Python that Flask supports. 3.6+ is recommended as of
+    2020. Use ``python_requires=">= 3.6"`` in ``setup.py`` to indicate
+    supported versions.
 
+.. _PyPI: https://pypi.org/search/?c=Framework+%3A%3A+Flask
 .. _OAuth extension: https://pythonhosted.org/Flask-OAuth/
-.. _mailinglist: http://flask.pocoo.org/mailinglist/
-.. _IRC channel: http://flask.pocoo.org/community/irc/
+.. _mailinglist: https://mail.python.org/mailman/listinfo/flask
+.. _Discord server: https://discord.gg/t6rrQZH
 .. _Official Pallets Themes: https://pypi.org/project/Pallets-Sphinx-Themes/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/extensions.rst 
new/Flask-1.1.2/docs/extensions.rst
--- old/Flask-1.1.1/docs/extensions.rst 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/extensions.rst 2020-01-11 02:20:00.000000000 +0100
@@ -12,10 +12,8 @@
 Finding Extensions
 ------------------
 
-Flask extensions are usually named "Flask-Foo" or "Foo-Flask". Many
-extensions are listed in the `Extension Registry`_, which can be updated
-by extension developers. You can also search PyPI for packages tagged
-with `Framework :: Flask <pypi_>`_.
+Flask extensions are usually named "Flask-Foo" or "Foo-Flask". You can
+search PyPI for packages tagged with `Framework :: Flask <pypi_>`_.
 
 
 Using Extensions
@@ -43,11 +41,10 @@
 Building Extensions
 -------------------
 
-While the `Extension Registry`_ contains many Flask extensions, you may
+While the `PyPI <pypi_>`_ contains many Flask extensions, you may
 not find an extension that fits your need. If this is the case, you can
-create your own. Read :ref:`extension-dev` to develop your own Flask
+create your own. Read :doc:`/extensiondev` to develop your own Flask
 extension.
 
 
-.. _Extension Registry: http://flask.pocoo.org/extensions/
 .. _pypi: https://pypi.org/search/?c=Framework+%3A%3A+Flask
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/installation.rst 
new/Flask-1.1.2/docs/installation.rst
--- old/Flask-1.1.1/docs/installation.rst       2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/installation.rst       2020-01-11 02:20:00.000000000 
+0100
@@ -6,7 +6,7 @@
 Python Version
 --------------
 
-We recommend using the latest version of Python 3. Flask supports Python 3.4
+We recommend using the latest version of Python 3. Flask supports Python 3.5
 and newer, Python 2.7, and PyPy.
 
 Dependencies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/make.bat 
new/Flask-1.1.2/docs/make.bat
--- old/Flask-1.1.1/docs/make.bat       2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/make.bat       2020-01-11 02:20:00.000000000 +0100
@@ -25,11 +25,11 @@
        exit /b 1
 )
 
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
 goto end
 
 :help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
 
 :end
 popd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/appdispatch.rst 
new/Flask-1.1.2/docs/patterns/appdispatch.rst
--- old/Flask-1.1.1/docs/patterns/appdispatch.rst       2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/patterns/appdispatch.rst       2020-01-11 
02:20:00.000000000 +0100
@@ -62,12 +62,12 @@
 For example you could have your main application run on ``/`` and your
 backend interface on ``/backend``::
 
-    from werkzeug.wsgi import DispatcherMiddleware
+    from werkzeug.middleware.dispatcher import DispatcherMiddleware
     from frontend_app import application as frontend
     from backend_app import application as backend
 
     application = DispatcherMiddleware(frontend, {
-        '/backend':     backend
+        '/backend': backend
     })
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/fileuploads.rst 
new/Flask-1.1.2/docs/patterns/fileuploads.rst
--- old/Flask-1.1.1/docs/patterns/fileuploads.rst       2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/patterns/fileuploads.rst       2020-04-03 
16:25:59.000000000 +0200
@@ -121,7 +121,7 @@
 use the :class:`~werkzeug.wsgi.SharedDataMiddleware`.  This also works with
 older versions of Flask::
 
-    from werkzeug import SharedDataMiddleware
+    from werkzeug.middleware.shared_data import SharedDataMiddleware
     app.add_url_rule('/uploads/<filename>', 'uploaded_file',
                      build_only=True)
     app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/index.rst 
new/Flask-1.1.2/docs/patterns/index.rst
--- old/Flask-1.1.1/docs/patterns/index.rst     2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/patterns/index.rst     2020-01-11 02:20:00.000000000 
+0100
@@ -3,15 +3,16 @@
 Patterns for Flask
 ==================
 
-Certain things are common enough that the chances are high you will find
-them in most web applications.  For example quite a lot of applications
-are using relational databases and user authentication.  In that case,
-chances are they will open a database connection at the beginning of the
-request and get the information of the currently logged in user.  At the
-end of the request, the database connection is closed again.
+Certain features and interactions are common enough that you will find
+them in most web applications. For example, many applications use a
+relational database and user authentication. They will open a database
+connection at the beginning of the request and get the information for
+the logged in user. At the end of the request, the database connection
+is closed.
 
-There are more user contributed snippets and patterns in the `Flask
-Snippet Archives <http://flask.pocoo.org/snippets/>`_.
+These types of patterns may be a bit outside the scope of Flask itself,
+but Flask makes it easy to implement them. Some common patterns are
+collected in the following pages.
 
 .. toctree::
    :maxdepth: 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/lazyloading.rst 
new/Flask-1.1.2/docs/patterns/lazyloading.rst
--- old/Flask-1.1.1/docs/patterns/lazyloading.rst       2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/patterns/lazyloading.rst       2020-01-11 
02:20:00.000000000 +0100
@@ -58,7 +58,7 @@
 This can be accomplished with a helper class that behaves just like a
 function but internally imports the real function on first use::
 
-    from werkzeug import import_string, cached_property
+    from werkzeug.utils import import_string, cached_property
 
     class LazyView(object):
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/singlepageapplications.rst 
new/Flask-1.1.2/docs/patterns/singlepageapplications.rst
--- old/Flask-1.1.1/docs/patterns/singlepageapplications.rst    2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/patterns/singlepageapplications.rst    2020-02-12 
05:37:45.000000000 +0100
@@ -10,7 +10,7 @@
 
     from flask import Flask, jsonify
 
-    app = Flask(__name__, static_folder='app')
+    app = Flask(__name__, static_folder='app', static_url_path="/app")
 
 
     @app.route("/heartbeat")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/urlprocessors.rst 
new/Flask-1.1.2/docs/patterns/urlprocessors.rst
--- old/Flask-1.1.1/docs/patterns/urlprocessors.rst     2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/patterns/urlprocessors.rst     2020-01-11 
02:20:00.000000000 +0100
@@ -39,8 +39,8 @@
 the language code explicitly which can be annoying.
 
 For the latter, this is where :func:`~flask.Flask.url_defaults` functions
-come in.  They can automatically inject values into a call for
-:func:`~flask.url_for` automatically.  The code below checks if the
+come in.  They can automatically inject values into a call to
+:func:`~flask.url_for`.  The code below checks if the
 language code is not yet in the dictionary of URL values and if the
 endpoint wants a value named ``'lang_code'``::
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/patterns/viewdecorators.rst 
new/Flask-1.1.2/docs/patterns/viewdecorators.rst
--- old/Flask-1.1.1/docs/patterns/viewdecorators.rst    2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/patterns/viewdecorators.rst    2020-04-03 
16:25:59.000000000 +0200
@@ -70,7 +70,7 @@
 
 The decorated function will then work as follows
 
-1. get the unique cache key for the current request base on the current
+1. get the unique cache key for the current request based on the current
    path.
 2. get the value for that key from the cache. If the cache returned
    something we will return that value.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/quickstart.rst 
new/Flask-1.1.2/docs/quickstart.rst
--- old/Flask-1.1.1/docs/quickstart.rst 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/quickstart.rst 2020-04-03 16:25:59.000000000 +0200
@@ -200,6 +200,8 @@
 as a keyword argument. Optionally, you can use a converter to specify the type
 of the argument like ``<converter:variable_name>``. ::
 
+    from markupsafe import escape
+
     @app.route('/user/<username>')
     def show_user_profile(username):
         # show the user profile for that user
@@ -281,7 +283,8 @@
 
 .. code-block:: python
 
-    from flask import Flask, escape, url_for
+    from flask import Flask, url_for
+    from markupsafe import escape
 
     app = Flask(__name__)
 
@@ -419,9 +422,9 @@
 :class:`~jinja2.Markup` class or by using the ``|safe`` filter in the
 template.  Head over to the Jinja 2 documentation for more examples.
 
-Here is a basic introduction to how the :class:`~jinja2.Markup` class works::
+Here is a basic introduction to how the :class:`~markupsafe.Markup` class 
works::
 
-    >>> from flask import Markup
+    >>> from markupsafe import Markup
     >>> Markup('<strong>Hello %s!</strong>') % '<blink>hacker</blink>'
     Markup(u'<strong>Hello &lt;blink&gt;hacker&lt;/blink&gt;!</strong>')
     >>> Markup.escape('<blink>hacker</blink>')
@@ -768,7 +771,8 @@
 In order to use sessions you have to set a secret key.  Here is how
 sessions work::
 
-    from flask import Flask, session, redirect, url_for, escape, request
+    from flask import Flask, session, redirect, url_for, request
+    from markupsafe import escape
 
     app = Flask(__name__)
 
@@ -867,16 +871,22 @@
 
 Read more on :ref:`application-errors`.
 
-Hooking in WSGI Middlewares
----------------------------
+Hooking in WSGI Middleware
+--------------------------
+
+To add WSGI middleware to your Flask application, wrap the application's
+``wsgi_app`` attribute. For example, to apply Werkzeug's
+:class:`~werkzeug.middlware.proxy_fix.ProxyFix` middleware for running
+behind Nginx:
+
+.. code-block:: python
 
-If you want to add a WSGI middleware to your application you can wrap the
-internal WSGI application.  For example if you want to use one of the
-middlewares from the Werkzeug package to work around bugs in lighttpd, you
-can do it like this::
+    from werkzeug.middleware.proxy_fix import ProxyFix
+    app.wsgi_app = ProxyFix(app.wsgi_app)
 
-    from werkzeug.contrib.fixers import LighttpdCGIRootFix
-    app.wsgi_app = LighttpdCGIRootFix(app.wsgi_app)
+Wrapping ``app.wsgi_app`` instead of ``app`` means that ``app`` still
+points at your Flask application, not at the middleware, so you can
+continue to use and configure ``app`` directly.
 
 Using Flask Extensions
 ----------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/reqcontext.rst 
new/Flask-1.1.2/docs/reqcontext.rst
--- old/Flask-1.1.1/docs/reqcontext.rst 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/reqcontext.rst 2020-02-12 05:37:45.000000000 +0100
@@ -109,7 +109,7 @@
 After the request is dispatched and a response is generated and sent,
 the request context is popped, which then pops the application context.
 Immediately before they are popped, the :meth:`~Flask.teardown_request`
-and :meth:`~Flask.teardown_appcontext` functions are are executed. These
+and :meth:`~Flask.teardown_appcontext` functions are executed. These
 execute even if an unhandled exception occurred during dispatch.
 
 
@@ -170,8 +170,8 @@
 
 During testing, it can be useful to defer popping the contexts after the
 request ends, so that their data can be accessed in the test function.
-Using the :meth:`~Flask.test_client` as a ``with`` block to preserve the
-contexts until the with block exits.
+Use the :meth:`~Flask.test_client` as a ``with`` block to preserve the
+contexts until the ``with`` block exits.
 
 .. code-block:: python
 
@@ -199,7 +199,7 @@
         print(request.path)
 
     # the contexts are popped and teardown functions are called after
-    # the client with block exists
+    # the client with block exits
 
 Signals
 ~~~~~~~
@@ -251,13 +251,14 @@
 described on this page.
 
 Most of the time you don't have to care about that, but there are some
-exceptions where it is good to know that this object is an actual proxy:
+exceptions where it is good to know that this object is actually a proxy:
 
 -   The proxy objects cannot fake their type as the actual object types.
     If you want to perform instance checks, you have to do that on the
     object being proxied.
--   If the specific object reference is important, for example for
-    sending :ref:`signals` or passing data to a background thread.
+-   The reference to the proxied object is needed in some situations,
+    such as sending :ref:`signals` or passing data to a background
+    thread.
 
 If you need to access the underlying object that is proxied, use the
 :meth:`~werkzeug.local.LocalProxy._get_current_object` method::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/requirements.txt 
new/Flask-1.1.2/docs/requirements.txt
--- old/Flask-1.1.1/docs/requirements.txt       2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/docs/requirements.txt       2020-01-11 02:20:00.000000000 
+0100
@@ -1,4 +1,5 @@
-Sphinx~=2.1.2
-Pallets-Sphinx-Themes~=1.1.4
-sphinxcontrib-log-cabinet~=1.0.0
+Sphinx~=2.2.0
+Pallets-Sphinx-Themes~=1.2.2
+sphinxcontrib-log-cabinet~=1.0.1
 sphinx-issues~=1.2.0
+packaging~=19.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/templating.rst 
new/Flask-1.1.2/docs/templating.rst
--- old/Flask-1.1.1/docs/templating.rst 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/templating.rst 2020-04-03 16:25:59.000000000 +0200
@@ -3,7 +3,7 @@
 Templates
 =========
 
-Flask leverages Jinja2 as template engine.  You are obviously free to use
+Flask leverages Jinja2 as its template engine.  You are obviously free to use
 a different template engine, but you still have to install Jinja2 to run
 Flask itself.  This requirement is necessary to enable rich extensions.
 An extension can depend on Jinja2 being present.
@@ -100,7 +100,7 @@
 Standard Filters
 ----------------
 
-These filters are available in Jinja2 additionally to the filters provided
+Flask provides the following Jinja2 filters in addition to the filters provided
 by Jinja2 itself:
 
 .. function:: tojson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/docs/testing.rst 
new/Flask-1.1.2/docs/testing.rst
--- old/Flask-1.1.1/docs/testing.rst    2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/docs/testing.rst    2020-04-03 16:25:59.000000000 +0200
@@ -420,7 +420,7 @@
 
     @app.cli.command('hello')
     @click.option('--name', default='World')
-    def hello_command(name)
+    def hello_command(name):
         click.echo(f'Hello, {name}!')
 
     def test_hello():
@@ -447,7 +447,7 @@
 
     @app.cli.command('hello')
     @click.option('--name', default='World', callback=upper)
-    def hello_command(name)
+    def hello_command(name):
         click.echo(f'Hello, {name}!')
 
     def test_hello_params():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/PKG-INFO 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/PKG-INFO
--- old/Flask-1.1.1/examples/javascript/js_example.egg-info/PKG-INFO    
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/javascript/js_example.egg-info/PKG-INFO    
2020-04-03 19:07:56.000000000 +0200
@@ -0,0 +1,60 @@
+Metadata-Version: 2.1
+Name: js-example
+Version: 1.0.0
+Summary: Demonstrates making Ajax requests to Flask.
+Home-page: http://flask.pocoo.org/docs/patterns/jquery/
+Maintainer: Pallets team
+Maintainer-email: [email protected]
+License: BSD
+Description: JavaScript Ajax Example
+        =======================
+        
+        Demonstrates how to post form data and process a JSON response using
+        JavaScript. This allows making requests without navigating away from 
the
+        page. Demonstrates using |XMLHttpRequest|_, |fetch|_, and
+        |jQuery.ajax|_. See the `Flask docs`_ about jQuery and Ajax.
+        
+        .. |XMLHttpRequest| replace:: ``XMLHttpRequest``
+        .. _XMLHttpRequest: 
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
+        
+        .. |fetch| replace:: ``fetch``
+        .. _fetch: 
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
+        
+        .. |jQuery.ajax| replace:: ``jQuery.ajax``
+        .. _jQuery.ajax: https://api.jquery.com/jQuery.ajax/
+        
+        .. _Flask docs: http://flask.pocoo.org/docs/patterns/jquery/
+        
+        
+        Install
+        -------
+        
+        ::
+        
+            $ python3 -m venv venv
+            $ . venv/bin/activate
+            $ pip install -e .
+        
+        
+        Run
+        ---
+        
+        ::
+        
+            $ export FLASK_APP=js_example
+            $ flask run
+        
+        Open http://127.0.0.1:5000 in a browser.
+        
+        
+        Test
+        ----
+        
+        ::
+        
+            $ pip install -e '.[test]'
+            $ coverage run -m pytest
+            $ coverage report
+        
+Platform: UNKNOWN
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/SOURCES.txt 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/SOURCES.txt
--- old/Flask-1.1.1/examples/javascript/js_example.egg-info/SOURCES.txt 
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/javascript/js_example.egg-info/SOURCES.txt 
2020-04-03 19:07:56.000000000 +0200
@@ -0,0 +1,19 @@
+LICENSE
+MANIFEST.in
+README.rst
+setup.cfg
+setup.py
+js_example/__init__.py
+js_example/views.py
+js_example.egg-info/PKG-INFO
+js_example.egg-info/SOURCES.txt
+js_example.egg-info/dependency_links.txt
+js_example.egg-info/not-zip-safe
+js_example.egg-info/requires.txt
+js_example.egg-info/top_level.txt
+js_example/templates/base.html
+js_example/templates/fetch.html
+js_example/templates/jquery.html
+js_example/templates/plain.html
+tests/conftest.py
+tests/test_js_example.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/dependency_links.txt 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/dependency_links.txt
--- 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/dependency_links.txt    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/dependency_links.txt    
    2020-04-03 19:07:56.000000000 +0200
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/not-zip-safe 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/not-zip-safe
--- old/Flask-1.1.1/examples/javascript/js_example.egg-info/not-zip-safe        
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/javascript/js_example.egg-info/not-zip-safe        
2019-11-19 03:42:58.000000000 +0100
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/requires.txt 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/requires.txt
--- old/Flask-1.1.1/examples/javascript/js_example.egg-info/requires.txt        
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/javascript/js_example.egg-info/requires.txt        
2020-04-03 19:07:56.000000000 +0200
@@ -0,0 +1,6 @@
+flask
+
+[test]
+pytest
+coverage
+blinker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/javascript/js_example.egg-info/top_level.txt 
new/Flask-1.1.2/examples/javascript/js_example.egg-info/top_level.txt
--- old/Flask-1.1.1/examples/javascript/js_example.egg-info/top_level.txt       
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/javascript/js_example.egg-info/top_level.txt       
2020-04-03 19:07:56.000000000 +0200
@@ -0,0 +1 @@
+js_example
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/PKG-INFO 
new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/PKG-INFO
--- old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/PKG-INFO  1970-01-01 
01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/PKG-INFO  2020-04-03 
19:07:55.000000000 +0200
@@ -0,0 +1,88 @@
+Metadata-Version: 2.1
+Name: flaskr
+Version: 1.0.0
+Summary: The basic blog app built in the Flask tutorial.
+Home-page: http://flask.pocoo.org/docs/tutorial/
+Maintainer: Pallets team
+Maintainer-email: [email protected]
+License: BSD
+Description: Flaskr
+        ======
+        
+        The basic blog app built in the Flask `tutorial`_.
+        
+        .. _tutorial: http://flask.pocoo.org/docs/tutorial/
+        
+        
+        Install
+        -------
+        
+        **Be sure to use the same version of the code as the version of the 
docs
+        you're reading.** You probably want the latest tagged version, but the
+        default Git version is the master branch. ::
+        
+            # clone the repository
+            $ git clone https://github.com/pallets/flask
+            $ cd flask
+            # checkout the correct version
+            $ git tag  # shows the tagged versions
+            $ git checkout latest-tag-found-above
+            $ cd examples/tutorial
+        
+        Create a virtualenv and activate it::
+        
+            $ python3 -m venv venv
+            $ . venv/bin/activate
+        
+        Or on Windows cmd::
+        
+            $ py -3 -m venv venv
+            $ venv\Scripts\activate.bat
+        
+        Install Flaskr::
+        
+            $ pip install -e .
+        
+        Or if you are using the master branch, install Flask from source before
+        installing Flaskr::
+        
+            $ pip install -e ../..
+            $ pip install -e .
+        
+        
+        Run
+        ---
+        
+        ::
+        
+            $ export FLASK_APP=flaskr
+            $ export FLASK_ENV=development
+            $ flask init-db
+            $ flask run
+        
+        Or on Windows cmd::
+        
+            > set FLASK_APP=flaskr
+            > set FLASK_ENV=development
+            > flask init-db
+            > flask run
+        
+        Open http://127.0.0.1:5000 in a browser.
+        
+        
+        Test
+        ----
+        
+        ::
+        
+            $ pip install '.[test]'
+            $ pytest
+        
+        Run with coverage report::
+        
+            $ coverage run -m pytest
+            $ coverage report
+            $ coverage html  # open htmlcov/index.html in a browser
+        
+Platform: UNKNOWN
+Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/SOURCES.txt 
new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/SOURCES.txt
--- old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/SOURCES.txt       
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/SOURCES.txt       
2020-04-03 19:07:56.000000000 +0200
@@ -0,0 +1,29 @@
+LICENSE
+MANIFEST.in
+README.rst
+setup.cfg
+setup.py
+flaskr/__init__.py
+flaskr/auth.py
+flaskr/blog.py
+flaskr/db.py
+flaskr/schema.sql
+flaskr.egg-info/PKG-INFO
+flaskr.egg-info/SOURCES.txt
+flaskr.egg-info/dependency_links.txt
+flaskr.egg-info/not-zip-safe
+flaskr.egg-info/requires.txt
+flaskr.egg-info/top_level.txt
+flaskr/static/style.css
+flaskr/templates/base.html
+flaskr/templates/auth/login.html
+flaskr/templates/auth/register.html
+flaskr/templates/blog/create.html
+flaskr/templates/blog/index.html
+flaskr/templates/blog/update.html
+tests/conftest.py
+tests/data.sql
+tests/test_auth.py
+tests/test_blog.py
+tests/test_db.py
+tests/test_factory.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/dependency_links.txt 
new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/dependency_links.txt
--- old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/dependency_links.txt      
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/dependency_links.txt      
2020-04-03 19:07:55.000000000 +0200
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/not-zip-safe 
new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/not-zip-safe
--- old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/not-zip-safe      
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/not-zip-safe      
2019-11-19 03:42:57.000000000 +0100
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/requires.txt 
new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/requires.txt
--- old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/requires.txt      
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/requires.txt      
2020-04-03 19:07:55.000000000 +0200
@@ -0,0 +1,5 @@
+flask
+
+[test]
+pytest
+coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/top_level.txt 
new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/top_level.txt
--- old/Flask-1.1.1/examples/tutorial/flaskr.egg-info/top_level.txt     
1970-01-01 01:00:00.000000000 +0100
+++ new/Flask-1.1.2/examples/tutorial/flaskr.egg-info/top_level.txt     
2020-04-03 19:07:55.000000000 +0200
@@ -0,0 +1 @@
+flaskr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/setup.py new/Flask-1.1.2/setup.py
--- old/Flask-1.1.1/setup.py    2019-07-08 19:59:15.000000000 +0200
+++ new/Flask-1.1.2/setup.py    2020-01-11 02:20:00.000000000 +0100
@@ -40,6 +40,9 @@
         "Programming Language :: Python :: 3.5",
         "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: Implementation :: CPython",
+        "Programming Language :: Python :: Implementation :: PyPy",
         "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
         "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
         "Topic :: Software Development :: Libraries :: Application Frameworks",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/Flask.egg-info/PKG-INFO 
new/Flask-1.1.2/src/Flask.egg-info/PKG-INFO
--- old/Flask-1.1.1/src/Flask.egg-info/PKG-INFO 2019-07-08 19:59:28.000000000 
+0200
+++ new/Flask-1.1.2/src/Flask.egg-info/PKG-INFO 2020-04-03 19:10:45.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: Flask
-Version: 1.1.1
+Version: 1.1.2
 Summary: A simple framework for building complex web applications.
 Home-page: https://palletsprojects.com/p/flask/
 Author: Armin Ronacher
@@ -106,6 +106,9 @@
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
 Classifier: Topic :: Software Development :: Libraries :: Application 
Frameworks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/Flask.egg-info/SOURCES.txt 
new/Flask-1.1.2/src/Flask.egg-info/SOURCES.txt
--- old/Flask-1.1.1/src/Flask.egg-info/SOURCES.txt      2019-07-08 
19:59:28.000000000 +0200
+++ new/Flask-1.1.2/src/Flask.egg-info/SOURCES.txt      2020-04-03 
19:10:45.000000000 +0200
@@ -108,6 +108,12 @@
 examples/javascript/setup.py
 examples/javascript/js_example/__init__.py
 examples/javascript/js_example/views.py
+examples/javascript/js_example.egg-info/PKG-INFO
+examples/javascript/js_example.egg-info/SOURCES.txt
+examples/javascript/js_example.egg-info/dependency_links.txt
+examples/javascript/js_example.egg-info/not-zip-safe
+examples/javascript/js_example.egg-info/requires.txt
+examples/javascript/js_example.egg-info/top_level.txt
 examples/javascript/js_example/templates/base.html
 examples/javascript/js_example/templates/fetch.html
 examples/javascript/js_example/templates/jquery.html
@@ -125,6 +131,12 @@
 examples/tutorial/flaskr/blog.py
 examples/tutorial/flaskr/db.py
 examples/tutorial/flaskr/schema.sql
+examples/tutorial/flaskr.egg-info/PKG-INFO
+examples/tutorial/flaskr.egg-info/SOURCES.txt
+examples/tutorial/flaskr.egg-info/dependency_links.txt
+examples/tutorial/flaskr.egg-info/not-zip-safe
+examples/tutorial/flaskr.egg-info/requires.txt
+examples/tutorial/flaskr.egg-info/top_level.txt
 examples/tutorial/flaskr/static/style.css
 examples/tutorial/flaskr/templates/base.html
 examples/tutorial/flaskr/templates/auth/login.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/flask/__init__.py 
new/Flask-1.1.2/src/flask/__init__.py
--- old/Flask-1.1.1/src/flask/__init__.py       2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/src/flask/__init__.py       2020-04-03 19:04:11.000000000 
+0200
@@ -57,4 +57,4 @@
 from .templating import render_template
 from .templating import render_template_string
 
-__version__ = "1.1.1"
+__version__ = "1.1.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/flask/app.py 
new/Flask-1.1.2/src/flask/app.py
--- old/Flask-1.1.1/src/flask/app.py    2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/src/flask/app.py    2020-04-03 19:02:33.000000000 +0200
@@ -170,9 +170,9 @@
     :param static_url_path: can be used to specify a different path for the
                             static files on the web.  Defaults to the name
                             of the `static_folder` folder.
-    :param static_folder: the folder with static files that should be served
-                          at `static_url_path`.  Defaults to the ``'static'``
-                          folder in the root path of the application.
+    :param static_folder: The folder with static files that is served at
+        ``static_url_path``. Relative to the application ``root_path``
+        or an absolute path. Defaults to ``'static'``.
     :param static_host: the host to use when adding the static route.
         Defaults to None. Required when using ``host_matching=True``
         with a ``static_folder`` configured.
@@ -1074,16 +1074,16 @@
         we recommend replacing the :class:`session_interface`.
 
         .. deprecated: 1.0
-            Will be removed in 1.1. Use ``session_interface.open_session``
-            instead.
+            Will be removed in 2.0. Use
+            ``session_interface.open_session`` instead.
 
         :param request: an instance of :attr:`request_class`.
         """
 
         warnings.warn(
             DeprecationWarning(
-                '"open_session" is deprecated and will be removed in 1.1. Use'
-                ' "session_interface.open_session" instead.'
+                '"open_session" is deprecated and will be removed in'
+                ' 2.0. Use "session_interface.open_session" instead.'
             )
         )
         return self.session_interface.open_session(self, request)
@@ -1094,8 +1094,8 @@
         method we recommend replacing the :class:`session_interface`.
 
         .. deprecated: 1.0
-            Will be removed in 1.1. Use ``session_interface.save_session``
-            instead.
+            Will be removed in 2.0. Use
+            ``session_interface.save_session`` instead.
 
         :param session: the session to be saved (a
                         :class:`~werkzeug.contrib.securecookie.SecureCookie`
@@ -1105,8 +1105,8 @@
 
         warnings.warn(
             DeprecationWarning(
-                '"save_session" is deprecated and will be removed in 1.1. Use'
-                ' "session_interface.save_session" instead.'
+                '"save_session" is deprecated and will be removed in'
+                ' 2.0. Use "session_interface.save_session" instead.'
             )
         )
         return self.session_interface.save_session(self, session, response)
@@ -1116,16 +1116,17 @@
         this method we recommend replacing the :class:`session_interface`.
 
         .. deprecated: 1.0
-            Will be removed in 1.1. Use ``session_interface.make_null_session``
-            instead.
+            Will be removed in 2.0. Use
+            ``session_interface.make_null_session`` instead.
 
         .. versionadded:: 0.7
         """
 
         warnings.warn(
             DeprecationWarning(
-                '"make_null_session" is deprecated and will be removed in 1.1. 
Use'
-                ' "session_interface.make_null_session" instead.'
+                '"make_null_session" is deprecated and will be removed'
+                ' in 2.0. Use "session_interface.make_null_session"'
+                " instead."
             )
         )
         return self.session_interface.make_null_session(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/flask/cli.py 
new/Flask-1.1.2/src/flask/cli.py
--- old/Flask-1.1.1/src/flask/cli.py    2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/src/flask/cli.py    2020-04-03 18:58:05.000000000 +0200
@@ -963,7 +963,8 @@
 
 
 def main(as_module=False):
-    cli.main(prog_name="python -m flask" if as_module else None)
+    # TODO omit sys.argv once https://github.com/pallets/click/issues/536 is 
fixed
+    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else 
None)
 
 
 if __name__ == "__main__":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/flask/helpers.py 
new/Flask-1.1.2/src/flask/helpers.py
--- old/Flask-1.1.1/src/flask/helpers.py        2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/src/flask/helpers.py        2020-04-03 16:25:59.000000000 
+0200
@@ -1000,6 +1000,8 @@
 
     @static_folder.setter
     def static_folder(self, value):
+        if value is not None:
+            value = value.rstrip("/\\")
         self._static_folder = value
 
     @property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/src/flask/testing.py 
new/Flask-1.1.2/src/flask/testing.py
--- old/Flask-1.1.1/src/flask/testing.py        2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/src/flask/testing.py        2020-04-03 19:02:32.000000000 
+0200
@@ -99,14 +99,14 @@
     """Create a :class:`flask.testing.EnvironBuilder`.
 
     .. deprecated: 1.1
-        Will be removed in 1.2. Construct ``flask.testing.EnvironBuilder``
-        directly instead.
+        Will be removed in 2.0. Construct
+        ``flask.testing.EnvironBuilder`` directly instead.
     """
     warnings.warn(
         DeprecationWarning(
-            '"make_test_environ_builder()" is deprecated and will be removed '
-            'in 1.2. Construct "flask.testing.EnvironBuilder" directly '
-            "instead."
+            '"make_test_environ_builder()" is deprecated and will be'
+            ' removed in 2.0. Construct "flask.testing.EnvironBuilder"'
+            " directly instead."
         )
     )
     return EnvironBuilder(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/tests/test_basic.py 
new/Flask-1.1.2/tests/test_basic.py
--- old/Flask-1.1.1/tests/test_basic.py 2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/tests/test_basic.py 2020-04-03 16:25:59.000000000 +0200
@@ -1425,6 +1425,17 @@
     rv.close()
 
 
+def test_static_folder_with_ending_slash():
+    app = flask.Flask(__name__, static_folder="static/")
+
+    @app.route("/<path:path>")
+    def catch_all(path):
+        return path
+
+    rv = app.test_client().get("/catch/all")
+    assert rv.data == b"catch/all"
+
+
 def test_static_route_with_host_matching():
     app = flask.Flask(__name__, host_matching=True, static_host="example.com")
     c = app.test_client()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/tests/test_helpers.py 
new/Flask-1.1.2/tests/test_helpers.py
--- old/Flask-1.1.1/tests/test_helpers.py       2019-07-08 19:55:46.000000000 
+0200
+++ new/Flask-1.1.2/tests/test_helpers.py       2020-04-03 16:25:59.000000000 
+0200
@@ -11,6 +11,7 @@
 import datetime
 import io
 import os
+import sys
 import uuid
 
 import pytest
@@ -780,12 +781,17 @@
         assert rv.data.strip() == b"Hello Subdomain"
         rv.close()
 
-    def test_send_from_directory_bad_request(self, app, req_ctx):
+    def test_send_from_directory_null_character(self, app, req_ctx):
         app.root_path = os.path.join(
             os.path.dirname(__file__), "test_apps", "subdomaintestmodule"
         )
 
-        with pytest.raises(BadRequest):
+        if sys.version_info >= (3, 8):
+            exception = NotFound
+        else:
+            exception = BadRequest
+
+        with pytest.raises(exception):
             flask.send_from_directory("static", "bad\x00")
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/tests/test_instance_config.py 
new/Flask-1.1.2/tests/test_instance_config.py
--- old/Flask-1.1.1/tests/test_instance_config.py       2019-07-08 
19:55:46.000000000 +0200
+++ new/Flask-1.1.2/tests/test_instance_config.py       2020-02-12 
05:37:45.000000000 +0100
@@ -24,6 +24,7 @@
     assert app.instance_path == str(modules_tmpdir)
 
 
[email protected](reason="TODO: weird interaction with tox")
 def test_main_module_paths(modules_tmpdir, purge_module):
     app = modules_tmpdir.join("main_app.py")
     app.write('import flask\n\napp = flask.Flask("__main__")')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-1.1.1/tox.ini new/Flask-1.1.2/tox.ini
--- old/Flask-1.1.1/tox.ini     2019-07-08 19:55:46.000000000 +0200
+++ new/Flask-1.1.2/tox.ini     2020-01-11 02:20:00.000000000 +0100
@@ -1,9 +1,10 @@
 [tox]
 envlist =
-    py{37,36,35,27,py3,py}
-    py37-{simplejson,devel,lowest}
-    docs-html
+    py{38,37,36,35,27,py3,py}
+    py38-{simplejson,devel,lowest}
+    docs
     coverage
+skip_missing_interpreters = true
 
 [testenv]
 passenv = LANG
@@ -14,7 +15,7 @@
     blinker
     python-dotenv
 
-    lowest: Werkzeug==0.15
+    lowest: Werkzeug==0.15.5
     lowest: Jinja2==2.10
     lowest: itsdangerous==0.24
     lowest: Click==5.1
@@ -39,16 +40,14 @@
 # courtesy Python nightly test, don't fail the build in CI
 ignore_outcome = true
 commands =
-    pip install -q -e examples/tutorial[test]
-    pip install -q -e examples/javascript[test]
-    coverage run -p -m pytest --tb=short -Werror --junitxml=test-results.xml 
{posargs:tests examples}
+    coverage run -p -m pytest --tb=short -Werror --junitxml=test-results.xml 
tests
 
-[testenv:stylecheck]
+[testenv:style]
 deps = pre-commit
 skip_install = true
 commands = pre-commit run --all-files --show-diff-on-failure
 
-[testenv:docs-html]
+[testenv:docs]
 deps =
     -r docs/requirements.txt
 commands = sphinx-build -W -b html -d {envtmpdir}/doctrees docs 
{envtmpdir}/html


Reply via email to