Files
python-dash/python-dash.spec

156 lines
5.2 KiB
RPMSpec
Raw Permalink Normal View History

- Update to 3.2.0 ## Added * #3369 Expose dash.NoUpdate type * #3371 Add devtool hook to add components to the devtool bar ui. ## Fixed * #3353 Support pattern-matching/dict ids in dcc.Loading target_components * #3371 Fix allow_optional triggering a warning for not found input. * #3379 Fix dcc.Graph backward compatibility with dash 2.0 for ddk.Graph * #3373 Fix layout as list and persistence. ## Changed * #3365 Warn if dcc.Slider has more than 500 marks and use default instead. - Release 3.1 ## Fixed * #3341 Fixed query string parsing regression introduced in 2.18.2 where values containing unencoded & characters were being truncated. #3106 * #3279 Fix an issue where persisted values were incorrectly pruned when updated via callback. Now, callback returned values are correctly stored in the persistence storage. Fix #2678 * #3298 Fix dev_only resources filtering. * #3315 Fix pages module is package check. * #3319 Fix issue where ExternalWrapper would remove props from the parent component, now there is a temp that is passed to check if it should be removed on unmount. * #3108 Fix layout as list for pages. * #1906 Make graph height more responsive. * #2927 Fix unexpected behaviour of the cursor in dcc.Input * #3344 Fix dcc.Loading target_components with * prop. ## Added * #3294 Added the ability to pass allow_optional to Input and State to allow callbacks to work even if these components are not in the dash layout. * #3077 Add new parameter assets_path_ignore to dash.Dash(). Closes #3076 * #3202 expose the closeOnSelect option in dropdown component * #3089 adding support for async callbacks and page layouts, install with pip install dash[async]. ## Changed * #3303 Improve flatten_grouping performance (callback with dictionary output/input) * #3304 Speed up function _operation by 80% * #3323 Make Dash instances WSGI compliant, can now call gunicorn on the dash app itself. ## Updated * #3333 Update flask max version to <3.2 - Release 3.0 ## Added * #2276 Added component prop static typing for Python. * #3152 Custom Python prop typing for component library. - Added -t, --custom-typing-module argument to dash-generate-components CLI, default to dash_prop_typing and can contains definitions in variables: - custom_imports: dict[ComponentName, list[str]] import statement to be copied at the top of the component class definition. - custom_props: dict[ComponentName, dict[PropName, function]] for custom props. The function signature is: def generate_type(type_info, component_name, prop_name) -> str * #3035 PropType generation for Typescript components allowing runtime prop validation when in debug mode. * #3121 Restyle and add version checker to dev tools. * #3029 Add pip install based hooks to Dash functionalities. - Packages can add an entry_points with key dash-hooks to their setup.py for a module to be run when a Dash app is started. - Add dash.hooks methods to hook into Dash apps. - hooks.layout takes the layout as argument and must return a layout, can be used to wrap or add to the layout of Dash apps. - hooks.callback defines a callback to be added to Dash apps. - hooks.clientside_callback defines a clientside callback to be added to Dash apps. - hooks.setup is called before a Dash app is started to get an instance of the app as first argument. - hooks.error to receive all callback errors. - hooks.index to change the Dash.index_string. - hooks.route to add a Flask route to the Dash app. - #3175 hooks.custom_data to add custom data called from the callback route to the user callback. * #3066 Adds window.dash_component_api for components developer as alternative to removed _dashprivate props. - Add dash_component_api.useDashContext, dash_component_api.DashContext to access the redux store and loading mechanisms. - DashContext.componentPath hold the path to the current component. - DashContext.useLoading(options?) selector to get a boolean if the component is loading. - DashContext.isLoading in case you need to use outside of a functional component. - DashContext.useSelector to create custom selectors for the connected redux store. - DashContext.useStore get the Dash app redux store. - DashContext.useDispatch to dispatch new actions on the Dash redux store. - Add dash_component_api.getLayout(path) to replace _dashprivate_layout. - Expose stringifyId in window.dash_component_api. #3175 - Add window.dash_component_api.ExternalWrapper to render Dash components that are not part of the layout tree. #3170 #3183 ## Removed * #3066 loading_state removed from components props. * #3078 Deprecations removals - Removed dash.development.component_loader, components libraries now required to generate the components with dash-generate-components. - Dash.run_server has been removed in favor of Dash.run. - Removed dcc.LogoutButton component. - Renamed all long references to background. ## Changed * #3093 Changed default React version to 18.3.1 - defaultProps on functional components now emits a deprecation warning. - Deprecation notice on strings refs. ## Fixed * #3080 Fix docstring generation for components using single-line or nonstandard-indent leading comments * #3103 Fix Graph component becomes unresponsive if an invalid figure is passed * #3190 Fix issue with cache key generation by adding option to include triggered inputs. Fixes #3189 * #3130 Fix HOST variable when using conda. * #3066 Improve performance of context components re-rendering. * #3171 JupyterDash Fix - Alive Check * #3168 Fix clientside pattern matching with a dot in the id. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-dash?expand=0&rev=14
2025-09-19 08:59:50 +00:00
#
# spec file for package python-dash
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# We can't test currenty, see below.
%bcond_with test
%define distver 3.2
%{?sle15_python_module_pythons}
Name: python-dash
Version: 3.2.0
Release: 0
Summary: Python framework for building reactive web-apps
License: MIT
URL: https://github.com/plotly/dash
# PyPI package does not contain unit tests. GitHub does, but does not contain the js stuff,
# but we don't test right now: trying to build from js sources and use local-npm-registry fails
# due to "independent" component packages installed in a weird order
Source0: https://files.pythonhosted.org/packages/source/d/dash/dash-%{version}.tar.gz
#Source1: https://github.com/plotly/dash/archive/refs/tags/v%{version}.tar.gz#/dash-%%{version}-gh.tar.gz
Source99: python-dash.rpmlintrc
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module Flask >= 1.0.4}
BuildRequires: %{python_module percy}
BuildRequires: %{python_module plotly >= 5.0.0}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module wheel}
BuildRequires: %{python_module importlib-metadata}
BuildRequires: %{python_module typing-extensions >= 4.1.1}
BuildRequires: %{python_module requests}
BuildRequires: %{python_module retrying}
BuildRequires: %{python_module nest-asyncio}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module Werkzeug}
BuildRequires: %{python_module beautifulsoup4}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildRequires: jupyter-rpm-macros
Requires: python-Flask >= 1.0.4
Requires: python-Werkzeug
Requires: python-importlib-metadata
Requires: python-typing-extensions >= 4.1.1
Requires: python-requests
Requires: python-retrying
Requires: python-nest-asyncio
Requires: python-setuptools
Requires: python-plotly >= 5.0.0
Requires: jupyter-dash = %{version}-%{release}
# SECTION testing extras
# dash/testing/dash_page.py
Requires: python-beautifulsoup4
# needed for dash/testing/browser.py
Requires: python-percy
# /SECTION
Requires(post): update-alternatives
Requires(postun): update-alternatives
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module lxml}
BuildRequires: %{python_module mock} ## <-- not available anymore!
BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module pytest-rerunfailures}
BuildRequires: %{python_module pytest-sugar}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module selenium}
BuildRequires: %{python_module waitress}
BuildRequires: nodejs
%endif
%python_subpackages
%description
Dash is a Python framework for building analytical web applications.
No JavaScript required.
Build on top of Plotly.js, React, and Flask, Dash ties modern UI
elements like dropdowns, sliders, and graphs directly to your
analytical python code.
%package -n jupyter-dash
Summary: Jupyter configuration for python-dash
Requires: python3dist(dash) = %{distver}
Suggests: python3-dash
%description -n jupyter-dash
Dash is a Python framework for building analytical web applications.
This package provides the jupyter notebook and jupyterlab configuration
for python-dash
%prep
%setup -q -n dash-%{version}
# -b 1
sed -i -e '/^#!\//, 1d' dash/extract-meta.js
chmod -x dash/extract-meta.js
find . -name .gitkeep -delete
%build
%pyproject_wheel
%install
%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/renderer
%python_clone -a %{buildroot}%{_bindir}/dash-generate-components
%python_clone -a %{buildroot}%{_bindir}/dash-update-components
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%if %{with test}
%check
# Testing needs npm install from network and packages (e.g. flask_talisman) which we don't have.
%pytest
%endif
%post
%python_install_alternative renderer
%python_install_alternative dash-generate-components
%python_install_alternative dash-update-components
%postun
%python_uninstall_alternative renderer
%python_uninstall_alternative dash-generate-components
%python_uninstall_alternative dash-update-components
%files -n jupyter-dash
%doc README.md
%license LICENSE
%{?_jupyter_config} %{_jupyter_nb_notebook_confdir}/dash.json
%{_jupyter_labextensions_dir}/dash-jupyterlab.tgz
%{_jupyter_nbextension_dir}/dash/
%files %{python_files}
%doc README.md
%license LICENSE
%python_alternative %{_bindir}/dash-generate-components
%python_alternative %{_bindir}/dash-update-components
%python_alternative %{_bindir}/renderer
%{python_sitelib}/dash
%{python_sitelib}/dash-%{version}.dist-info
%changelog