commit: 2eaa10576748e207f6a801dcc327349ef69dc420 Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Thu May 20 06:30:48 2021 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu May 20 07:25:13 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2eaa1057
dev-python/werkzeug: Backport py3.10 support Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> .../werkzeug/files/werkzeug-2.0.1-py310.patch | 103 +++++++++++++++++++++ dev-python/werkzeug/werkzeug-2.0.1-r1.ebuild | 47 ++++++++++ 2 files changed, 150 insertions(+) diff --git a/dev-python/werkzeug/files/werkzeug-2.0.1-py310.patch b/dev-python/werkzeug/files/werkzeug-2.0.1-py310.patch new file mode 100644 index 00000000000..56a0166d334 --- /dev/null +++ b/dev-python/werkzeug/files/werkzeug-2.0.1-py310.patch @@ -0,0 +1,103 @@ +From 584f3cff7d5cb8a588189ae1137b814cf5c47e05 Mon Sep 17 00:00:00 2001 +From: David Lord <david...@gmail.com> +Date: Wed, 19 May 2021 20:01:58 -0700 +Subject: [PATCH] address deprecation warnings from Python 3.10b1 + +--- + tests/conftest.py | 5 ++++- + tests/test_local.py | 34 +++++++++++++++++++++++++--------- + 2 files changed, 29 insertions(+), 10 deletions(-) + +diff --git a/tests/conftest.py b/tests/conftest.py +index 3b5cbd71c..4ad1ff23e 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -66,7 +66,10 @@ def connect(self, **kwargs): + + if protocol == "https": + if "context" not in kwargs: +- kwargs["context"] = ssl.SSLContext() ++ context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) ++ context.check_hostname = False ++ context.verify_mode = ssl.CERT_NONE ++ kwargs["context"] = context + + return http.client.HTTPSConnection(self.addr, **kwargs) + +diff --git a/tests/test_local.py b/tests/test_local.py +index 537fc32fb..b5c392890 100644 +--- a/tests/test_local.py ++++ b/tests/test_local.py +@@ -12,6 +12,18 @@ + from werkzeug import local + + ++if sys.version_info < (3, 7): ++ ++ def run_async(coro): ++ return asyncio.get_event_loop().run_until_complete(coro) ++ ++ ++else: ++ ++ def run_async(coro): ++ return asyncio.run(coro) ++ ++ + def test_basic_local(): + ns = local.Local() + ns.foo = 0 +@@ -55,9 +67,11 @@ async def value_setter(idx): + await asyncio.sleep(0.02) + values.append(ns.foo) + +- loop = asyncio.get_event_loop() +- futures = [asyncio.ensure_future(value_setter(idx)) for idx in [1, 2, 3]] +- loop.run_until_complete(asyncio.gather(*futures)) ++ async def main(): ++ futures = [asyncio.ensure_future(value_setter(i)) for i in [1, 2, 3]] ++ await asyncio.gather(*futures) ++ ++ run_async(main()) + assert sorted(values) == [1, 2, 3] + + def delfoo(): +@@ -118,9 +132,11 @@ async def task(): + ls.push(1) + assert len(ls._local.stack) == 2 + +- loop = asyncio.get_event_loop() +- futures = [asyncio.ensure_future(task()) for _ in range(3)] +- loop.run_until_complete(asyncio.gather(*futures)) ++ async def main(): ++ futures = [asyncio.ensure_future(task()) for _ in range(3)] ++ await asyncio.gather(*futures) ++ ++ run_async(main()) + + + @pytest.mark.skipif( +@@ -571,7 +587,7 @@ async def get(): + async def main(): + return await p + +- out = asyncio.get_event_loop().run_until_complete(main()) ++ out = run_async(main()) + assert out == 1 + + +@@ -599,7 +615,7 @@ async def main(): + + return out + +- out = asyncio.get_event_loop().run_until_complete(main()) ++ out = run_async(main()) + assert out == [2, 1, 0] + + +@@ -623,4 +639,4 @@ async def main(): + assert p.value == 2 + return True + +- assert asyncio.get_event_loop().run_until_complete(main()) ++ assert run_async(main()) diff --git a/dev-python/werkzeug/werkzeug-2.0.1-r1.ebuild b/dev-python/werkzeug/werkzeug-2.0.1-r1.ebuild new file mode 100644 index 00000000000..38fc4aaa001 --- /dev/null +++ b/dev-python/werkzeug/werkzeug-2.0.1-r1.ebuild @@ -0,0 +1,47 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{7..10} pypy3 ) + +inherit distutils-r1 + +DESCRIPTION="Collection of various utilities for WSGI applications" +HOMEPAGE=" + https://werkzeug.palletsprojects.com/ + https://pypi.org/project/Werkzeug/ + https://github.com/pallets/werkzeug/" +SRC_URI=" + https://github.com/pallets/werkzeug/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sparc ~x86" + +BDEPEND=" + test? ( + dev-python/cryptography[${PYTHON_USEDEP}] + !hppa? ( !ia64? ( + $(python_gen_cond_dep ' + dev-python/greenlet[${PYTHON_USEDEP}] + ' 'python*') + ) ) + dev-python/pytest-timeout[${PYTHON_USEDEP}] + dev-python/pytest-xprocess[${PYTHON_USEDEP}] + dev-python/watchdog[${PYTHON_USEDEP}] + ~dev-python/werkzeug-${PV}[${PYTHON_USEDEP}] + )" + +distutils_enable_tests pytest + +PATCHES=( + "${FILESDIR}"/${P}-py310.patch +) + +python_test() { + # the default portage tempdir is too long for AF_UNIX sockets + local -x TMPDIR=/tmp + epytest -p no:httpbin tests +}