diff options
author | Alfredo Tupone <tupone@gentoo.org> | 2022-06-26 12:03:25 +0200 |
---|---|---|
committer | Alfredo Tupone <tupone@gentoo.org> | 2022-06-26 12:03:25 +0200 |
commit | 332fddbf43e73b8695c25f5424a558373deb0657 (patch) | |
tree | fbd9daf323aac8f64aab7a880a61162e1362828d | |
parent | dev-python/mistune: keyword 2.0.2-r1 for ~loong (diff) | |
download | gentoo-332fddbf43e73b8695c25f5424a558373deb0657.tar.gz gentoo-332fddbf43e73b8695c25f5424a558373deb0657.tar.bz2 gentoo-332fddbf43e73b8695c25f5424a558373deb0657.zip |
sci-visualization/dash: fix werkzeug 2.1.0 import
Closes: https://bugs.gentoo.org/844142
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Alfredo Tupone <tupone@gentoo.org>
-rw-r--r-- | sci-visualization/dash/dash-1.21.0-r1.ebuild | 38 | ||||
-rw-r--r-- | sci-visualization/dash/files/0001-Fix-werkzeug-2.1.0-import-dev-tools-error-html-rende.patch | 98 |
2 files changed, 136 insertions, 0 deletions
diff --git a/sci-visualization/dash/dash-1.21.0-r1.ebuild b/sci-visualization/dash/dash-1.21.0-r1.ebuild new file mode 100644 index 000000000000..9d388cb84220 --- /dev/null +++ b/sci-visualization/dash/dash-1.21.0-r1.ebuild @@ -0,0 +1,38 @@ +# Copyright 2021-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{8..10} ) +inherit distutils-r1 + +DESCRIPTION="Python framework for building ML & data science web apps" +HOMEPAGE="https://github.com/plotly/dash" +SRC_URI="https://github.com/plotly/${PN}/archive/refs/tags/v${PV}.tar.gz + -> ${P}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86" +# Test need some packages not yet in the tree +# flask_talisman +# percy +# ... +RESTRICT="test" + +RDEPEND=" + dev-python/future[${PYTHON_USEDEP}] + sci-visualization/dash-table[${PYTHON_USEDEP}] + sci-visualization/dash-html-components[${PYTHON_USEDEP}] + sci-visualization/dash-core-components[${PYTHON_USEDEP}] + dev-python/plotly[${PYTHON_USEDEP}] + dev-python/flask-compress[${PYTHON_USEDEP}]" +DEPEND="${RDEPEND} + test? ( dev-python/beautifulsoup4 )" +BDEPEND="" + +distutils_enable_tests pytest + +PATCHES=( + "${FILESDIR}"/0001-Fix-werkzeug-2.1.0-import-dev-tools-error-html-rende.patch +) diff --git a/sci-visualization/dash/files/0001-Fix-werkzeug-2.1.0-import-dev-tools-error-html-rende.patch b/sci-visualization/dash/files/0001-Fix-werkzeug-2.1.0-import-dev-tools-error-html-rende.patch new file mode 100644 index 000000000000..7f19380dc7cb --- /dev/null +++ b/sci-visualization/dash/files/0001-Fix-werkzeug-2.1.0-import-dev-tools-error-html-rende.patch @@ -0,0 +1,98 @@ +From f9079bfd8a9576947655e1fee0dc343171c21e37 Mon Sep 17 00:00:00 2001 +From: philippe <t4rk@outlook.com> +Date: Tue, 29 Mar 2022 12:17:40 -0400 +Subject: [PATCH] Fix werkzeug 2.1.0 import & dev tools error html rendering. + +--- + .../error/FrontEnd/FrontEndError.react.js | 2 +- + dash/dash.py | 42 +++++++++++++++---- + 2 files changed, 34 insertions(+), 10 deletions(-) + +diff --git a/dash/dash-renderer/src/components/error/FrontEnd/FrontEndError.react.js b/dash/dash-renderer/src/components/error/FrontEnd/FrontEndError.react.js +index 5703add4..49939ea1 100644 +--- a/dash/dash-renderer/src/components/error/FrontEnd/FrontEndError.react.js ++++ b/dash/dash-renderer/src/components/error/FrontEnd/FrontEndError.react.js +@@ -110,7 +110,7 @@ function UnconnectedErrorContent({error, base}) { + )} + {/* Backend Error */} + {typeof error.html !== 'string' ? null : error.html.indexOf( +- '<!DOCTYPE HTML' ++ '<!DOCTYPE' + ) === 0 ? ( + <div className='dash-be-error__st'> + <div className='dash-backend-error'> +diff --git a/dash/dash.py b/dash/dash.py +index b4a3adf0..3d5dae25 100644 +--- a/dash/dash.py ++++ b/dash/dash.py +@@ -19,7 +19,10 @@ from future.moves.urllib.parse import urlparse + + import flask + from flask_compress import Compress +-from werkzeug.debug.tbtools import get_current_traceback ++ ++from werkzeug.debug import tbtools ++from werkzeug.security import gen_salt ++ + from pkg_resources import get_distribution, parse_version + + import plotly +@@ -91,6 +94,30 @@ _re_index_scripts_id = 'src="[^"]*dash[-_]renderer[^"]*"', "dash-renderer" + _re_renderer_scripts_id = 'id="_dash-renderer', "new DashRenderer" + + ++def _get_traceback(secret, error): ++ def _get_skip(text): ++ skip = 0 ++ for i, line in enumerate(text.splitlines()): ++ if "%% callback invoked %%" in line: ++ skip = int((i + 1) / 2) ++ break ++ return skip ++ ++ # werkzeug<2.1.0 ++ if hasattr(tbtools, "get_current_traceback"): ++ tb = tbtools.get_current_traceback() ++ skip = _get_skip(tb.plaintext) ++ return tbtools.get_current_traceback(skip=skip).render_full() ++ ++ tb = tbtools.DebugTraceback(error) # pylint: disable=no-member ++ skip = _get_skip(tb.render_traceback_text()) ++ ++ # pylint: disable=no-member ++ return tbtools.DebugTraceback(error, skip=skip).render_debugger_html( ++ True, secret, True ++ ) ++ ++ + class _NoUpdate(object): + # pylint: disable=too-few-public-methods + pass +@@ -1463,19 +1490,16 @@ class Dash(object): + + if debug and dev_tools.prune_errors: + ++ secret = gen_salt(20) ++ + @self.server.errorhandler(Exception) +- def _wrap_errors(_): ++ def _wrap_errors(error): + # find the callback invocation, if the error is from a callback + # and skip the traceback up to that point + # if the error didn't come from inside a callback, we won't + # skip anything. +- tb = get_current_traceback() +- skip = 0 +- for i, line in enumerate(tb.plaintext.splitlines()): +- if "%% callback invoked %%" in line: +- skip = int((i + 1) / 2) +- break +- return get_current_traceback(skip=skip).render_full(), 500 ++ tb = _get_traceback(secret, error) ++ return tb, 500 + + if debug and dev_tools.ui: + +-- +2.35.1 + |