From 3050af7c9cbf6f01eca4f3c736b54e084c014907210cee53cc9db7cb108592df Mon Sep 17 00:00:00 2001 From: Benjamin Greiner Date: Wed, 27 Nov 2024 20:58:38 +0000 Subject: [PATCH] - Update to 1.5.4 * This release primarily focuses on improving the ESM components including fixes for serialization of parameter values, improvements for compiling bundles, and building custom layouts. Additionally this release includes the new DatetimeSlider, adds a copy button to codeblocks in Markdown panes, improves responsive sizing for Plotly and starts adding better support for Polars. ## Enhancements * Add DatetimeSlider widget (#7374) * Improve Jupyter preview error handling (#7434) * Add copy button to Markdown codeblocks (#7451) * Various improvements for writing ESM components (#7462) * Log authorization callback errors (#7463) * Support polars in pn.cache (#7472) * Improve and document hold utility (#7474) * Improve how panel compile collects bundles (#7477) ## Bug fixes * Fix issues detecting changed property values during serialization (#7432) * Ensure ESM compilation correctly detects file extension (#7446) * Ensure parameter overrides are applied to ESM components (#7452) * Ensure component Children parameter correctly resolves when multiple types are defined (#7454) * Fix issues using Jupyter Preview with notifications enabled (#7466) * Ensure HTML/Markdown streaming does not freeze during rapid updates (#7480) * Ensure Plotly sizes correctly on initial render (#7483) OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-panel?expand=0&rev=59 --- exclude-package-lock.patch | 14 ---- node_modules.obscpio | 4 +- node_modules.spec.inc | 38 +++++------ opensuse-js-fixes.patch | 42 ++++++++++++ package-lock.json | 134 +++++++++++++++++++------------------ panel-1.5.0.tar.gz | 3 - panel-1.5.4.tar.gz | 3 + python-panel.changes | 99 +++++++++++++++++++++++++++ python-panel.spec | 22 +++--- 9 files changed, 246 insertions(+), 113 deletions(-) delete mode 100644 exclude-package-lock.patch create mode 100644 opensuse-js-fixes.patch delete mode 100644 panel-1.5.0.tar.gz create mode 100644 panel-1.5.4.tar.gz diff --git a/exclude-package-lock.patch b/exclude-package-lock.patch deleted file mode 100644 index 539cbf1..0000000 --- a/exclude-package-lock.patch +++ /dev/null @@ -1,14 +0,0 @@ -Do not install package-lock.json into the wheel -boo#1231254 gh#openSUSE/obs-service-node_modules#41 - -diff -ur panel-1.5.0.orig/pyproject.toml panel-1.5.0/pyproject.toml ---- panel-1.5.0.orig/pyproject.toml 2024-10-03 11:00:09.362861013 +0200 -+++ panel-1.5.0/pyproject.toml 2024-10-03 11:00:21.459903574 +0200 -@@ -110,6 +110,7 @@ - - [tool.hatch.build.targets.wheel] - include = ["panel"] -+exclude = ["panel/package-lock.json"] - - [tool.hatch.build.targets.wheel.force-include] - "panel/dist" = "panel/dist" diff --git a/node_modules.obscpio b/node_modules.obscpio index 287cde2..a84de18 100644 --- a/node_modules.obscpio +++ b/node_modules.obscpio @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da03042354ad03ea59ea126e5c54f92e5f9572f97de8e9d5ac42108c9184e1f1 -size 35139060 +oid sha256:d3dd21ebaef5e3c42657a849cbaee022a090b3a2277006cbedd315f82523bc51 +size 27712192 diff --git a/node_modules.spec.inc b/node_modules.spec.inc index 619387f..212ed27 100644 --- a/node_modules.spec.inc +++ b/node_modules.spec.inc @@ -1,9 +1,9 @@ -Source10000: https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz#/@babel-runtime-7.25.6.tgz -Source10001: https://registry.npmjs.org/@bokeh/bokehjs/-/bokehjs-3.5.2.tgz#/@bokeh-bokehjs-3.5.2.tgz +Source10000: https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz#/@babel-runtime-7.26.0.tgz +Source10001: https://registry.npmjs.org/@bokeh/bokehjs/-/bokehjs-3.6.0.tgz#/@bokeh-bokehjs-3.6.0.tgz Source10002: https://registry.npmjs.org/@bokeh/numbro/-/numbro-1.6.2.tgz#/@bokeh-numbro-1.6.2.tgz Source10003: https://registry.npmjs.org/@bokeh/slickgrid/-/slickgrid-2.4.4103.tgz#/@bokeh-slickgrid-2.4.4103.tgz -Source10004: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#/@eslint-community-eslint-utils-4.4.0.tgz -Source10005: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#/@eslint-community-regexpp-4.11.1.tgz +Source10004: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#/@eslint-community-eslint-utils-4.4.1.tgz +Source10005: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#/@eslint-community-regexpp-4.12.1.tgz Source10006: https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#/@eslint-eslintrc-2.1.4.tgz Source10007: https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz#/@eslint-js-8.57.1.tgz Source10008: https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#/@humanwhocodes-config-array-0.13.0.tgz @@ -30,11 +30,11 @@ Source10028: https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz Source10029: https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz#/@types-geojson-7946.0.14.tgz Source10030: https://registry.npmjs.org/@types/gl-matrix/-/gl-matrix-2.4.5.tgz#/@types-gl-matrix-2.4.5.tgz Source10031: https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz#/@types-google.maps-3.58.1.tgz -Source10032: https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz#/@types-jquery-3.5.30.tgz +Source10032: https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz#/@types-jquery-3.5.32.tgz Source10033: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#/@types-json-schema-7.0.15.tgz Source10034: https://registry.npmjs.org/@types/proj4/-/proj4-2.5.5.tgz#/@types-proj4-2.5.5.tgz Source10035: https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz#/@types-semver-7.5.8.tgz -Source10036: https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz#/@types-sizzle-2.3.8.tgz +Source10036: https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz#/@types-sizzle-2.3.9.tgz Source10037: https://registry.npmjs.org/@types/slickgrid/-/slickgrid-2.1.40.tgz#/@types-slickgrid-2.1.40.tgz Source10038: https://registry.npmjs.org/@types/sprintf-js/-/sprintf-js-1.1.4.tgz#/@types-sprintf-js-1.1.4.tgz Source10039: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#/@typescript-eslint-eslint-plugin-7.18.0.tgz @@ -51,8 +51,8 @@ Source10049: https://registry.npmjs.org/@typescript-eslint/utils/-/utils Source10050: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#/@typescript-eslint-visitor-keys-6.21.0.tgz Source10051: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#/@typescript-eslint-visitor-keys-7.18.0.tgz Source10052: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#/@ungap-structured-clone-1.2.0.tgz -Source10053: https://registry.npmjs.org/ace-code/-/ace-code-1.36.2.tgz#/ace-code-1.36.2.tgz -Source10054: https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz#/acorn-8.12.1.tgz +Source10053: https://registry.npmjs.org/ace-code/-/ace-code-1.36.5.tgz#/ace-code-1.36.5.tgz +Source10054: https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz#/acorn-8.14.0.tgz Source10055: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#/acorn-jsx-5.3.2.tgz Source10056: https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#/ajv-6.12.6.tgz Source10057: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#/ansi-regex-5.0.1.tgz @@ -74,7 +74,7 @@ Source10072: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tg Source10073: https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#/commander-4.1.1.tgz Source10074: https://registry.npmjs.org/commander/-/commander-9.2.0.tgz#/commander-9.2.0.tgz Source10075: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#/concat-map-0.0.1.tgz -Source10076: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#/cross-spawn-7.0.3.tgz +Source10076: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#/cross-spawn-7.0.6.tgz Source10077: https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz#/debounce-1.2.1.tgz Source10078: https://registry.npmjs.org/debug/-/debug-4.3.7.tgz#/debug-4.3.7.tgz Source10079: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#/deep-is-0.1.4.tgz @@ -106,7 +106,7 @@ Source10104: https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tg Source10105: https://registry.npmjs.org/flatbush/-/flatbush-4.4.0.tgz#/flatbush-4.4.0.tgz Source10106: https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz#/flatpickr-4.6.13.tgz Source10107: https://registry.npmjs.org/flatqueue/-/flatqueue-2.0.3.tgz#/flatqueue-2.0.3.tgz -Source10108: https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz#/flatted-3.3.1.tgz +Source10108: https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz#/flatted-3.3.2.tgz Source10109: https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz#/foreground-child-3.3.0.tgz Source10110: https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#/fs.realpath-1.0.0.tgz Source10111: https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz#/fuse.js-6.6.2.tgz @@ -133,7 +133,7 @@ Source10131: https://registry.npmjs.org/is-path-inside/-/is-path-inside- Source10132: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz Source10133: https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#/jackspeak-3.4.3.tgz Source10134: https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz#/jquery-3.7.1.tgz -Source10135: https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.0.tgz#/jquery-ui-1.14.0.tgz +Source10135: https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.1.tgz#/jquery-ui-1.14.1.tgz Source10136: https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#/js-yaml-4.1.0.tgz Source10137: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz Source10138: https://registry.npmjs.org/json-formatter-js/-/json-formatter-js-2.5.18.tgz#/json-formatter-js-2.5.18.tgz @@ -164,7 +164,7 @@ Source10162: https://registry.npmjs.org/once/-/once-1.4.0.tgz#/once-1.4. Source10163: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz Source10164: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz Source10165: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz -Source10166: https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#/package-json-from-dist-1.0.0.tgz +Source10166: https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#/package-json-from-dist-1.0.1.tgz Source10167: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz Source10168: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz Source10169: https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#/path-is-absolute-1.0.1.tgz @@ -174,14 +174,14 @@ Source10172: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz# Source10173: https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#/picomatch-2.3.1.tgz Source10174: https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#/picomatch-4.0.2.tgz Source10175: https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#/pirates-4.0.6.tgz -Source10176: https://registry.npmjs.org/preact/-/preact-10.24.1.tgz#/preact-10.24.1.tgz +Source10176: https://registry.npmjs.org/preact/-/preact-10.25.0.tgz#/preact-10.25.0.tgz Source10177: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz -Source10178: https://registry.npmjs.org/proj4/-/proj4-2.12.1.tgz#/proj4-2.12.1.tgz +Source10178: https://registry.npmjs.org/proj4/-/proj4-2.15.0.tgz#/proj4-2.15.0.tgz Source10179: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz Source10180: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz Source10181: https://registry.npmjs.org/redux/-/redux-4.2.1.tgz#/redux-4.2.1.tgz Source10182: https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#/regenerator-runtime-0.14.1.tgz -Source10183: https://registry.npmjs.org/regl/-/regl-2.1.0.tgz#/regl-2.1.0.tgz +Source10183: https://registry.npmjs.org/regl/-/regl-2.1.1.tgz#/regl-2.1.1.tgz Source10184: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz Source10185: https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz#/reusify-1.0.4.tgz Source10186: https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#/rimraf-3.0.2.tgz @@ -205,18 +205,18 @@ Source10203: https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#/the Source10204: https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#/thenify-all-1.6.0.tgz Source10205: https://registry.npmjs.org/timezone/-/timezone-1.0.23.tgz#/timezone-1.0.23.tgz Source10206: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz -Source10207: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz#/ts-api-utils-1.3.0.tgz +Source10207: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz#/ts-api-utils-1.4.2.tgz Source10208: https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#/ts-interface-checker-0.1.13.tgz Source10209: https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#/tslib-1.14.1.tgz -Source10210: https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz#/tslib-2.7.0.tgz +Source10210: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#/tslib-2.8.1.tgz Source10211: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz Source10212: https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#/type-fest-0.20.2.tgz -Source10213: https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#/typescript-4.9.5.tgz +Source10213: https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz#/typescript-5.7.2.tgz Source10214: https://registry.npmjs.org/underscore.template/-/underscore.template-0.1.7.tgz#/underscore.template-0.1.7.tgz Source10215: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz Source10216: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz Source10217: https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz#/wicked-good-xpath-1.3.0.tgz -Source10218: https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.3.tgz#/wkt-parser-1.3.3.tgz +Source10218: https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.4.0.tgz#/wkt-parser-1.4.0.tgz Source10219: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz Source10220: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#/wrap-ansi-7.0.0.tgz Source10221: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#/wrap-ansi-8.1.0.tgz diff --git a/opensuse-js-fixes.patch b/opensuse-js-fixes.patch new file mode 100644 index 0000000..5d529a6 --- /dev/null +++ b/opensuse-js-fixes.patch @@ -0,0 +1,42 @@ +- Do not install package-lock.json into the wheel + * boo#1231254 gh#openSUSE/obs-service-node_modules#41 +- Require typescript for compilation +- Fix test artifact destination + +Index: panel-1.5.4/pyproject.toml +=================================================================== +--- panel-1.5.4.orig/pyproject.toml ++++ panel-1.5.4/pyproject.toml +@@ -111,6 +111,7 @@ raw-options = { version_scheme = "no-gue + + [tool.hatch.build.targets.wheel] + include = ["panel"] ++exclude = ["panel/package-lock.json"] + + [tool.hatch.build.targets.wheel.force-include] + "panel/dist" = "panel/dist" +Index: panel-1.5.4/panel/package.json +=================================================================== +--- panel-1.5.4.orig/panel/package.json ++++ panel-1.5.4/panel/package.json +@@ -23,6 +23,7 @@ + "@stylistic/eslint-plugin": "^1.6.3", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", ++ "typescript": "^5.1.0", + "acorn": "^8.11.3", + "eslint": "^8.57.0", + "flatpickr": "^4.6.9" +Index: panel-1.5.4/panel/tests/command/test_compile.py +=================================================================== +--- panel-1.5.4.orig/panel/tests/command/test_compile.py ++++ panel-1.5.4/panel/tests/command/test_compile.py +@@ -14,7 +14,7 @@ class JSTestComponent(JSComponent): + + def test_compile_component(py_file): + cmd = [sys.executable, "-m", "panel", "compile", "panel.tests.command.test_compile:JSTestComponent", "--unminified"] +- p = subprocess.Popen(cmd, shell=False, cwd=CWD) ++ p = subprocess.Popen(cmd, shell=False) + p.wait() + + bundle = CWD / "JSTestComponent.bundle.js" diff --git a/package-lock.json b/package-lock.json index a32e49e..48e395a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "@holoviz/panel", - "version": "1.5.0", + "version": "1.5.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@holoviz/panel", - "version": "1.5.0", + "version": "1.5.4", "license": "BSD-3-Clause", "dependencies": { - "@bokeh/bokehjs": "3.5.2", + "@bokeh/bokehjs": "3.6.0", "@types/debounce": "^1.2.0", "@types/gl-matrix": "^2.4.5", "ace-code": "^1.24.1", @@ -27,13 +27,13 @@ "acorn": "^8.11.3", "eslint": "^8.57.0", "flatpickr": "^4.6.9", - "typescript": "^4.2.0" + "typescript": "^5.1.0" } }, "node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -43,9 +43,9 @@ } }, "node_modules/@bokeh/bokehjs": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@bokeh/bokehjs/-/bokehjs-3.5.2.tgz", - "integrity": "sha512-XSlCGfKSQ0U70jJdDtbbs7aPN5uXoIv6/jmh0KHjZoBiZI8FaoEZZgduccH2Kegka7fi4HvJ9kuebwMAXTNZaA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@bokeh/bokehjs/-/bokehjs-3.6.0.tgz", + "integrity": "sha512-cP3AlbosWdQ7KpW8Xko0W7amb8gx7Laq+gipqGc+BqAkX9Px8D0EmPMSjFdj7cJAkx1Ud6FbjaQIMEsJ44GvSg==", "license": "BSD-3-Clause", "workspaces": [ "./make", @@ -70,7 +70,7 @@ "regl": "^2.1.0", "sprintf-js": "^1.1.3", "timezone": "^1.0.23", - "tslib": "^2.6.2", + "tslib": "^2.7.0", "underscore.template": "^0.1.7" }, "engines": { @@ -105,25 +105,28 @@ "license": "0BSD" }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { @@ -524,9 +527,9 @@ "license": "MIT" }, "node_modules/@types/jquery": { - "version": "3.5.30", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz", - "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz", + "integrity": "sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==", "license": "MIT", "dependencies": { "@types/sizzle": "*" @@ -553,9 +556,9 @@ "license": "MIT" }, "node_modules/@types/sizzle": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", "license": "MIT" }, "node_modules/@types/slickgrid": { @@ -918,18 +921,18 @@ "license": "ISC" }, "node_modules/ace-code": { - "version": "1.36.2", - "resolved": "https://registry.npmjs.org/ace-code/-/ace-code-1.36.2.tgz", - "integrity": "sha512-UeB7s95eP5MuFmjSzSRhmX5bAgAJ7Mpz84E+GYbGjzMmjeHrrv4IIZ3li6Ti4tRLS6SsLZ0V9iXtqorhdAYBwg==", + "version": "1.36.5", + "resolved": "https://registry.npmjs.org/ace-code/-/ace-code-1.36.5.tgz", + "integrity": "sha512-DNdkKEHBMiAJowX5hE8GC/2zj0FLax9wD4TkKXgKQQgJ3U17x7aqkX2dplSa8e1vB3K8Zuib3wVntnIKWnSNUQ==", "license": "BSD-3-Clause", "engines": { "node": ">= 0.6.0" } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -1114,9 +1117,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -1222,6 +1225,7 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { @@ -1545,9 +1549,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -1844,9 +1848,9 @@ "license": "MIT" }, "node_modules/jquery-ui": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.0.tgz", - "integrity": "sha512-mPfYKBoRCf0MzaT2cyW5i3IuZ7PfTITaasO5OFLAQxrHuI+ZxruPa+4/K1OMNT8oElLWGtIxc9aRbyw20BKr8g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.14.1.tgz", + "integrity": "sha512-DhzsYH8VeIvOaxwi+B/2BCsFFT5EGjShdzOcm5DssWjtcpGWIMsn66rJciDA6jBruzNiLf1q0KvwMoX1uGNvnQ==", "license": "MIT", "dependencies": { "jquery": ">=1.12.0 <5.0.0" @@ -2143,9 +2147,9 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { @@ -2239,9 +2243,9 @@ } }, "node_modules/preact": { - "version": "10.24.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.1.tgz", - "integrity": "sha512-PnBAwFI3Yjxxcxw75n6VId/5TFxNW/81zexzWD9jn1+eSrOP84NdsS38H5IkF/UH3frqRPT+MvuCoVHjTDTnDw==", + "version": "10.25.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.0.tgz", + "integrity": "sha512-6bYnzlLxXV3OSpUxLdaxBmE7PMOu0aR3pG6lryK/0jmvcDFPlcXGQAt5DpK3RITWiDrfYZRI0druyaK/S9kYLg==", "license": "MIT", "funding": { "type": "opencollective", @@ -2259,13 +2263,13 @@ } }, "node_modules/proj4": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.12.1.tgz", - "integrity": "sha512-vmhP3hmstjXjzFwg8QXJwpoj4n7GVrXk3ZW3DzNK/Ur4cuwXq7ZiMXaWYvLYLQbX8n4MXgbwTr4lthOUZltBpA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.15.0.tgz", + "integrity": "sha512-LqCNEcPdI03BrCHxPLj29vsd5afsm+0sV1H/O3nTDKrv8/LA01ea1z4QADDMjUqxSXWnrmmQDjqFm1J/uZ5RLw==", "license": "MIT", "dependencies": { "mgrs": "1.0.0", - "wkt-parser": "^1.3.3" + "wkt-parser": "^1.4.0" } }, "node_modules/punycode": { @@ -2315,9 +2319,9 @@ "license": "MIT" }, "node_modules/regl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/regl/-/regl-2.1.0.tgz", - "integrity": "sha512-oWUce/aVoEvW5l2V0LK7O5KJMzUSKeiOwFuJehzpSFd43dO5spP9r+sSUfhKtsky4u6MCqWJaRL+abzExynfTg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/regl/-/regl-2.1.1.tgz", + "integrity": "sha512-+IOGrxl3FZ8ZM9ixCWQZzFRiRn7Rzn9bu3iFHwg/yz4tlOUQgbO4PHLgG+1ZT60zcIV8tief6Qrmyl8qcoJP0g==", "license": "MIT" }, "node_modules/resolve-from": { @@ -2673,9 +2677,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz", + "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==", "dev": true, "license": "MIT", "engines": { @@ -2692,9 +2696,9 @@ "license": "Apache-2.0" }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/type-check": { @@ -2724,9 +2728,9 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2734,7 +2738,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/underscore.template": { @@ -2775,9 +2779,9 @@ "license": "MIT" }, "node_modules/wkt-parser": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.3.tgz", - "integrity": "sha512-ZnV3yH8/k58ZPACOXeiHaMuXIiaTk1t0hSUVisbO0t4RjA5wPpUytcxeyiN2h+LZRrmuHIh/1UlrR9e7DHDvTw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.4.0.tgz", + "integrity": "sha512-qpwO7Ihds/YYDTi1aADFTI1Sm9YC/tTe3SHD24EeIlZxy7Ik6a1b4HOz7jAi0xdUAw487duqpo8OGu+Tf4nwlQ==", "license": "MIT" }, "node_modules/word-wrap": { diff --git a/panel-1.5.0.tar.gz b/panel-1.5.0.tar.gz deleted file mode 100644 index 610c63e..0000000 --- a/panel-1.5.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31e5cb229bbb6010ea3cc6023952c1423b008f4fa137ede3794fa6ce2e4a0f32 -size 29341232 diff --git a/panel-1.5.4.tar.gz b/panel-1.5.4.tar.gz new file mode 100644 index 0000000..02be78b --- /dev/null +++ b/panel-1.5.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7644e87afe9b94c32b4fca939d645c5b958d671691bd841d3391e31941090092 +size 29378323 diff --git a/python-panel.changes b/python-panel.changes index 19cd6f3..6d2c026 100644 --- a/python-panel.changes +++ b/python-panel.changes @@ -1,3 +1,102 @@ +------------------------------------------------------------------- +Wed Nov 27 16:03:51 UTC 2024 - Ben Greiner + +- Update to 1.5.4 + * This release primarily focuses on improving the ESM components + including fixes for serialization of parameter values, + improvements for compiling bundles, and building custom + layouts. Additionally this release includes the new + DatetimeSlider, adds a copy button to codeblocks in Markdown + panes, improves responsive sizing for Plotly and starts adding + better support for Polars. + ## Enhancements + * Add DatetimeSlider widget (#7374) + * Improve Jupyter preview error handling (#7434) + * Add copy button to Markdown codeblocks (#7451) + * Various improvements for writing ESM components (#7462) + * Log authorization callback errors (#7463) + * Support polars in pn.cache (#7472) + * Improve and document hold utility (#7474) + * Improve how panel compile collects bundles (#7477) + ## Bug fixes + * Fix issues detecting changed property values during + serialization (#7432) + * Ensure ESM compilation correctly detects file extension (#7446) + * Ensure parameter overrides are applied to ESM components + (#7452) + * Ensure component Children parameter correctly resolves when + multiple types are defined (#7454) + * Fix issues using Jupyter Preview with notifications enabled + (#7466) + * Ensure HTML/Markdown streaming does not freeze during rapid + updates (#7480) + * Ensure Plotly sizes correctly on initial render (#7483) +- Version 1.5.3 + * This release fixes a number of smaller regressions related to + Tabulator row_content, ensures --dev/--autoreload picks up on + external modules correctly and resolves OAuth guest endpoints + correctly. Additionally it introduces some enhancements and bug + fixes for custom components, such as adding support for loading + custom components ESM Javascript bundles from the inbuilt + endpoint ensuring that the bundle can be cached by the browser. + ## Enhancements + * Sync dark mode on browser_info object (#7382) + * Allow loading custom component ESM bundles from URL (#7410, + #7412) + ## Bug fixes + * Address issues with Tabulator embed_content and optimize row + expansion (#7364) + * Prevent pipeline network plot from linking with other plots + (#7372) + * Various fixes for custom component compilation (#7381) + * Fix OAuth guest endpoint (#7385) + * Fix ReactiveESM._importmap typing (#7392) + * Ensure that autoreload records modules to watch before startup + (#7399) + * Prevent Tabulator from overlapping when max_height is set + (#7403) + * Do not mutate layout Children inplace (#7417) + * Set Tabulator null formatter to empty string (#7421) + * Ensure Tabulator table content does not overflow (#7425) + ## Compatibility + * Upgraded Tabulator version to 6.3 (#7419) +- Version 1.5.2 + * This release is a small patch release primarily addressing a + regression handling selections on multi-indexed data on the + Tabulator widget along with a number of documentation + improvements. + ## Bug fixes + * Fix regression handling selection on multi-indexed Tabulator + data (#7336) + * Fix Fast template theme toggle color (#7341) +- Version 1.5.1 + * This release primarily focuses on a number of tweaks and + enhancements for the documentation and also resolves a number + of bugs related to Tabulator rendering and the new FastAPI + integration. + ## Enhancements + * Add mapboxgl CSS to Plotly (#7320) + * Tweak margins of icons in ChatMessage (#7310) + ## Bug fixes + * Fix langchain import in panel.chat.langchain (#7297) + * Ensure Tabulator is consistently redrawn after render and + resize (#7305) + * Filter out empty plotly_selected events (#7312) + * Improve parameter validation on Timepicker (#7308) + * Ensure Tabulator.selection consistency when pagination='local' + (#7304) + * Correctly handle ipv6 localhost URI in Location (#7316) + * Ensure resource URLs are handled correctly in all server + implementations (#7318) + * Ensure Plotly datetime are correctly converted from timestamp + to date string (#7319) + ## Regressions + * Only postpone --setup script until after server startup if + --num-procs is greater than 1 (#7289) + ## Compatibility + * Support for Bokeh 3.6.x releases (#7322) +- Replace exclude-package-lock.patch with opensuse-js-fixes.patch + ------------------------------------------------------------------- Wed Oct 2 20:03:56 UTC 2024 - Ben Greiner diff --git a/python-panel.spec b/python-panel.spec index 9279ebe..cb9ef9b 100644 --- a/python-panel.spec +++ b/python-panel.spec @@ -26,9 +26,9 @@ %endif # truncate trailing suffix -%define distversion 1.5 +%define distversion 1.5.4 Name: python-panel%{psuffix} -Version: 1.5.0 +Version: 1.5.4 Release: 0 Summary: A high level app and dashboarding solution for Python License: BSD-3-Clause @@ -37,18 +37,18 @@ URL: https://github.com/holoviz/panel Source0: https://files.pythonhosted.org/packages/source/p/panel/panel-%{version}.tar.gz # package-lock.json file generated with procedure: # - delete old package-lock.json in panel subdirectory -# - add '"typescript": "^4.2.0"' to package.json devDependencies +# - add '"typescript": "^5.1.0"' to package.json devDependencies # - npm install --package-lock-only --legacy-peer-deps --ignore-scripts Source10: package-lock.json # node_modules generated using "osc service mr" with https://github.com/openSUSE/obs-service-node_modules Source11: node_modules.spec.inc Source99: python-panel-rpmlintrc %include %{_sourcedir}/node_modules.spec.inc -# PATCH-FEATURE-OPENSUSE exclude-package-lock.patch boo#1231254 gh#openSUSE/obs-service-node_modules#41 -Patch0: exclude-package-lock.patch +# PATCH-FEATURE-OPENSUSE opensuse-js-fixes.patch boo#1231254 gh#openSUSE/obs-service-node_modules#41 +Patch0: opensuse-js-fixes.patch BuildRequires: %{python_module base} BuildRequires: %{python_module bleach} -BuildRequires: %{python_module bokeh >= 3.5.0 with %python-bokeh < 3.6} +BuildRequires: %{python_module bokeh >= 3.5.0 with %python-bokeh < 3.7} BuildRequires: %{python_module hatch-vcs} BuildRequires: %{python_module hatchling} BuildRequires: %{python_module packaging} @@ -71,13 +71,13 @@ Requires: python-pyviz_comms >= 2.0.0 Requires: python-requests Requires: python-tqdm Requires: python-typing_extensions -Requires: (python-bokeh >= 3.5.0 with python-bokeh < 3.6) +Requires: (python-bokeh >= 3.5.0 with python-bokeh < 3.7) Requires: (python-param >= 2.1 with python-param < 3) Requires(post): update-alternatives Requires(postun): update-alternatives Recommends: jupyter-panel Recommends: python-Pillow -Recommends: python-holoviews >= 1.16.0 +Recommends: python-holoviews >= 1.18.0 Recommends: python-jupyterlab Recommends: python-matplotlib Recommends: python-plotly @@ -98,6 +98,7 @@ BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} BuildRequires: %{python_module scipy} BuildRequires: %{python_module streamz} +BuildRequires: esbuild BuildRequires: unzip # Tests segfault # BuildRequires: %%{python_module vtk} @@ -136,7 +137,6 @@ do \ done # Resources are already bundled in sdist sed -i 's|bundle_resources()$|assert os.path.exists("panel/dist/bundled/font-awesome")|' hatch_build.py -# npm registry for Source10 provided in Source11 pushd panel rm package-lock.json local-npm-registry %{_sourcedir} install --include=dev --include=peer @@ -170,7 +170,9 @@ donttest="$donttest or test_pdf_local_file" deselectmark=(-m "not internet") # no multiflavor playwright ignorefiles=(--ignore scripts/panelite/test/test_utils.py --ignore scripts/panelite/test/test_panelite.py) -%pytest -n auto -rsfE -k "not ($donttest)" "${deselectmark[@]}" "${ignorefiles[@]}" +# test_compile tries to build and write next to the imported module: permission denied +PYTHONPATH=":x" +%pytest -n auto -rsfE -k "not ($donttest)" "${deselectmark[@]}" "${ignorefiles[@]}" -p no:unraisableexception %endif %post