diff --git a/.circleci/config.yml b/.circleci/config.yml index a817962452..176d3817c6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -385,7 +385,7 @@ jobs: PERCY_ENABLE: 1 PERCY_PARALLEL_TOTAL: -1 - parallelism: 4 + parallelism: 5 steps: - checkout: diff --git a/CHANGELOG.md b/CHANGELOG.md index 29e44e5b62..a9dc025d4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to `dash` will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## [2.3.1] - 2022-03-29 + +### Fixed + +- [#1963](https://github.com/plotly/dash/pull/1963) Fix [#1780](https://github.com/plotly/dash/issues/1780) flask shutdown deprecation warning when running dashduo threaded tests. +- [#1995](https://github.com/plotly/dash/pull/1995) Fix [#1992](https://github.com/plotly/dash/issues/1992) ImportError: cannot import name 'get_current_traceback' from 'werkzeug.debug.tbtools'. + ## [2.3.0] - 2022-03-13 ### Added diff --git a/components/dash-table/tests/selenium/test_sizing.py b/components/dash-table/tests/selenium/test_sizing.py index 707678aa41..d2f743e7e4 100644 --- a/components/dash-table/tests/selenium/test_sizing.py +++ b/components/dash-table/tests/selenium/test_sizing.py @@ -1,12 +1,7 @@ import dash -import pytest from utils import ( - basic_modes, get_props, - generate_mock_data, - generate_markdown_mock_data, - generate_mixed_markdown_data, ) from dash.dependencies import Input, Output @@ -294,12 +289,7 @@ def test_szng002_percentages_result_in_same_widths(test): assert test.get_log_errors() == [] -@pytest.mark.parametrize("props", basic_modes) -@pytest.mark.parametrize( - "data_fn", - [generate_mock_data, generate_markdown_mock_data, generate_mixed_markdown_data], -) -def test_szng004_on_focus(test, props, data_fn): +def on_focus(test, props, data_fn): app = dash.Dash(__name__) baseProps1 = get_props(data_fn=data_fn) diff --git a/components/dash-table/tests/selenium/test_sizing_x.py b/components/dash-table/tests/selenium/test_sizing_x.py new file mode 100644 index 0000000000..51dfefc046 --- /dev/null +++ b/components/dash-table/tests/selenium/test_sizing_x.py @@ -0,0 +1,13 @@ +import pytest + +from test_sizing import on_focus + +from utils import ( + basic_modes, + generate_mock_data, +) + + +@pytest.mark.parametrize("props", basic_modes) +def test_szng004_on_focus(test, props): + on_focus(test, props, generate_mock_data) diff --git a/components/dash-table/tests/selenium/test_sizing_y.py b/components/dash-table/tests/selenium/test_sizing_y.py new file mode 100644 index 0000000000..7a2344cab0 --- /dev/null +++ b/components/dash-table/tests/selenium/test_sizing_y.py @@ -0,0 +1,13 @@ +import pytest + +from test_sizing import on_focus + +from utils import ( + basic_modes, + generate_markdown_mock_data, +) + + +@pytest.mark.parametrize("props", basic_modes) +def test_szng005_on_focus(test, props): + on_focus(test, props, generate_markdown_mock_data) diff --git a/components/dash-table/tests/selenium/test_sizing_z.py b/components/dash-table/tests/selenium/test_sizing_z.py new file mode 100644 index 0000000000..004ad015dd --- /dev/null +++ b/components/dash-table/tests/selenium/test_sizing_z.py @@ -0,0 +1,13 @@ +import pytest + +from test_sizing import on_focus + +from utils import ( + basic_modes, + generate_mixed_markdown_data, +) + + +@pytest.mark.parametrize("props", basic_modes) +def test_szng006_on_focus(test, props): + on_focus(test, props, generate_mixed_markdown_data) diff --git a/dash/_dash_renderer.py b/dash/_dash_renderer.py index b7bdcfbccf..ce978ec74e 100644 --- a/dash/_dash_renderer.py +++ b/dash/_dash_renderer.py @@ -1,4 +1,4 @@ -__version__ = "1.11.3" +__version__ = "1.11.4" _js_dist_dependencies = [ { @@ -39,7 +39,7 @@ { "relative_package_path": "dash-renderer/build/dash_renderer.min.js", "dev_package_path": "dash-renderer/build/dash_renderer.dev.js", - "external_url": "https://unpkg.com/dash-renderer@1.11.3" + "external_url": "https://unpkg.com/dash-renderer@1.11.4" "/build/dash_renderer.min.js", "namespace": "dash", }, diff --git a/dash/_utils.py b/dash/_utils.py index 31de7e88cb..83b2895554 100644 --- a/dash/_utils.py +++ b/dash/_utils.py @@ -8,6 +8,8 @@ import logging import io import json +import secrets +import string from functools import wraps logger = logging.getLogger() @@ -206,3 +208,9 @@ def _wrapper(*args, **kwargs): return _wrapper return wrapper + + +def gen_salt(chars): + return "".join( + secrets.choice(string.ascii_letters + string.digits) for _ in range(chars) + ) diff --git a/dash/dash-renderer/package-lock.json b/dash/dash-renderer/package-lock.json index 07b3ed0b5b..b9e768168f 100644 --- a/dash/dash-renderer/package-lock.json +++ b/dash/dash-renderer/package-lock.json @@ -1,12 +1,12 @@ { "name": "dash-renderer", - "version": "1.11.3", + "version": "1.11.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "dash-renderer", - "version": "1.11.3", + "version": "1.11.4", "license": "MIT", "dependencies": { "@babel/polyfill": "^7.12.1", diff --git a/dash/dash-renderer/package.json b/dash/dash-renderer/package.json index e03100240e..57171862c6 100644 --- a/dash/dash-renderer/package.json +++ b/dash/dash-renderer/package.json @@ -1,6 +1,6 @@ { "name": "dash-renderer", - "version": "1.11.3", + "version": "1.11.4", "description": "render dash components in react", "main": "build/dash_renderer.min.js", "scripts": { 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 5703add4db..49939ea1de 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( - '