From 4c08e3a2ba3d42fbee63577bceedfe325f51b81d Mon Sep 17 00:00:00 2001 From: David Lord Date: Mon, 1 Aug 2022 11:39:31 -0700 Subject: [PATCH 1/3] update pycharm instructions --- docs/_static/pycharm-run-config.png | Bin 0 -> 77462 bytes docs/_static/pycharm-runconfig.png | Bin 17219 -> 0 bytes docs/cli.rst | 61 ++++++++++------------------ 3 files changed, 22 insertions(+), 39 deletions(-) create mode 100644 docs/_static/pycharm-run-config.png delete mode 100644 docs/_static/pycharm-runconfig.png diff --git a/docs/_static/pycharm-run-config.png b/docs/_static/pycharm-run-config.png new file mode 100644 index 0000000000000000000000000000000000000000..3f78915796e34c54a90008782caa61df47ea248a GIT binary patch literal 77462 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

YIiEQ5^T7%brmC|dy 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 literal 0 HcmV?d00001 diff --git a/docs/_static/pycharm-runconfig.png b/docs/_static/pycharm-runconfig.png deleted file mode 100644 index dff21fa03bd2fcb62d3a7d047a5005dee9ff15a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17219 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 Date: Mon, 1 Aug 2022 15:11:21 -0700 Subject: [PATCH 2/3] deprecate FLASK_ENV --- CHANGES.rst | 10 ++++-- src/flask/app.py | 73 ++++++++++++++++++++++++++++--------------- src/flask/cli.py | 62 ++++++++++-------------------------- src/flask/helpers.py | 31 ++++++++++++++---- tests/test_helpers.py | 15 --------- 5 files changed, 95 insertions(+), 96 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index f8ebc72993..dacee6da02 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -23,6 +23,10 @@ Unreleased ``g`` instead using a unique prefix, like ``g._extension_name_attr``. +- The ``FLASK_ENV`` environment variable and ``app.env`` attribute are + deprecated, removing the distinction between development and debug + mode. Debug mode should be controlled directly using the ``--debug`` + option or ``app.run(debug=True)``. :issue:`4714` - Add new customization points to the ``Flask`` app object for many previously global behaviors. @@ -60,9 +64,9 @@ Unreleased instance on every request. :issue:`2520`. - A ``flask.cli.FlaskGroup`` Click group can be nested as a sub-command in a custom CLI. :issue:`3263` -- Add ``--app``, ``--env``, and ``--debug`` options to the ``flask`` - CLI, instead of requiring that they are set through environment - variables. :issue:`2836` +- Add ``--app`` and ``--debug`` options to the ``flask`` CLI, instead + of requiring that they are set through environment variables. + :issue:`2836` - Add ``--env-file`` option to the ``flask`` CLI. This allows specifying a dotenv file to load in addition to ``.env`` and ``.flaskenv``. :issue:`3108` diff --git a/src/flask/app.py b/src/flask/app.py index 856c0d9d19..d4c3370ab1 100644 --- a/src/flask/app.py +++ b/src/flask/app.py @@ -45,7 +45,6 @@ from .globals import session from .helpers import _split_blueprint_path from .helpers import get_debug_flag -from .helpers import get_env from .helpers import get_flashed_messages from .helpers import get_load_dotenv from .helpers import locked_cached_property @@ -691,7 +690,7 @@ def make_config(self, instance_relative: bool = False) -> Config: if instance_relative: root_path = self.instance_path defaults = dict(self.default_config) - defaults["ENV"] = get_env() + defaults["ENV"] = os.environ.get("FLASK_ENV") or "development" defaults["DEBUG"] = get_debug_flag() return self.config_class(root_path, defaults) @@ -849,31 +848,50 @@ def make_shell_context(self) -> dict: rv.update(processor()) return rv - #: What environment the app is running in. Flask and extensions may - #: enable behaviors based on the environment, such as enabling debug - #: mode. This maps to the :data:`ENV` config key. This is set by the - #: :envvar:`FLASK_ENV` environment variable and may not behave as - #: expected if set in code. - #: - #: **Do not enable development when deploying in production.** - #: - #: Default: ``'production'`` - env = ConfigAttribute("ENV") + @property + def env(self) -> str: + """What environment the app is running in. This maps to the :data:`ENV` config + key. + + **Do not enable development when deploying in production.** + + Default: ``'production'`` + + .. deprecated:: 2.2 + Will be removed in Flask 2.3. + """ + import warnings + + warnings.warn( + "'app.env' is deprecated and will be removed in Flask 2.3." + " Use 'app.debug' instead.", + DeprecationWarning, + stacklevel=2, + ) + return self.config["ENV"] + + @env.setter + def env(self, value: str) -> None: + import warnings + + warnings.warn( + "'app.env' is deprecated and will be removed in Flask 2.3." + " Use 'app.debug' instead.", + DeprecationWarning, + stacklevel=2, + ) + self.config["ENV"] = value @property def debug(self) -> bool: - """Whether debug mode is enabled. When using ``flask run`` to start - the development server, an interactive debugger will be shown for - unhandled exceptions, and the server will be reloaded when code - changes. This maps to the :data:`DEBUG` config key. This is - enabled when :attr:`env` is ``'development'`` and is overridden - by the ``FLASK_DEBUG`` environment variable. It may not behave as - expected if set in code. + """Whether debug mode is enabled. When using ``flask run`` to start the + development server, an interactive debugger will be shown for unhandled + exceptions, and the server will be reloaded when code changes. This maps to the + :data:`DEBUG` config key. It may not behave as expected if set late. **Do not enable debug mode when deploying in production.** - Default: ``True`` if :attr:`env` is ``'development'``, or - ``False`` otherwise. + Default: ``False`` """ return self.config["DEBUG"] @@ -937,9 +955,7 @@ def run( If installed, python-dotenv will be used to load environment variables from :file:`.env` and :file:`.flaskenv` files. - If set, the :envvar:`FLASK_ENV` and :envvar:`FLASK_DEBUG` - environment variables will override :attr:`env` and - :attr:`debug`. + The :envvar:`FLASK_DEBUG` environment variable will override :attr:`debug`. Threaded mode is enabled by default. @@ -966,7 +982,12 @@ def run( # if set, let env vars override previous values if "FLASK_ENV" in os.environ: - self.env = get_env() + print( + "'FLASK_ENV' is deprecated and will not be used in" + " Flask 2.3. Use 'FLASK_DEBUG' instead.", + file=sys.stderr, + ) + self.config["ENV"] = os.environ.get("FLASK_ENV") or "production" self.debug = get_debug_flag() elif "FLASK_DEBUG" in os.environ: self.debug = get_debug_flag() @@ -998,7 +1019,7 @@ def run( options.setdefault("use_debugger", self.debug) options.setdefault("threaded", True) - cli.show_server_banner(self.env, self.debug, self.name) + cli.show_server_banner(self.debug, self.name) from werkzeug.serving import run_simple diff --git a/src/flask/cli.py b/src/flask/cli.py index 634cb7e2a2..c12311f66f 100644 --- a/src/flask/cli.py +++ b/src/flask/cli.py @@ -13,12 +13,12 @@ import click from click.core import ParameterSource +from werkzeug import run_simple from werkzeug.serving import is_running_from_reloader from werkzeug.utils import import_string from .globals import current_app from .helpers import get_debug_flag -from .helpers import get_env from .helpers import get_load_dotenv if t.TYPE_CHECKING: @@ -418,29 +418,6 @@ def _set_app(ctx: click.Context, param: click.Option, value: str | None) -> str ) -def _set_env(ctx: click.Context, param: click.Option, value: str | None) -> str | None: - if value is None: - return None - - # Set with env var instead of ScriptInfo.load so that it can be - # accessed early during a factory function. - os.environ["FLASK_ENV"] = value - return value - - -_env_option = click.Option( - ["-E", "--env"], - metavar="NAME", - help=( - "The execution environment name to set in 'app.env'. Defaults to" - " 'production'. 'development' will enable 'app.debug' and start the" - " debugger and reloader when running the server." - ), - expose_value=False, - callback=_set_env, -) - - def _set_debug(ctx: click.Context, param: click.Option, value: bool) -> bool | None: # If the flag isn't provided, it will default to False. Don't use # that, let debug be set by env in that case. @@ -460,7 +437,7 @@ def _set_debug(ctx: click.Context, param: click.Option, value: bool) -> bool | N _debug_option = click.Option( ["--debug/--no-debug"], - help="Set 'app.debug' separately from '--env'.", + help="Set debug mode.", expose_value=False, callback=_set_debug, ) @@ -516,12 +493,10 @@ class FlaskGroup(AppGroup): :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` files to set environment variables. Will also change the working directory to the directory containing the first file found. - :param set_debug_flag: Set the app's debug flag based on the active - environment + :param set_debug_flag: Set the app's debug flag. .. versionchanged:: 2.2 - Added the ``-A/--app``, ``-E/--env``, ``--debug/--no-debug``, - and ``-e/--env-file`` options. + Added the ``-A/--app``, ``--debug/--no-debug``, ``-e/--env-file`` options. .. versionchanged:: 2.2 An app context is pushed when running ``app.cli`` commands, so @@ -546,7 +521,7 @@ def __init__( # callback. This allows users to make a custom group callback # without losing the behavior. --env-file must come first so # that it is eagerly evaluated before --app. - params.extend((_env_file_option, _app_option, _env_option, _debug_option)) + params.extend((_env_file_option, _app_option, _debug_option)) if add_version_option: params.append(version_option) @@ -737,26 +712,23 @@ def load_dotenv(path: str | os.PathLike | None = None) -> bool: return loaded # True if at least one file was located and loaded. -def show_server_banner(env, debug, app_import_path): +def show_server_banner(debug, app_import_path): """Show extra startup messages the first time the server is run, ignoring the reloader. """ if is_running_from_reloader(): return + click.secho( + "WARNING: This is a development server. Do not use it in a production" + " deployment. Use a production WSGI server instead.", + fg="red", + bold=True, + ) + if app_import_path is not None: click.echo(f" * Serving Flask app '{app_import_path}'") - click.echo(f" * Environment: {env}") - - if env == "production": - click.secho( - " WARNING: This is a development server. Do not use it in" - " a production deployment.\n Use a production WSGI server" - " instead.", - fg="red", - ) - if debug is not None: click.echo(f" * Debug mode: {'on' if debug else 'off'}") @@ -925,8 +897,8 @@ def run_command( This server is for development purposes only. It does not provide the stability, security, or performance of production WSGI servers. - The reloader and debugger are enabled by default with the - '--env development' or '--debug' options. + The reloader and debugger are enabled by default with the '--debug' + option. """ try: app = info.load_app() @@ -953,9 +925,7 @@ def app(environ, start_response): if debugger is None: debugger = debug - show_server_banner(get_env(), debug, info.app_import_path) - - from werkzeug.serving import run_simple + show_server_banner(debug, info.app_import_path) run_simple( host, diff --git a/src/flask/helpers.py b/src/flask/helpers.py index fb054466b3..e3fbb1daea 100644 --- a/src/flask/helpers.py +++ b/src/flask/helpers.py @@ -29,22 +29,41 @@ def get_env() -> str: """Get the environment the app is running in, indicated by the :envvar:`FLASK_ENV` environment variable. The default is ``'production'``. + + .. deprecated:: 2.2 + Will be removed in Flask 2.3. """ + import warnings + + warnings.warn( + "'FLASK_ENV' and 'get_env' are deprecated and will be removed" + " in Flask 2.3. Use 'FLASK_DEBUG' instead.", + DeprecationWarning, + stacklevel=2, + ) return os.environ.get("FLASK_ENV") or "production" def get_debug_flag() -> bool: - """Get whether debug mode should be enabled for the app, indicated - by the :envvar:`FLASK_DEBUG` environment variable. The default is - ``True`` if :func:`.get_env` returns ``'development'``, or ``False`` - otherwise. + """Get whether debug mode should be enabled for the app, indicated by the + :envvar:`FLASK_DEBUG` environment variable. The default is ``False``. """ val = os.environ.get("FLASK_DEBUG") if not val: - return get_env() == "development" + env = os.environ.get("FLASK_ENV") + + if env is not None: + print( + "'FLASK_ENV' is deprecated and will not be used in" + " Flask 2.3. Use 'FLASK_DEBUG' instead.", + file=sys.stderr, + ) + return env == "development" + + return False - return val.lower() not in ("0", "false", "no") + return val.lower() not in {"0", "false", "no"} def get_load_dotenv(default: bool = True) -> bool: diff --git a/tests/test_helpers.py b/tests/test_helpers.py index cc2daaf77e..0e6a8856f3 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -6,7 +6,6 @@ import flask from flask.helpers import get_debug_flag -from flask.helpers import get_env class FakePath: @@ -322,20 +321,6 @@ def test_get_debug_flag( assert get_debug_flag() == expected_flag assert get_debug_flag() == expected_default_flag - @pytest.mark.parametrize( - "env, ref_env, debug", - [ - ("", "production", False), - ("production", "production", False), - ("development", "development", True), - ("other", "other", False), - ], - ) - def test_get_env(self, monkeypatch, env, ref_env, debug): - monkeypatch.setenv("FLASK_ENV", env) - assert get_debug_flag() == debug - assert get_env() == ref_env - def test_make_response(self): app = flask.Flask(__name__) with app.test_request_context(): From 30427a209043bfb9730904e0c34b0dbc40bd21f4 Mon Sep 17 00:00:00 2001 From: David Lord Date: Mon, 1 Aug 2022 15:11:35 -0700 Subject: [PATCH 3/3] remove FLASK_ENV from docs --- docs/cli.rst | 78 +++++++++++--------------------- docs/config.rst | 68 +++++++++++----------------- docs/debugging.rst | 22 ++++----- docs/quickstart.rst | 9 ++-- docs/server.rst | 86 +++++++----------------------------- docs/tutorial/factory.rst | 7 ++- examples/tutorial/README.rst | 2 +- 7 files changed, 84 insertions(+), 188 deletions(-) diff --git a/docs/cli.rst b/docs/cli.rst index 954192f0de..22484f1731 100644 --- a/docs/cli.rst +++ b/docs/cli.rst @@ -71,7 +71,7 @@ Run the Development Server The :func:`run ` command will start the development server. It replaces the :meth:`Flask.run` method in most cases. :: - $ flask run + $ flask --app hello run * Serving Flask app "hello" * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) @@ -86,43 +86,17 @@ server tries to start. See :ref:`address-already-in-use` for how to handle that. -Open a Shell ------------- - -To explore the data in your application, you can start an interactive Python -shell with the :func:`shell ` command. An application -context will be active, and the app instance will be imported. :: - - $ flask shell - Python 3.10.0 (default, Oct 27 2021, 06:59:51) [GCC 11.1.0] on linux - App: example [production] - Instance: /home/david/Projects/pallets/flask/instance - >>> - -Use :meth:`~Flask.shell_context_processor` to add other automatic imports. - - -Environments ------------- - -.. versionadded:: 1.0 - -The environment in which the Flask app executes is set by the -``FLASK_ENV`` environment variable. When using the ``flask`` command, it -can also be set with the ``--env`` option. If not set it defaults to -``production``. The other recognized environment is ``development``. -Flask and extensions may choose to enable behaviors based on the -environment. +Debug Mode +~~~~~~~~~~ -If the env is set to ``development``, the ``flask`` command will enable -debug mode and ``flask run`` will enable the interactive debugger and -reloader. +In debug mode, the ``flask run`` command will enable the interactive debugger and the +reloader by default, and make errors easier to see and debug. To enable debug mode, use +the ``--debug`` option. -.. code-block:: text +.. code-block:: console - $ flask --app hello --env development run + $ flask --app hello --debug run * Serving Flask app "hello" - * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with inotify reloader @@ -130,13 +104,12 @@ reloader. * Debugger PIN: 223-456-919 -Watch Extra Files with the Reloader -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Watch and Ignore Files with the Reloader +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When using development mode, the reloader will trigger whenever your -Python code or imported modules change. The reloader can watch -additional files with the ``--extra-files`` option. Multiple paths are -separated with ``:``, or ``;`` on Windows. +When using debug mode, the reloader will trigger whenever your Python code or imported +modules change. The reloader can watch additional files with the ``--extra-files`` +option. Multiple paths are separated with ``:``, or ``;`` on Windows. .. code-block:: text @@ -144,22 +117,25 @@ separated with ``:``, or ``;`` on Windows. * Running on http://127.0.0.1:8000/ * Detected change in '/path/to/file1', reloading +The reloader can also ignore files using :mod:`fnmatch` patterns with the +``--exclude-patterns`` option. Multiple patterns are separated with ``:``, or ``;`` on +Windows. -Ignore files with the Reloader -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The reloader can also ignore files using :mod:`fnmatch` patterns with -the ``--exclude-patterns`` option. Multiple patterns are separated with -``:``, or ``;`` on Windows. +Open a Shell +------------ +To explore the data in your application, you can start an interactive Python +shell with the :func:`shell ` command. An application +context will be active, and the app instance will be imported. :: -Debug Mode ----------- + $ flask shell + Python 3.10.0 (default, Oct 27 2021, 06:59:51) [GCC 11.1.0] on linux + App: example [production] + Instance: /home/david/Projects/pallets/flask/instance + >>> -Debug mode will be enabled when the execution environment is -``development``, as described above. If you want to control debug mode -separately, use the ``--debug/--no-debug`` option or the ``FLASK_DEBUG`` -environment variable. +Use :meth:`~Flask.shell_context_processor` to add other automatic imports. .. _dotenv: diff --git a/docs/config.rst b/docs/config.rst index 6111931e32..bc16e4bac1 100644 --- a/docs/config.rst +++ b/docs/config.rst @@ -42,38 +42,22 @@ method:: ) -Environment and Debug Features ------------------------------- +Debug Mode +---------- -The :data:`ENV` and :data:`DEBUG` config values are special because they -may behave inconsistently if changed after the app has begun setting up. -In order to set the environment and debug mode reliably, pass options to -the ``flask`` command or use environment variables. - -The execution environment is used to indicate to Flask, extensions, and -other programs, like Sentry, what context Flask is running in. It is -controlled with the ``FLASK_ENV`` environment variable, or the -``--env`` option when using the ``flask`` command, and defaults to -``production``. - -Setting ``--env development`` will enable debug mode. ``flask run`` will -use the interactive debugger and reloader by default in debug mode. To -control this separately from the environment, use the -``--debug/--no-debug`` option or the ``FLASK_DEBUG`` environment -variable. - -To switch Flask to the development environment and enable debug mode, -set ``--env``: +The :data:`DEBUG` config value is special because it may behave inconsistently if +changed after the app has begun setting up. In order to set debug mode reliably, use the +``--debug`` option on the ``flask`` command.``flask run`` will use the interactive +debugger and reloader by default in debug mode. .. code-block:: text - $ flask --app hello --env development run + $ flask --app hello --debug run -Using the options or environment variables as described above is -recommended. While it is possible to set :data:`ENV` and :data:`DEBUG` -in your config or code, this is strongly discouraged. They can't be read -early by the ``flask`` command, and some systems or extensions may have -already configured themselves based on a previous value. +Using the option is recommended. While it is possible to set :data:`DEBUG` in your +config or code, this is strongly discouraged. It can't be read early by the ``flask`` +command, and some systems or extensions may have already configured themselves based on +a previous value. Builtin Configuration Values @@ -83,32 +67,27 @@ The following configuration values are used internally by Flask: .. py:data:: ENV - What environment the app is running in. Flask and extensions may - enable behaviors based on the environment, such as enabling debug - mode. The :attr:`~flask.Flask.env` attribute maps to this config - key. This is set by the :envvar:`FLASK_ENV` environment variable and - may not behave as expected if set in code. - - **Do not enable development when deploying in production.** + What environment the app is running in. The :attr:`~flask.Flask.env` attribute maps + to this config key. Default: ``'production'`` + .. deprecated:: 2.2 + Will be removed in Flask 2.3. Use ``--debug`` instead. + .. versionadded:: 1.0 .. py:data:: DEBUG - Whether debug mode is enabled. When using ``flask run`` to start the - development server, an interactive debugger will be shown for - unhandled exceptions, and the server will be reloaded when code - changes. The :attr:`~flask.Flask.debug` attribute maps to this - config key. This is enabled when :data:`ENV` is ``'development'`` - and is overridden by the ``FLASK_DEBUG`` environment variable. It - may not behave as expected if set in code. + Whether debug mode is enabled. When using ``flask run`` to start the development + server, an interactive debugger will be shown for unhandled exceptions, and the + server will be reloaded when code changes. The :attr:`~flask.Flask.debug` attribute + maps to this config key. This is set with the ``FLASK_DEBUG`` environment variable. + It may not behave as expected if set in code. **Do not enable debug mode when deploying in production.** - Default: ``True`` if :data:`ENV` is ``'development'``, or ``False`` - otherwise. + Default: ``False`` .. py:data:: TESTING @@ -408,6 +387,9 @@ The following configuration values are used internally by Flask: removed in Flask 2.3. The default ``app.json`` provider has equivalent attributes instead. +.. versionchanged:: 2.2 + ``ENV`` will be removed in Flask 2.3. Use ``--debug`` instead. + Configuring from Python Files ----------------------------- diff --git a/docs/debugging.rst b/docs/debugging.rst index b907c769cd..fb3604b036 100644 --- a/docs/debugging.rst +++ b/docs/debugging.rst @@ -39,28 +39,22 @@ during a request. This debugger should only be used during development. security risk. Do not run the development server or debugger in a production environment. -To enable the debugger, run the development server with the environment -set to ``development``. This puts Flask in debug mode, which changes how -it handles some errors, and enables the debugger and reloader. +The debugger is enabled by default when the development server is run in debug mode. .. code-block:: text - $ flask --app hello --env development run + $ flask --app hello --debug run -``FLASK_ENV`` can also be set as an environment variable. When running -from Python code, passing ``debug=True`` enables debug mode, which is -mostly equivalent. Debug mode can be controlled separately from the -environment with the ``--debug/--no-debug`` option or the -``FLASK_DEBUG`` environment variable. +When running from Python code, passing ``debug=True`` enables debug mode, which is +mostly equivalent. .. code-block:: python app.run(debug=True) -:doc:`/server` and :doc:`/cli` have more information about running the -debugger, debug mode, and development mode. More information about the -debugger can be found in the `Werkzeug documentation -`__. +:doc:`/server` and :doc:`/cli` have more information about running the debugger and +debug mode. More information about the debugger can be found in the `Werkzeug +documentation `__. External Debuggers @@ -78,7 +72,7 @@ which can interfere. .. code-block:: text - $ flask --app hello --env development run --no-debugger --no-reload + $ flask --app hello --debug run --no-debugger --no-reload When running from Python: diff --git a/docs/quickstart.rst b/docs/quickstart.rst index a824f6f3a0..85668aa18b 100644 --- a/docs/quickstart.rst +++ b/docs/quickstart.rst @@ -104,14 +104,12 @@ error occurs during a request. security risk. Do not run the development server or debugger in a production environment. -To enable all development features, set the ``--env`` option to -``development``. +To enable debug mode, use the ``--debug`` option. .. code-block:: text - $ flask --app hello --env development run + $ flask --app hello --debug run * Serving Flask app 'hello' - * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000 (Press CTRL+C to quit) * Restarting with stat @@ -120,8 +118,7 @@ To enable all development features, set the ``--env`` option to See also: -- :doc:`/server` and :doc:`/cli` for information about running in - development mode. +- :doc:`/server` and :doc:`/cli` for information about running in debug mode. - :doc:`/debugging` for information about using the built-in debugger and other debuggers. - :doc:`/logging` and :doc:`/errorhandling` to log errors and display diff --git a/docs/server.rst b/docs/server.rst index 5c78f171bd..a34dfab5dd 100644 --- a/docs/server.rst +++ b/docs/server.rst @@ -3,9 +3,9 @@ Development Server ================== -Flask provides a ``run`` command to run the application with a -development server. In development mode, this server provides an -interactive debugger and will reload when code is changed. +Flask provides a ``run`` command to run the application with a development server. In +debug mode, this server provides an interactive debugger and will reload when code is +changed. .. warning:: @@ -18,65 +18,18 @@ interactive debugger and will reload when code is changed. Command Line ------------ -The ``flask run`` command line script is the recommended way to run the -development server. Use the ``--app`` option to point to your -application, and the ``--env development`` option to fully enable -development mode. +The ``flask run`` CLI command is the recommended way to run the development server. Use +the ``--app`` option to point to your application, and the ``--debug`` option to enable +debug mode. .. code-block:: text - $ flask --app hello --env development run + $ flask --app hello --debug run -These options (and any others) can also be set using environment -variables. - -.. tabs:: - - .. group-tab:: Bash - - .. code-block:: text - - $ export FLASK_APP=hello - $ export FLASK_ENV=development - $ flask run - - .. group-tab:: Fish - - .. code-block:: text - - $ set -x FLASK_APP hello - $ export FLASK_ENV=development - $ flask run - - .. group-tab:: CMD - - .. code-block:: text - - > set FLASK_APP=hello - > set FLASK_ENV=development - > flask run - - .. group-tab:: Powershell - - .. code-block:: text - - > $env:FLASK_APP = "hello" - > $env:FLASK_ENV = "development" - > flask run - -This enables the development environment, including the interactive -debugger and reloader, and then starts the server on -http://localhost:5000/. Use ``flask run --help`` to see the available -options, and :doc:`/cli` for detailed instructions about configuring -and using the CLI. - -.. note:: - - Debug mode can be controlled separately from the development - environment with the ``--debug/--no-debug`` option or the - ``FLASK_DEBUG`` environment variable. This is how older versions of - Flask worked. You should prefer setting the development environment - as shown above. +This enables debug mode, including the interactive debugger and reloader, and then +starts the server on http://localhost:5000/. Use ``flask run --help`` to see the +available options, and :doc:`/cli` for detailed instructions about configuring and using +the CLI. .. _address-already-in-use: @@ -144,18 +97,13 @@ while still allowing the server to handle errors on reload. In Code ------- -As an alternative to the ``flask run`` command, the development server -can also be started from Python with the :meth:`Flask.run` method. This -method takes arguments similar to the CLI options to control the server. -The main difference from the CLI command is that the server will crash -if there are errors when reloading. - -``debug=True`` can be passed to enable the debugger and reloader, but -the ``FLASK_ENV=development`` environment variable is still required to -fully enable development mode. +The development server can also be started from Python with the :meth:`Flask.run` +method. This method takes arguments similar to the CLI options to control the server. +The main difference from the CLI command is that the server will crash if there are +errors when reloading. ``debug=True`` can be passed to enable debug mode. -Place the call in a main block, otherwise it will interfere when trying -to import and run the application with a production server later. +Place the call in a main block, otherwise it will interfere when trying to import and +run the application with a production server later. .. code-block:: python diff --git a/docs/tutorial/factory.rst b/docs/tutorial/factory.rst index cbfecab30b..c8e2c5f4e0 100644 --- a/docs/tutorial/factory.rst +++ b/docs/tutorial/factory.rst @@ -127,24 +127,23 @@ Run The Application Now you can run your application using the ``flask`` command. From the terminal, tell Flask where to find your application, then run it in -development mode. Remember, you should still be in the top-level +debug mode. Remember, you should still be in the top-level ``flask-tutorial`` directory, not the ``flaskr`` package. -Development mode shows an interactive debugger whenever a page raises an +Debug mode shows an interactive debugger whenever a page raises an exception, and restarts the server whenever you make changes to the code. You can leave it running and just reload the browser page as you follow the tutorial. .. code-block:: text - $ flask --app flaskr --env development run + $ flask --app flaskr --debug run You'll see output similar to this: .. code-block:: text * Serving Flask app "flaskr" - * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat diff --git a/examples/tutorial/README.rst b/examples/tutorial/README.rst index 6c7c2fe9ce..a7e12ca250 100644 --- a/examples/tutorial/README.rst +++ b/examples/tutorial/README.rst @@ -48,7 +48,7 @@ Run .. code-block:: text $ flask --app flaskr init-db - $ flask --app flaskr --env development run + $ flask --app flaskr --debug run Open http://127.0.0.1:5000 in a browser.