Merge branch '2.1.x'

This commit is contained in:
David Lord 2022-04-24 10:14:53 -07:00
commit cb4f742543
No known key found for this signature in database
GPG key ID: 7A1C87E3F5BC42A8
5 changed files with 28 additions and 15 deletions

View file

@ -6,6 +6,17 @@ Version 2.2.0
Unreleased Unreleased
Version 2.1.2
-------------
Unreleased
- Fix type annotation for ``json.loads``, it accepts str or bytes.
:issue:`4519`
- The ``--cert`` and ``--key`` options on ``flask run`` can be given
in either order. :issue:`4459`
Version 2.1.1 Version 2.1.1
------------- -------------

View file

@ -142,9 +142,9 @@ use ``pathlib.Path`` to get files relative to the current test file.
def test_edit_user(client): def test_edit_user(client):
response = client.post("/user/2/edit", data={ response = client.post("/user/2/edit", data={
name="Flask", "name": "Flask",
theme="dark", "theme": "dark",
picture=(resources / "picture.png").open("rb"), "picture": (resources / "picture.png").open("rb"),
}) })
assert response.status_code == 200 assert response.status_code == 200

View file

@ -763,7 +763,10 @@ class SeparatedPathType(click.Path):
@click.option("--host", "-h", default="127.0.0.1", help="The interface to bind to.") @click.option("--host", "-h", default="127.0.0.1", help="The interface to bind to.")
@click.option("--port", "-p", default=5000, help="The port to bind to.") @click.option("--port", "-p", default=5000, help="The port to bind to.")
@click.option( @click.option(
"--cert", type=CertParamType(), help="Specify a certificate file to use HTTPS." "--cert",
type=CertParamType(),
help="Specify a certificate file to use HTTPS.",
is_eager=True,
) )
@click.option( @click.option(
"--key", "--key",

View file

@ -153,7 +153,11 @@ def dump(
_json.dump(obj, fp, **kwargs) _json.dump(obj, fp, **kwargs)
def loads(s: str, app: t.Optional["Flask"] = None, **kwargs: t.Any) -> t.Any: def loads(
s: t.Union[str, bytes],
app: t.Optional["Flask"] = None,
**kwargs: t.Any,
) -> t.Any:
"""Deserialize an object from a string of JSON. """Deserialize an object from a string of JSON.
Takes the same arguments as the built-in :func:`json.loads`, with Takes the same arguments as the built-in :func:`json.loads`, with

View file

@ -7,7 +7,6 @@ import sys
import types import types
from functools import partial from functools import partial
from pathlib import Path from pathlib import Path
from unittest.mock import patch
import click import click
import pytest import pytest
@ -25,7 +24,6 @@ from flask.cli import FlaskGroup
from flask.cli import get_version from flask.cli import get_version
from flask.cli import load_dotenv from flask.cli import load_dotenv
from flask.cli import locate_app from flask.cli import locate_app
from flask.cli import main as cli_main
from flask.cli import NoAppException from flask.cli import NoAppException
from flask.cli import prepare_import from flask.cli import prepare_import
from flask.cli import run_command from flask.cli import run_command
@ -555,9 +553,14 @@ def test_run_cert_path():
with pytest.raises(click.BadParameter): with pytest.raises(click.BadParameter):
run_command.make_context("run", ["--key", __file__]) run_command.make_context("run", ["--key", __file__])
# cert specified first
ctx = run_command.make_context("run", ["--cert", __file__, "--key", __file__]) ctx = run_command.make_context("run", ["--cert", __file__, "--key", __file__])
assert ctx.params["cert"] == (__file__, __file__) assert ctx.params["cert"] == (__file__, __file__)
# key specified first
ctx = run_command.make_context("run", ["--key", __file__, "--cert", __file__])
assert ctx.params["cert"] == (__file__, __file__)
def test_run_cert_adhoc(monkeypatch): def test_run_cert_adhoc(monkeypatch):
monkeypatch.setitem(sys.modules, "cryptography", None) monkeypatch.setitem(sys.modules, "cryptography", None)
@ -654,11 +657,3 @@ def test_cli_empty(app):
result = app.test_cli_runner().invoke(args=["blue", "--help"]) result = app.test_cli_runner().invoke(args=["blue", "--help"])
assert result.exit_code == 2, f"Unexpected success:\n\n{result.output}" assert result.exit_code == 2, f"Unexpected success:\n\n{result.output}"
def test_click_7_deprecated():
with patch("flask.cli.cli"):
if int(click.__version__[0]) < 8:
pytest.deprecated_call(cli_main, match=".* Click 7 is deprecated")
else:
cli_main()