Все значимые изменения в dash
будут документироваться в этом файле.
Этот проект следует Семантическому Версионированию.
allow_optional
в Input и State для возможности работы callback даже если эти компоненты не включены в структуру dash.setProps
, что приводило к некорректным хэшамdash-hooks
на подчеркивание dash_hooks
. Исправлено #3272
dashChildrenUpdate = true
на компоненте, например: Tabs.dashChildrenUpdate = true
className_*
в компоненте dcc.Upload
.dashRenderType
для определения причины изменения макета компонента (internal
, callback
, parent
, clientsideApi
):
dashRenderType
в качестве свойства, и dashRenderType = true
установлен на компоненте, например (Div.dashRenderType = true
)-t
, --custom-typing-module
в CLI dash-generate-components
, по умолчанию dash_prop_typing
и может содержать определения в переменных:
custom_imports: dict[ComponentName, list[str]]
- инструкции импорта для копирования в начало определения класса компонента.custom_props: dict[ComponentName, dict[PropName, function]]
- для пользовательских свойств. Подпись функции: def generate_type(type_info, component_name, prop_name) -> str
PropType
для компонентов на Typescript, позволяющая проверку свойств в режиме отладки.pip install
для функциональности Dash.
entry_points
с ключом dash-hooks
в их setup.py
для запуска модуля при запуске Dash-приложения.dash.hooks
для подключения к Dash-приложениям.
hooks.layout
принимает аргументом макет и должен возвращать макет, может использоваться для обертывания или добавления к макету Dash-приложений.hooks.callback
определяет обратный вызов для добавления в Dash-приложения.hooks.clientside_callback
определяет клиентский обратный вызов для добавления в Dash-приложения.```markdownsetup
перед запуском Dash-приложения для получения экземпляра приложения в качестве первого аргумента.hooks.error
для получения всех ошибок обратных вызовов.hooks.index
для изменения Dash.index_string
.hooks.route
для добавления маршрута Flask к Dash-приложению.hooks.custom_data
для добавления пользовательских данных, вызываемых из маршрута обратного вызова, к пользовательскому обратному вызову. #3175
window.dash_component_api
для разработчиков компонентов как альтернатива удалённым _dashprivate
свойствам. #3066
dash_component_api.useDashContext
, dash_component_api.DashContext
для доступа к хранилищу Redux и механизмам загрузки.
DashContext.componentPath
содержит путь к текущему компоненту.DashContext.useLoading(options?)
селектор для получения булева значения, указывающего на загрузку компонента.isLoading
в случае необходимости использования вне функционального компонента.DashContext.useSelector
для создания пользовательских селекторов для подключенного redux-магазина.DashContext.useStore
для получения redux-магазина приложения Dash.DashContext.useDispatch
для отправки новых действий в redux-магазин Dash.dash_component_api.getLayout(path)
для замены _dashprivate_layout
.stringifyId
in window.dash_component_api
. #3175
window.dash_component_api
.
ExternalWrapper` для рендеринга компонентов Dash, которые не являются частью дерева компонентов. [#3170](https://github.com/plotly/dash/pull/3170) [#3183](https://github.com/plotly/dash/pull/3183)
## Удалено```- #3066 loading_state
удалено из props компонентов.dash.development.component_loader
, теперь компонентные библиотеки требуются для генерации компонентов с помощью dash-generate-components
.Dash.run_server
удален в пользу Dash.run
.dcc.LogoutButton
.long
переименованы в background
.dash_core_components
, dash_html_components
и dash_table
из требований установки dash
.defaultProps
для функциональных компонентов теперь выдает предупреждение об устаревании.custom_data
.run_server
и long_callback
.stringifyId
в window.dash_component_api
.ExternalWrapper
дочерних элементов и поддержка pattern matching ids.Добавлен аргумент -t
, --custom-typing-module
к CLI dash-generate-components
, по умолчанию dash_prop_typing
и может содержать определения в переменных:
custom_imports: dict[ComponentName, list[str]]
инструкции импорта для копирования в начало определения класса компонента.custom_props: dict[ComponentName, dict[PropName, function]]
для пользовательских props. Подпись функции: def generate_type(type_info, component_name, prop_name) -> str
#3170 Добавление window.dash_component_api.ExternalWrapper
для рендера компонентов Dash, которые не являются частью дерева layout.## Исправлено
#3142 Исправление генерации типов для props id
и dates
.
#3164 Исправление типов для прогресса и отмены фоновых callback.
#3157 Исправление приоритета хуков.
__init__
компонентов.PropType
для компонентов Typescript, что позволяет выполнять проверку свойств в режиме отладки.window.dash_component_api
для разработчиков компонентов как альтернативы удалённым _dashprivate
свойствам.
dash_component_api.useDashContext
, dash_component_api.DashContext
для доступа к хранилищу Redux и механизмам загрузки.
DashContext.componentPath
содержит путь к текущему компоненту.DashContext.useLoading(options?)
селектор для получения логического значения, указывающего на загрузку компонента.DashContext.isLoading
в случае необходимости использования вне функционального компонента.DashContext.useSelector
для создания пользовательских селекторов для подключённого хранилища Redux.DashContext.useStore
для получения хранилища Redux приложения Dash.DashContext.useDispatch
для отправки новых действий в хранилище Redux приложения Dash.dash_component_api.getLayout(path)
для замены _dashprivate_layout
.entry_points
с ключом dash-hooks
в их setup.py
для запуска модуля при запуске приложения Dash.dash.hooks
для подключения к приложениям Dash.
hooks.layout
принимает layout в качестве аргумента и должен возвращать layout, может использоваться для обёртки или добавления к layout приложений Dash.hooks.callback
определяет обратный вызов для добавления в приложения Dash.hooks.clientside_callback
определяет клиентский обратный вызов для добавления в приложения Dash.hooks.setup
вызывается перед запуском приложения Dash для получения экземпляра приложения как первого аргумента.hooks.error
для получения всех ошибок обратных вызовов.hooks.index
для изменения Dash.index_string
.hooks.route
для добавления маршрута Flask к приложению Dash. ## Удалено- #3066 loading_state
удалено из props компонентов.dash.development.component_loader
, теперь библиотеки компонентов требуются для генерации компонентов с помощью dash-generate-components
.Dash.run_server
удален в пользу Dash.run
.dcc.LogoutButton
.long
переименованы в background
.defaultProps
для функциональных компонентов теперь выдает предупреждение об устаревании.merge_duplicate_header=True
. Исправляет #2870.None
свойствам типа массив с элементами типа exact
или shape
. Исправляет #3010.metadata.json
для уменьшения размера пакета.no_update
для multioutput
. Исправляет #2986
#2988 Исправлено обработчик ошибок и группированные выходы. Исправляет #2983
#2841 Исправлено определение типов при инициализации Dash.
#1548 Включено изменение URL Selenium, исправляет поддержку Selenium Grid.## Устаревшие
#2985 Устаревшее использование динамического загрузчика компонентов.
#2985 Устаревшее использование run_server
, используйте run
вместо него.
#2899 Устаревшее использование dcc.LogoutButton
, можно заменить на html.Button
или html.A
. Например: html.A(href=os.getenv('DASH_LOGOUT_URL'))
на экземпляре Dash Enterprise.
#2995 Устарели ключевые слова Dash.__init__
:
plugins
будет удалено.long_callback_manager
будет удалено, можно использовать background_callback_manager
вместо него.outputs_list
в window.dash_clientside.callback_context
. Исправляет #2877.on_error
, как глобально при инициализации Dash, так и на основе каждого отдельного вызова. Получает исключение в качестве первого аргумента, может вернуть выходные данные или None
для no_update
. Доступ к исходному контексту вызова сохраняется и set_props
работает внутри обработчика ошибок._allow_dynamic_callbacks
.dcc.Loading
. Исправляет #2878
AttributeError
, возникающее при использовании функции layout
, которая возвращает список компонентов. Исправляет #2905
useEffect
-зависимости к компоненту dcc.Loading
.dcc.Markdown
при обновлении. Исправляет #2895
dcc.Loading
, чтобы overlay_style
применялся только к дочерним элементам, а не к спиннеру. Исправляет #2858.dcc.Dropdown
, чтобы пустые значения не сбрасывались в null
и не вызывали обратные вызовы. Исправляет #2850.id
для set_props
, чтобы оставался только последний набор свойств. Исправляет #2852.Dash
.#2819 Добавлены дополнительные параметры, передаваемые родительским компонентом, для подкомпонентов Dash
. Исправляет #2814.
#2826 При использовании страниц, теперь можно использовать app.title
и (новое) app.description
как значения по умолчанию для заголовка и описания страницы. Исправляет #2811.
#2795 Добавлена возможность передачи списка компонентов в качестве layout.
#2760 Новые добавления к dcc.Loading
, решающие несколько проблем:
delay_show
и delay_hide
свойства для предотвращения мигания при кратковременных периодах загрузки (похоже на Dash Bootstrap Components dbc.Spinner)overlay_style
для стилизации перекрывающегося слоя загрузки, например, для установки видимости и прозрачности для дочерних элементовtarget_components
для указания компонентов/свойств, которые вызывают спиннер загрузкиcustom_spinner
для использования пользовательского компонента вместо встроенных спиннеровdisplay
для перекрытия статуса загрузки с опциями "show", "hide" или "auto"#2822 Добавление глобальной set_props. Исправляет #2803## Исправлено
#2362 Глобальное пространство имен больше не загрязняется при загрузке callback-ов на стороне клиента.
#2833 Разрешение использования data URL в свойствах ссылки. Исправляет #2764
#2822 Исправление dict IDs для обновления по бокам (запуск/прогресс/отмена). Исправляет #2111
#2817 Изменение алгоритма хеширования с md5 на sha256. Исправляет #2697
#2816 Исправление обновления значения dcc.Dropdown
при удалении опции. Исправляет #2733
#2823 Исправление ошибки None
в методах "wait", что приводило к неправильному прохождению тестов. Исправляет #2818
npm run first-build
dynamic_loading=True
в инициализацию dash.preloaded_libraries=[]
в инициализацию dash, имена включенных библиотек будут загружены на индекс, как и раньше.setProps
to dash_clientside.clientSide_setProps
to allow for JS code to interact directly with the dash ecosystem.mjs
как модулей JStriggered_id
к dash_clientside.callback_context
. Исправляет #2692
dcc Slider/RangeSlider
. Исправляет #1846
tooltip.template
строку для шаблона формата, {value}
будет отформатировано с фактическим значением.tooltip.style
объект стиля для передачи диву подсказки.tooltip.transform
ссылку на функцию в пространстве имен window.dccFunctions
._dash_error
к setProps
, позволяющее разработчикам компонентов отправлять ошибки без выбрасывания исключений в рендере. Использование props.setProps({_dash_error: new Error("custom error")})
dcc.Clipboard
поддерживает html_content
и запускает копирование в буфер обмена при изменении n_clicks
ansi2html
, исправляет #2613
_allow_dynamic_callbacks
для новых компонентов.get_caller_name
в случае, если источник недоступен.__name__
конструктору Dash.routing_callback_inputs
позволяет передавать больше аргументов Input и/или State в callback маршрутизации страниц._allow_dynamic_callbacks
, регистрация новых callback внутри других callback.
ВНИМАНИЕ: создание динамических callback может быть опасным, используйте на свой страх и риск. Это не предназначено для использования в приложении на production, многопользовательском или многопоточном режиме, так как это работает только для одного пользователя.
moduleResolution
, исправление #2618
julia --project
внутри JuliaRunner
.JupyterDash
.jupyter_mode
к app.run
, по умолчанию inline
и настраиваемый через jupyter_dash.default_mode
.JupyterDash
к app.run
: jupyter_width
, jupyter_height
, jupyter_server_url
.<2.3
.<2.2.3
, так как ожидается, что экосистема Dash будет несовместима с следующим минорным выпуском Flask (исключая текущий последний выпуск Flask 2.3.x). Мы повысим верхний предел до <2.4
после устранения несовместимостей в других частях экосистемы Dash.include_pages_meta=True
к конструктору Dash
, и исправьте проблему безопасности в метках meta страниц #2536.#2508 Исправлено сообщение об ошибке, когда длина вывода callback отличается от указанной в спецификации.
#2207 Исправлена поддержка объектов компонентов.
#2500 Передача customdata
по клику для scattermapbox
, исправлено #2493.
#2513 Вызывается ошибка при итерации по объектам patch
, исправлено #2512.## Обновлено
#2533 и #2538 Обновлен Plotly.js до версии v2.23.2 с v2.20.0.
xref/yref
для легенды/палитры цветов.legend
для трейсов.label.texttemplate
для параметрических фигур.zsmooth
установлено в false
, а также текст фигур при создании новой фигуры.#2538 Обновлены JS-зависимости в dcc
, html
, dash-table
, dash-renderer
и dash
.
Location
удаляются из макета. Обработчики событий не удалялись, что приводило к изменению свойств случайного элемента DOM, исправлено #1346.Patch
, сделав объекты Patch
сериализуемыми.clientside
, исправлено #2488.KeyError
"Callback function not found for output [...], perhaps you forgot to prepend the '@'?" при использовании дублирующих callback-ов, указывающих на один и тот же вывод. Эта проблема возникала при перезапуске приложения или при запуске с несколькими gunicorn
worker-ами.allow_duplicate
для вывода с клиентскими callback-ами, исправлено #2467.display: block
, если inline
равен false в компонентах RadioItems и Checklist. Чтобы сохранить предыдущее поведение, установите inline=True
. Это уже так описано и работает в нашей документации и других местах с CSS-stylesheet, которые задают по умолчанию ориентацию опций RadioItems и Checklist вертикально (включая Dash Design Kit), но для неотформатированных страниц это является нарушением.## Добавлено- #2392 Улучшена функциональность страниц:
pathlib.Path
для pages_folder
, чтобы соответствовать assets_folder
use_pages=True
, когда вы предоставляете кастомный pages_folder
pages_folder
, содержащим специальные символыclear_pages_state
refresh="callback-nav"
в dcc.Location
. Это позволяет осуществлять навигацию без перезагрузки страницы при обновлении URL в callback.wait_timeout
для настройки поведения по умолчанию для wait_for_page
, исправлено #1595
wait_for_text*
, исправлено #945
add_log_handler=True
в инициализацию Dash, если вы не хотите использовать обработчик потока логов.REACT_VERSION=18.2.0
перед запуском приложения или вызвать dash._dash_renderer._set_react_version("18.2.0")
внутри приложения. ЭТОТ ФИНАЛ ЭКСПЕРИМЕНТАЛЬ.Он не был протестирован с компонентными наборами, кроме ядра Dash, и мы можем добавлять или удалять доступные версии React в будущих релизах.dash.Patch
для частичного обновления свойств Output без передачи предыдущего значения в State.allow_duplicate
для аргументов Output
, позволяющий дублировать callback для одного и того же свойства.dcc.Geolocation
## Исправлено- #2429 Исправлен побочный эффект при обновлении возможных дочерних элементов массива, вызывающий обратные вызовы, исправлено #2411.dash[testing]
не установлен, исправлено #946.app.long_callback
, восстановлено поведение, которое было до версии v2.6.0 при введении background=True
обратных вызовов.dash.dash
, как для библиотечного логгера, оно должно находиться в этом пространстве имен, а не в приложении пользователя.automargin
к основному заголовку графика.layout.shapes
, и добавляет свойство labelalias
для замены конкретных меток шкал осей.disable_n_clicks=True
к компонентам html.Div
в page_container
.disable_n_clicks
ко всем HTML компонентам для возможности удаления обработчиков событий onclick.favicon.ico
на текущий логотип Plotly.sync
для меток, так что несколько осей могут использовать общие метки и сетки.scatter
и закругленные углы для следов treemap
.#2332 Добавлен ключ к обернутым свойствам дочерних элементов в списке.
#2336 Исправлены вставленные динамические идентификаторы в компоненте как свойства.### Обновлено
#2361 Обновлены зависимости.
#2363 Обновлены атрибуты html для ol
placeholder_text
для filterOptions
для DataTable, которое позволяет переопределить стандартное поле фильтра.Обновление Plotly.js до версии v2.16.1 (из версии v2.13.3)
sankey
связям и опцию editSelection
в конфигурации.scatter
и похожим трэйсам, а также увеличенный контроль над автоматическими отступами и размерами легенды.scattermapbox
трэйсам и ограниченные границы к mapbox
графикам.#2292 Страницы: находит страницу 404 даже если pages_folder
вложен, или страница 404 вложена внутри pages_folder
.
#2265 Удалено устаревшее before_first_request
, как отмечено в #2177.
#2257 Исправлены типы кортежей в генераторе TypeScript компонентов.
#2293 Исправлено использование useMemo для Dropdown, которое не обнаруживает равные объекты.
#2277 Использование стилей Dropdown из node_modules, вместо использования сохраненного CSS файла.
#2105 Исправлен порядок импорта библиотек компонентов Dash.
flask-compress
в новые опции extras dash[compress]
plotly.js
из dcc.Graph
правильно последовательны, даже если React инициирует несколько циклов рендеринга в короткий промежуток времени.children
(необходимо или нет).dash.page_registry
.suppress_callback_exceptions=True
, validation_layout
не устанавливается.dash[testing]
не установлен.console.log
.plotly_selected
при вызовах API и редактировании GUI.sankey
(регрессия, введенная в 2.13.0).sankey
трейсов для исправления ошибки выбора.dragmode
, когда существующий выбор изменяется.maxHeight
для меню опций Dropdown.background=False
к dash.callback
для использования вместо app.long_callback
.app.long_callback
к dash.callback
(interval
, running
, cancel
, progress
, progress_default
, cache_args_to_ignore
, manager
).search
для dcc.Dropdown
опций, позволяющий искать опции Dropdown с помощью чего-то другого, кроме метки или значения.cell_selectable=False
..
, не исключались при сборке dash.page_registry
.not_found_404
было некорректным в dash.page_registry
при отсутствии использования папки pages
.React.
FCпустого
valueDeclaration и поддержка пустых компонентов с props
.no_update
или возбуждение PreventUpdate
не поддерживаются с celery.dcc.Dropdown
с компонентом как prop для метки опции.dash.long_callback.managers.CeleryLongCallbackManager
, используйте dash.CeleryManager
вместо.dash.long_callback.managers.DiskcacheLongCallbackManager
, используйте dash.DiskcacheManager
вместо.dash
long_callback_manager
в пользу background_callback_manager
.selections
, newselection
, и activeselection
, а также обновленный интерфейс, позволяющий изменять созданный выбор.parcoords
трейсов.violin
трейсов.automargin
осей.id
как ключа внутри id
компонента ломает функцию args_grouping
контекста новых callback'ов.#2084 В версии dash 2.5.0 добавлен мета-тег viewport по умолчанию, рекомендованный для мобильных оптимизированных сайтов mdn.
Эту функцию можно отключить, предоставив пустой мета-тег viewport. Например, app = Dash(meta_tags=[{"name": "viewport"}])
.
#2090, #2092. Исправлен баг, при котором путь к папке pages_folder
был некорректен на Windows.### Удалено
#2087 Удалено неотражённое свойство контекста callback args_grouping_values
, которое было несовместимо с паттерн-матчинг callback'ами.
pages
— лучший способ построения многопрограммных приложений. Для получения дополнительной информации см. тематическую запись на форуме.
wait_for_class_to_equal
и wait_for_contains_class
к dash.testing
.find_element
и find_elements
, чтобы они принимали аргумент attribute
, соответствующий классу By
из Selenium, что позволяет искать элементы по другим атрибутам. Значение по умолчанию — CSS_SELECTOR
, чтобы поддерживать обратную совместимость с предыдущими версиями find_elements
.#2003, при котором
dangerously_allow_html=True
+ mathjax=True
работают в некоторых случаях, а в других — нет.
dcc.Dropdown
с заданным значением, но без опций.DASH_DEBUG
игнорируется.dash[testing]
не установлен.#1952 Улучшено callback_context
dash.ctx
, более краткое имя для dash.callback_context
ctx.triggered_prop_ids
, словарь идентификаторов компонентов и их свойств, которые вызвали callback.ctx.triggered_id
, идентификатор компонента, вызвавшего callback.ctx.args_grouping
, словарь входных данных, используемых с гибкими сигнатурами callback.#2009 Добавлена поддержка обещаний (Promises) внутри клиентских callback, как запрошено в #1364.
#1956 Добавлена генерация компонентов на TypeScript.
#2034 Добавлен атрибут link_target
для компонента dcc.Markdown
. Закрыто #1827.
#2035 Добавлены аннотации типов для тестовых фикстур.
merge_duplicate_headers
и style_header_conditional
для выделения колонок, некорректно выделяет ячейки заголовков.#2015 Исправлена ошибка #1854, в которой комбинация row_selectable="single or multi"
и filter_action="native"
вызывала ошибку JavaScript.
#1976 Исправлена ошибка #1962, в которой DatePickerSingle и DatePickerRange работали очень медленно при предоставлении длинного списка недоступных дней.
#2035 Исправлена ошибка #2033, в которой отчет об ошибках в приложении не отображал HTML.
#1970 dcc.Dropdown Переработка исправлений:
app.run_server
в app.run
, сохраняя app.run_server
для обратной совместимости.- #1839 Декоратор callback
возвращает исходную функцию, а не обёрнутую, чтобы вы могли всё ещё вызывать эти функции напрямую, например, в тестах. Обратите внимание, что в этом случае контекст вызова не будет установлен, поэтому не все вызовы могут быть протестированы таким образом.- #2016 Удалён параметр ширины 375px из стандартных вызовов percy_snapshot
, оставлен только 1280pxblack
до версии v22.3.0 для Python 3.7+ - если вы используете dash[ci]
и вызываете black
, это может слегка изменить форматирование вашего кода, включая более последовательное отключение совместимости с Python 2.dcc.Markdown
и dcc.Graph
. Был добавлен новый булев параметр mathjax
для этих двух компонентов, по умолчанию установленный в False
. Установите mathjax=True
, чтобы включить отображение математических выражений. Эта работа использует MathJax v3, хотя dcc.Graph
и Plotly.js также могут использовать MathJax v2.
dcc.Markdown
это имеет два вида: встроенные математические выражения — это любой контент между одинарными долларовыми знаками, например "$E=mc^2$"
, и "отображаемые" математические выражения (на отдельной строке, потенциально многострочные) разделены двойными долларовыми знаками.dcc.Graph
большинство текстовых полей (названия графиков и осей, названия трасс, текст областей рассеяния и столбцов) могут использовать математические выражения, и они включаются с помощью одинарных долларов. Ограничение здесь заключается в том, что в данный момент каждое текстовое поле может быть либо одно, либо другое: если математическое выражение найдено, все, что находится вне разделителей, игнорируется. Подробнее см. https://plotly.com/python/LaTeX/.#1949 Обновление Plotly.js до версии v2. 11. 0 (с v2. 9. 0)
fillpattern
для трасс scatter
с заполненной областьюunsafe-eval
. Обратите внимание: трассы на основе regl
(scattergl
, scatterpolargl
, parcoords
, и splom
) строго выполняются только в пакете strict
, который НЕ предоставляется по умолчанию в Dash. Чтобы использовать этот пакет с Dash, вам нужно либо скачать его и поместить в папку assets/
, либо включить его как external_script
из CDN: https://cdn.plot.ly/plotly-strict-2.11.0.min.js. Все остальные типы трасс строго выполняются в обычном пакете.mesh3d
.### Исправлено#1915 Исправление ошибки #1474, когда оба dcc.Graph
и go.Figure
имеют анимацию, и при выполнении второй анимации в Figure, Frames из первой анимации воспроизводятся вместо второй.
#1953 Исправление ошибки #1783, когда неудачный горячий перезагрузчик блокирует интерфейс предупреждениями.
#1942 Исправление ошибки #1663, препятствующее отправке customdata
с clickData
и другими событиями для трасс pie
.
dash.get_relative_path
dash.strip_relative_path
dash.get_asset_url
Это похоже на dash.callback
, где не требуется объект app
. Это позволяет использовать эти функции в папке pages
многостраничного приложения без столкновения с проблемой циклических импортов app
.ticklabelstep
для осей для уменьшения меток делений, при этом все деления остаются видимыми./assets
против версий, встроенных в dcc
или ddk
.#1876 Отложено окончательное определение атрибутов Dash.config
, которые не используются в конструкторе, до вызова init_app()
.
#1869, #1873 Обновление Plotly.js до версии v2.8.3. Это включает:
no-unsafe-eval
.smith
и трейсов scattersmith
для построения графиков Смита.histogram
.uirevision
и autorange
, которое возникает в некоторых случаях при генерации фигур с клиентской и серверной сторон.heatmap
и связанных типов трейсов.extras_require
: теперь их пять, каждая с определённой ролью:
dash[dev]
: для разработки и сборки компонентов Dash.
dash[testing]
: для использования плагинов pytest
в модуле dash.testing
.
dash[diskcache]
: требуется, если используется DiskcacheLongCallbackManager
.
dash[celery]
: требуется, если используется CeleryLongCallbackManager
.
dash[ci]
:主要用于内部使用,这些是Dash CI测试的附加需求,供其他组件库使用匹配配置。
dash[ci]
:主要用于内部使用,这些是Dash CI测试的附加需求,供其他组件库使用匹配配置。 → dash[ci]
:主要用于 внутреннего использования, это дополнительные требования для тестирования CI Dash, для использования соответствующими библиотеками компонентов.### Добавлено
#1883 в DataTable добавлен page_current
к persisted_props
по запросу в #1860
Input
, State
и Output
теперь принимают компоненты вместо строк ID и Dash callback
автоматически генерирует ID компонента под капотом, если ID не указан. Это позволяет использовать конструкции вида:my_input = dcc.Input()
my_output = html.Div()
app.layout = html.Div([my_input, my_output])
@dash.callback(Output(my_output, 'children'), Input(my_input, 'value'))
def update(value):
return f'Вы ввели {value}'
Или, если используется Python >=3.8, можно использовать оператор :=
:
app.layout = html.Div([
my_input := dcc.Input(),
my_output := html.Div()
])
@dash.callback(Output(my_output, 'children'), Input(my_input, 'value'))
def update(value):
return f'Вы ввели {value}'
#1894 ограничил эту функцию так, чтобы автоматически сгенерированные ID не были разрешены, если приложение использует dash_snapshots
(пакет Dash Enterprise) или если компонент использует persistence
, так как это может создать запутанные ошибки. Определения callback-функций всё ещё могут ссылаться на компоненты в этих случаях, но эти компоненты должны иметь явные ID. ## Dash Core Components
Dropdown
, RadioItem
, и Checklist
options
и value
теперь первые два ключевых аргумента, что означает, что они могут быть предоставлены как позиционные аргументы без ключевых слов. Предоставление ключевых слов (options=
и value=
) по-прежнему поддерживается.options
могут быть предоставлены в двух новых формах:
string|number|bool
, где label
и value
равны элементам в списке.value
и label
соответственно.
или
```python
dcc.Dropdown(
options=[
{'label': 'New York', 'value': 'NYC'},
{'label': 'Montreal', 'value': 'MTL'},
],
value='New York'
)
После:
dcc.Dropdown(['New York', 'Montreal'], 'New York')
Или
dcc.Dropdown({'NYC': 'New York', 'MTL': 'Montreal'}, 'New York')
RangeSlider
& Slider
min
, max
и step
теперь первые три ключевых аргумента, что позволяет использовать их как позиционные аргументы без ключевых слов.step
будет вычисляться неявно, если не указан.marks
будут автоматически сгенерированы, если не указаны. Они будут использовать min
и max
и учитывать step
, если он указан. Автоматически сгенерированные метки имеют форматированные единицы СИ. Создается около 5 человекочитаемых меток.
- Чтобы удалить метки с Slider
, установите marks=None
.До:
dcc.Slider(marks={1: '1', 2: '2', 3: '3'})
После:
dcc.Slider(min=1, max=3, step=1)
Или эквивалентно:
dcc.Slider(1, 3, 1)
step
также может быть опущен, и Slider
попытается создать приятный, человекочитаемый шаг с единицами СИ и около 5 метками:
dcc.Slider(0, 100)
Поддерживаемые единицы СИ и диапазоны в marks
:
µ
- микро, 10⁻⁶m
- милли, 10⁻³
(нет) - 10⁰k
- кило, 10³M
- мега, 10⁶G
- гига, 10⁹T
- тера, 10¹²P
- пета, 10¹⁵E
- экса, 10¹⁸ Диапазоны ниже 10µ не поддерживаются Slider
. Это ошибка: https://github.com/plotly/dash/issues/1766
DataTable
data
и columns
теперь первые два ключевых аргумента, что позволяет использовать их как позиционные аргументы без ключевых слов.columns
не указаны, они извлекаются из первой строки data
.До:
dash_table.DataTable(data=df.to_dict('records'), columns=[{'name': i, 'id': i} for i in df.columns])
После:
dash_table.DataTable(data=df.to_dict('records'))
Checklist
& RadioItems
inline
добавляет display: inline-block
к labelStyle
.dcc.Checklist(inline=True)
#1879 Удалены избыточности в реализации паттерн-матчинга callback, особенно когда используются дикторы ALL
и MATCH
вместе. Этот патч был подан анонимным клиентом Dash Enterprise. Большое спасибо!
#1858 Поддержка плагина Webpack mini-css-extract-plugin
с помощью пакета @plotly/webpack-dash-dynamic-import
node. Используется компонентами для поддержки асинхронных блоков Dash. Обновлены зависимости других пакетов @plotly
node.
#1836 Исправлено __all__
в dcc
и table
для дополнительных компонентов: dcc
download helpers и table
format helpers. Это также восстанавливает эту функциональность для устаревших верхнеуровневых пакетов dash_core_components
и dash_table
.- #1822 Удалён Radium из зависимостей рендерера, как часть исследования поддержки React 17.
orjson
для Python 3.6percy_snapshot
в dash.testing
выбирать ширины для генерации.#1778 DataTable: Исправлены предупреждения React, указывающие, что каждому дочернему элементу в списке следует присваивать уникальное свойство "key".
#1895 Поддержка debug=True
, если присутствуют native namespace-packages
@app.long_callback
для поддержки callback-функций, которые требуют длительного времени для выполнения. См. PR и документацию для получения дополнительной информации.orjson
установлен.request_refresh_jwt
hook и повторных запросов, использующих устаревшие JWT токены.dash
, dash-core-components
, dash-html-components
и dash-table
в единую монорепозиторию и перемещение компонентных пакетов в dash
. Это изменение делает модули компонентов доступными для импорта в пространстве имен dash
, и упрощает шаблон импорта для приложения Dash. С точки зрения разработки, все будущие изменения в модулях компонентов будут выполняться в директории components
, и соответствующие пакеты будут обновлены с помощью команды CLI dash-update-components
.compress
конструктора dash.Dash
на False
. Это изменение снижает использование ЦП, и было сделано в признание того факта, что многие платформы развертывания (например, Dash Enterprise) уже применяют собственное сжатие.Если развертывание выполняется в среде, которая не предоставляет сжатие, значение поведения Dash 1 может быть восстановлено добавлением compress=True
к конструктору dash.Dash
.npm run build
для упрощения процесса сборки, включающего dash-renderer
и подкомпонентные библиотеки в dash
.### Исправленоdcc.Slider
и dcc.RangeSlider
, где шаги не устанавливались на маркеры, если аргумент prop
передавался как None
. Добавлено проверочное условие для установки минимального и максимального значений на основе диапазона маркеров, если они не определены явно (для дополнительной информации см. #1843 и #1851).d3-format
.geo
.scattergl
, splom
и parcoords
.legend.groupclick
bbox
элементов подсказок в данных событий, чтобы поддержать пользовательские эффекты подсказок, управляемые Dashdcc.Tooltip
. Это особенно полезно для обогащения информации при наведении курсора на графики dcc.Graph
, используя информацию о bbox
, включённую в данных события в plotly.js v2.4.0## Таблица Dashhtml
- <command>
, <element>
, <isindex>
, <listing>
, <multicol>
, <nextid>
. Эти элементы устарели и были ранее удалены из таблицы справки.Dash
extra_hot_reload_paths
. Это позволяет перезапускать Python-код приложения при изменении не-Python файлов, если известно, что эти файлы влияют на приложение.requests_pathname_prefix
должно заканчиваться на routes_pathname_prefix
. Когда вы размещаете приложение за прокси-сервером, который перезаписывает URL, это ограничение должно быть нарушено.src/jl
- исправляет проблему на нечувствительных к регистру файловых системах, когда имя компонента и имя модуля совпадают (с учётом регистра) и префикс не используется. Также уменьшает мусор в JS/Julia в перегруженной директории src
.### Исправленоtiming_information
после некоторых изменений в поведении Flask.Plotly.d3
и удаление многих других глубоких частей публичного API. Это не влияет на компонент dcc.Graph
, но если вы используете Plotly
из глобальной области в каком-то другом месте, вы можете быть затронуты.contourgl
и area
, а также устаревших атрибутов scatterpolar
bar.r
, bar.t
, scatter.r
, scatter.t
, layout.radialaxis
, layout.angularaxis
. Используйте scatterpolar
, barpolar
и подграфики polar
вместо них.heatmapgl
и pointcloud
и атрибут transform
устарели и будут удалены в будущем обновлении. - Увеличение безопасности CSP за счет удаления конструкторов функций. 3D графики все еще используют конструкторы функций, но если вы размещаете один из пакетов (включая новый strict
пакет) в вашей папке assets
, у вас не будет конструкторов функций.hovermode
на "closest".textposition
на "auto" в трейсах bar
. Если вы ранее использовали атрибут bar.text
только для подсказок, вам потребуется явно установить textposition="none"
.bar.marker.pattern
, image.zsmooth
и различных других функций и исправлений ошибок.icicle
.legendrank
.%h
) для форматирования дат.disabled_days
для компонентов DatePickerRange
и DatePickerSingle
.С помощью этого параметра можно указать дни, которые должны быть недоступны для выбора в календаре, помимо тех, которые выходят за пределы диапазона, заданного параметрами min_date_allowed
и max_date_allowed
.### Измененоdash-info.yaml
для перегенерации примеров без подключения теперь устаревших основных компонентных пакетов (dashHtmlComponents
, dashCoreComponents
, или dashTable
).dash-info.yaml
для перегенерации примеров без подключения теперь устаревших основных компонентных пакетов (dashHtmlComponents
, dashCoreComponents
, или dashTable
).html
в markdown_options
. Это позволяет использовать теги HTML в тексте на языке Markdown.- #545
filter_options
— для управления регистром всех фильтров, columns.filter_options
— для управления регистром фильтров для каждого столбцаi=
, ieq
, i>=
, ige
, i>
, igt
, i<=
, ile
, i<
, ilt
, i!=
, ine
, icontains
— для независимой от регистра фильтрации, s=
, seq
, s>=
, sge
, s>
, sgt
, s<=
, sle
, s<
, slt
, s!=
, sne
, scontains
— для принудительной регистрозависимой фильтрации на независимых от регистра столбцахhighlight.js
изменило выделение кода в markdown: мы долгое время использовали их "github" стиль, который теперь более точно соответствует текущим стилям github.dash-info.yaml
для перегенерации примера без подключения теперь устаревших основных компонентных пакетов (dashHtmlComponents
, dashCoreComponents
, или dashTable
).## [1.20.0] - 2021-04-08## Dash и Dash Rendereroutputs
по сравнению с output
, чтобы избежать предполагаемой проблемы безопасности.Download
. Вместе с этим добавлены несколько утилит для помощи в создании соответствующего формата данных:
dcc.send_file
- отправка файла с диска.dcc.send_data_frame
- отправка DataFrame
, используя один из методов записи.dcc.send_bytes
- отправка строки байтов или результата метода записи строки байтов.dcc.send_string
- отправка строки или результата метода записи строки.autoComplete
в значение off
для dcc.Dropdown
. Это исправляет проблему #808.### ИсправленоDatePickerRange
, которая иногда сдвигала разрешенные даты на один день.EnhancedTab
, которая игнорировала свойство disabled_className
## Dash HTML Components#179 - Исправлено #77 Добавлены свойства allow
и referrerPolicy
к html.Iframe
#178 - Исправлено #161 свойство data
компонента <object>
, и исправлено #129 устаревшие, устаревшие и не рекомендуемые элементы. Нет удаленных элементов, но добавлены комментарии в документацию о этих элементах, подробно описывая их ограничения.
dash.callback_context
это решает многие случаи использования, требующие циклических вызовов.dash[testing]
для упрощения интеграции в внешние проекты. В этом запросе также обновлены многие зависимости dash[dev]
.### Исправленоget_asset_url
теперь извлекает данные из внешнего источника, если установлен assets_external_path
.
_add_assets_resource
для создания URL-адресов активов таким же образом, как get_asset_url
.assets_external_path
в Dash для большей ясности, что он всегда будет объединен с аргументом assets_url_path
при определении URL-адреса внешнего актива.import dash
с загадочным сообщением об ошибке.## Основные компоненты Dashfigure
компонента dcc.Graph
обновляется в ответ на пользовательские взаимодействия в графике, используя тот же объект layout
, предоставленный в свойстве, а не его копию. Исправляет #879.drag_value
к dcc.Slider
для возможности вызова обратных вызовов при перетаскивании и отпускании ползунка.app.callback(...)
декоратором.flask-compress==1.6.0
, которая приводила к ухудшению производительности на запросах сервера## [1.16.2] - 2020-09-25dcc.Tabs
, не загруженный dash_table.DataTable
и dcc.Graph
, которые не вызывалисьwidth
в частности), которые ранее вызывали ошибкиgetTransform
в рендерере для обработки persistenceTransforms
как для вложенных, так и для не вложенных сохраненных свойств. Это использовалось для исправления dcc#700 в сочетании с dcc#854 путем использования persistenceTransforms
для удаления части времени из даты и времени, чтобы датапикеры могли сохраняться, когда они определены в callbackscript-src
хэши всех добавленных встроенных скриптов, вызывая app.csp_hashes()
(как для встроенных скриптов Dash, так и для тех, которые добавлены с помощью app.clientside_callback
).n_clicks
используются как входные данные одного callback. Теперь callback будет вызван один раз с изменениями всех активированных n_clicks
свойств.callback_context.record_timing(name, seconds)
prevent_initial_call
как позиционного аргумента в определении callback## [1. 15. 0] - 2020-08-25app.logger.setLevel(logging.WARNING)
.--jl-prefix
к dash-generate-components
, который опционально генерирует версию на языке Julia компонентов и соответствующий пакет на языке Julia.Input
, Output
и State
в определениях обратных вызовов больше не требуются в виде списков. Всё ещё необходимо предоставлять элементы Output
первыми, затем элементы Input
, а затем State
, и форма списка всё ещё поддерживается. В частности, если вы хотите вернуть одиночный элемент вывода, обёрнутый в список длиной 1, вы всё ещё должны обёрнуть Output
в список. Это может быть полезно для процедурно-созданных обратных вызовов.title
для установки заголовка документа.Это рекомендуемый альтернативный способ установки заголовка приложения app.title
или переопределения HTML индексной страницы.update_title
для установки или отключения заголовка "Обновление..." документа во время обновлений. Закрывает #856 и #732.## [1.13.4] - 2020-06-25FLASK_ENV
во время выполнения приложения_wait_for_callbacks
DASH_PROXY
для указания app.run_server
на отображение правильного URL для просмотра приложения, когда оно проксируется. Вызывает ошибку, если прокси несовместим с хостом и портом, указанными для сервера.callback_context
для клиентских вызовов обратного вызова (например, dash_clientside.callback_context.triggered
). Поддерживает triggered
, inputs
, inputs_list
, states
, и states_list
, все из которых похожи на их серверные аналоги.### Измененоdash.testing
был совместим с большим количеством плагинов pytest
, особенно pytest-flake8
и pytest-black
.@app.callback(..., prevent_initial_call=True)
и аналогично для app.clientside_callback
. По умолчанию для всего приложения можно изменить это поведение с помощью app=Dash(prevent_initial_callbacks=True)
, после чего отдельные callback-ы могут отключить это поведение.app.validation_layout
позволяет создавать многопримечательное приложение без использования suppress_callback_exceptions=True
или хитростей с макетом. Установите это на компонентный макет, содержащий супермножество всех ID на всех страницах вашего приложения.ALL
дикторы в их Output
, которые будут неудачными, если нет компонентов, соответствующих паттерну.PreventUpdate
. Единственное исключение к этому - с callback-ами с паттерном соответствиями, когда каждый Input использует многозначный диктор (ALL или ALLSMALLER), и каждый Output находится на странице. В этом случае callback-ы вызываются как обычно.flask.has_request_context() == False
внутри функции app.layout
для предоставления специального макета, содержащего все ID для целей валидации в многопримечательном приложении. Dash 1.11 сломал это, когда мы переместили большую часть этой валидации в рендерер. Это изменение делает его снова рабочим.ALL
, MATCH
и ALLSMALLER
, доступные из dash.dependencies
. Это позволяет создавать компоненты по требованию и иметь коллбэки, отвечающие на любые и все из них. Для помощи с этим, dash.callback_context
получает три новых элемента: outputs_list
, inputs_list
и states_list
, которые содержат все ID, свойства и, кроме выходных данных, значения свойств всех соответствующих компонентов.--pause
в dash.testing
: после открытия приложения Dash для тестирования, будет запущен pdb
для живого отладки как Javascript, так и Python. Используйте с одним тестовым случаем, например pytest -k cbwc001 --pause
.### Измененоdash.callback_context.triggered
теперь НЕ отражает какие-либо начальные значения, и ОТРАЖАЕТ ВСЕ значения, которые были изменены либо активностью в приложении, либо как результат предыдущего коллбэка. Это означает, что первое вызов коллбэка без предварительных коллбэков не будет ничего указывать как триггер. Для обратной совместимости, мы продолжаем предоставлять список длиной 1 для triggered
, но его id
и property
являются пустыми строками, и bool(triggered)
является False
.host
и port
для dash.run_server()
с помощью переменных окружения HOST и PORT соответственно### Измененоcompress
с помощью переменной окружения DASH_COMPRESS=FALSE
## [1. 9. 0] - 2020-02-04app.get_relative_path
& app.trim_relative_path
.
Эти функции особенно полезны для приложений, развернутых на Dash Enterprise, где приложения обслуживаются под URL-префиксом (имя приложения), что отличается от приложений, обслуживающихся на localhost:8050.
app.get_relative_path
возвращает путь с префиксом настроек requests_pathname_prefix
. Используйте app.get_relative_path
там, где вы предоставляете относительный путь, например dcc.Link(href=app.get_relative_path('/page-2'))
или даже как альтернативу app.get_asset_url
с помощью, например, html.Img(src=app.get_relative_path('/assets/logo.png'))
.app.trim_relative_path
удаляет путь с requests_pathname_prefix
и ведущими и завершающими слешами. Используйте эту функцию в callback, которые работают с dcc.Location
pathname
маршрутизацией.
Пример использования:app.layout = html.Div([
dcc.Location(id='url'),
html.Div(id='content')
])
@app.callback(Output('content', 'children'), [Input('url', 'pathname')])
def display_content(path):
page_name = app.strip_relative_path(path)
if not page_name: # None or ''
return html.Div([
html.Img(src=app.get_relative_path('/assets/logo.png')),
dcc.Link(href=app.get_relative_path('/page-1')),
dcc.Link(href=app.get_relative_path('/page-2')),
])
elif page_name == 'page-1':
return chapters.page_1
if page_name == "page-2":
``` return chapters. page_2
```### Изменено
visit_and_snapshot
в dash.testing.browser
для оставления на странице, чтобы можно было выполнять другие проверки.children
в массив, и они передаются в другие свойства.stop
в dash.testing
с процессом запуска приложения в Python2. Использование kill()
вместо communicate()
для предотвращения зависаний.clear_input()
в dash.testing
, чтобы он был более надежным при работе с React input
.percy_snapshot()
, и таймаут wait_for_callbacks
(если установлен в True
) не будет приводить к ошибке выполнения снимка, но будет записан как потенциальная ошибка.## [1.6.0] - 2019-11-04metadata
в версии._force_eager_loading
при загрузке приложения с помощью gunicorn.throw window.dash_clientside.PreventUpdate;
window.dash_clientside.no_update
wait_for_callbacks
, чтобы гарантировать, что действие снимка Percy произойдет только после того, как все обратные вызовы будут выполнены.## [1.4.1] - 2019-10-17dashr
, особенно полезно для тестов с активами. Метод dashr.start_server
поддерживает аргумент cwd
для установки явной рабочей директории, и имеет более умные значения по умолчанию, когда этот аргумент опущен: если app
— это путь к скрипту R, используется директория этого пути; если app
— это строка, используется директория самого тестового файла.dash.testing
могут быть вызваны как с элементом, так и с CSS-селектором: select_dcc_dropdown
, multiple_click
, clear_input
, zoom_in_graph_by_ratio
, click_at_coord_fractions
.dash.testing
: clear_local_storage
, clear_session_storage
и clear_storage
(для очистки обоих одновременно).dash.testing
добавляет два API zoom_in_graph_by_ratio
и click_at_coord_fractions
о продвинутых взаимодействиях с помощью мыши ActionChain
.#923 Добавлен конфигурационный параметр --percy-assets
в pytest
для указания дополнительного пути к файлам приложения, если это необходимо.
#918 Добавлены API wait_for_element_by_id
и visit_and_snapshot
в браузере, добавлен параметр raw_command
(с более высоким приоритетом по сравнению с дефолтным waitress) и необязательный аргумент start_timeout
для обработки больших приложений внутри процесса запуска.
#903 Добавлена возможность сохранения изменений пользователем в свойствах компонента при пересоздании компонента или перезагрузке страницы. Компоненты должны определить три новых свойства: persistence
, persisted_props
, и persistence_type
, как описано в комментарии к src/persistence.js
. Разработчики приложений могут включить это поведение, установив persistence: true
на компоненте. Первый пример использования — таблица, см. dash-table#566
dash-generate-components
на Windows.--remote
в pytest
, который не работал в коде. Добавлен новый аргумент --remote-url
для поддержки использования selenium grid в облаке.npm run build:local
и установить pip в режиме редактирования, то есть pip install -e .
dev_tools_prune_errors
к app.run_server
и app.enable_dev_tools
. По умолчанию True
, отладочные трассировки включают только пользовательский код и ниже. Установите его False
для предыдущего поведения, показывающего все части Dash и Flask стека.dash.testing
.dash.testing
по отзывам сообщества. Пользователи тестирования должны выполнить pip install dash[testing]
после этого.dash.testing
, добавление pytest_setup_options
хука для полной настройки WebDriver Options
.💥 #761 Несколько разрушительных изменений в API dash.Dash
:
static_folder
и components_cache_max_age
suppress_callback_exceptions
resources.config.infer_from_layout
app.config
: все параметры конструктора теперь хранятся в config
, с тремя исключениями: server
, index_string
и plugins
. Ничего из этого больше не хранится в других атрибутах экземпляра.hot_reload_interval
с миллисекунд на секунды для согласованности с hot_reload_watch_interval
enable_dev_tools
значение debug=True
по умолчанию. По умолчанию оно всё ещё False
из run_server
.✨ #744 Введение тестирования Dash (dash.testing
) - полная инструкция доступна по адресу https://dash.plotly.com/testing.
#753 Component
больше не наследует MutableMapping
, поэтому методы values
, keys
и другие больше недоступны. Исправлено проблему, описанную в dcc#440, где компоненты с определёнными именами свойств, но без предоставленных значений, не могли быть отрендерены. Теперь при генерации компонентов запрещены все свойства с начальными подчеркиваниями или совпадающие с несколькими оставшимися зарезервированными словами: UNDEFINED
, REQUIRED
, to_plotly_json
, available_properties
и available_wildcard_properties
.- #739 Разрешено передачу Flask-приложения в Dash после инициализации объекта. Это позволяет пользователям определять макеты Dash и другие элементы при использовании шаблона фабрики приложений или любого другого шаблона, который ограничивает доступ к объекту приложения. Это в целом соответствует API расширений Flask, позволяя рассматривать Dash как расширение Flask, где это необходимо.
#774 Разрешено Flask-приложению устанавливать имя Dash-приложения, если имя не было предоставлено пользователем.
#722 Активные ресурсы по умолчанию подгружаются локально. Это касается как JS-скриптов, так и CSS-файлов. Это улучшает надёжность и гибкость в различных ситуациях, но в некоторых случаях может замедлить инициальную загрузку. Чтобы восстановить предыдущее подключение к CDN, установите app.scripts.config.serve_locally = False
(и аналогично для app.css
, но это обычно менее важно).
#724, renderer#175 Панель отмены/повтора действий по умолчанию убрана, её можно включить с помощью app=Dash(show_undo_redo=True)
. CSS-хак ._dash-undo-redo:{display:none;}
больше не требуется.
💥 #709 Объединение проекта dash-renderer
в основной репозиторий Dash для упрощения рабочего процесса разработки функций. Мы сохраним устаревшую версию для архивных целей.## [0.43.0] - 2019-05-15
dash-core-components
с 0.47.0 до 0.48.0
dash-renderer
с 0.23.0 до 0.24.0
dash-table
с 3.6.0 до 3.7.0
app.run_server
:
dev_tools_props_check
- включение/отключение проверки свойств.dev_tools_ui
- включение/отключение интерфейса.children=0
.## [0.41.0] - 2019-04-10dev_tools_ui
в app.run_server
(сериализован в <script id="_dash-config" type="application/json">
) для отображения или скрытия предстоящего интерфейса Dev Tools в front-end Dash (dash-renderer).dash_renderer._set_react_version
для версий 15.4.2 и 16.2.0### ИзмененоsetProps
компонентам, даже если нет обратных вызовов для использования.dash.callback_context.response
.dash.callback_context.triggered
dash.callback_context.states.get('btn.n_clicks')
__repr__
в базовый компонент вместо генерации.Event
. Используйте свойства событий вместо них, например, свойство n_clicks
вместо события click
, см. #531. dash_renderer
ДОЛЖЕН быть обновлен до >=0.17.0 вместе с этим, и рекомендуется обновить dash_core_components
до >=0.43.0 и dash_html_components
до >=0.14.0.assets_folder
теперь по умолчанию равен 'assets'
name
аргумента, по умолчанию __main__
будет использовать cwd
.name
из сервера, если предоставлен аргумент server
.print
из обработчика ошибки PreventUpdate
.ComponentRegistry
.## [0.35.2] - 2019-01-11AppProvider
возвращает Загрузка...
если конфигурации отсутствуют, как и раньше renderer#108.## 0.35.1 - 2018-12-27динамические
ресурсы из коллекции ресурсов индекса.--r-prefix
для dash-generate-components
, опционально генерирует версию на языке R компонентов и соответствующий пакет R.--ignore
для dash-generate-components
, по умолчанию равен ^_
.key
к отрендеренным компонентам, исправлено renderer#379
InvalidIndexException
, DependencyException
, ResourceException
)extract-meta
для отсутствующих строк документации свойств Dash## 0.32.0 - 2018-12-07.map
и динамической (по требованию) загрузки._imports_.py
.## 0.31.0 - 2018-11-29extract-meta
и генерации файлов компонентов Python в CLI.on_prop_change
, где история не была правильно установлена при действии на более чем одном компоненте. В частности, кнопка "отмена" теперь должна работать так, как ожидалось.dev_tools_silence_routes_logging
.Dash.registered_paths
изменён на collections.defaultdict(set)
, был добавлен тот же пакетный путь на каждый индекс.Component.traverse()
и Component.traverse_with_paths()
для компонентов с children
типа tuple
, а не только list
.## 0.28.3 - 2018-10-17add_url
из Dash.__init__
app.run_server(dev_tools_serve_dev_bundles=True)
Cache-Control
для файлов, подаваемых Dash.serve_component_suites
, и времени модификации строки запроса для собранных компонентов.InvalidResourceError
и обработчика ошибок Flask, чтобы не зарегистрированные пути в serve_component_suites
возвращали 404 вместо 500.## 0.26.5 - 2018-09-10get_asset_url
с другим assets_url_path
.url_base_pathname
на None
в Dash.__init__
. Исправление #364
Dash.get_asset_url
будет давать префиксированный URL для файла активов.requests_pathname_prefix
._validate_layout
, которая не позволяла пользователю установить app.layout
как функцию, возвращающую макет (исправление #334).assets_ignore
, регулярного фильтра для файлов активов.DASH_
).### Исправленоrequests_pathname_prefix
при создании тегов скриптов.requests/routes_pathname_prefix
должны начинаться и заканчиваться символом /
.requests_pathname_prefix
должен заканчиваться на routes_pathname_prefix
. Если вы указывали оба requests
и routes
pathname до этого обновления, убедитесь, что requests_pathname_prefix
заканчивается на том же значении, что и routes_pathname_prefix
.url_base_pathname
устанавливает оба requests/routes
pathname, не может быть указано ни одно из них.## 0.24.2 - 2018-08-13dash-html-components
с Python 3.7.ie-compat
в индекс по умолчанию.external_script
и external_css
в __init__
Dash._dash-error
к сообщениям "Ошибка загрузки макета" и "Ошибка загрузки зависимостей".Boolean
больше не приводит к аварийному завершению приложения.id
, который не существует в дереве DOM в момент выполнения, теперь выбрасывается более информативное исключение на фронтенде.updateProps
с несколькими свойствами, Dash вызывал обратный вызов несколько раз (один раз для каждого свойства). Теперь обратный вызов вызывается только один раз.## 0.21.1 - 2018-04-10aria-*
и data-*
во всех компонентах dash html. Эти новые ключевые слова могут быть добавлены с помощью расширения словаря, например html.Div(id="my-div", **{"data-toggle": "toggled", "aria-toggled": "true"})
.import dash_renderer
# Установите версию React перед настройкой приложения Dash
dash_renderer._set_react_version('16.2.0')
app = dash.Dash(...)
react
и react-dom
для режима разработки.## 0. 21. 0 - 2018-02-21component_loader
теперь имеет следующее поведение для создания строк документации, как определено в обсуждении в #187:
PropTypes
, строка документации использует PropTypes
, независимо от того, имеет ли компонент также типы Flow (текущее поведение).
PropTypes
, строка документации теперь использует объекты, сгенерированные react-docgen
из типов Flow.exceptions.PreventUpdate
может быть вызван внутри обратного вызова для предотвращения обновления приложения обратным вызовом. См. https://community.plotly.com/t/improving-handling-of-aborted-callbacks/7536/2.### Удаленоdash
для улучшенного завершения строк в IDE.🔒 Удалены меры защиты от CSRF-атак. Такие атаки не актуальны для приложений на Dash, так как API Dash использует запросы POST
с типом содержимого application/json
, которые не подвержены нежелательным запросам с сайтов третьих сторон. См. #141.
🔒 Переменная app.server.secret_key
больше не требуется, так как меры защиты от CSRF-атак были удалены. Установка app.server.secret_key
было сложно документировать и часто вызывало путаницу, поэтому хорошо, что пользователи больше не столкнутся с этой проблемой
🐞 renderer#22, renderer#28 Ранее, старые запросы могли перезаписывать новые запросы, если их ответ был длиннее нового.Это вызывало незначительные ошибки при развертывании приложений на нескольких процессах или потоках с компонентами, которые обновляются с разной скоростью, например, URL. Оригинально отмечено в #133. Это исправление также должно улучшить производительность при множественных обновлениях, так как устаревшие запросы будут отбрасываться вместо обновления интерфейса. Проблема с производительностью с первого запроса отмечена в renderer#27 и исправлена во втором запросе.
renderer#21 Исправлена проблема, при которой вызовы обратного вызова выполнялись слишком часто. Ранее, обратный вызов выполнялся столько раз, сколько у него было входных данных. Теперь он выполняется реже.
app.config
теперь является dict
вместо класса. Вы можете установить переменные конфигурации с помощью app.config['suppress_callback_exceptions'] = True
. Предыдущий синтаксис на основе класса (например, app.config.suppress_callback_exceptions
) сохранен для обратной совместимости.<div class="_dash-loading-callback"/>
в DOM. Пользователи могут стилизовать этот элемент с помощью пользовательского CSS для отображения перекрывающих экранов загрузки.Эта функция находится в альфа-версии, и мы можем удалить её в любое время.### Исправлено/
.supress_callback_exceptions
в suppress_callback_exceptions
. Оригинальное написание сохранено для обратной совместимости.endpoint
для каждого из URL, чтобы позволить использование нескольких маршрутов.## 0.18.1 - 2017-09-07app.layout
является функцией, то она раньше вызывалась слишком часто. Теперь она вызывается только один раз при запуске и один раз при загрузке страницы./static/
и соответствующий конечный пункт, который неявно инициализируется Flask. Это слишком неявно для меня: я беспокоюсь, что пользователи не будут осведомлены о том, что их файлы в каталоге static
доступны.filename
, sharing
и app_url
. Это никогда не документировалось и не поддерживалось официально. Аутентификация была перемещена в пакет dash-auth
.routes_pathname_prefix
и requests_pathname_prefix
для предоставления большей гибкости при маршрутизации API при запуске Dash-приложений за прокси-серверами. routes_pathname_prefix
— это префикс, применяемый к маршрутизации на сервере, а requests_pathname_prefix
— префикс, применяемый к запросам, отправляемым фронтендом Dash. dash-renderer==0.8.0rc3
использует эти конечные точки.id
к исключениям KeyError
в компонентах.### Исправленоdash-renderer
.✨ Это первое открытое релиз Dash.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )