mirror of https://github.com/pallets/flask.git
parent
0273664009
commit
5bb30270d2
|
@ -4,7 +4,7 @@ Version 2.3.3
|
|||
Unreleased
|
||||
|
||||
- Python 3.12 compatibility.
|
||||
- Require Werkzeug >= 2.3.6.
|
||||
- Require Werkzeug >= 2.3.7.
|
||||
- Use ``flit_core`` instead of ``setuptools`` as build backend.
|
||||
- Refactor how an app's root and instance paths are determined. :issue:`5160`
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ classifiers = [
|
|||
]
|
||||
requires-python = ">=3.8"
|
||||
dependencies = [
|
||||
"Werkzeug>=2.3.6",
|
||||
"Werkzeug>=2.3.7",
|
||||
"Jinja2>=3.1.2",
|
||||
"itsdangerous>=2.1.2",
|
||||
"click>=8.1.3",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Werkzeug==2.3.6
|
||||
Werkzeug==2.3.7
|
||||
Jinja2==3.1.2
|
||||
MarkupSafe==2.1.1
|
||||
itsdangerous==2.1.2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# SHA1:5bd33f1c06b3fb16f7ab50e80ed309655d110713
|
||||
# SHA1:fe057f95a98251b053eec8fa27df0feb722c70e8
|
||||
#
|
||||
# This file is autogenerated by pip-compile-multi
|
||||
# To update, run:
|
||||
|
@ -18,5 +18,5 @@ markupsafe==2.1.1
|
|||
# -r requirements/tests-pallets-min.in
|
||||
# jinja2
|
||||
# werkzeug
|
||||
werkzeug==2.3.6
|
||||
werkzeug==2.3.7
|
||||
# via -r requirements/tests-pallets-min.in
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import ast
|
||||
import importlib.metadata
|
||||
import inspect
|
||||
import os
|
||||
import platform
|
||||
|
@ -241,13 +242,13 @@ def get_version(ctx, param, value):
|
|||
if not value or ctx.resilient_parsing:
|
||||
return
|
||||
|
||||
import werkzeug
|
||||
from . import __version__
|
||||
flask_version = importlib.metadata.version("flask")
|
||||
werkzeug_version = importlib.metadata.version("werkzeug")
|
||||
|
||||
click.echo(
|
||||
f"Python {platform.python_version()}\n"
|
||||
f"Flask {__version__}\n"
|
||||
f"Werkzeug {werkzeug.__version__}",
|
||||
f"Flask {flask_version}\n"
|
||||
f"Werkzeug {werkzeug_version}",
|
||||
color=ctx.color,
|
||||
)
|
||||
ctx.exit()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import importlib.metadata
|
||||
import typing as t
|
||||
from contextlib import contextmanager
|
||||
from contextlib import ExitStack
|
||||
|
@ -92,6 +93,18 @@ class EnvironBuilder(werkzeug.test.EnvironBuilder):
|
|||
return self.app.json.dumps(obj, **kwargs)
|
||||
|
||||
|
||||
_werkzeug_version = ""
|
||||
|
||||
|
||||
def _get_werkzeug_version() -> str:
|
||||
global _werkzeug_version
|
||||
|
||||
if not _werkzeug_version:
|
||||
_werkzeug_version = importlib.metadata.version("werkzeug")
|
||||
|
||||
return _werkzeug_version
|
||||
|
||||
|
||||
class FlaskClient(Client):
|
||||
"""Works like a regular Werkzeug test client but has knowledge about
|
||||
Flask's contexts to defer the cleanup of the request context until
|
||||
|
@ -115,7 +128,7 @@ class FlaskClient(Client):
|
|||
self._context_stack = ExitStack()
|
||||
self.environ_base = {
|
||||
"REMOTE_ADDR": "127.0.0.1",
|
||||
"HTTP_USER_AGENT": f"werkzeug/{werkzeug.__version__}",
|
||||
"HTTP_USER_AGENT": f"Werkzeug/{_get_werkzeug_version()}",
|
||||
}
|
||||
|
||||
@contextmanager
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# This file was part of Flask-CLI and was modified under the terms of
|
||||
# its Revised BSD License. Copyright © 2015 CERN.
|
||||
import importlib.metadata
|
||||
import os
|
||||
import platform
|
||||
import ssl
|
||||
import sys
|
||||
import types
|
||||
|
@ -227,10 +229,6 @@ def test_locate_app_suppress_raise(test_apps):
|
|||
|
||||
|
||||
def test_get_version(test_apps, capsys):
|
||||
from flask import __version__ as flask_version
|
||||
from werkzeug import __version__ as werkzeug_version
|
||||
from platform import python_version
|
||||
|
||||
class MockCtx:
|
||||
resilient_parsing = False
|
||||
color = None
|
||||
|
@ -241,9 +239,9 @@ def test_get_version(test_apps, capsys):
|
|||
ctx = MockCtx()
|
||||
get_version(ctx, None, "test")
|
||||
out, err = capsys.readouterr()
|
||||
assert f"Python {python_version()}" in out
|
||||
assert f"Flask {flask_version}" in out
|
||||
assert f"Werkzeug {werkzeug_version}" in out
|
||||
assert f"Python {platform.python_version()}" in out
|
||||
assert f"Flask {importlib.metadata.version('flask')}" in out
|
||||
assert f"Werkzeug {importlib.metadata.version('werkzeug')}" in out
|
||||
|
||||
|
||||
def test_scriptinfo(test_apps, monkeypatch):
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import importlib.metadata
|
||||
|
||||
import click
|
||||
import pytest
|
||||
import werkzeug
|
||||
|
||||
import flask
|
||||
from flask import appcontext_popped
|
||||
|
@ -38,34 +39,35 @@ def test_environ_defaults(app, client, app_ctx, req_ctx):
|
|||
assert rv.data == b"http://localhost/"
|
||||
|
||||
|
||||
def test_environ_base_default(app, client, app_ctx):
|
||||
def test_environ_base_default(app, client):
|
||||
@app.route("/")
|
||||
def index():
|
||||
flask.g.user_agent = flask.request.headers["User-Agent"]
|
||||
return flask.request.remote_addr
|
||||
flask.g.remote_addr = flask.request.remote_addr
|
||||
flask.g.user_agent = flask.request.user_agent.string
|
||||
return ""
|
||||
|
||||
rv = client.get("/")
|
||||
assert rv.data == b"127.0.0.1"
|
||||
assert flask.g.user_agent == f"werkzeug/{werkzeug.__version__}"
|
||||
with client:
|
||||
client.get("/")
|
||||
assert flask.g.remote_addr == "127.0.0.1"
|
||||
assert flask.g.user_agent == (
|
||||
f"Werkzeug/{importlib.metadata.version('werkzeug')}"
|
||||
)
|
||||
|
||||
|
||||
def test_environ_base_modified(app, client, app_ctx):
|
||||
def test_environ_base_modified(app, client):
|
||||
@app.route("/")
|
||||
def index():
|
||||
flask.g.user_agent = flask.request.headers["User-Agent"]
|
||||
return flask.request.remote_addr
|
||||
flask.g.remote_addr = flask.request.remote_addr
|
||||
flask.g.user_agent = flask.request.user_agent.string
|
||||
return ""
|
||||
|
||||
client.environ_base["REMOTE_ADDR"] = "0.0.0.0"
|
||||
client.environ_base["REMOTE_ADDR"] = "192.168.0.22"
|
||||
client.environ_base["HTTP_USER_AGENT"] = "Foo"
|
||||
rv = client.get("/")
|
||||
assert rv.data == b"0.0.0.0"
|
||||
assert flask.g.user_agent == "Foo"
|
||||
|
||||
client.environ_base["REMOTE_ADDR"] = "0.0.0.1"
|
||||
client.environ_base["HTTP_USER_AGENT"] = "Bar"
|
||||
rv = client.get("/")
|
||||
assert rv.data == b"0.0.0.1"
|
||||
assert flask.g.user_agent == "Bar"
|
||||
with client:
|
||||
client.get("/")
|
||||
assert flask.g.remote_addr == "192.168.0.22"
|
||||
assert flask.g.user_agent == "Foo"
|
||||
|
||||
|
||||
def test_client_open_environ(app, client, request):
|
||||
|
|
Loading…
Reference in New Issue