Merge pull request #258300 from mweinelt/quart-0.19.1

python311Packages.werkzeug: 2.3.7 -> 3.0.1; python311Packages.flask: 2.3.3 -> 3.0.1; python311Packages.quart: 0.18.4 -> 0.19.4
This commit is contained in:
Martin Weinelt 2024-01-26 22:35:31 +01:00 committed by GitHub
commit 273d8b2808
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 191 additions and 187 deletions

View file

@ -2,14 +2,23 @@
, buildPythonPackage , buildPythonPackage
, pythonOlder , pythonOlder
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
# build-system
, setuptools
# dependencies
, flask , flask
# tests
, markdown , markdown
, pytestCheckHook
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "Flask-API"; pname = "flask-api";
version = "3.1"; version = "3.1";
format = "setuptools"; pyproject = true;
disabled = pythonOlder "3.6"; disabled = pythonOlder "3.6";
@ -20,9 +29,25 @@ buildPythonPackage rec {
hash = "sha256-nHgeI5FLKkDp4uWO+0eaT4YSOMkeQ0wE3ffyJF+WzTM="; hash = "sha256-nHgeI5FLKkDp4uWO+0eaT4YSOMkeQ0wE3ffyJF+WzTM=";
}; };
patches = [
(fetchpatch {
# werkzeug 3.0 support
url = "https://github.com/flask-api/flask-api/commit/9c998897f67d8aa959dc3005d7d22f36568b6938.patch";
hash = "sha256-vaCZ4gVlfQXyeksA44ydkjz2FxODHt3gTTP+ukJwEGY=";
})
];
nativeBuildInputs = [
setuptools
];
propagatedBuildInputs = [ propagatedBuildInputs = [
flask flask
];
nativeCheckInputs = [
markdown markdown
pytestCheckHook
]; ];
meta = with lib; { meta = with lib; {

View file

@ -1,51 +0,0 @@
{ lib
, buildPythonPackage
, fetchPypi
, flask
, flask-silk
, future
, pythonOlder
, unittestCheckHook
}:
buildPythonPackage rec {
pname = "flask-autoindex";
version = "0.6.6";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
pname = "Flask-AutoIndex";
inherit version;
sha256 = "ea319f7ccadf68ddf98d940002066278c779323644f9944b300066d50e2effc7";
};
propagatedBuildInputs = [
flask
flask-silk
future
];
nativeCheckInputs = [
unittestCheckHook
];
pythonImportsCheck = [
"flask_autoindex"
];
meta = with lib; {
description = "The mod_autoindex for Flask";
longDescription = ''
Flask-AutoIndex generates an index page for your Flask application automatically.
The result is just like mod_autoindex, but the look is more awesome!
'';
homepage = "https://flask-autoindex.readthedocs.io/";
changelog = "https://github.com/general03/flask-autoindex/blob/v${version}/CHANGELOG.md";
license = licenses.bsd2;
maintainers = teams.sage.members;
# https://github.com/general03/flask-autoindex/issues/67
broken = true;
};
}

View file

@ -1,55 +0,0 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, fetchpatch
, flask
, python
}:
buildPythonPackage rec {
pname = "flask-basicauth";
version = "0.2.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "jpvanhal";
repo = pname;
rev = "v${version}";
hash = "sha256-han0OjMI1XmuWKHGVpk+xZB+/+cpV1I+659zOG3hcPY=";
};
patches = [
(fetchpatch {
# The unit tests fail due to an invalid import:
# from flask.ext.basicauth import BasicAuth
#
# This patch replaces it with the correct import:
# from flask_basicauth import BasicAuth
#
# The patch uses the changes from this pull request,
# and therefore can be removed once this pull request
# has been merged:
# https://github.com/jpvanhal/flask-basicauth/pull/29
name = "fix-test-flask-ext-imports.patch";
url = "https://github.com/jpvanhal/flask-basicauth/commit/23f57dc1c3d85ea6fc7f468e8d8c6f19348a0a81.patch";
hash = "sha256-njUYjO0TRe3vr5D0XjIfCNcsFlShbGxtFV/DJerAKDE=";
})
];
propagatedBuildInputs = [ flask ];
checkPhase = ''
runHook preCheck
${python.interpreter} -m unittest discover
runHook postCheck
'';
pythonImportsCheck = [ "flask_basicauth" ];
meta = with lib; {
homepage = "https://github.com/jpvanhal/flask-basicauth";
description = "HTTP basic access authentication for Flask";
license = licenses.mit;
maintainers = with maintainers; [ wesnel ];
};
}

View file

@ -1,7 +1,15 @@
{ lib { lib
, buildPythonPackage , buildPythonPackage
, fetchPypi , fetchPypi
, fetchpatch
# build-system
, setuptools
# dependencies
, flask , flask
# tests
, pytestCheckHook , pytestCheckHook
, pygments , pygments
}: }:
@ -17,6 +25,14 @@ buildPythonPackage rec {
sha256 = "YGZfMcLGEokdto/4Aek+06CIHGyOw0arxk0qmSP1YuE="; sha256 = "YGZfMcLGEokdto/4Aek+06CIHGyOw0arxk0qmSP1YuE=";
}; };
patches = [
(fetchpatch {
# flask 3.0 compat
url = "https://github.com/zzzsochi/Flask-Gravatar/commit/d74d70d9695c464b602c96c2383d391b38ed51ac.patch";
hash = "sha256-tCKkA2io/jhvrh6RhTeEw4AKnIZc9hsqTf2qItUsdjo=";
})
];
postPatch = '' postPatch = ''
sed -i setup.py \ sed -i setup.py \
-e "s|tests_require=tests_require,||g" \ -e "s|tests_require=tests_require,||g" \
@ -28,6 +44,10 @@ buildPythonPackage rec {
--replace "--cov=flask_gravatar --cov-report=term-missing" "" --replace "--cov=flask_gravatar --cov-report=term-missing" ""
''; '';
nativeBuildInputs = [
setuptools
];
propagatedBuildInputs = [ propagatedBuildInputs = [
flask flask
]; ];
@ -37,7 +57,9 @@ buildPythonPackage rec {
pygments pygments
]; ];
pythonImportsCheck = [ "flask_gravatar" ]; pythonImportsCheck = [
"flask_gravatar"
];
meta = with lib; { meta = with lib; {
homepage = "https://github.com/zzzsochi/Flask-Gravatar"; homepage = "https://github.com/zzzsochi/Flask-Gravatar";

View file

@ -29,6 +29,8 @@ buildPythonPackage rec {
# conditional so that overrides are easier for web applications # conditional so that overrides are easier for web applications
patches = lib.optionals (lib.versionAtLeast werkzeug.version "2.1.0") [ patches = lib.optionals (lib.versionAtLeast werkzeug.version "2.1.0") [
./werkzeug-2.1.0-compat.patch ./werkzeug-2.1.0-compat.patch
] ++ lib.optionals (lib.versionAtLeast flask.version "3.0.0") [
./flask-3.0-compat.patch
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -0,0 +1,24 @@
diff --git a/tests/test_api.py b/tests/test_api.py
index 582ee5a..20db1f5 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -1,7 +1,7 @@
import unittest
import json
from flask import Flask, Blueprint, redirect, views, abort as flask_abort
-from flask.signals import got_request_exception, signals_available
+from flask.signals import got_request_exception
try:
from mock import Mock
except:
@@ -491,10 +491,6 @@ class APITestCase(unittest.TestCase):
self.assertEqual(api.default_mediatype, resp.headers['Content-Type'])
def test_handle_error_signal(self):
- if not signals_available:
- # This test requires the blinker lib to run.
- print("Can't test signals without signal support")
- return
app = Flask(__name__)
api = flask_restful.Api(app)

View file

@ -1,17 +1,25 @@
{ lib { lib
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, buildPythonPackage , buildPythonPackage
, flask
, flask-sessionstore # build-system
, flask-sqlalchemy , setuptools
# dependencies
, captcha , captcha
, flask
, markupsafe
# tests
, flask-sqlalchemy
, pytestCheckHook , pytestCheckHook
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "flask-session-captcha"; pname = "flask-session-captcha";
version = "1.3.0"; version = "1.3.0";
format = "setuptools"; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Tethik"; owner = "Tethik";
@ -20,15 +28,36 @@ buildPythonPackage rec {
hash = "sha256-V0f3mXCfqwH2l3OtJKOHGdrlKAFxs2ynqXvNve7Amkc="; hash = "sha256-V0f3mXCfqwH2l3OtJKOHGdrlKAFxs2ynqXvNve7Amkc=";
}; };
propagatedBuildInputs = [ flask flask-sessionstore captcha ]; patches = [
(fetchpatch {
# https://github.com/Tethik/flask-session-captcha/pull/44
url = "https://github.com/Tethik/flask-session-captcha/commit/3f79c22a71c60dd60e9df61b550cce641603dcb6.patch";
hash = "sha256-MXsoSytBNbcg3HU6IWlvf2MgNUL78T5ToxKGv4YMtZw=";
})
];
pythonImportsCheck = [ "flask_session_captcha" ]; nativeBuildInputs = [
setuptools
];
nativeCheckInputs = [ flask-sqlalchemy pytestCheckHook ]; propagatedBuildInputs = [
captcha
flask
markupsafe
];
pythonImportsCheck = [
"flask_session_captcha"
];
# RuntimeError: Working outside of application context. # RuntimeError: Working outside of application context.
doCheck = false; doCheck = false;
nativeCheckInputs = [
flask-sqlalchemy
pytestCheckHook
];
meta = with lib; { meta = with lib; {
description = "A captcha implemention for flask"; description = "A captcha implemention for flask";
homepage = "https://github.com/Tethik/flask-session-captcha"; homepage = "https://github.com/Tethik/flask-session-captcha";

View file

@ -1,35 +0,0 @@
{ lib
, fetchPypi
, buildPythonPackage
, flask
, nose
}:
buildPythonPackage rec {
pname = "flask-sessionstore";
version = "0.4.5";
format = "setuptools";
src = fetchPypi {
pname = "Flask-Sessionstore";
inherit version;
hash = "sha256-AQ3jWrnw2UI8L3nFEx4AhDwGP4R8Tr7iBMsDS5jLQPQ=";
};
propagatedBuildInputs = [ flask ];
pythonImportsCheck = [ "flask_sessionstore" ];
nativeCheckInputs = [ nose ];
checkPhase = ''
nosetests -s
'';
meta = with lib; {
description = "Session Storage Backends for Flask";
homepage = "https://github.com/mcrowson/flask-sessionstore";
license = licenses.bsd3;
maintainers = with maintainers; [ Flakebi ];
};
}

View file

@ -1,18 +1,28 @@
{ lib { lib
, buildPythonPackage , buildPythonPackage
, fetchPypi , fetchPypi
, asgiref , pythonOlder
# build-system
, flit-core
# dependencies
, blinker , blinker
, click , click
, flit-core
, importlib-metadata , importlib-metadata
, itsdangerous , itsdangerous
, jinja2 , jinja2
, python-dotenv
, werkzeug , werkzeug
# optional-dependencies
, asgiref
, python-dotenv
# tests
, greenlet
, pytestCheckHook , pytestCheckHook
, pythonOlder
# used in passthru.tests # reverse dependencies
, flask-limiter , flask-limiter
, flask-restful , flask-restful
, flask-restx , flask-restx
@ -21,12 +31,12 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "flask"; pname = "flask";
version = "2.3.3"; version = "3.0.1";
format = "pyproject"; format = "pyproject";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-CcNHqSqn/0qOfzIGeV8w2CZlS684uHPQdEzVccpgnvw="; hash = "sha256-ZIn1G7Nmbe9vMU4V8Z1QoYaaGa4OjJo2Qf/mbHfUJAM=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -39,21 +49,31 @@ buildPythonPackage rec {
itsdangerous itsdangerous
jinja2 jinja2
werkzeug werkzeug
] ++ lib.optional (pythonOlder "3.10") importlib-metadata; ] ++ lib.optionals (pythonOlder "3.10") [
importlib-metadata
];
passthru.optional-dependencies = {
async = [
asgiref
];
dotenv = [
python-dotenv
];
};
nativeCheckInputs = [ nativeCheckInputs = [
pytestCheckHook pytestCheckHook
]; ] ++ lib.optionals (pythonOlder "3.11") [
greenlet
] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
passthru.tests = { passthru.tests = {
inherit flask-limiter flask-restful flask-restx moto; inherit flask-limiter flask-restful flask-restx moto;
}; };
passthru.optional-dependencies = {
dotenv = [ python-dotenv ];
async = [ asgiref ];
};
meta = with lib; { meta = with lib; {
changelog = "https://flask.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${replaceStrings [ "." ] [ "-" ] version}";
homepage = "https://flask.palletsprojects.com/"; homepage = "https://flask.palletsprojects.com/";
description = "The Python micro framework for building web applications"; description = "The Python micro framework for building web applications";
longDescription = '' longDescription = ''

View file

@ -1,6 +1,7 @@
{ lib { lib
, buildPythonPackage , buildPythonPackage
, fetchPypi , fetchPypi
, fetchpatch
, pythonRelaxDepsHook , pythonRelaxDepsHook
# build-system # build-system
@ -33,6 +34,14 @@ buildPythonPackage rec {
hash = "sha256-e4WWvrDnWntlPDnR888mPW1cR20p4d9ve7K3C/nwaj0="; hash = "sha256-e4WWvrDnWntlPDnR888mPW1cR20p4d9ve7K3C/nwaj0=";
}; };
patches = [
(fetchpatch {
# backport flask 3.0 support; drop after 0.10.1
url = "https://github.com/psf/httpbin/commit/c1d9e33049263fed3cb27806a97f094acc350905.patch";
hash = "sha256-SYJgQN3ERDgLIaBc4eqDfey+EX4z6CSxLoAA7j+16xI=";
})
];
nativeBuildInputs = [ nativeBuildInputs = [
setuptools setuptools
pythonRelaxDepsHook pythonRelaxDepsHook

View file

@ -6,6 +6,7 @@
, httpx , httpx
, pytestCheckHook , pytestCheckHook
, pythonOlder , pythonOlder
, quart
, requests , requests
, sanic , sanic
, uvicorn , uvicorn
@ -31,7 +32,7 @@ buildPythonPackage rec {
flask flask
httpx httpx
pytestCheckHook pytestCheckHook
# quart quart
requests requests
sanic sanic
uvicorn uvicorn

View file

@ -1,6 +1,7 @@
{ lib { lib
, buildPythonPackage , buildPythonPackage
, fetchFromGitHub , fetchFromGitHub
, pythonOlder
# build-system # build-system
, poetry-core , poetry-core
@ -9,6 +10,7 @@
, aiofiles , aiofiles
, blinker , blinker
, click , click
, flask
, hypercorn , hypercorn
, importlib-metadata , importlib-metadata
, itsdangerous , itsdangerous
@ -29,14 +31,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "quart"; pname = "quart";
version = "0.18.4"; version = "0.19.4";
format = "pyproject"; format = "pyproject";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pallets"; owner = "pallets";
repo = "quart"; repo = "quart";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-iT/pePUtH1hwNIOG8Y/YbqCVseNXVOKC0nrXfB2RTlQ="; hash = "sha256-EgCZ0AXK2vGxo55BWAcDVv6zNUrWNbAYNnEXEBJk+84=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -52,15 +54,17 @@ buildPythonPackage rec {
aiofiles aiofiles
blinker blinker
click click
flask
hypercorn hypercorn
importlib-metadata
itsdangerous itsdangerous
jinja2 jinja2
markupsafe markupsafe
pydata-sphinx-theme pydata-sphinx-theme
python-dotenv python-dotenv
typing-extensions
werkzeug werkzeug
] ++ lib.optionals (pythonOlder "3.10") [
importlib-metadata
typing-extensions
]; ];
pythonImportsCheck = [ pythonImportsCheck = [
@ -75,11 +79,6 @@ buildPythonPackage rec {
pytestCheckHook pytestCheckHook
]; ];
disabledTestPaths = [
# remove after 0.18.4
"tests/test_signals.py"
];
meta = with lib; { meta = with lib; {
description = "An async Python micro framework for building web applications"; description = "An async Python micro framework for building web applications";
homepage = "https://github.com/pallets/quart/"; homepage = "https://github.com/pallets/quart/";

View file

@ -27,6 +27,7 @@
, pytest-watch , pytest-watch
, pytestCheckHook , pytestCheckHook
, pythonOlder , pythonOlder
, quart
, rq , rq
, sanic , sanic
, setuptools , setuptools
@ -96,7 +97,7 @@ buildPythonPackage rec {
pure-eval pure-eval
]; ];
quart = [ quart = [
# quart missing quart
blinker blinker
]; ];
rq = [ rq = [

View file

@ -3,27 +3,39 @@
, buildPythonPackage , buildPythonPackage
, pythonOlder , pythonOlder
, fetchPypi , fetchPypi
# build-system
, flit-core , flit-core
# dependencies
, markupsafe
# optional-dependencies
, watchdog , watchdog
# tests
, cryptography
, ephemeral-port-reserve , ephemeral-port-reserve
, greenlet
, pytest-timeout , pytest-timeout
, pytest-xprocess , pytest-xprocess
, pytestCheckHook , pytestCheckHook
, markupsafe
# for passthru.tests # reverse dependencies
, moto, sentry-sdk , moto
, sentry-sdk
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "werkzeug"; pname = "werkzeug";
version = "2.3.8"; version = "3.0.1";
format = "pyproject"; format = "pyproject";
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-VUslfHS763oNJUFgpPj/4YUkP1KlIDUGC3Ycpi2XfwM="; hash = "sha256-UH6BHs6nKxikBJR63tSzOQ4duPgmtJTXZVDvRbs7Hcw=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -36,16 +48,19 @@ buildPythonPackage rec {
passthru.optional-dependencies = { passthru.optional-dependencies = {
watchdog = lib.optionals (!stdenv.isDarwin) [ watchdog = lib.optionals (!stdenv.isDarwin) [
# watchdog requires macos-sdk 10.13[ # watchdog requires macos-sdk 10.13
watchdog watchdog
]; ];
}; };
nativeCheckInputs = [ nativeCheckInputs = [
cryptography
ephemeral-port-reserve ephemeral-port-reserve
pytest-timeout pytest-timeout
pytest-xprocess pytest-xprocess
pytestCheckHook pytestCheckHook
] ++ lib.optionals (pythonOlder "3.11") [
greenlet
] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies); ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
disabledTests = lib.optionals stdenv.isDarwin [ disabledTests = lib.optionals stdenv.isDarwin [
@ -68,6 +83,7 @@ buildPythonPackage rec {
}; };
meta = with lib; { meta = with lib; {
changelog = "https://werkzeug.palletsprojects.com/en/${versions.majorMinor version}.x/changes/#version-${replaceStrings [ "." ] [ "-" ] version}";
homepage = "https://palletsprojects.com/p/werkzeug/"; homepage = "https://palletsprojects.com/p/werkzeug/";
description = "The comprehensive WSGI web application library"; description = "The comprehensive WSGI web application library";
longDescription = '' longDescription = ''

View file

@ -164,6 +164,9 @@ mapAliases ({
flask_sqlalchemy = flask-sqlalchemy; # added 2022-07-20 flask_sqlalchemy = flask-sqlalchemy; # added 2022-07-20
flask_testing = flask-testing; # added 2022-04-25 flask_testing = flask-testing; # added 2022-04-25
flask_wtf = flask-wtf; # added 2022-05-24 flask_wtf = flask-wtf; # added 2022-05-24
flask-autoindex = throw "flask-autoindex was removed, as it is not compatible with flask 3.0 and unmaintained since 2020.";
flask-basicauth = throw "flask-basicauth was removed, as it is not compatible with flask 3.0 and unmaintained since 2016.";
flask-sessionstore = throw "flask-sessionstore was removed, as it is not compatible with flask 3.0 and unmaintained since 2017.";
flowlogs_reader = flowlogs-reader; # added 2024-01-03 flowlogs_reader = flowlogs-reader; # added 2024-01-03
FormEncode = formencode; # added 2023-02-19 FormEncode = formencode; # added 2023-02-19
foundationdb51 = throw "foundationdb51 is no longer maintained, use foundationdb71 instead"; # added 2023-06-06 foundationdb51 = throw "foundationdb51 is no longer maintained, use foundationdb71 instead"; # added 2023-06-06

View file

@ -4097,14 +4097,10 @@ self: super: with self; {
flask-assets = callPackage ../development/python-modules/flask-assets { }; flask-assets = callPackage ../development/python-modules/flask-assets { };
flask-autoindex = callPackage ../development/python-modules/flask-autoindex { };
flask-babel = callPackage ../development/python-modules/flask-babel { }; flask-babel = callPackage ../development/python-modules/flask-babel { };
flask-babelex = callPackage ../development/python-modules/flask-babelex { }; flask-babelex = callPackage ../development/python-modules/flask-babelex { };
flask-basicauth = callPackage ../development/python-modules/flask-basicauth { };
flask-bcrypt = callPackage ../development/python-modules/flask-bcrypt { }; flask-bcrypt = callPackage ../development/python-modules/flask-bcrypt { };
flask-bootstrap = callPackage ../development/python-modules/flask-bootstrap { }; flask-bootstrap = callPackage ../development/python-modules/flask-bootstrap { };
@ -4171,8 +4167,6 @@ self: super: with self; {
flask-session-captcha = callPackage ../development/python-modules/flask-session-captcha { }; flask-session-captcha = callPackage ../development/python-modules/flask-session-captcha { };
flask-sessionstore = callPackage ../development/python-modules/flask-sessionstore { };
flask-security-too = callPackage ../development/python-modules/flask-security-too { }; flask-security-too = callPackage ../development/python-modules/flask-security-too { };
flask-silk = callPackage ../development/python-modules/flask-silk { }; flask-silk = callPackage ../development/python-modules/flask-silk { };