mirror of https://github.com/pallets/flask.git
				
				
				
			
						commit
						31d3c7e719
					
				
							
								
								
									
										12
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										12
									
								
								AUTHORS
								
								
								
								
							|  | @ -1,12 +0,0 @@ | ||||||
| Flask is developed and maintained by the Pallets team and community |  | ||||||
| contributors. It was created by Armin Ronacher. The core maintainers |  | ||||||
| are: |  | ||||||
| 
 |  | ||||||
| - David Lord (davidism) |  | ||||||
| - Adrian Mönnich (ThiefMaster) |  | ||||||
| - Armin Ronacher (mitsuhiko) |  | ||||||
| - Marcus Unterwaditzer (untitaker) |  | ||||||
| 
 |  | ||||||
| A full list of contributors is available from git with:: |  | ||||||
| 
 |  | ||||||
|     git shortlog -sne |  | ||||||
							
								
								
									
										1039
									
								
								CHANGES.rst
								
								
								
								
							
							
						
						
									
										1039
									
								
								CHANGES.rst
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -9,7 +9,7 @@ Support questions | ||||||
| Please, don't use the issue tracker for this. Use one of the following | Please, don't use the issue tracker for this. Use one of the following | ||||||
| resources for questions about your own code: | resources for questions about your own code: | ||||||
| 
 | 
 | ||||||
| * The ``#get-help`` channel on our Discord chat: https://discord.gg/t6rrQZH | * The ``#get-help`` channel on our Discord chat: https://discordapp.com/invite/t6rrQZH | ||||||
| 
 | 
 | ||||||
|   * The IRC channel ``#pocoo`` on FreeNode is linked to Discord, but |   * The IRC channel ``#pocoo`` on FreeNode is linked to Discord, but | ||||||
|     Discord is preferred. |     Discord is preferred. | ||||||
|  | @ -24,15 +24,15 @@ Reporting issues | ||||||
| ---------------- | ---------------- | ||||||
| 
 | 
 | ||||||
| - Describe what you expected to happen. | - Describe what you expected to happen. | ||||||
| - If possible, include a `minimal, complete, and verifiable example`_ to help | - If possible, include a `minimal reproducible example`_ to help us | ||||||
|   us identify the issue. This also helps check that the issue is not with your |   identify the issue. This also helps check that the issue is not with | ||||||
|   own code. |   your own code. | ||||||
| - Describe what actually happened. Include the full traceback if there was an | - Describe what actually happened. Include the full traceback if there was an | ||||||
|   exception. |   exception. | ||||||
| - List your Python, Flask, and Werkzeug versions. If possible, check if this | - List your Python, Flask, and Werkzeug versions. If possible, check if this | ||||||
|   issue is already fixed in the repository. |   issue is already fixed in the repository. | ||||||
| 
 | 
 | ||||||
| .. _minimal, complete, and verifiable example: https://stackoverflow.com/help/mcve | .. _minimal reproducible example: https://stackoverflow.com/help/minimal-reproducible-example | ||||||
| 
 | 
 | ||||||
| Submitting patches | Submitting patches | ||||||
| ------------------ | ------------------ | ||||||
|  | @ -76,10 +76,10 @@ First time setup | ||||||
| 
 | 
 | ||||||
| .. _GitHub account: https://github.com/join | .. _GitHub account: https://github.com/join | ||||||
| .. _latest version of git: https://git-scm.com/downloads | .. _latest version of git: https://git-scm.com/downloads | ||||||
| .. _username: https://help.github.com/articles/setting-your-username-in-git/ | .. _username: https://help.github.com/en/articles/setting-your-username-in-git | ||||||
| .. _email: https://help.github.com/articles/setting-your-email-in-git/ | .. _email: https://help.github.com/en/articles/setting-your-commit-email-address-in-git | ||||||
| .. _Fork: https://github.com/pallets/flask/fork | .. _Fork: https://github.com/pallets/flask/fork | ||||||
| .. _Clone: https://help.github.com/articles/fork-a-repo/#step-2-create-a-local-clone-of-your-fork | .. _Clone: https://help.github.com/en/articles/fork-a-repo#step-2-create-a-local-clone-of-your-fork | ||||||
| 
 | 
 | ||||||
| Start coding | Start coding | ||||||
| ~~~~~~~~~~~~ | ~~~~~~~~~~~~ | ||||||
|  | @ -96,8 +96,8 @@ Start coding | ||||||
|         git checkout -b your-branch-name origin/master |         git checkout -b your-branch-name origin/master | ||||||
| 
 | 
 | ||||||
| - Using your favorite editor, make your changes, `committing as you go`_. | - Using your favorite editor, make your changes, `committing as you go`_. | ||||||
| - Try to follow `PEP8`_, but you may ignore the line length limit if following | - Try to follow `PEP8`_. We have a pre-commit config and tests that will | ||||||
|   it would make the code uglier. |   ensure the code follows our style guide. | ||||||
| - Include tests that cover any code changes you make. Make sure the test fails | - Include tests that cover any code changes you make. Make sure the test fails | ||||||
|   without your patch. `Run the tests. <contributing-testsuite_>`_. |   without your patch. `Run the tests. <contributing-testsuite_>`_. | ||||||
| - Push your commits to GitHub and `create a pull request`_ by using:: | - Push your commits to GitHub and `create a pull request`_ by using:: | ||||||
|  | @ -106,9 +106,9 @@ Start coding | ||||||
| 
 | 
 | ||||||
| - Celebrate 🎉 | - Celebrate 🎉 | ||||||
| 
 | 
 | ||||||
| .. _committing as you go: http://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html#commit-your-changes | .. _committing as you go: https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html#commit-your-changes | ||||||
| .. _PEP8: https://pep8.org/ | .. _PEP8: https://pep8.org/ | ||||||
| .. _create a pull request: https://help.github.com/articles/creating-a-pull-request/ | .. _create a pull request: https://help.github.com/en/articles/creating-a-pull-request | ||||||
| 
 | 
 | ||||||
| .. _contributing-testsuite: | .. _contributing-testsuite: | ||||||
| 
 | 
 | ||||||
|  | @ -157,20 +157,9 @@ Build the docs in the ``docs`` directory using Sphinx:: | ||||||
| 
 | 
 | ||||||
| Open ``_build/html/index.html`` in your browser to view the docs. | Open ``_build/html/index.html`` in your browser to view the docs. | ||||||
| 
 | 
 | ||||||
| Read more about `Sphinx <http://www.sphinx-doc.org>`_. | Read more about `Sphinx <https://www.sphinx-doc.org/en/master/>`_. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| make targets |  | ||||||
| ~~~~~~~~~~~~ |  | ||||||
| 
 |  | ||||||
| Flask provides a ``Makefile`` with various shortcuts. They will ensure that |  | ||||||
| all dependencies are installed. |  | ||||||
| 
 |  | ||||||
| - ``make test`` runs the basic test suite with ``pytest`` |  | ||||||
| - ``make cov`` runs the basic test suite with ``coverage`` |  | ||||||
| - ``make test-all`` runs the full test suite with ``tox`` |  | ||||||
| - ``make docs`` builds the HTML documentation |  | ||||||
| 
 |  | ||||||
| Caution: zero-padded file modes | Caution: zero-padded file modes | ||||||
| ------------------------------- | ------------------------------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										31
									
								
								LICENSE
								
								
								
								
							
							
						
						
									
										31
									
								
								LICENSE
								
								
								
								
							|  | @ -1,31 +0,0 @@ | ||||||
| Copyright © 2010 by the Pallets team. |  | ||||||
| 
 |  | ||||||
| Some rights reserved. |  | ||||||
| 
 |  | ||||||
| Redistribution and use in source and binary forms of the software as |  | ||||||
| well as documentation, with or without modification, are permitted |  | ||||||
| provided that the following conditions are met: |  | ||||||
| 
 |  | ||||||
| * Redistributions of source code must retain the above copyright notice, |  | ||||||
|   this list of conditions and the following disclaimer. |  | ||||||
| 
 |  | ||||||
| * Redistributions in binary form must reproduce the above copyright |  | ||||||
|   notice, this list of conditions and the following disclaimer in the |  | ||||||
|   documentation and/or other materials provided with the distribution. |  | ||||||
| 
 |  | ||||||
| * Neither the name of the copyright holder nor the names of its |  | ||||||
|   contributors may be used to endorse or promote products derived from |  | ||||||
|   this software without specific prior written permission. |  | ||||||
| 
 |  | ||||||
| THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY THE COPYRIGHT HOLDERS AND |  | ||||||
| CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, |  | ||||||
| BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |  | ||||||
| FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |  | ||||||
| COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |  | ||||||
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |  | ||||||
| NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |  | ||||||
| USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |  | ||||||
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  | ||||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |  | ||||||
| THIS SOFTWARE AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF |  | ||||||
| SUCH DAMAGE. |  | ||||||
|  | @ -0,0 +1,28 @@ | ||||||
|  | Copyright 2010 Pallets | ||||||
|  | 
 | ||||||
|  | Redistribution and use in source and binary forms, with or without | ||||||
|  | modification, are permitted provided that the following conditions are | ||||||
|  | met: | ||||||
|  | 
 | ||||||
|  | 1.  Redistributions of source code must retain the above copyright | ||||||
|  |     notice, this list of conditions and the following disclaimer. | ||||||
|  | 
 | ||||||
|  | 2.  Redistributions in binary form must reproduce the above copyright | ||||||
|  |     notice, this list of conditions and the following disclaimer in the | ||||||
|  |     documentation and/or other materials provided with the distribution. | ||||||
|  | 
 | ||||||
|  | 3.  Neither the name of the copyright holder nor the names of its | ||||||
|  |     contributors may be used to endorse or promote products derived from | ||||||
|  |     this software without specific prior written permission. | ||||||
|  | 
 | ||||||
|  | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||||
|  | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||||
|  | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||||||
|  | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||||||
|  | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||||||
|  | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | ||||||
|  | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | ||||||
|  | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||||||
|  | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||||||
|  | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||||
|  | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
							
								
								
									
										13
									
								
								MANIFEST.in
								
								
								
								
							
							
						
						
									
										13
									
								
								MANIFEST.in
								
								
								
								
							|  | @ -1,11 +1,8 @@ | ||||||
| include Makefile CHANGES.rst CONTRIBUTING.rst LICENSE AUTHORS tox.ini | include CHANGES.rst | ||||||
| 
 | include CONTRIBUTING.rst | ||||||
|  | include tox.ini | ||||||
| graft artwork | graft artwork | ||||||
| graft tests |  | ||||||
| graft examples |  | ||||||
| graft docs | graft docs | ||||||
| 
 |  | ||||||
| global-exclude *.py[co] |  | ||||||
| 
 |  | ||||||
| prune docs/_build | prune docs/_build | ||||||
| prune docs/_themes | graft examples | ||||||
|  | graft tests | ||||||
|  |  | ||||||
							
								
								
									
										35
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										35
									
								
								Makefile
								
								
								
								
							|  | @ -1,35 +0,0 @@ | ||||||
| .PHONY: all install-dev test coverage cov test-all tox docs audit release clean-pyc upload-docs ebook |  | ||||||
| 
 |  | ||||||
| all: test |  | ||||||
| 
 |  | ||||||
| install-dev: |  | ||||||
| 	pip install -q -e .[dev] |  | ||||||
| 
 |  | ||||||
| test: clean-pyc install-dev |  | ||||||
| 	pytest |  | ||||||
| 
 |  | ||||||
| coverage: clean-pyc install-dev |  | ||||||
| 	coverage run -m pytest |  | ||||||
| 	coverage report |  | ||||||
| 	coverage html |  | ||||||
| 
 |  | ||||||
| cov: coverage |  | ||||||
| 
 |  | ||||||
| test-all: install-dev |  | ||||||
| 	tox |  | ||||||
| 
 |  | ||||||
| tox: test-all |  | ||||||
| 
 |  | ||||||
| docs: clean-pyc install-dev |  | ||||||
| 	$(MAKE) -C docs html |  | ||||||
| 
 |  | ||||||
| audit: |  | ||||||
| 	python setup.py audit |  | ||||||
| 
 |  | ||||||
| release: |  | ||||||
| 	python scripts/make-release.py |  | ||||||
| 
 |  | ||||||
| clean-pyc: |  | ||||||
| 	find . -name '*.pyc' -exec rm -f {} + |  | ||||||
| 	find . -name '*.pyo' -exec rm -f {} + |  | ||||||
| 	find . -name '*~' -exec rm -f {} + |  | ||||||
|  | @ -32,9 +32,9 @@ A Simple Example | ||||||
| 
 | 
 | ||||||
|     app = Flask(__name__) |     app = Flask(__name__) | ||||||
| 
 | 
 | ||||||
|     @app.route('/') |     @app.route("/") | ||||||
|     def hello(): |     def hello(): | ||||||
|         return 'Hello, World!' |         return "Hello, World!" | ||||||
| 
 | 
 | ||||||
| .. code-block:: text | .. code-block:: text | ||||||
| 
 | 
 | ||||||
|  | @ -59,12 +59,10 @@ Links | ||||||
| 
 | 
 | ||||||
| * Website: https://www.palletsprojects.com/p/flask/ | * Website: https://www.palletsprojects.com/p/flask/ | ||||||
| * Documentation: http://flask.pocoo.org/docs/ | * Documentation: http://flask.pocoo.org/docs/ | ||||||
| * License: `BSD <https://github.com/pallets/flask/blob/master/LICENSE>`_ |  | ||||||
| * Releases: https://pypi.org/project/Flask/ | * Releases: https://pypi.org/project/Flask/ | ||||||
| * Code: https://github.com/pallets/flask | * Code: https://github.com/pallets/flask | ||||||
| * Issue tracker: https://github.com/pallets/flask/issues | * Issue tracker: https://github.com/pallets/flask/issues | ||||||
| * Test status: https://dev.azure.com/pallets/pallets/_build?definitionId=2 | * Test status: https://dev.azure.com/pallets/pallets/_build?definitionId=2 | ||||||
| * Test coverage: https://codecov.io/gh/pallets/flask |  | ||||||
| * Official chat: https://discord.gg/t6rrQZH | * Official chat: https://discord.gg/t6rrQZH | ||||||
| 
 | 
 | ||||||
| .. _WSGI: https://wsgi.readthedocs.io | .. _WSGI: https://wsgi.readthedocs.io | ||||||
|  |  | ||||||
|  | @ -1,20 +0,0 @@ | ||||||
| Copyright (c) 2010 by Armin Ronacher. |  | ||||||
| 
 |  | ||||||
| Some rights reserved. |  | ||||||
| 
 |  | ||||||
| This logo or a modified version may be used by anyone to refer to the |  | ||||||
| Flask project, but does not indicate endorsement by the project. |  | ||||||
| 
 |  | ||||||
| Redistribution and use in source (the SVG file) and binary forms (rendered |  | ||||||
| PNG files etc.) of the image, with or without modification, are permitted |  | ||||||
| provided that the following conditions are met: |  | ||||||
| 
 |  | ||||||
| * Redistributions of source code must retain the above copyright |  | ||||||
|   notice and this list of conditions. |  | ||||||
| 
 |  | ||||||
| * The names of the contributors to the Flask software (see AUTHORS) may |  | ||||||
|   not be used to endorse or promote products derived from this software |  | ||||||
|   without specific prior written permission. |  | ||||||
| 
 |  | ||||||
| Note: we would appreciate that you make the image a link to |  | ||||||
| http://flask.pocoo.org/ if you use it on a web page. |  | ||||||
|  | @ -0,0 +1,19 @@ | ||||||
|  | Copyright 2010 Pallets | ||||||
|  | 
 | ||||||
|  | This logo or a modified version may be used by anyone to refer to the | ||||||
|  | Flask project, but does not indicate endorsement by the project. | ||||||
|  | 
 | ||||||
|  | Redistribution and use in source (SVG) and binary (renders in PNG, etc.) | ||||||
|  | forms, with or without modification, are permitted provided that the | ||||||
|  | following conditions are met: | ||||||
|  | 
 | ||||||
|  | 1.  Redistributions of source code must retain the above copyright | ||||||
|  |     notice and this list of conditions. | ||||||
|  | 
 | ||||||
|  | 3.  Neither the name of the copyright holder nor the names of its | ||||||
|  |     contributors may be used to endorse or promote products derived from | ||||||
|  |     this software without specific prior written permission. | ||||||
|  | 
 | ||||||
|  | We would appreciate that you make the image a link to | ||||||
|  | https://palletsprojects.com/p/flask/ if you use it in a medium that | ||||||
|  | supports links. | ||||||
|  | @ -4,7 +4,6 @@ | ||||||
| # You can set these variables from the command line.
 | # You can set these variables from the command line.
 | ||||||
| SPHINXOPTS    = | SPHINXOPTS    = | ||||||
| SPHINXBUILD   = sphinx-build | SPHINXBUILD   = sphinx-build | ||||||
| SPHINXPROJ    = Flask |  | ||||||
| SOURCEDIR     = . | SOURCEDIR     = . | ||||||
| BUILDDIR      = _build | BUILDDIR      = _build | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 2.2 KiB | 
| Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 1.3 KiB | 
|  | @ -43,9 +43,9 @@ Incoming Request Data | ||||||
|    .. attribute:: base_url |    .. attribute:: base_url | ||||||
|    .. attribute:: url_root |    .. attribute:: url_root | ||||||
| 
 | 
 | ||||||
|       Provides different ways to look at the current `IRI |       Provides different ways to look at the current :rfc:`3987`. | ||||||
|       <http://tools.ietf.org/html/rfc3987>`_.  Imagine your application is |       Imagine your application is listening on the following application | ||||||
|       listening on the following application root:: |       root:: | ||||||
| 
 | 
 | ||||||
|           http://www.example.com/myapplication |           http://www.example.com/myapplication | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -44,7 +44,7 @@ The :ref:`app-dispatch` chapter shows in detail how to apply middleware. You | ||||||
| can introduce WSGI middleware to wrap your Flask instances and introduce fixes | can introduce WSGI middleware to wrap your Flask instances and introduce fixes | ||||||
| and changes at the layer between your Flask application and your HTTP | and changes at the layer between your Flask application and your HTTP | ||||||
| server. Werkzeug includes several `middlewares | server. Werkzeug includes several `middlewares | ||||||
| <http://werkzeug.pocoo.org/docs/middlewares/>`_. | <https://werkzeug.palletsprojects.com/middleware/>`_. | ||||||
| 
 | 
 | ||||||
| Fork. | Fork. | ||||||
| ----- | ----- | ||||||
|  |  | ||||||
|  | @ -1 +1,4 @@ | ||||||
|  | Changelog | ||||||
|  | ========= | ||||||
|  | 
 | ||||||
| .. include:: ../CHANGES.rst | .. include:: ../CHANGES.rst | ||||||
|  |  | ||||||
|  | @ -10,7 +10,7 @@ interface, in your virtualenv. Executed from the terminal, this script gives | ||||||
| access to built-in, extension, and application-defined commands. The ``--help`` | access to built-in, extension, and application-defined commands. The ``--help`` | ||||||
| option will give more information about any commands and options. | option will give more information about any commands and options. | ||||||
| 
 | 
 | ||||||
| .. _Click: http://click.pocoo.org/ | .. _Click: https://click.palletsprojects.com/ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Application Discovery | Application Discovery | ||||||
|  | @ -340,7 +340,7 @@ they are installed. Entry points are specified in :file:`setup.py` :: | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .. _entry point: https://packaging.python.org/tutorials/distributing-packages/#entry-points | .. _entry point: https://packaging.python.org/tutorials/packaging-projects/#entry-points | ||||||
| 
 | 
 | ||||||
| Inside :file:`flask_my_extension/commands.py` you can then export a Click | Inside :file:`flask_my_extension/commands.py` you can then export a Click | ||||||
| object:: | object:: | ||||||
|  | @ -409,7 +409,7 @@ script is available. Note that you don't need to set ``FLASK_APP``. :: | ||||||
|     The ``flask`` command, being separate from your code, does not have |     The ``flask`` command, being separate from your code, does not have | ||||||
|     this issue and is recommended in most cases. |     this issue and is recommended in most cases. | ||||||
| 
 | 
 | ||||||
| .. _console script: https://packaging.python.org/tutorials/distributing-packages/#console-scripts | .. _console script: https://packaging.python.org/tutorials/packaging-projects/#console-scripts | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| PyCharm Integration | PyCharm Integration | ||||||
|  |  | ||||||
							
								
								
									
										29
									
								
								docs/conf.py
								
								
								
								
							
							
						
						
									
										29
									
								
								docs/conf.py
								
								
								
								
							|  | @ -1,13 +1,11 @@ | ||||||
| # -*- coding: utf-8 -*- | from pallets_sphinx_themes import get_version | ||||||
| from __future__ import print_function | from pallets_sphinx_themes import ProjectLink | ||||||
| 
 |  | ||||||
| from pallets_sphinx_themes import ProjectLink, get_version |  | ||||||
| 
 | 
 | ||||||
| # Project -------------------------------------------------------------- | # Project -------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
| project = "Flask" | project = "Flask" | ||||||
| copyright = "2010 Pallets Team" | copyright = "2010 Pallets" | ||||||
| author = "Pallets Team" | author = "Pallets" | ||||||
| release, version = get_version("Flask") | release, version = get_version("Flask") | ||||||
| 
 | 
 | ||||||
| # General -------------------------------------------------------------- | # General -------------------------------------------------------------- | ||||||
|  | @ -18,10 +16,11 @@ extensions = [ | ||||||
|     "sphinx.ext.intersphinx", |     "sphinx.ext.intersphinx", | ||||||
|     "sphinxcontrib.log_cabinet", |     "sphinxcontrib.log_cabinet", | ||||||
|     "pallets_sphinx_themes", |     "pallets_sphinx_themes", | ||||||
|  |     "sphinx_issues", | ||||||
| ] | ] | ||||||
| intersphinx_mapping = { | intersphinx_mapping = { | ||||||
|     "python": ("https://docs.python.org/3/", None), |     "python": ("https://docs.python.org/3/", None), | ||||||
|     "werkzeug": ("http://werkzeug.pocoo.org/docs/", None), |     "werkzeug": ("https://werkzeug.palletsprojects.com/", None), | ||||||
|     "click": ("https://click.palletsprojects.com/", None), |     "click": ("https://click.palletsprojects.com/", None), | ||||||
|     "jinja": ("http://jinja.pocoo.org/docs/", None), |     "jinja": ("http://jinja.pocoo.org/docs/", None), | ||||||
|     "itsdangerous": ("https://itsdangerous.palletsprojects.com/", None), |     "itsdangerous": ("https://itsdangerous.palletsprojects.com/", None), | ||||||
|  | @ -29,6 +28,7 @@ intersphinx_mapping = { | ||||||
|     "wtforms": ("https://wtforms.readthedocs.io/en/stable/", None), |     "wtforms": ("https://wtforms.readthedocs.io/en/stable/", None), | ||||||
|     "blinker": ("https://pythonhosted.org/blinker/", None), |     "blinker": ("https://pythonhosted.org/blinker/", None), | ||||||
| } | } | ||||||
|  | issues_github_path = "pallets/flask" | ||||||
| 
 | 
 | ||||||
| # HTML ----------------------------------------------------------------- | # HTML ----------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
|  | @ -49,25 +49,16 @@ html_sidebars = { | ||||||
| } | } | ||||||
| singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]} | singlehtml_sidebars = {"index": ["project.html", "localtoc.html"]} | ||||||
| html_static_path = ["_static"] | html_static_path = ["_static"] | ||||||
| html_favicon = "_static/flask-favicon.ico" | html_favicon = "_static/flask-icon.png" | ||||||
| html_logo = "_static/flask.png" | html_logo = "_static/flask-icon.png" | ||||||
| html_title = "Flask Documentation ({})".format(version) | html_title = "Flask Documentation ({})".format(version) | ||||||
| html_show_sourcelink = False | html_show_sourcelink = False | ||||||
| 
 | 
 | ||||||
| # LaTeX ---------------------------------------------------------------- | # LaTeX ---------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
| latex_documents = [ | latex_documents = [ | ||||||
|     (master_doc, "Flask.tex", "Flask Documentation", "Pallets Team", "manual") |     (master_doc, "Flask-{}.tex".format(version), html_title, author, "manual") | ||||||
| ] | ] | ||||||
| latex_use_modindex = False |  | ||||||
| latex_elements = { |  | ||||||
|     "papersize": "a4paper", |  | ||||||
|     "pointsize": "12pt", |  | ||||||
|     "fontpkg": r"\usepackage{mathpazo}", |  | ||||||
|     "preamble": r"\usepackage{flaskstyle}", |  | ||||||
| } |  | ||||||
| latex_use_parts = True |  | ||||||
| latex_additional_files = ["flaskstyle.sty", "logo.pdf"] |  | ||||||
| 
 | 
 | ||||||
| # Local Extensions ----------------------------------------------------- | # Local Extensions ----------------------------------------------------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,62 +0,0 @@ | ||||||
| User's Guide |  | ||||||
| ------------ |  | ||||||
| 
 |  | ||||||
| This part of the documentation, which is mostly prose, begins with some |  | ||||||
| background information about Flask, then focuses on step-by-step |  | ||||||
| instructions for web development with Flask. |  | ||||||
| 
 |  | ||||||
| .. toctree:: |  | ||||||
|    :maxdepth: 2 |  | ||||||
| 
 |  | ||||||
|    foreword |  | ||||||
|    advanced_foreword |  | ||||||
|    installation |  | ||||||
|    quickstart |  | ||||||
|    tutorial/index |  | ||||||
|    templating |  | ||||||
|    testing |  | ||||||
|    errorhandling |  | ||||||
|    logging |  | ||||||
|    config |  | ||||||
|    signals |  | ||||||
|    views |  | ||||||
|    appcontext |  | ||||||
|    reqcontext |  | ||||||
|    blueprints |  | ||||||
|    extensions |  | ||||||
|    cli |  | ||||||
|    server |  | ||||||
|    shell |  | ||||||
|    patterns/index |  | ||||||
|    deploying/index |  | ||||||
|    becomingbig |  | ||||||
| 
 |  | ||||||
| API Reference |  | ||||||
| ------------- |  | ||||||
| 
 |  | ||||||
| If you are looking for information on a specific function, class or |  | ||||||
| method, this part of the documentation is for you. |  | ||||||
| 
 |  | ||||||
| .. toctree:: |  | ||||||
|    :maxdepth: 2 |  | ||||||
| 
 |  | ||||||
|    api |  | ||||||
| 
 |  | ||||||
| Additional Notes |  | ||||||
| ---------------- |  | ||||||
| 
 |  | ||||||
| Design notes, legal information and changelog are here for the interested. |  | ||||||
| 
 |  | ||||||
| .. toctree:: |  | ||||||
|    :maxdepth: 2 |  | ||||||
| 
 |  | ||||||
|    design |  | ||||||
|    htmlfaq |  | ||||||
|    security |  | ||||||
|    unicode |  | ||||||
|    extensiondev |  | ||||||
|    styleguide |  | ||||||
|    upgrading |  | ||||||
|    changelog |  | ||||||
|    license |  | ||||||
|    contributing |  | ||||||
|  | @ -58,4 +58,4 @@ work in that case: | ||||||
| 
 | 
 | ||||||
| For more information consult the documentation of your webserver. | For more information consult the documentation of your webserver. | ||||||
| 
 | 
 | ||||||
| .. _App Engine: https://developers.google.com/appengine/ | .. _App Engine: https://cloud.google.com/appengine/docs/ | ||||||
|  |  | ||||||
|  | @ -17,12 +17,9 @@ Hosted options | ||||||
| -------------- | -------------- | ||||||
| 
 | 
 | ||||||
| - `Deploying Flask on Heroku <https://devcenter.heroku.com/articles/getting-started-with-python>`_ | - `Deploying Flask on Heroku <https://devcenter.heroku.com/articles/getting-started-with-python>`_ | ||||||
| - `Deploying Flask on OpenShift <https://developers.openshift.com/en/python-flask.html>`_ |  | ||||||
| - `Deploying Flask on Webfaction <http://flask.pocoo.org/snippets/65/>`_ |  | ||||||
| - `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/python/getting-started/python-standard-env>`_ | ||||||
| - `Deploying Flask on AWS Elastic Beanstalk <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html>`_ | - `Deploying Flask on AWS Elastic Beanstalk <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html>`_ | ||||||
| - `Sharing your Localhost Server with Localtunnel <http://flask.pocoo.org/snippets/89/>`_ | - `Deploying on Azure (IIS) <https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python>`_ | ||||||
| - `Deploying on Azure (IIS) <https://azure.microsoft.com/documentation/articles/web-sites-python-configure/>`_ |  | ||||||
| - `Deploying on PythonAnywhere <https://help.pythonanywhere.com/pages/Flask/>`_ | - `Deploying on PythonAnywhere <https://help.pythonanywhere.com/pages/Flask/>`_ | ||||||
| 
 | 
 | ||||||
| Self-hosted options | Self-hosted options | ||||||
|  |  | ||||||
|  | @ -69,4 +69,4 @@ to have it in the URL root its a bit simpler:: | ||||||
| .. _nginx: https://nginx.org/ | .. _nginx: https://nginx.org/ | ||||||
| .. _lighttpd: https://www.lighttpd.net/ | .. _lighttpd: https://www.lighttpd.net/ | ||||||
| .. _cherokee: http://cherokee-project.com/ | .. _cherokee: http://cherokee-project.com/ | ||||||
| .. _uwsgi: http://projects.unbit.it/uwsgi/ | .. _uwsgi: https://uwsgi-docs.readthedocs.io/en/latest/ | ||||||
|  |  | ||||||
|  | @ -43,11 +43,10 @@ Running `uWSGI HTTP Router`_:: | ||||||
| 
 | 
 | ||||||
|     uwsgi --http 127.0.0.1:5000 --module myproject:app |     uwsgi --http 127.0.0.1:5000 --module myproject:app | ||||||
| 
 | 
 | ||||||
| For a more optimized setup, see `configuring uWSGI and NGINX`_. | For a more optimized setup, see :doc:`/deploying/uwsgi`. | ||||||
| 
 | 
 | ||||||
| .. _uWSGI: http://uwsgi-docs.readthedocs.io/en/latest/ | .. _uWSGI: https://uwsgi-docs.readthedocs.io/en/latest/ | ||||||
| .. _uWSGI HTTP Router: http://uwsgi-docs.readthedocs.io/en/latest/HTTP.html#the-uwsgi-http-https-router | .. _uWSGI HTTP Router: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html#the-uwsgi-http-https-router | ||||||
| .. _configuring uWSGI and NGINX: uwsgi.html#starting-your-app-with-uwsgi |  | ||||||
| 
 | 
 | ||||||
| Gevent | Gevent | ||||||
| ------- | ------- | ||||||
|  | @ -86,7 +85,7 @@ application from ``myproject``:: | ||||||
| 
 | 
 | ||||||
|     twistd -n web --port tcp:8080 --wsgi myproject.app |     twistd -n web --port tcp:8080 --wsgi myproject.app | ||||||
| 
 | 
 | ||||||
| .. _Twisted: https://twistedmatrix.com/ | .. _Twisted: https://twistedmatrix.com/trac/ | ||||||
| .. _Twisted Web: https://twistedmatrix.com/trac/wiki/TwistedWeb | .. _Twisted Web: https://twistedmatrix.com/trac/wiki/TwistedWeb | ||||||
| 
 | 
 | ||||||
| .. _deploying-proxy-setups: | .. _deploying-proxy-setups: | ||||||
|  |  | ||||||
|  | @ -34,10 +34,10 @@ Error Logging Tools | ||||||
| Sending error mails, even if just for critical ones, can become | Sending error mails, even if just for critical ones, can become | ||||||
| overwhelming if enough users are hitting the error and log files are | overwhelming if enough users are hitting the error and log files are | ||||||
| typically never looked at. This is why we recommend using `Sentry | typically never looked at. This is why we recommend using `Sentry | ||||||
| <https://www.getsentry.com/>`_ for dealing with application errors.  It's | <https://sentry.io/welcome/>`_ for dealing with application errors.  It's | ||||||
| available as an Open Source project `on GitHub | available as an Open Source project `on GitHub | ||||||
| <https://github.com/getsentry/sentry>`__ and is also available as a `hosted version | <https://github.com/getsentry/sentry>`__ and is also available as a `hosted version | ||||||
| <https://getsentry.com/signup/>`_ which you can try for free. Sentry | <https://sentry.io/signup/>`_ which you can try for free. Sentry | ||||||
| aggregates duplicate errors, captures the full stack trace and local | aggregates duplicate errors, captures the full stack trace and local | ||||||
| variables for debugging, and sends you mails based on new errors or | variables for debugging, and sends you mails based on new errors or | ||||||
| frequency thresholds. | frequency thresholds. | ||||||
|  |  | ||||||
|  | @ -4,9 +4,8 @@ Flask Extension Development | ||||||
| =========================== | =========================== | ||||||
| 
 | 
 | ||||||
| Flask, being a microframework, often requires some repetitive steps to get | Flask, being a microframework, often requires some repetitive steps to get | ||||||
| a third party library working.  Because very often these steps could be | a third party library working. Many such extensions are already available | ||||||
| abstracted to support multiple projects the `Flask Extension Registry`_ | on `PyPI <https://pypi.org/search/?c=Framework+%3A%3A+Flask>`_. | ||||||
| was created. |  | ||||||
| 
 | 
 | ||||||
| If you want to create your own Flask extension for something that does not | 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 | exist yet, this guide to extension development will help you get your | ||||||
|  | @ -328,8 +327,8 @@ extension to be approved you have to follow these guidelines: | ||||||
| 6.  Approved extensions must define all their dependencies in the | 6.  Approved extensions must define all their dependencies in the | ||||||
|     :file:`setup.py` file unless a dependency cannot be met because it is not |     :file:`setup.py` file unless a dependency cannot be met because it is not | ||||||
|     available on PyPI. |     available on PyPI. | ||||||
| 7.  The documentation must use the ``flask`` theme from the `Official | 7.  The documentation must use the ``flask`` theme from the | ||||||
|     Pallets Themes`_. |     `Official Pallets Themes`_. | ||||||
| 8.  The setup.py description (and thus the PyPI description) has to | 8.  The setup.py description (and thus the PyPI description) has to | ||||||
|     link to the documentation, website (if there is one) and there |     link to the documentation, website (if there is one) and there | ||||||
|     must be a link to automatically install the development version |     must be a link to automatically install the development version | ||||||
|  | @ -342,4 +341,4 @@ extension to be approved you have to follow these guidelines: | ||||||
| .. _OAuth extension: https://pythonhosted.org/Flask-OAuth/ | .. _OAuth extension: https://pythonhosted.org/Flask-OAuth/ | ||||||
| .. _mailinglist: http://flask.pocoo.org/mailinglist/ | .. _mailinglist: http://flask.pocoo.org/mailinglist/ | ||||||
| .. _IRC channel: http://flask.pocoo.org/community/irc/ | .. _IRC channel: http://flask.pocoo.org/community/irc/ | ||||||
| .. _Official Pallets Themes: https://pypi.org/project/pallets-sphinx-themes/ | .. _Official Pallets Themes: https://pypi.org/project/Pallets-Sphinx-Themes/ | ||||||
|  |  | ||||||
|  | @ -1,124 +0,0 @@ | ||||||
| \definecolor{TitleColor}{rgb}{0,0,0} |  | ||||||
| \definecolor{InnerLinkColor}{rgb}{0,0,0} |  | ||||||
| 
 |  | ||||||
| % Replace Unicode character 'PARTY POPPER' (U+1F389) with a non-breaking space. |  | ||||||
| % pdfLaTeX doesn't support Unicode. |  | ||||||
| \DeclareUnicodeCharacter{1F389}{\nobreakspace} |  | ||||||
| 
 |  | ||||||
| \renewcommand{\maketitle}{% |  | ||||||
|   \begin{titlepage}% |  | ||||||
|     \let\footnotesize\small |  | ||||||
|     \let\footnoterule\relax |  | ||||||
|     % Apply following fix only on PDF output, i.e. pdfoutput macro is not  |  | ||||||
|     % undefined |  | ||||||
|     \ifx\pdfoutput\undefined\else |  | ||||||
|       \begingroup |  | ||||||
|       % This \def is required to deal with multi-line authors; it |  | ||||||
|       % changes \\ to ', ' (comma-space), making it pass muster for |  | ||||||
|       % generating document info in the PDF file. |  | ||||||
|       \def\\{, } |  | ||||||
|       \pdfinfo{ |  | ||||||
|         /Author (\@author) |  | ||||||
|         /Title (\@title) |  | ||||||
|       } |  | ||||||
|       \endgroup |  | ||||||
|     \fi |  | ||||||
|     \begin{flushright}% |  | ||||||
|       %\sphinxlogo% |  | ||||||
|       {\center |  | ||||||
|         \vspace*{3cm} |  | ||||||
|       	\includegraphics{logo.pdf} |  | ||||||
|         \vspace{3cm} |  | ||||||
| 	\par |  | ||||||
|         {\rm\Huge \@title \par}% |  | ||||||
|         {\em\LARGE \py@release\releaseinfo \par} |  | ||||||
|         {\large |  | ||||||
|          \@date \par |  | ||||||
|          \py@authoraddress \par |  | ||||||
|         }}% |  | ||||||
|     \end{flushright}%\par |  | ||||||
|     \@thanks |  | ||||||
|   \end{titlepage}% |  | ||||||
|   \cleardoublepage% |  | ||||||
|   \setcounter{footnote}{0}% |  | ||||||
|   \let\thanks\relax\let\maketitle\relax |  | ||||||
|   %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| \fancypagestyle{normal}{ |  | ||||||
|   \fancyhf{} |  | ||||||
|   \fancyfoot[LE,RO]{{\thepage}} |  | ||||||
|   \fancyfoot[LO]{{\nouppercase{\rightmark}}} |  | ||||||
|   \fancyfoot[RE]{{\nouppercase{\leftmark}}} |  | ||||||
|   \fancyhead[LE,RO]{{ \@title, \py@release}} |  | ||||||
|   \renewcommand{\headrulewidth}{0.4pt} |  | ||||||
|   \renewcommand{\footrulewidth}{0.4pt} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| \fancypagestyle{plain}{ |  | ||||||
|   \fancyhf{} |  | ||||||
|   \fancyfoot[LE,RO]{{\thepage}} |  | ||||||
|   \renewcommand{\headrulewidth}{0pt} |  | ||||||
|   \renewcommand{\footrulewidth}{0.4pt} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| \titleformat{\section}{\Large}% |  | ||||||
|             {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} |  | ||||||
| \titleformat{\subsection}{\large}% |  | ||||||
|             {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} |  | ||||||
| \titleformat{\subsubsection}{}% |  | ||||||
|             {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} |  | ||||||
| \titleformat{\paragraph}{\large}% |  | ||||||
|             {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor} |  | ||||||
| 
 |  | ||||||
| \ChNameVar{\raggedleft\normalsize} |  | ||||||
| \ChNumVar{\raggedleft \bfseries\Large} |  | ||||||
| \ChTitleVar{\raggedleft \rm\Huge} |  | ||||||
| 
 |  | ||||||
| \renewcommand\thepart{\@Roman\c@part} |  | ||||||
| \renewcommand\part{% |  | ||||||
|    \pagestyle{plain} |  | ||||||
|    \if@noskipsec \leavevmode \fi |  | ||||||
|    \cleardoublepage |  | ||||||
|    \vspace*{6cm}% |  | ||||||
|    \@afterindentfalse |  | ||||||
|    \secdef\@part\@spart} |  | ||||||
| 
 |  | ||||||
| \def\@part[#1]#2{% |  | ||||||
|     \ifnum \c@secnumdepth >\m@ne |  | ||||||
|       \refstepcounter{part}% |  | ||||||
|       \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% |  | ||||||
|     \else |  | ||||||
|       \addcontentsline{toc}{part}{#1}% |  | ||||||
|     \fi |  | ||||||
|     {\parindent \z@ %\center |  | ||||||
|      \interlinepenalty \@M |  | ||||||
|      \normalfont |  | ||||||
|      \ifnum \c@secnumdepth >\m@ne |  | ||||||
|        \rm\Large \partname~\thepart |  | ||||||
|        \par\nobreak |  | ||||||
|      \fi |  | ||||||
|      \MakeUppercase{\rm\Huge #2}% |  | ||||||
|      \markboth{}{}\par}% |  | ||||||
|     \nobreak |  | ||||||
|     \vskip 8ex |  | ||||||
|     \@afterheading} |  | ||||||
| \def\@spart#1{% |  | ||||||
|     {\parindent \z@ %\center |  | ||||||
|      \interlinepenalty \@M |  | ||||||
|      \normalfont |  | ||||||
|      \huge \bfseries #1\par}% |  | ||||||
|      \nobreak |  | ||||||
|      \vskip 3ex |  | ||||||
|      \@afterheading} |  | ||||||
| 
 |  | ||||||
| % use inconsolata font |  | ||||||
| \usepackage{inconsolata} |  | ||||||
| 
 |  | ||||||
| % fix single quotes, for inconsolata. (does not work) |  | ||||||
| %%\usepackage{textcomp} |  | ||||||
| %%\begingroup |  | ||||||
| %%  \catcode`'=\active |  | ||||||
| %%  \g@addto@macro\@noligs{\let'\textsinglequote} |  | ||||||
| %%  \endgroup |  | ||||||
| %%\endinput |  | ||||||
|  | @ -186,7 +186,7 @@ Many other features have been added, as well. A good guide to new features | ||||||
| in HTML5 is Mark Pilgrim's soon-to-be-published book, `Dive Into HTML5`_. | in HTML5 is Mark Pilgrim's soon-to-be-published book, `Dive Into HTML5`_. | ||||||
| Not all of them are supported in browsers yet, however, so use caution. | Not all of them are supported in browsers yet, however, so use caution. | ||||||
| 
 | 
 | ||||||
| .. _Dive Into HTML5: http://diveintohtml5.info/ | .. _Dive Into HTML5: https://diveintohtml5.info/ | ||||||
| 
 | 
 | ||||||
| What should be used? | What should be used? | ||||||
| -------------------- | -------------------- | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| Welcome to Flask | Welcome to Flask | ||||||
| ================ | ================ | ||||||
| 
 | 
 | ||||||
| .. image:: _static/logo-full.png | .. image:: _static/flask-logo.png | ||||||
|     :alt: Flask: web development, one drop at a time |     :alt: Flask: web development, one drop at a time | ||||||
|     :align: center |     :align: center | ||||||
|     :target: https://palletsprojects.com/p/flask/ |     :target: https://palletsprojects.com/p/flask/ | ||||||
|  | @ -19,9 +19,73 @@ Flask depends on the `Jinja`_ template engine and the `Werkzeug`_ WSGI | ||||||
| toolkit. The documentation for these libraries can be found at: | toolkit. The documentation for these libraries can be found at: | ||||||
| 
 | 
 | ||||||
| - `Jinja documentation <http://jinja.pocoo.org/docs>`_ | - `Jinja documentation <http://jinja.pocoo.org/docs>`_ | ||||||
| - `Werkzeug documentation <http://werkzeug.pocoo.org/docs>`_ | - `Werkzeug documentation <https://werkzeug.palletsprojects.com/>`_ | ||||||
| 
 | 
 | ||||||
| .. _Jinja: https://www.palletsprojects.com/p/jinja/ | .. _Jinja: https://www.palletsprojects.com/p/jinja/ | ||||||
| .. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/ | .. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/ | ||||||
| 
 | 
 | ||||||
| .. include:: contents.rst.inc | 
 | ||||||
|  | User's Guide | ||||||
|  | ------------ | ||||||
|  | 
 | ||||||
|  | This part of the documentation, which is mostly prose, begins with some | ||||||
|  | background information about Flask, then focuses on step-by-step | ||||||
|  | instructions for web development with Flask. | ||||||
|  | 
 | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 2 | ||||||
|  | 
 | ||||||
|  |    foreword | ||||||
|  |    advanced_foreword | ||||||
|  |    installation | ||||||
|  |    quickstart | ||||||
|  |    tutorial/index | ||||||
|  |    templating | ||||||
|  |    testing | ||||||
|  |    errorhandling | ||||||
|  |    logging | ||||||
|  |    config | ||||||
|  |    signals | ||||||
|  |    views | ||||||
|  |    appcontext | ||||||
|  |    reqcontext | ||||||
|  |    blueprints | ||||||
|  |    extensions | ||||||
|  |    cli | ||||||
|  |    server | ||||||
|  |    shell | ||||||
|  |    patterns/index | ||||||
|  |    deploying/index | ||||||
|  |    becomingbig | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | API Reference | ||||||
|  | ------------- | ||||||
|  | 
 | ||||||
|  | If you are looking for information on a specific function, class or | ||||||
|  | method, this part of the documentation is for you. | ||||||
|  | 
 | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 2 | ||||||
|  | 
 | ||||||
|  |    api | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Additional Notes | ||||||
|  | ---------------- | ||||||
|  | 
 | ||||||
|  | Design notes, legal information and changelog are here for the interested. | ||||||
|  | 
 | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 2 | ||||||
|  | 
 | ||||||
|  |    design | ||||||
|  |    htmlfaq | ||||||
|  |    security | ||||||
|  |    unicode | ||||||
|  |    extensiondev | ||||||
|  |    styleguide | ||||||
|  |    upgrading | ||||||
|  |    changelog | ||||||
|  |    license | ||||||
|  |    contributing | ||||||
|  |  | ||||||
|  | @ -25,11 +25,11 @@ These distributions will be installed automatically when installing Flask. | ||||||
| * `Click`_ is a framework for writing command line applications. It provides | * `Click`_ is a framework for writing command line applications. It provides | ||||||
|   the ``flask`` command and allows adding custom management commands. |   the ``flask`` command and allows adding custom management commands. | ||||||
| 
 | 
 | ||||||
| .. _Werkzeug: http://werkzeug.pocoo.org/ | .. _Werkzeug: https://palletsprojects.com/p/werkzeug/ | ||||||
| .. _Jinja: http://jinja.pocoo.org/ | .. _Jinja: https://palletsprojects.com/p/jinja/ | ||||||
| .. _MarkupSafe: https://pypi.org/project/MarkupSafe/ | .. _MarkupSafe: https://palletsprojects.com/p/markupsafe/ | ||||||
| .. _ItsDangerous: https://pythonhosted.org/itsdangerous/ | .. _ItsDangerous: https://palletsprojects.com/p/itsdangerous/ | ||||||
| .. _Click: http://click.pocoo.org/ | .. _Click: https://palletsprojects.com/p/click/ | ||||||
| 
 | 
 | ||||||
| Optional dependencies | Optional dependencies | ||||||
| ~~~~~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~~~ | ||||||
|  |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| :orphan: |  | ||||||
| 
 |  | ||||||
| Flask Documentation |  | ||||||
| =================== |  | ||||||
| 
 |  | ||||||
| .. include:: contents.rst.inc |  | ||||||
|  | @ -1,48 +1,19 @@ | ||||||
| License | License | ||||||
| ======= | ======= | ||||||
| 
 | 
 | ||||||
| Flask is licensed under a three clause BSD License.  It basically means: | Source License | ||||||
| do whatever you want with it as long as the copyright in Flask sticks | -------------- | ||||||
| around, the conditions are not modified and the disclaimer is present. |  | ||||||
| Furthermore you must not use the names of the authors to promote derivatives |  | ||||||
| of the software without written consent. |  | ||||||
| 
 | 
 | ||||||
| The full license text can be found below (:ref:`flask-license`).  For the | This license applies to all files in the Flask repository and source | ||||||
| documentation and artwork different licenses apply. | distribution. This includes Flask's source code, the examples, and | ||||||
|  | tests, as well as the documentation. | ||||||
| 
 | 
 | ||||||
| .. _authors: | .. include:: ../LICENSE.rst | ||||||
| 
 |  | ||||||
| Authors |  | ||||||
| ------- |  | ||||||
| 
 |  | ||||||
| .. include:: ../AUTHORS |  | ||||||
| 
 |  | ||||||
| General License Definitions |  | ||||||
| --------------------------- |  | ||||||
| 
 |  | ||||||
| The following section contains the full license texts for Flask and the |  | ||||||
| documentation. |  | ||||||
| 
 |  | ||||||
| -   "AUTHORS" hereby refers to all the authors listed in the |  | ||||||
|     :ref:`authors` section. |  | ||||||
| 
 |  | ||||||
| -   The ":ref:`flask-license`" applies to all the source code shipped as |  | ||||||
|     part of Flask (Flask itself as well as the examples and the unittests) |  | ||||||
|     as well as documentation. |  | ||||||
| 
 |  | ||||||
| -   The ":ref:`artwork-license`" applies to the project's Horn-Logo. |  | ||||||
| 
 |  | ||||||
| .. _flask-license: |  | ||||||
| 
 |  | ||||||
| Flask License |  | ||||||
| ------------- |  | ||||||
| 
 |  | ||||||
| .. include:: ../LICENSE |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| .. _artwork-license: | Artwork License | ||||||
|  | --------------- | ||||||
| 
 | 
 | ||||||
| Flask Artwork License | This license applies to Flask's logo. | ||||||
| --------------------- |  | ||||||
| 
 | 
 | ||||||
| .. include:: ../artwork/LICENSE | .. include:: ../artwork/LICENSE.rst | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								docs/logo.pdf
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/logo.pdf
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -9,7 +9,6 @@ if "%SPHINXBUILD%" == "" ( | ||||||
| ) | ) | ||||||
| set SOURCEDIR=. | set SOURCEDIR=. | ||||||
| set BUILDDIR=_build | set BUILDDIR=_build | ||||||
| set SPHINXPROJ=Flask |  | ||||||
| 
 | 
 | ||||||
| if "%1" == "" goto help | if "%1" == "" goto help | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ Factories & Extensions | ||||||
| It's preferable to create your extensions and app factories so that the | It's preferable to create your extensions and app factories so that the | ||||||
| extension object does not initially get bound to the application. | extension object does not initially get bound to the application. | ||||||
| 
 | 
 | ||||||
| Using `Flask-SQLAlchemy <http://flask-sqlalchemy.pocoo.org/>`_, | Using `Flask-SQLAlchemy <https://flask-sqlalchemy.palletsprojects.com/>`_, | ||||||
| as an example, you should not do something along those lines:: | as an example, you should not do something along those lines:: | ||||||
| 
 | 
 | ||||||
|     def create_app(config_filename): |     def create_app(config_filename): | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ Python primitives (numbers, strings, dicts and lists) look like which is | ||||||
| widely supported and very easy to parse.  It became popular a few years | widely supported and very easy to parse.  It became popular a few years | ||||||
| ago and quickly replaced XML as transport format in web applications. | ago and quickly replaced XML as transport format in web applications. | ||||||
| 
 | 
 | ||||||
| .. _jQuery: http://jquery.com/ | .. _jQuery: https://jquery.com/ | ||||||
| 
 | 
 | ||||||
| Loading jQuery | Loading jQuery | ||||||
| -------------- | -------------- | ||||||
|  | @ -27,7 +27,7 @@ to add a script statement to the bottom of your ``<body>`` to load jQuery: | ||||||
|      url_for('static', filename='jquery.js') }}"></script> |      url_for('static', filename='jquery.js') }}"></script> | ||||||
| 
 | 
 | ||||||
| Another method is using Google's `AJAX Libraries API | Another method is using Google's `AJAX Libraries API | ||||||
| <https://developers.google.com/speed/libraries/devguide>`_ to load jQuery: | <https://developers.google.com/speed/libraries/>`_ to load jQuery: | ||||||
| 
 | 
 | ||||||
| .. sourcecode:: html | .. sourcecode:: html | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ if you want to get started quickly. | ||||||
| You can download `Flask-SQLAlchemy`_ from `PyPI | You can download `Flask-SQLAlchemy`_ from `PyPI | ||||||
| <https://pypi.org/project/Flask-SQLAlchemy/>`_. | <https://pypi.org/project/Flask-SQLAlchemy/>`_. | ||||||
| 
 | 
 | ||||||
| .. _Flask-SQLAlchemy: http://flask-sqlalchemy.pocoo.org/ | .. _Flask-SQLAlchemy: https://flask-sqlalchemy.palletsprojects.com/ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Declarative | Declarative | ||||||
|  |  | ||||||
|  | @ -69,8 +69,8 @@ This launches a very simple builtin server, which is good enough for testing | ||||||
| but probably not what you want to use in production. For deployment options see | but probably not what you want to use in production. For deployment options see | ||||||
| :ref:`deployment`. | :ref:`deployment`. | ||||||
| 
 | 
 | ||||||
| Now head over to `http://127.0.0.1:5000/ <http://127.0.0.1:5000/>`_, and you | Now head over to http://127.0.0.1:5000/, and you should see your hello | ||||||
| should see your hello world greeting. | world greeting. | ||||||
| 
 | 
 | ||||||
| .. _public-server: | .. _public-server: | ||||||
| 
 | 
 | ||||||
|  | @ -167,7 +167,7 @@ Screenshot of the debugger in action: | ||||||
| More information on using the debugger can be found in the `Werkzeug | More information on using the debugger can be found in the `Werkzeug | ||||||
| documentation`_. | documentation`_. | ||||||
| 
 | 
 | ||||||
| .. _Werkzeug documentation: http://werkzeug.pocoo.org/docs/debug/#using-the-debugger | .. _Werkzeug documentation: https://werkzeug.palletsprojects.com/debug/#using-the-debugger | ||||||
| 
 | 
 | ||||||
| Have another debugger in mind? See :ref:`working-with-debuggers`. | Have another debugger in mind? See :ref:`working-with-debuggers`. | ||||||
| 
 | 
 | ||||||
|  | @ -384,7 +384,7 @@ package it's actually inside your package: | ||||||
| 
 | 
 | ||||||
| For templates you can use the full power of Jinja2 templates.  Head over | For templates you can use the full power of Jinja2 templates.  Head over | ||||||
| to the official `Jinja2 Template Documentation | to the official `Jinja2 Template Documentation | ||||||
| <http://jinja.pocoo.org/docs/templates>`_ for more information. | <http://jinja.pocoo.org/docs/templates/>`_ for more information. | ||||||
| 
 | 
 | ||||||
| Here is an example template: | Here is an example template: | ||||||
| 
 | 
 | ||||||
|  | @ -819,9 +819,8 @@ Here are some example log calls:: | ||||||
|     app.logger.error('An error occurred') |     app.logger.error('An error occurred') | ||||||
| 
 | 
 | ||||||
| The attached :attr:`~flask.Flask.logger` is a standard logging | The attached :attr:`~flask.Flask.logger` is a standard logging | ||||||
| :class:`~logging.Logger`, so head over to the official `logging | :class:`~logging.Logger`, so head over to the official :mod:`logging` | ||||||
| documentation <https://docs.python.org/library/logging.html>`_ for more | docs for more information. | ||||||
| information. |  | ||||||
| 
 | 
 | ||||||
| Read more on :ref:`application-errors`. | Read more on :ref:`application-errors`. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
| Sphinx~=1.8.0 | Sphinx~=2.1.2 | ||||||
| Pallets-Sphinx-Themes~=1.1.0 | Pallets-Sphinx-Themes~=1.1.4 | ||||||
| sphinxcontrib-log-cabinet~=1.0.0 | sphinxcontrib-log-cabinet~=1.0.0 | ||||||
|  | sphinx-issues~=1.2.0 | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ An extension can depend on Jinja2 being present. | ||||||
| This section only gives a very quick introduction into how Jinja2 | This section only gives a very quick introduction into how Jinja2 | ||||||
| is integrated into Flask.  If you want information on the template | is integrated into Flask.  If you want information on the template | ||||||
| engine's syntax itself, head over to the official `Jinja2 Template | engine's syntax itself, head over to the official `Jinja2 Template | ||||||
| Documentation <http://jinja.pocoo.org/docs/templates>`_ for | Documentation <http://jinja.pocoo.org/docs/templates/>`_ for | ||||||
| more information. | more information. | ||||||
| 
 | 
 | ||||||
| Jinja Setup | Jinja Setup | ||||||
|  |  | ||||||
|  | @ -20,8 +20,7 @@ framework for our tests. You can install it with ``pip``, like so:: | ||||||
| 
 | 
 | ||||||
|     pip install pytest |     pip install pytest | ||||||
| 
 | 
 | ||||||
| .. _pytest: | .. _pytest: https://docs.pytest.org/ | ||||||
|    https://pytest.org |  | ||||||
| 
 | 
 | ||||||
| The Application | The Application | ||||||
| --------------- | --------------- | ||||||
|  | @ -453,5 +452,5 @@ This is useful for testing complex validation rules and custom types. :: | ||||||
|         context = hello_command.make_context('hello', ['--name', 'flask']) |         context = hello_command.make_context('hello', ['--name', 'flask']) | ||||||
|         assert context.params['name'] == 'FLASK' |         assert context.params['name'] == 'FLASK' | ||||||
| 
 | 
 | ||||||
| .. _click: http://click.pocoo.org/ | .. _click: https://click.palletsprojects.com/ | ||||||
| .. _utilities for testing: http://click.pocoo.org/testing | .. _utilities for testing: https://click.palletsprojects.com/testing/ | ||||||
|  |  | ||||||
|  | @ -116,6 +116,6 @@ your application. Waitress is just an example, chosen for the tutorial | ||||||
| because it supports both Windows and Linux. There are many more WSGI | because it supports both Windows and Linux. There are many more WSGI | ||||||
| servers and deployment options that you may choose for your project. | servers and deployment options that you may choose for your project. | ||||||
| 
 | 
 | ||||||
| .. _Waitress: https://docs.pylonsproject.org/projects/waitress/ | .. _Waitress: https://docs.pylonsproject.org/projects/waitress/en/stable/ | ||||||
| 
 | 
 | ||||||
| Continue to :doc:`next`. | Continue to :doc:`next`. | ||||||
|  |  | ||||||
|  | @ -70,7 +70,7 @@ files. | ||||||
| See the `official packaging guide`_ for another explanation of the files | See the `official packaging guide`_ for another explanation of the files | ||||||
| and options used. | and options used. | ||||||
| 
 | 
 | ||||||
| .. _official packaging guide: https://packaging.python.org/tutorials/distributing-packages/ | .. _official packaging guide: https://packaging.python.org/tutorials/packaging-projects/ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Install the Project | Install the Project | ||||||
|  |  | ||||||
|  | @ -6,9 +6,9 @@ text.  Not only these libraries, also the majority of web related Python | ||||||
| libraries that deal with text.  If you don't know Unicode so far, you | libraries that deal with text.  If you don't know Unicode so far, you | ||||||
| should probably read `The Absolute Minimum Every Software Developer | should probably read `The Absolute Minimum Every Software Developer | ||||||
| Absolutely, Positively Must Know About Unicode and Character Sets | Absolutely, Positively Must Know About Unicode and Character Sets | ||||||
| <http://www.joelonsoftware.com/articles/Unicode.html>`_.  This part of the | <https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/>`_. | ||||||
| documentation just tries to cover the very basics so that you have a | This part of the documentation just tries to cover the very basics so | ||||||
| pleasant experience with Unicode related things. | that you have a pleasant experience with Unicode related things. | ||||||
| 
 | 
 | ||||||
| Automatic Conversion | Automatic Conversion | ||||||
| -------------------- | -------------------- | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
|     A microframework based on Werkzeug.  It's extensively documented |     A microframework based on Werkzeug.  It's extensively documented | ||||||
|     and follows best practice patterns. |     and follows best practice patterns. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| __version__ = '1.0.3' | __version__ = '1.0.3' | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Alias for flask.run for the command line. |     Alias for flask.run for the command line. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|  |  | ||||||
|  | @ -7,8 +7,8 @@ | ||||||
|     version of six so we don't have to depend on a specific version |     version of six so we don't have to depend on a specific version | ||||||
|     of it. |     of it. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import sys | import sys | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     This module implements the central WSGI application object. |     This module implements the central WSGI application object. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
|     Blueprints are the recommended way to implement larger or more |     Blueprints are the recommended way to implement larger or more | ||||||
|     pluggable applications in Flask 0.7 and later. |     pluggable applications in Flask 0.7 and later. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| from functools import update_wrapper | from functools import update_wrapper | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     A simple command line application to run flask apps. |     A simple command line application to run flask apps. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from __future__ import print_function | from __future__ import print_function | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Implements the configuration related objects. |     Implements the configuration related objects. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Implements the objects required to keep the context. |     Implements the objects required to keep the context. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import sys | import sys | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Various helpers to make the development experience better. |     Various helpers to make the development experience better. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
|     Defines all the global objects that are proxies to the current |     Defines all the global objects that are proxies to the current | ||||||
|     active context. |     active context. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from functools import partial | from functools import partial | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Implements various helpers. |     Implements various helpers. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
| flask.json | flask.json | ||||||
| ~~~~~~~~~~ | ~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
| :copyright: © 2010 by the Pallets team. | :copyright: 2010 Pallets | ||||||
| :license: BSD, see LICENSE for more details. | :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| import codecs | import codecs | ||||||
| import io | import io | ||||||
|  |  | ||||||
|  | @ -38,8 +38,8 @@ processes dicts first, so insert the new tag at the front of the order since | ||||||
| 
 | 
 | ||||||
|     app.session_interface.serializer.register(TagOrderedDict, index=0) |     app.session_interface.serializer.register(TagOrderedDict, index=0) | ||||||
| 
 | 
 | ||||||
| :copyright: © 2010 by the Pallets team. | :copyright: 2010 Pallets | ||||||
| :license: BSD, see LICENSE for more details. | :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from base64 import b64decode, b64encode | from base64 import b64decode, b64encode | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
| flask.logging | flask.logging | ||||||
| ~~~~~~~~~~~~~ | ~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
| :copyright: © 2010 by the Pallets team. | :copyright: 2010 Pallets | ||||||
| :license: BSD, see LICENSE for more details. | :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from __future__ import absolute_import | from __future__ import absolute_import | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Implements cookie based sessions based on itsdangerous. |     Implements cookie based sessions based on itsdangerous. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import hashlib | import hashlib | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
|     Implements signals based on blinker if available, otherwise |     Implements signals based on blinker if available, otherwise | ||||||
|     falls silently back to a noop. |     falls silently back to a noop. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| signals_available = False | signals_available = False | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Implements the bridge to Jinja2. |     Implements the bridge to Jinja2. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from jinja2 import BaseLoader, Environment as BaseEnvironment, \ | from jinja2 import BaseLoader, Environment as BaseEnvironment, \ | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
|     Implements test support helpers.  This module is lazily imported |     Implements test support helpers.  This module is lazily imported | ||||||
|     and usually not used in production environments. |     and usually not used in production environments. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import werkzeug | import werkzeug | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     This module provides class-based views inspired by the ones in Django. |     This module provides class-based views inspired by the ones in Django. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from .globals import request | from .globals import request | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Implements the WSGI wrappers (request and response). |     Implements the WSGI wrappers (request and response). | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from werkzeug.exceptions import BadRequest | from werkzeug.exceptions import BadRequest | ||||||
|  |  | ||||||
|  | @ -1,164 +0,0 @@ | ||||||
| #!/usr/bin/env python |  | ||||||
| from __future__ import print_function |  | ||||||
| 
 |  | ||||||
| import os |  | ||||||
| import re |  | ||||||
| import sys |  | ||||||
| from datetime import date, datetime |  | ||||||
| from subprocess import PIPE, Popen |  | ||||||
| 
 |  | ||||||
| _date_strip_re = re.compile(r'(?<=\d)(st|nd|rd|th)') |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def parse_changelog(): |  | ||||||
|     with open('CHANGES.rst') as f: |  | ||||||
|         lineiter = iter(f) |  | ||||||
|         for line in lineiter: |  | ||||||
|             match = re.search('^Version\s+(.*)', line.strip()) |  | ||||||
| 
 |  | ||||||
|             if match is None: |  | ||||||
|                 continue |  | ||||||
| 
 |  | ||||||
|             version = match.group(1).strip() |  | ||||||
| 
 |  | ||||||
|             if next(lineiter).count('-') != len(match.group(0)): |  | ||||||
|                 continue |  | ||||||
| 
 |  | ||||||
|             while 1: |  | ||||||
|                 change_info = next(lineiter).strip() |  | ||||||
| 
 |  | ||||||
|                 if change_info: |  | ||||||
|                     break |  | ||||||
| 
 |  | ||||||
|             match = re.search( |  | ||||||
|                 r'released on (\w+\s+\d+\w+\s+\d+)(?:, codename (.*))?', |  | ||||||
|                 change_info, |  | ||||||
|                 flags=re.IGNORECASE |  | ||||||
|             ) |  | ||||||
| 
 |  | ||||||
|             if match is None: |  | ||||||
|                 continue |  | ||||||
| 
 |  | ||||||
|             datestr, codename = match.groups() |  | ||||||
|             return version, parse_date(datestr), codename |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def bump_version(version): |  | ||||||
|     try: |  | ||||||
|         parts = [int(i) for i in version.split('.')] |  | ||||||
|     except ValueError: |  | ||||||
|         fail('Current version is not numeric') |  | ||||||
| 
 |  | ||||||
|     parts[-1] += 1 |  | ||||||
|     return '.'.join(map(str, parts)) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def parse_date(string): |  | ||||||
|     string = _date_strip_re.sub('', string) |  | ||||||
|     return datetime.strptime(string, '%B %d %Y') |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def set_filename_version(filename, version_number, pattern): |  | ||||||
|     changed = [] |  | ||||||
| 
 |  | ||||||
|     def inject_version(match): |  | ||||||
|         before, old, after = match.groups() |  | ||||||
|         changed.append(True) |  | ||||||
|         return before + version_number + after |  | ||||||
| 
 |  | ||||||
|     with open(filename) as f: |  | ||||||
|         contents = re.sub( |  | ||||||
|             r"^(\s*%s\s*=\s*')(.+?)(')" % pattern, |  | ||||||
|             inject_version, f.read(), |  | ||||||
|             flags=re.DOTALL | re.MULTILINE |  | ||||||
|         ) |  | ||||||
| 
 |  | ||||||
|     if not changed: |  | ||||||
|         fail('Could not find %s in %s', pattern, filename) |  | ||||||
| 
 |  | ||||||
|     with open(filename, 'w') as f: |  | ||||||
|         f.write(contents) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def set_init_version(version): |  | ||||||
|     info('Setting __init__.py version to %s', version) |  | ||||||
|     set_filename_version('flask/__init__.py', version, '__version__') |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def build(): |  | ||||||
|     cmd = [sys.executable, 'setup.py', 'sdist', 'bdist_wheel'] |  | ||||||
|     Popen(cmd).wait() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def fail(message, *args): |  | ||||||
|     print('Error:', message % args, file=sys.stderr) |  | ||||||
|     sys.exit(1) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def info(message, *args): |  | ||||||
|     print(message % args, file=sys.stderr) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def get_git_tags(): |  | ||||||
|     return set( |  | ||||||
|         Popen(['git', 'tag'], stdout=PIPE).communicate()[0].splitlines() |  | ||||||
|     ) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def git_is_clean(): |  | ||||||
|     return Popen(['git', 'diff', '--quiet']).wait() == 0 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def make_git_commit(message, *args): |  | ||||||
|     message = message % args |  | ||||||
|     Popen(['git', 'commit', '-am', message]).wait() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def make_git_tag(tag): |  | ||||||
|     info('Tagging "%s"', tag) |  | ||||||
|     Popen(['git', 'tag', tag]).wait() |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def main(): |  | ||||||
|     os.chdir(os.path.join(os.path.dirname(__file__), '..')) |  | ||||||
| 
 |  | ||||||
|     rv = parse_changelog() |  | ||||||
| 
 |  | ||||||
|     if rv is None: |  | ||||||
|         fail('Could not parse changelog') |  | ||||||
| 
 |  | ||||||
|     version, release_date, codename = rv |  | ||||||
|     dev_version = bump_version(version) + '.dev' |  | ||||||
| 
 |  | ||||||
|     info( |  | ||||||
|         'Releasing %s (codename %s, release date %s)', |  | ||||||
|         version, codename, release_date.strftime('%d/%m/%Y') |  | ||||||
|     ) |  | ||||||
|     tags = get_git_tags() |  | ||||||
| 
 |  | ||||||
|     if version in tags: |  | ||||||
|         fail('Version "%s" is already tagged', version) |  | ||||||
| 
 |  | ||||||
|     if release_date.date() != date.today(): |  | ||||||
|         fail( |  | ||||||
|             'Release date is not today (%s != %s)', |  | ||||||
|             release_date.date(), date.today() |  | ||||||
|         ) |  | ||||||
| 
 |  | ||||||
|     if not git_is_clean(): |  | ||||||
|         fail('You have uncommitted changes in git') |  | ||||||
| 
 |  | ||||||
|     try: |  | ||||||
|         import wheel  # noqa: F401 |  | ||||||
|     except ImportError: |  | ||||||
|         fail('You need to install the wheel package.') |  | ||||||
| 
 |  | ||||||
|     set_init_version(version) |  | ||||||
|     make_git_commit('Bump version number to %s', version) |  | ||||||
|     make_git_tag(version) |  | ||||||
|     build() |  | ||||||
|     set_init_version(dev_version) |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| if __name__ == '__main__': |  | ||||||
|     main() |  | ||||||
							
								
								
									
										12
									
								
								setup.cfg
								
								
								
								
							
							
						
						
									
										12
									
								
								setup.cfg
								
								
								
								
							|  | @ -1,14 +1,10 @@ | ||||||
| [aliases] | [metadata] | ||||||
| release = egg_info -Db '' | license_file = LICENSE.rst | ||||||
| 
 | 
 | ||||||
| [bdist_wheel] | [bdist_wheel] | ||||||
| universal = 1 | universal = true | ||||||
| 
 |  | ||||||
| [metadata] |  | ||||||
| license_file = LICENSE |  | ||||||
| 
 | 
 | ||||||
| [tool:pytest] | [tool:pytest] | ||||||
| minversion = 3.0 |  | ||||||
| testpaths = tests | testpaths = tests | ||||||
| 
 | 
 | ||||||
| [coverage:run] | [coverage:run] | ||||||
|  | @ -21,4 +17,4 @@ source = | ||||||
| source = | source = | ||||||
|     flask |     flask | ||||||
|     .tox/*/lib/python*/site-packages/flask |     .tox/*/lib/python*/site-packages/flask | ||||||
|     .tox/pypy/site-packages/flask |     .tox/*/site-packages/flask | ||||||
|  |  | ||||||
|  | @ -1,81 +1,76 @@ | ||||||
| #!/usr/bin/env python |  | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| import io | import io | ||||||
| import re | import re | ||||||
| from collections import OrderedDict |  | ||||||
| 
 | 
 | ||||||
|  | from setuptools import find_packages | ||||||
| from setuptools import setup | from setuptools import setup | ||||||
| 
 | 
 | ||||||
| with io.open('README.rst', 'rt', encoding='utf8') as f: | with io.open("README.rst", "rt", encoding="utf8") as f: | ||||||
|     readme = f.read() |     readme = f.read() | ||||||
| 
 | 
 | ||||||
| with io.open('flask/__init__.py', 'rt', encoding='utf8') as f: | with io.open("flask/__init__.py", "rt", encoding="utf8") as f: | ||||||
|     version = re.search(r'__version__ = \'(.*?)\'', f.read()).group(1) |     version = re.search(r"__version__ = \'(.*?)\'", f.read()).group(1) | ||||||
| 
 | 
 | ||||||
| setup( | setup( | ||||||
|     name='Flask', |     name="Flask", | ||||||
|     version=version, |     version=version, | ||||||
|     url='https://www.palletsprojects.com/p/flask/', |     url="https://palletsprojects.com/p/flask/", | ||||||
|     project_urls=OrderedDict(( |     project_urls={ | ||||||
|         ('Documentation', 'http://flask.pocoo.org/docs/'), |         "Documentation": "http://flask.palletsprojects.com/", | ||||||
|         ('Code', 'https://github.com/pallets/flask'), |         "Code": "https://github.com/pallets/flask", | ||||||
|         ('Issue tracker', 'https://github.com/pallets/flask/issues'), |         "Issue tracker": "https://github.com/pallets/flask/issues", | ||||||
|     )), |     }, | ||||||
|     license='BSD', |     license="BSD-3-Clause", | ||||||
|     author='Armin Ronacher', |     author="Armin Ronacher", | ||||||
|     author_email='armin.ronacher@active-4.com', |     author_email="armin.ronacher@active-4.com", | ||||||
|     maintainer='Pallets team', |     maintainer="Pallets", | ||||||
|     maintainer_email='contact@palletsprojects.com', |     maintainer_email="contact@palletsprojects.com", | ||||||
|     description='A simple framework for building complex web applications.', |     description="A simple framework for building complex web applications.", | ||||||
|     long_description=readme, |     long_description=readme, | ||||||
|     packages=['flask', 'flask.json'], |     classifiers=[ | ||||||
|  |         "Development Status :: 5 - Production/Stable", | ||||||
|  |         "Environment :: Web Environment", | ||||||
|  |         "Framework :: Flask", | ||||||
|  |         "Intended Audience :: Developers", | ||||||
|  |         "License :: OSI Approved :: BSD 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", | ||||||
|  |         "Topic :: Internet :: WWW/HTTP :: Dynamic Content", | ||||||
|  |         "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", | ||||||
|  |         "Topic :: Software Development :: Libraries :: Application Frameworks", | ||||||
|  |         "Topic :: Software Development :: Libraries :: Python Modules", | ||||||
|  |     ], | ||||||
|  |     packages=find_packages(), | ||||||
|     include_package_data=True, |     include_package_data=True, | ||||||
|     zip_safe=False, |     python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", | ||||||
|     platforms='any', |  | ||||||
|     install_requires=[ |     install_requires=[ | ||||||
|         'Werkzeug>=0.14', |         "Werkzeug>=0.14", | ||||||
|         'Jinja2>=2.10', |         "Jinja2>=2.10", | ||||||
|         'itsdangerous>=0.24', |         "itsdangerous>=0.24", | ||||||
|         'click>=5.1', |         "click>=5.1", | ||||||
|     ], |     ], | ||||||
|     extras_require={ |     extras_require={ | ||||||
|         'dotenv': ['python-dotenv'], |         "dotenv": ["python-dotenv"], | ||||||
|         'dev': [ |         "dev": [ | ||||||
|             'pytest>=3', |             "pytest", | ||||||
|             'coverage', |             "coverage", | ||||||
|             'tox', |             "tox", | ||||||
|             'sphinx', |             "sphinx", | ||||||
|             'pallets-sphinx-themes', |             "pallets-sphinx-themes", | ||||||
|             'sphinxcontrib-log-cabinet', |             "sphinxcontrib-log-cabinet", | ||||||
|  |             "sphinx-issues", | ||||||
|         ], |         ], | ||||||
|         'docs': [ |         "docs": [ | ||||||
|             'sphinx', |             "sphinx", | ||||||
|             'pallets-sphinx-themes', |             "pallets-sphinx-themes", | ||||||
|             'sphinxcontrib-log-cabinet', |             "sphinxcontrib-log-cabinet", | ||||||
|         ] |             "sphinx-issues", | ||||||
|     }, |  | ||||||
|     classifiers=[ |  | ||||||
|         'Development Status :: 5 - Production/Stable', |  | ||||||
|         'Environment :: Web Environment', |  | ||||||
|         'Framework :: Flask', |  | ||||||
|         'Intended Audience :: Developers', |  | ||||||
|         'License :: OSI Approved :: BSD 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', |  | ||||||
|         'Topic :: Internet :: WWW/HTTP :: Dynamic Content', |  | ||||||
|         'Topic :: Internet :: WWW/HTTP :: WSGI :: Application', |  | ||||||
|         'Topic :: Software Development :: Libraries :: Application Frameworks', |  | ||||||
|         'Topic :: Software Development :: Libraries :: Python Modules', |  | ||||||
|     ], |  | ||||||
|     entry_points={ |  | ||||||
|         'console_scripts': [ |  | ||||||
|             'flask = flask.cli:main', |  | ||||||
|         ], |         ], | ||||||
|     }, |     }, | ||||||
|  |     entry_points={"console_scripts": ["flask = flask.cli:main"]}, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
|     tests.conftest |     tests.conftest | ||||||
|     ~~~~~~~~~~~~~~ |     ~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import gc | import gc | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Tests the application context. |     Tests the application context. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     The basic functionality. |     The basic functionality. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import re | import re | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Blueprints (and currently modules) |     Blueprints (and currently modules) | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import functools | import functools | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
|     tests.test_cli |     tests.test_cli | ||||||
|     ~~~~~~~~~~~~~~ |     ~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| # This file was part of Flask-CLI and was modified under the terms of | # This file was part of Flask-CLI and was modified under the terms of | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
|     tests.test_config |     tests.test_config | ||||||
|     ~~~~~~~~~~~~~~~~~ |     ~~~~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from datetime import timedelta | from datetime import timedelta | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Various helpers. |     Various helpers. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import datetime | import datetime | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
|     tests.test_instance |     tests.test_instance | ||||||
|     ~~~~~~~~~~~~~~~~~~~ |     ~~~~~~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import os | import os | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
| tests.test_json_tag | tests.test_json_tag | ||||||
| ~~~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
| :copyright: © 2010 by the Pallets team. | :copyright: 2010 Pallets | ||||||
| :license: BSD, see LICENSE for more details. | :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from datetime import datetime | from datetime import datetime | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
| tests.test_logging | tests.test_logging | ||||||
| ~~~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
| :copyright: © 2010 by the Pallets team. | :copyright: 2010 Pallets | ||||||
| :license: BSD, see LICENSE for more details. | :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Tests regressions. |     Tests regressions. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import gc | import gc | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Tests the request context. |     Tests the request context. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Signalling. |     Signalling. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
|  | @ -6,8 +6,8 @@ | ||||||
|     Test that certain behavior of flask can be customized by |     Test that certain behavior of flask can be customized by | ||||||
|     subclasses. |     subclasses. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import flask | import flask | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Template functionality |     Template functionality | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Test client and more. |     Test client and more. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| import click | import click | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
|  | @ -3,8 +3,8 @@ | ||||||
| tests.test_user_error_handler | tests.test_user_error_handler | ||||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
| 
 | 
 | ||||||
| :copyright: © 2010 by the Pallets team. | :copyright: 2010 Pallets | ||||||
| :license: BSD, see LICENSE for more details. | :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from werkzeug.exceptions import ( | from werkzeug.exceptions import ( | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ | ||||||
| 
 | 
 | ||||||
|     Pluggable views. |     Pluggable views. | ||||||
| 
 | 
 | ||||||
|     :copyright: © 2010 by the Pallets team. |     :copyright: 2010 Pallets | ||||||
|     :license: BSD, see LICENSE for more details. |     :license: BSD-3-Clause | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue