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