Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-Flask-Cors for 
openSUSE:Factory checked in at 2023-10-04 22:30:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask-Cors (Old)
 and      /work/SRC/openSUSE:Factory/.python-Flask-Cors.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Flask-Cors"

Wed Oct  4 22:30:46 2023 rev:10 rq:1114847 version:4.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Flask-Cors/python-Flask-Cors.changes      
2023-06-14 16:32:05.371482479 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-Flask-Cors.new.28202/python-Flask-Cors.changes
   2023-10-04 22:31:21.883453068 +0200
@@ -1,0 +2,7 @@
+Mon Oct  2 10:55:56 UTC 2023 - pgaj...@suse.com
+
+- version update to 4.0.0
+  * Remove support for Python versions older than 3.8 by @WAKayser in #330
+  * Add GHA tooling by @corydolphin in #331
+
+-------------------------------------------------------------------

Old:
----
  Flask-Cors-3.0.10.tar.gz

New:
----
  Flask-Cors-4.0.0.tar.gz

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

Other differences:
------------------
++++++ python-Flask-Cors.spec ++++++
--- /var/tmp/diff_new_pack.mjVpOb/_old  2023-10-04 22:31:23.547513213 +0200
+++ /var/tmp/diff_new_pack.mjVpOb/_new  2023-10-04 22:31:23.555513502 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Flask-Cors
 #
-# Copyright (c) 2021 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
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-Flask-Cors
-Version:        3.0.10
+Version:        4.0.0
 Release:        0
 Summary:        A Flask extension adding a decorator for CORS support
 License:        MIT
@@ -27,11 +27,9 @@
 BuildRequires:  %{python_module Flask >= 0.9}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
-BuildRequires:  %{python_module six}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-Flask >= 0.9
-Requires:       python-six
 BuildArch:      noarch
 %python_subpackages
 

++++++ Flask-Cors-3.0.10.tar.gz -> Flask-Cors-4.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/Flask_Cors.egg-info/PKG-INFO 
new/Flask-Cors-4.0.0/Flask_Cors.egg-info/PKG-INFO
--- old/Flask-Cors-3.0.10/Flask_Cors.egg-info/PKG-INFO  2021-01-06 
01:25:40.000000000 +0100
+++ new/Flask-Cors-4.0.0/Flask_Cors.egg-info/PKG-INFO   2023-06-26 
07:38:34.000000000 +0200
@@ -1,145 +1,146 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: Flask-Cors
-Version: 3.0.10
+Version: 4.0.0
 Summary: A Flask extension adding a decorator for CORS support
 Home-page: https://github.com/corydolphin/flask-cors
 Author: Cory Dolphin
 Author-email: corydolp...@gmail.com
 License: MIT
-Description: Flask-CORS
-        ==========
-        
-        |Build Status| |Latest Version| |Supported Python versions|
-        |License|
-        
-        A Flask extension for handling Cross Origin Resource Sharing (CORS), 
making cross-origin AJAX possible.
-        
-        This package has a simple philosophy: when you want to enable CORS, 
you wish to enable it for all use cases on a domain. 
-        This means no mucking around with different allowed headers, methods, 
etc. 
-        
-        By default, submission of cookies across domains is disabled due to 
the security implications. 
-        Please see the documentation for how to enable credential'ed requests, 
and please make sure you add some sort of `CSRF 
<http://en.wikipedia.org/wiki/Cross-site_request_forgery>`__ protection before 
doing so!
-        
-        Installation
-        ------------
-        
-        Install the extension with using pip, or easy\_install.
-        
-        .. code:: bash
-        
-            $ pip install -U flask-cors
-        
-        Usage
-        -----
-        
-        This package exposes a Flask extension which by default enables CORS 
support on all routes, for all origins and methods. 
-        It allows parameterization of all CORS headers on a per-resource 
level. 
-        The package also contains a decorator, for those who prefer this 
approach.
-        
-        Simple Usage
-        ~~~~~~~~~~~~
-        
-        In the simplest case, initialize the Flask-Cors extension with default 
arguments in order to allow CORS for all domains on all routes. 
-        See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
-        
-        .. code:: python
-        
-        
-            from flask import Flask
-            from flask_cors import CORS
-        
-            app = Flask(__name__)
-            CORS(app)
-        
-            @app.route("/")
-            def helloWorld():
-              return "Hello, cross-origin-world!"
-        
-        Resource specific CORS
-        ^^^^^^^^^^^^^^^^^^^^^^
-        
-        Alternatively, you can specify CORS options on a resource and origin 
level of granularity by passing a dictionary as the `resources` option, mapping 
paths to a set of options. 
-        See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
-        
-        .. code:: python
-        
-            app = Flask(__name__)
-            cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
-        
-            @app.route("/api/v1/users")
-            def list_users():
-              return "user example"
-        
-        Route specific CORS via decorator
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-        
-        This extension also exposes a simple decorator to decorate flask 
routes with. 
-        Simply add ``@cross_origin()`` below a call to Flask's 
``@app.route(..)`` to allow CORS on a given route. 
-        See the full list of options in the `decorator documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#decorator>`__.
-        
-        .. code:: python
-        
-            @app.route("/")
-            @cross_origin()
-            def helloWorld():
-              return "Hello, cross-origin-world!"
-        
-        Documentation
-        -------------
-        
-        For a full list of options, please see the full `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html>`__
-        
-        Troubleshooting
-        ---------------
-        
-        If things aren't working as you expect, enable logging to help 
understand what is going on under the hood, and why.
-        
-        .. code:: python
-        
-            logging.getLogger('flask_cors').level = logging.DEBUG
-        
-        
-        Tests
-        -----
-        
-        A simple set of tests is included in ``test/``. 
-        To run, install nose, and simply invoke ``nosetests`` or ``python 
setup.py test`` to exercise the tests.
-        
-        Contributing
-        ------------
-        
-        Questions, comments or improvements? 
-        Please create an issue on `Github 
<https://github.com/corydolphin/flask-cors>`__, tweet at `@corydolphin 
<https://twitter.com/corydolphin>`__ or send me an email. 
-        I do my best to include every contribution proposed in any way that I 
can.
-        
-        Credits
-        -------
-        
-        This Flask extension is based upon the `Decorator for the HTTP Access 
Control <http://flask.pocoo.org/snippets/56/>`__ written by Armin Ronacher.
-        
-        .. |Build Status| image:: 
https://api.travis-ci.org/corydolphin/flask-cors.svg?branch=master
-           :target: https://travis-ci.org/corydolphin/flask-cors
-        .. |Latest Version| image:: 
https://img.shields.io/pypi/v/Flask-Cors.svg
-           :target: https://pypi.python.org/pypi/Flask-Cors/
-        .. |Supported Python versions| image:: 
https://img.shields.io/pypi/pyversions/Flask-Cors.svg
-           :target: https://img.shields.io/pypi/pyversions/Flask-Cors.svg
-        .. |License| image:: http://img.shields.io/:license-mit-blue.svg
-           :target: https://pypi.python.org/pypi/Flask-Cors/
-        
 Platform: any
 Classifier: Environment :: Web Environment
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-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 :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
+License-File: LICENSE
+
+Flask-CORS
+==========
+
+|Build Status| |Latest Version| |Supported Python versions|
+|License|
+
+A Flask extension for handling Cross Origin Resource Sharing (CORS), making 
cross-origin AJAX possible.
+
+This package has a simple philosophy: when you want to enable CORS, you wish 
to enable it for all use cases on a domain. 
+This means no mucking around with different allowed headers, methods, etc. 
+
+By default, submission of cookies across domains is disabled due to the 
security implications. 
+Please see the documentation for how to enable credential'ed requests, and 
please make sure you add some sort of `CSRF 
<http://en.wikipedia.org/wiki/Cross-site_request_forgery>`__ protection before 
doing so!
+
+Installation
+------------
+
+Install the extension with using pip, or easy\_install.
+
+.. code:: bash
+
+    $ pip install -U flask-cors
+
+Usage
+-----
+
+This package exposes a Flask extension which by default enables CORS support 
on all routes, for all origins and methods. 
+It allows parameterization of all CORS headers on a per-resource level. 
+The package also contains a decorator, for those who prefer this approach.
+
+Simple Usage
+~~~~~~~~~~~~
+
+In the simplest case, initialize the Flask-Cors extension with default 
arguments in order to allow CORS for all domains on all routes. 
+See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
+
+.. code:: python
+
+
+    from flask import Flask
+    from flask_cors import CORS
+
+    app = Flask(__name__)
+    CORS(app)
+
+    @app.route("/")
+    def helloWorld():
+      return "Hello, cross-origin-world!"
+
+Resource specific CORS
+^^^^^^^^^^^^^^^^^^^^^^
+
+Alternatively, you can specify CORS options on a resource and origin level of 
granularity by passing a dictionary as the `resources` option, mapping paths to 
a set of options. 
+See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
+
+.. code:: python
+
+    app = Flask(__name__)
+    cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
+
+    @app.route("/api/v1/users")
+    def list_users():
+      return "user example"
+
+Route specific CORS via decorator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This extension also exposes a simple decorator to decorate flask routes with. 
+Simply add ``@cross_origin()`` below a call to Flask's ``@app.route(..)`` to 
allow CORS on a given route. 
+See the full list of options in the `decorator documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#decorator>`__.
+
+.. code:: python
+
+    @app.route("/")
+    @cross_origin()
+    def helloWorld():
+      return "Hello, cross-origin-world!"
+
+Documentation
+-------------
+
+For a full list of options, please see the full `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html>`__
+
+Troubleshooting
+---------------
+
+If things aren't working as you expect, enable logging to help understand what 
is going on under the hood, and why.
+
+.. code:: python
+
+    logging.getLogger('flask_cors').level = logging.DEBUG
+
+
+Tests
+-----
+
+A simple set of tests is included in ``test/``. 
+To run, install nose, and simply invoke ``nosetests`` or ``python setup.py 
test`` to exercise the tests.
+
+If nosetests does not work for you, due to it no longer working with newer 
python versions.
+You can use pytest to run the tests instead.
+
+Contributing
+------------
+
+Questions, comments or improvements? 
+Please create an issue on `Github 
<https://github.com/corydolphin/flask-cors>`__, tweet at `@corydolphin 
<https://twitter.com/corydolphin>`__ or send me an email. 
+I do my best to include every contribution proposed in any way that I can.
+
+Credits
+-------
+
+This Flask extension is based upon the `Decorator for the HTTP Access Control 
<https://web.archive.org/web/20190128010149/http://flask.pocoo.org/snippets/56/>`__
 written by Armin Ronacher.
+
+.. |Build Status| image:: 
https://api.travis-ci.org/corydolphin/flask-cors.svg?branch=master
+   :target: https://travis-ci.org/corydolphin/flask-cors
+.. |Latest Version| image:: https://img.shields.io/pypi/v/Flask-Cors.svg
+   :target: https://pypi.python.org/pypi/Flask-Cors/
+.. |Supported Python versions| image:: 
https://img.shields.io/pypi/pyversions/Flask-Cors.svg
+   :target: https://img.shields.io/pypi/pyversions/Flask-Cors.svg
+.. |License| image:: http://img.shields.io/:license-mit-blue.svg
+   :target: https://pypi.python.org/pypi/Flask-Cors/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/Flask_Cors.egg-info/requires.txt 
new/Flask-Cors-4.0.0/Flask_Cors.egg-info/requires.txt
--- old/Flask-Cors-3.0.10/Flask_Cors.egg-info/requires.txt      2021-01-06 
01:25:40.000000000 +0100
+++ new/Flask-Cors-4.0.0/Flask_Cors.egg-info/requires.txt       2023-06-26 
07:38:34.000000000 +0200
@@ -1,2 +1 @@
 Flask>=0.9
-Six
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/PKG-INFO 
new/Flask-Cors-4.0.0/PKG-INFO
--- old/Flask-Cors-3.0.10/PKG-INFO      2021-01-06 01:25:40.000000000 +0100
+++ new/Flask-Cors-4.0.0/PKG-INFO       2023-06-26 07:38:34.166286000 +0200
@@ -1,145 +1,146 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: Flask-Cors
-Version: 3.0.10
+Version: 4.0.0
 Summary: A Flask extension adding a decorator for CORS support
 Home-page: https://github.com/corydolphin/flask-cors
 Author: Cory Dolphin
 Author-email: corydolp...@gmail.com
 License: MIT
-Description: Flask-CORS
-        ==========
-        
-        |Build Status| |Latest Version| |Supported Python versions|
-        |License|
-        
-        A Flask extension for handling Cross Origin Resource Sharing (CORS), 
making cross-origin AJAX possible.
-        
-        This package has a simple philosophy: when you want to enable CORS, 
you wish to enable it for all use cases on a domain. 
-        This means no mucking around with different allowed headers, methods, 
etc. 
-        
-        By default, submission of cookies across domains is disabled due to 
the security implications. 
-        Please see the documentation for how to enable credential'ed requests, 
and please make sure you add some sort of `CSRF 
<http://en.wikipedia.org/wiki/Cross-site_request_forgery>`__ protection before 
doing so!
-        
-        Installation
-        ------------
-        
-        Install the extension with using pip, or easy\_install.
-        
-        .. code:: bash
-        
-            $ pip install -U flask-cors
-        
-        Usage
-        -----
-        
-        This package exposes a Flask extension which by default enables CORS 
support on all routes, for all origins and methods. 
-        It allows parameterization of all CORS headers on a per-resource 
level. 
-        The package also contains a decorator, for those who prefer this 
approach.
-        
-        Simple Usage
-        ~~~~~~~~~~~~
-        
-        In the simplest case, initialize the Flask-Cors extension with default 
arguments in order to allow CORS for all domains on all routes. 
-        See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
-        
-        .. code:: python
-        
-        
-            from flask import Flask
-            from flask_cors import CORS
-        
-            app = Flask(__name__)
-            CORS(app)
-        
-            @app.route("/")
-            def helloWorld():
-              return "Hello, cross-origin-world!"
-        
-        Resource specific CORS
-        ^^^^^^^^^^^^^^^^^^^^^^
-        
-        Alternatively, you can specify CORS options on a resource and origin 
level of granularity by passing a dictionary as the `resources` option, mapping 
paths to a set of options. 
-        See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
-        
-        .. code:: python
-        
-            app = Flask(__name__)
-            cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
-        
-            @app.route("/api/v1/users")
-            def list_users():
-              return "user example"
-        
-        Route specific CORS via decorator
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-        
-        This extension also exposes a simple decorator to decorate flask 
routes with. 
-        Simply add ``@cross_origin()`` below a call to Flask's 
``@app.route(..)`` to allow CORS on a given route. 
-        See the full list of options in the `decorator documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#decorator>`__.
-        
-        .. code:: python
-        
-            @app.route("/")
-            @cross_origin()
-            def helloWorld():
-              return "Hello, cross-origin-world!"
-        
-        Documentation
-        -------------
-        
-        For a full list of options, please see the full `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html>`__
-        
-        Troubleshooting
-        ---------------
-        
-        If things aren't working as you expect, enable logging to help 
understand what is going on under the hood, and why.
-        
-        .. code:: python
-        
-            logging.getLogger('flask_cors').level = logging.DEBUG
-        
-        
-        Tests
-        -----
-        
-        A simple set of tests is included in ``test/``. 
-        To run, install nose, and simply invoke ``nosetests`` or ``python 
setup.py test`` to exercise the tests.
-        
-        Contributing
-        ------------
-        
-        Questions, comments or improvements? 
-        Please create an issue on `Github 
<https://github.com/corydolphin/flask-cors>`__, tweet at `@corydolphin 
<https://twitter.com/corydolphin>`__ or send me an email. 
-        I do my best to include every contribution proposed in any way that I 
can.
-        
-        Credits
-        -------
-        
-        This Flask extension is based upon the `Decorator for the HTTP Access 
Control <http://flask.pocoo.org/snippets/56/>`__ written by Armin Ronacher.
-        
-        .. |Build Status| image:: 
https://api.travis-ci.org/corydolphin/flask-cors.svg?branch=master
-           :target: https://travis-ci.org/corydolphin/flask-cors
-        .. |Latest Version| image:: 
https://img.shields.io/pypi/v/Flask-Cors.svg
-           :target: https://pypi.python.org/pypi/Flask-Cors/
-        .. |Supported Python versions| image:: 
https://img.shields.io/pypi/pyversions/Flask-Cors.svg
-           :target: https://img.shields.io/pypi/pyversions/Flask-Cors.svg
-        .. |License| image:: http://img.shields.io/:license-mit-blue.svg
-           :target: https://pypi.python.org/pypi/Flask-Cors/
-        
 Platform: any
 Classifier: Environment :: Web Environment
 Classifier: Intended Audience :: Developers
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.4
-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 :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
+License-File: LICENSE
+
+Flask-CORS
+==========
+
+|Build Status| |Latest Version| |Supported Python versions|
+|License|
+
+A Flask extension for handling Cross Origin Resource Sharing (CORS), making 
cross-origin AJAX possible.
+
+This package has a simple philosophy: when you want to enable CORS, you wish 
to enable it for all use cases on a domain. 
+This means no mucking around with different allowed headers, methods, etc. 
+
+By default, submission of cookies across domains is disabled due to the 
security implications. 
+Please see the documentation for how to enable credential'ed requests, and 
please make sure you add some sort of `CSRF 
<http://en.wikipedia.org/wiki/Cross-site_request_forgery>`__ protection before 
doing so!
+
+Installation
+------------
+
+Install the extension with using pip, or easy\_install.
+
+.. code:: bash
+
+    $ pip install -U flask-cors
+
+Usage
+-----
+
+This package exposes a Flask extension which by default enables CORS support 
on all routes, for all origins and methods. 
+It allows parameterization of all CORS headers on a per-resource level. 
+The package also contains a decorator, for those who prefer this approach.
+
+Simple Usage
+~~~~~~~~~~~~
+
+In the simplest case, initialize the Flask-Cors extension with default 
arguments in order to allow CORS for all domains on all routes. 
+See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
+
+.. code:: python
+
+
+    from flask import Flask
+    from flask_cors import CORS
+
+    app = Flask(__name__)
+    CORS(app)
+
+    @app.route("/")
+    def helloWorld():
+      return "Hello, cross-origin-world!"
+
+Resource specific CORS
+^^^^^^^^^^^^^^^^^^^^^^
+
+Alternatively, you can specify CORS options on a resource and origin level of 
granularity by passing a dictionary as the `resources` option, mapping paths to 
a set of options. 
+See the full list of options in the `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
+
+.. code:: python
+
+    app = Flask(__name__)
+    cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
+
+    @app.route("/api/v1/users")
+    def list_users():
+      return "user example"
+
+Route specific CORS via decorator
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This extension also exposes a simple decorator to decorate flask routes with. 
+Simply add ``@cross_origin()`` below a call to Flask's ``@app.route(..)`` to 
allow CORS on a given route. 
+See the full list of options in the `decorator documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html#decorator>`__.
+
+.. code:: python
+
+    @app.route("/")
+    @cross_origin()
+    def helloWorld():
+      return "Hello, cross-origin-world!"
+
+Documentation
+-------------
+
+For a full list of options, please see the full `documentation 
<https://flask-cors.corydolphin.com/en/latest/api.html>`__
+
+Troubleshooting
+---------------
+
+If things aren't working as you expect, enable logging to help understand what 
is going on under the hood, and why.
+
+.. code:: python
+
+    logging.getLogger('flask_cors').level = logging.DEBUG
+
+
+Tests
+-----
+
+A simple set of tests is included in ``test/``. 
+To run, install nose, and simply invoke ``nosetests`` or ``python setup.py 
test`` to exercise the tests.
+
+If nosetests does not work for you, due to it no longer working with newer 
python versions.
+You can use pytest to run the tests instead.
+
+Contributing
+------------
+
+Questions, comments or improvements? 
+Please create an issue on `Github 
<https://github.com/corydolphin/flask-cors>`__, tweet at `@corydolphin 
<https://twitter.com/corydolphin>`__ or send me an email. 
+I do my best to include every contribution proposed in any way that I can.
+
+Credits
+-------
+
+This Flask extension is based upon the `Decorator for the HTTP Access Control 
<https://web.archive.org/web/20190128010149/http://flask.pocoo.org/snippets/56/>`__
 written by Armin Ronacher.
+
+.. |Build Status| image:: 
https://api.travis-ci.org/corydolphin/flask-cors.svg?branch=master
+   :target: https://travis-ci.org/corydolphin/flask-cors
+.. |Latest Version| image:: https://img.shields.io/pypi/v/Flask-Cors.svg
+   :target: https://pypi.python.org/pypi/Flask-Cors/
+.. |Supported Python versions| image:: 
https://img.shields.io/pypi/pyversions/Flask-Cors.svg
+   :target: https://img.shields.io/pypi/pyversions/Flask-Cors.svg
+.. |License| image:: http://img.shields.io/:license-mit-blue.svg
+   :target: https://pypi.python.org/pypi/Flask-Cors/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/README.rst 
new/Flask-Cors-4.0.0/README.rst
--- old/Flask-Cors-3.0.10/README.rst    2021-01-06 01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/README.rst     2023-06-26 07:38:24.000000000 +0200
@@ -97,6 +97,9 @@
 A simple set of tests is included in ``test/``. 
 To run, install nose, and simply invoke ``nosetests`` or ``python setup.py 
test`` to exercise the tests.
 
+If nosetests does not work for you, due to it no longer working with newer 
python versions.
+You can use pytest to run the tests instead.
+
 Contributing
 ------------
 
@@ -107,7 +110,7 @@
 Credits
 -------
 
-This Flask extension is based upon the `Decorator for the HTTP Access Control 
<http://flask.pocoo.org/snippets/56/>`__ written by Armin Ronacher.
+This Flask extension is based upon the `Decorator for the HTTP Access Control 
<https://web.archive.org/web/20190128010149/http://flask.pocoo.org/snippets/56/>`__
 written by Armin Ronacher.
 
 .. |Build Status| image:: 
https://api.travis-ci.org/corydolphin/flask-cors.svg?branch=master
    :target: https://travis-ci.org/corydolphin/flask-cors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/docs/api.rst 
new/Flask-Cors-4.0.0/docs/api.rst
--- old/Flask-Cors-3.0.10/docs/api.rst  2021-01-06 01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/docs/api.rst   2023-06-26 07:38:24.000000000 +0200
@@ -70,7 +70,7 @@
    :lines: 29-
 
 
-Using the `cross_origins` decorator
+Using the `cross_origin` decorator
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. literalinclude:: ../examples/view_based_example.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/docs/configuration.rst 
new/Flask-Cors-4.0.0/docs/configuration.rst
--- old/Flask-Cors-3.0.10/docs/configuration.rst        2021-01-06 
01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/docs/configuration.rst 2023-06-26 07:38:24.000000000 
+0200
@@ -21,7 +21,7 @@
 
 CORS_ALLOW_HEADERS (:py:class:`~typing.List` or :py:class:`str`)
    Headers to accept from the client.
-   Headers in the :http:header:`Access-Control-Request-Headers` request header 
(usually part of the preflight OPTIONS request) maching headers in this list 
will be included in the :http:header:`Access-Control-Allow-Headers` response 
header.
+   Headers in the :http:header:`Access-Control-Request-Headers` request header 
(usually part of the preflight OPTIONS request) matching headers in this list 
will be included in the :http:header:`Access-Control-Allow-Headers` response 
header.
 
 CORS_ALWAYS_SEND (:py:class:`bool`)
    Usually, if a request doesn't include an :http:header:`Origin` header, the 
client did not request CORS.
@@ -114,7 +114,7 @@
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 It's good practice to keep your application configuration settings in one 
place.
-This is also possible with Flask-CORS using the same configuration options in 
the Flas application's config object.
+This is also possible with Flask-CORS using the same configuration options in 
the Flask application's config object.
 
 Default settings
 ^^^^^^^^^^^^^^^^
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/examples/app_based_example.py 
new/Flask-Cors-4.0.0/examples/app_based_example.py
--- old/Flask-Cors-3.0.10/examples/app_based_example.py 2021-01-06 
01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/examples/app_based_example.py  2023-06-26 
07:38:24.000000000 +0200
@@ -143,7 +143,7 @@
 @app.errorhandler(500)
 def server_error(e):
     logging.exception('An error occurred during a request. %s', e)
-    return "An internal error occured", 500
+    return "An internal error occurred", 500
 
 
 if __name__ == "__main__":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/flask_cors/__init__.py 
new/Flask-Cors-4.0.0/flask_cors/__init__.py
--- old/Flask-Cors-3.0.10/flask_cors/__init__.py        2021-01-06 
01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/flask_cors/__init__.py 2023-06-26 07:38:24.000000000 
+0200
@@ -24,4 +24,4 @@
 rootlogger.addHandler(NullHandler())
 
 if rootlogger.level == logging.NOTSET:
-    rootlogger.setLevel(logging.WARN)
\ No newline at end of file
+    rootlogger.setLevel(logging.WARN)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/flask_cors/core.py 
new/Flask-Cors-4.0.0/flask_cors/core.py
--- old/Flask-Cors-3.0.10/flask_cors/core.py    2021-01-06 01:25:15.000000000 
+0100
+++ new/Flask-Cors-4.0.0/flask_cors/core.py     2023-06-26 07:38:24.000000000 
+0200
@@ -9,14 +9,8 @@
 """
 import re
 import logging
-try:
-    # on python 3
-    from collections.abc import Iterable
-except ImportError:
-    # on python 2.7 and pypy
-    from collections import Iterable
+from collections.abc import Iterable
 from datetime import timedelta
-from six import string_types
 from flask import request, current_app
 from werkzeug.datastructures import Headers, MultiDict
 
@@ -29,10 +23,12 @@
 ACL_EXPOSE_HEADERS = 'Access-Control-Expose-Headers'
 ACL_CREDENTIALS = 'Access-Control-Allow-Credentials'
 ACL_MAX_AGE = 'Access-Control-Max-Age'
+ACL_RESPONSE_PRIVATE_NETWORK = 'Access-Control-Allow-Private-Network'
 
 # Request Header
 ACL_REQUEST_METHOD = 'Access-Control-Request-Method'
 ACL_REQUEST_HEADERS = 'Access-Control-Request-Headers'
+ACL_REQUEST_HEADER_PRIVATE_NETWORK = 'Access-Control-Request-Private-Network'
 
 ALL_METHODS = ['GET', 'HEAD', 'POST', 'OPTIONS', 'PUT', 'PATCH', 'DELETE']
 CONFIG_OPTIONS = ['CORS_ORIGINS', 'CORS_METHODS', 'CORS_ALLOW_HEADERS',
@@ -80,7 +76,7 @@
                       key=pattern_length,
                       reverse=True)
 
-    elif isinstance(resources, string_types):
+    elif isinstance(resources, str):
         return [(re_fix(resources), {})]
 
     elif isinstance(resources, Iterable):
@@ -186,7 +182,11 @@
     headers[ACL_EXPOSE_HEADERS] = options.get('expose_headers')
 
     if options.get('supports_credentials'):
-        headers[ACL_CREDENTIALS] = 'true'  # case sensative
+        headers[ACL_CREDENTIALS] = 'true'  # case sensitive
+
+    if ACL_REQUEST_HEADER_PRIVATE_NETWORK in request_headers \
+            and request_headers.get(ACL_REQUEST_HEADER_PRIVATE_NETWORK) == 
'true':
+        headers[ACL_RESPONSE_PRIVATE_NETWORK] = 'true'
 
     # This is a preflight request
     # http://www.w3.org/TR/cors/#resource-preflight-requests
@@ -223,7 +223,7 @@
 
 def set_cors_headers(resp, options):
     """
-    Performs the actual evaluation of Flas-CORS options and actually
+    Performs the actual evaluation of Flask-CORS options and actually
     modifies the response object.
 
     This function is used both in the decorator and the after_request
@@ -323,9 +323,8 @@
     """
     if obj is None:
         return None
-    elif(not isinstance(obj, string_types)
-            and isinstance(obj, Iterable)):
-        return ', '.join(str(item) for item in sorted(obj))
+    elif not isinstance(obj, str) and isinstance(obj, Iterable):
+        return ", ".join(str(item) for item in sorted(obj))
     else:
         return str(obj)
 
@@ -340,7 +339,7 @@
     """
     Wraps scalars or string types as a list, or returns the iterable instance.
     """
-    if isinstance(inst, string_types):
+    if isinstance(inst, str):
         return [inst]
     elif not isinstance(inst, Iterable):
         return [inst]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/flask_cors/decorator.py 
new/Flask-Cors-4.0.0/flask_cors/decorator.py
--- old/Flask-Cors-3.0.10/flask_cors/decorator.py       2021-01-06 
01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/flask_cors/decorator.py        2023-06-26 
07:38:24.000000000 +0200
@@ -9,9 +9,11 @@
     :copyright: (c) 2016 by Cory Dolphin.
     :license: MIT, see LICENSE for more details.
 """
+import logging
 from functools import update_wrapper
 from flask import make_response, request, current_app
-from .core import *
+
+from .core import get_cors_options, set_cors_headers, FLASK_CORS_EVALUATED
 
 LOG = logging.getLogger(__name__)
 
@@ -21,8 +23,8 @@
     In the simplest case, simply use the default parameters to allow all
     origins in what is the most permissive configuration. If this method
     modifies state or performs authentication which may be brute-forced, you
-    should add some degree of protection, such as Cross Site Forgery
-    Request protection.
+    should add some degree of protection, such as Cross Site Request Forgery
+    protection.
 
     :param origins:
         The origin, or list of origins to allow requests from.
@@ -59,7 +61,7 @@
         `Access-Control-Allow-Credentials` header in responses. This allows
         cookies and credentials to be submitted across domains.
 
-        :note: This option cannot be used in conjuction with a '*' origin
+        :note: This option cannot be used in conjunction with a '*' origin
 
         Default : False
     :type supports_credentials: bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/flask_cors/extension.py 
new/Flask-Cors-4.0.0/flask_cors/extension.py
--- old/Flask-Cors-3.0.10/flask_cors/extension.py       2021-01-06 
01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/flask_cors/extension.py        2023-06-26 
07:38:24.000000000 +0200
@@ -8,12 +8,19 @@
     :copyright: (c) 2016 by Cory Dolphin.
     :license: MIT, see LICENSE for more details.
 """
+import logging
+from urllib.parse import unquote_plus
 from flask import request
-from .core import *
-try:
-    from urllib.parse import unquote_plus
-except ImportError:
-    from urllib import unquote_plus
+
+from .core import (
+    parse_resources,
+    get_cors_options,
+    get_regexp_pattern,
+    ACL_ORIGIN,
+    try_match,
+    set_cors_headers
+)
+
 
 LOG = logging.getLogger(__name__)
 
@@ -61,7 +68,11 @@
     :param origins:
         The origin, or list of origins to allow requests from.
         The origin(s) may be regular expressions, case-sensitive strings,
-        or else an asterisk
+        or else an asterisk.
+
+        :note: origins must include the schema and the port (if not port 80),
+        e.g.,
+        `CORS(app, origins=["http://localhost:8000";, "https://example.com";])`.
 
         Default : '*'
     :type origins: list, string or regex
@@ -149,7 +160,7 @@
                      for (pattern, opts) in resources
                     ]
 
-        # Create a human readable form of these resources by converting the 
compiled
+        # Create a human-readable form of these resources by converting the 
compiled
         # regular expressions into strings.
         resources_human = {get_regexp_pattern(pattern): opts for 
(pattern,opts) in resources}
         LOG.debug("Configuring CORS with resources: %s", resources_human)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/flask_cors/version.py 
new/Flask-Cors-4.0.0/flask_cors/version.py
--- old/Flask-Cors-3.0.10/flask_cors/version.py 2021-01-06 01:25:15.000000000 
+0100
+++ new/Flask-Cors-4.0.0/flask_cors/version.py  2023-06-26 07:38:24.000000000 
+0200
@@ -1 +1 @@
-__version__ = '3.0.10'
+__version__ = '4.0.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/requirements.txt 
new/Flask-Cors-4.0.0/requirements.txt
--- old/Flask-Cors-3.0.10/requirements.txt      2021-01-06 01:25:15.000000000 
+0100
+++ new/Flask-Cors-4.0.0/requirements.txt       2023-06-26 07:38:24.000000000 
+0200
@@ -1,2 +1 @@
 Flask>=0.9
-Six
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Flask-Cors-3.0.10/setup.py 
new/Flask-Cors-4.0.0/setup.py
--- old/Flask-Cors-3.0.10/setup.py      2021-01-06 01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/setup.py       2023-06-26 07:38:24.000000000 +0200
@@ -33,23 +33,20 @@
     platforms='any',
     install_requires=install_requires,
     tests_require=[
-        'nose',
+        'pytest',
         'packaging'
     ],
-    test_suite='nose.collector',
+    test_suite='tests',
     classifiers=[
         'Environment :: Web Environment',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: MIT License',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-Cors-3.0.10/tests/decorator/test_exception_interception.py 
new/Flask-Cors-4.0.0/tests/decorator/test_exception_interception.py
--- old/Flask-Cors-3.0.10/tests/decorator/test_exception_interception.py        
2021-01-06 01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/tests/decorator/test_exception_interception.py 
2023-06-26 07:38:24.000000000 +0200
@@ -117,7 +117,7 @@
         '''
             If a 500 handler is setup by the user, responses should have
             CORS matching rules applied, regardless of whether or not
-            intercept_exceptions is enbaled.
+            intercept_exceptions is enabled.
         '''
         return_string = "Simple error handler"
 
@@ -168,7 +168,7 @@
         '''
             If a 500 handler is setup by the user, responses should have
             CORS matching rules applied, regardless of whether or not
-            intercept_exceptions is enbaled.
+            intercept_exceptions is enabled.
         '''
         return_string = "Simple error handler"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Flask-Cors-3.0.10/tests/extension/test_app_extension.py 
new/Flask-Cors-4.0.0/tests/extension/test_app_extension.py
--- old/Flask-Cors-3.0.10/tests/extension/test_app_extension.py 2021-01-06 
01:25:15.000000000 +0100
+++ new/Flask-Cors-4.0.0/tests/extension/test_app_extension.py  2023-06-26 
07:38:24.000000000 +0200
@@ -338,7 +338,7 @@
 class AppExtensionCompiledRegexp(FlaskCorsTestCase):
     def test_compiled_regex(self):
         '''
-            Ensure we do not error if the user sepcifies an bad regular
+            Ensure we do not error if the user specifies an bad regular
             expression.
         '''
         import re
@@ -363,7 +363,7 @@
 class AppExtensionBadRegexp(FlaskCorsTestCase):
     def test_value_error(self):
         '''
-            Ensure we do not error if the user sepcifies an bad regular
+            Ensure we do not error if the user specifies an bad regular
             expression.
         '''
 

Reply via email to