From bcb5b50c4c4fc95dcfdfb19fd77b4b0b5def164e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 4 Aug 2023 12:28:59 -0400 Subject: [PATCH 01/16] rm `Base.getindex` for `DashBase.Component` methods these were moved to `DashBase.jl` during the DashBase v1 push --- src/app/dashapp.jl | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/app/dashapp.jl b/src/app/dashapp.jl index 92fccce..4e687a3 100644 --- a/src/app/dashapp.jl +++ b/src/app/dashapp.jl @@ -40,28 +40,6 @@ mutable struct DashApp end -const VecChildTypes = Union{NTuple{N, DashBase.Component} where {N}, Vector{<:DashBase.Component}} - -function Base.getindex(component::DashBase.Component, id::AbstractString) - component.id == id && return component - hasproperty(component, :children) || return nothing - cc = component.children - return if cc isa Union{VecChildTypes, DashBase.Component} - cc[id] - elseif cc isa AbstractVector - identity.(filter(x->hasproperty(x, :id), cc))[id] - else - nothing - end -end -function Base.getindex(children::VecChildTypes, id::AbstractString) - for element in children - element.id == id && return element - el = element[id] - el !== nothing && return el - end -end - #only name, index_string and layout are available to set function Base.setproperty!(app::DashApp, property::Symbol, value) property == :index_string && return set_index_string!(app, value) From fb011f3a1aa4db0d12e61a3e31cd3d100d409e99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 4 Aug 2023 12:33:36 -0400 Subject: [PATCH 02/16] rm `DashBase.to_dash` method definitions these are now in `DashBase.jl` since DashBase v1. This makes PlotlyBase no longer a `Dash.jl` dep! Requires is also no longer needed in `Dash.jl` --- Project.toml | 4 ---- src/Dash.jl | 3 --- src/plotly_base.jl | 8 -------- src/plotly_js.jl | 8 -------- 4 files changed, 23 deletions(-) delete mode 100644 src/plotly_base.jl delete mode 100644 src/plotly_js.jl diff --git a/Project.toml b/Project.toml index 4a27bc0..27454f9 100644 --- a/Project.toml +++ b/Project.toml @@ -16,8 +16,6 @@ JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" MD5 = "6ac74813-4b46-53a4-afec-0b5dc9d7885c" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5" -Requires = "ae029012-a4dd-5104-9daa-d747884805df" Sockets = "6462fe0b-24de-5631-8697-dd941f90decc" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" @@ -35,8 +33,6 @@ HTTP = "1" JSON = "0.21" JSON3 = "1.9" MD5 = "0.2" -PlotlyBase = "0.8.5, 0.8.6" -Requires = "1.3" YAML = "0.4.7" julia = "1.6" diff --git a/src/Dash.jl b/src/Dash.jl index b15706e..d78cb76 100644 --- a/src/Dash.jl +++ b/src/Dash.jl @@ -3,7 +3,6 @@ using DashBase import HTTP, JSON3, CodecZlib, MD5 using Sockets using Pkg.Artifacts -using Requires const ROOT_PATH = realpath(joinpath(@__DIR__, "..")) #const RESOURCE_PATH = realpath(joinpath(ROOT_PATH, "resources")) @@ -28,7 +27,6 @@ include("handlers.jl") include("server.jl") include("init.jl") include("components_utils/_components_utils.jl") -include("plotly_base.jl") @doc """ module Dash @@ -108,7 +106,6 @@ const _metadata = load_all_metadata() function __init__() setup_renderer_resources() setup_dash_resources() - @require PlotlyJS="f0f68f2c-4968-5e81-91da-67840de0976a" include("plotly_js.jl") end diff --git a/src/plotly_base.jl b/src/plotly_base.jl deleted file mode 100644 index ec13830..0000000 --- a/src/plotly_base.jl +++ /dev/null @@ -1,8 +0,0 @@ -import PlotlyBase -import JSON - -function DashBase.to_dash(p::PlotlyBase.Plot) - data = JSON.lower(p) - pop!(data, :config, nothing) - return data -end diff --git a/src/plotly_js.jl b/src/plotly_js.jl deleted file mode 100644 index 113c423..0000000 --- a/src/plotly_js.jl +++ /dev/null @@ -1,8 +0,0 @@ -import JSON - -function DashBase.to_dash(p::PlotlyJS.SyncPlot) - data = JSON.lower(p.plot) - pop!(data, :config, nothing) - return data -end - From 54dd034fe25e8210315615c7c42aba81284fe0cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Aug 2023 17:33:37 -0400 Subject: [PATCH 03/16] add note about `docker start` --- build/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/README.md b/build/README.md index c61d430..51a08b9 100644 --- a/build/README.md +++ b/build/README.md @@ -51,7 +51,10 @@ cd Dash.jl git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main # start `dashjl-tests` +# [on 1st session] docker run -t -d --name dashjl-tests -v .:/home/circleci/project etpinard/dashjl-tests: +# [otherwise] +docker start dashjl-tests # ssh into it as root (some python deps need that unfortunately) docker exec -u 0 -it dashjl-tests bash From 70ec860b86fd83b2887fccad9f01cfbffd919a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Aug 2023 17:35:49 -0400 Subject: [PATCH 04/16] add `test/integration/Project.toml` which includes the DashBase "weakdeps" so that we can test plotly graph rendering via the `DashBase` extensions. since the dash test driver uses `julia --project` as base command, we must `cd` into `test/integration` and setup `Dash` as a dev package manually. Update the dev docs accordingly! --- .circleci/config.yml | 5 +++-- CONTRIBUTING.md | 6 ++++-- build/README.md | 8 ++++---- test/integration/Project.toml | 7 +++++++ 4 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 test/integration/Project.toml diff --git a/.circleci/config.yml b/.circleci/config.yml index 2d5a34b..08f253a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,13 +36,14 @@ jobs: - run: name: ⚙️ Integration tests command: | - julia --project -e 'import Pkg; Pkg.instantiate(); Pkg.update();' python -m venv venv . venv/bin/activate pip install --upgrade pip wheel git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main cd dash-main && pip install -e .[ci,dev,testing] --progress-bar off && cd .. - pytest --headless --nopercyfinalize --junitxml=test-reports/dashjl.xml --percy-assets=test/assets/ test/integration/ + cd test/integration + julia --project -e 'import Pkg; Pkg.develop(path="../../"); Pkg.instantiate(); Pkg.update();' + pytest --headless --nopercyfinalize --junitxml=../../test-reports/dashjl.xml --percy-assets=../assets/ . - store_artifacts: path: test-reports - store_test_results: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b4438df..c083ffd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,8 +41,10 @@ cd Dash.jl git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main python3 -m venv venv pip install --upgrade pip wheel -cd dash-main && pip install -e .[ci,dev,testing] && cd ..dash -pytest --headless --nopercyfinalize --percy-assets=test/assets/ test/integration/ +cd dash-main && pip install -e .[ci,dev,testing] && cd .. +cd test/integration +julia --project -e 'import Pkg; Pkg.develop(path="../../"); Pkg.instantiate(); Pkg.update();' +pytest --headless --nopercyfinalize --percy-assets=../assets/ . ``` Alternatively, one can run the integration tests using the same Docker diff --git a/build/README.md b/build/README.md index 51a08b9..14b57ed 100644 --- a/build/README.md +++ b/build/README.md @@ -77,11 +77,11 @@ chmod +x ./install-chromedriver.sh ORB_PARAM_DRIVER_INSTALL_DIR=/usr/local/bin/ ./install-chromedriver.sh # [on 1st session] instantiate julia deps -cd /home/circleci/project/ -julia --project -e 'import Pkg; Pkg.instantiate()' +cd /home/circleci/project/test/integration +julia --project -e 'import Pkg; Pkg.develop(path="../../"); Pkg.instantiate()' # update julia deps then run integration tests -cd /home/circleci/project/ +cd /home/circleci/project/test/integration julia --project -e 'import Pkg; Pkg.update()' -pytest --headless --nopercyfinalize --percy-assets=test/assets/ test/integration/ +pytest --headless --nopercyfinalize --percy-assets=../assets/ . ``` diff --git a/test/integration/Project.toml b/test/integration/Project.toml new file mode 100644 index 0000000..f73133a --- /dev/null +++ b/test/integration/Project.toml @@ -0,0 +1,7 @@ +[deps] +Dash = "1b08a953-4be3-4667-9a23-3db579824955" +DashBase = "03207cf0-e2b3-4b91-9ca8-690cf0fb507e" +HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" +PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5" +PlotlyJS = "f0f68f2c-4968-5e81-91da-67840de0976a" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" From c68c8dc045e4ca7eb9554400c3eb38875143e051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Aug 2023 17:39:21 -0400 Subject: [PATCH 05/16] add note about using unreleased `DashBase` --- build/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/README.md b/build/README.md index 14b57ed..ff96a14 100644 --- a/build/README.md +++ b/build/README.md @@ -80,6 +80,9 @@ ORB_PARAM_DRIVER_INSTALL_DIR=/usr/local/bin/ ./install-chromedriver.sh cd /home/circleci/project/test/integration julia --project -e 'import Pkg; Pkg.develop(path="../../"); Pkg.instantiate()' +# [optionally] if you want to use an unreleased version of DashBase +julia --project -e 'import Pkg; Pkg.add(name="DashBase", rev="master")' + # update julia deps then run integration tests cd /home/circleci/project/test/integration julia --project -e 'import Pkg; Pkg.update()' From 20835517e9706d1611eaf862c6bfbd387035cd90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Aug 2023 17:39:56 -0400 Subject: [PATCH 06/16] make `test_plotly_graph.py` more general --- test/integration/base/test_plotly_graph.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/integration/base/test_plotly_graph.py b/test/integration/base/test_plotly_graph.py index f95a89d..c3ded68 100644 --- a/test/integration/base/test_plotly_graph.py +++ b/test/integration/base/test_plotly_graph.py @@ -1,27 +1,29 @@ import pathlib import os.path import logging + logger = logging.getLogger(__name__) curr_path = pathlib.Path(__file__).parent.absolute() def jl_test_file_path(filename): return os.path.join(curr_path, "jl_plotly_graph", filename) +def _run_test(dashjl, filename, percy_snapshot_prefix): + fp = jl_test_file_path(filename) + dashjl.start_server(fp) + dashjl.wait_for_element_by_css_selector("#graph", timeout=20) + dashjl.wait_for_text_to_equal("#status", "first", timeout=10) + dashjl.percy_snapshot(name=f"{percy_snapshot_prefix} figure layout") + + dashjl.find_element("#draw").click() + dashjl.wait_for_text_to_equal("#status", "second", timeout=10) + dashjl.percy_snapshot(name="f{percy_snapshot_prefix} figure callback") def test_jlpg001_plotly_graph(dashjl): - fp = jl_test_file_path("jlpg001_plotly_graph.jl") - dashjl.start_server(fp) - dashjl.wait_for_element_by_css_selector( - "#graph", timeout=20 - ) + _run_test(dashjl, "jlpg001_plotly_graph.jl", "PlotlyBase") - dashjl.wait_for_text_to_equal("#status", "first", timeout=10) - dashjl.percy_snapshot(name="PlotlyBase figure layout") - dashjl.find_element("#draw").click() - dashjl.wait_for_text_to_equal("#status", "second", timeout=10) - dashjl.percy_snapshot(name="PlotlyBase figure callback") From f003ddf85dbbf0369bb39f36ab8b6a832f92b171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Aug 2023 17:40:49 -0400 Subject: [PATCH 07/16] test graph render via `DashBasePlotlyJsExt` --- test/integration/base/jl_plotly_graph/jlpg001_plotly_graph.jl | 1 + test/integration/base/jl_plotly_graph/jlpg002_plotlyjs_graph.jl | 1 + test/integration/base/test_plotly_graph.py | 2 ++ 3 files changed, 4 insertions(+) diff --git a/test/integration/base/jl_plotly_graph/jlpg001_plotly_graph.jl b/test/integration/base/jl_plotly_graph/jlpg001_plotly_graph.jl index 685150b..6eea901 100644 --- a/test/integration/base/jl_plotly_graph/jlpg001_plotly_graph.jl +++ b/test/integration/base/jl_plotly_graph/jlpg001_plotly_graph.jl @@ -1,5 +1,6 @@ using Dash using PlotlyBase + app = dash() app.layout = html_div() do dcc_graph(id = "graph", diff --git a/test/integration/base/jl_plotly_graph/jlpg002_plotlyjs_graph.jl b/test/integration/base/jl_plotly_graph/jlpg002_plotlyjs_graph.jl index 6a361f3..5b18b3c 100644 --- a/test/integration/base/jl_plotly_graph/jlpg002_plotlyjs_graph.jl +++ b/test/integration/base/jl_plotly_graph/jlpg002_plotlyjs_graph.jl @@ -1,5 +1,6 @@ using Dash using PlotlyJS + app = dash() app.layout = html_div() do dcc_graph(id = "graph", diff --git a/test/integration/base/test_plotly_graph.py b/test/integration/base/test_plotly_graph.py index c3ded68..77034e7 100644 --- a/test/integration/base/test_plotly_graph.py +++ b/test/integration/base/test_plotly_graph.py @@ -24,6 +24,8 @@ def _run_test(dashjl, filename, percy_snapshot_prefix): def test_jlpg001_plotly_graph(dashjl): _run_test(dashjl, "jlpg001_plotly_graph.jl", "PlotlyBase") +def test_jlpg002_plotlyjs_graph(dashjl): + _run_test(dashjl, "jlpg002_plotlyjs_graph.jl", "PlotlyJS") From 421c2f4adf84b9a75536af820bcddead7738003f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Wed, 23 Aug 2023 17:41:20 -0400 Subject: [PATCH 08/16] add graph render test for `DashBasePlotsExt` --- .../jlpg003_plots_plotly_graph.jl | 23 +++++++++++++++++++ .../jlpg004_plots_plotlyjs_graph.jl | 23 +++++++++++++++++++ test/integration/base/test_plotly_graph.py | 5 +++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 test/integration/base/jl_plotly_graph/jlpg003_plots_plotly_graph.jl create mode 100644 test/integration/base/jl_plotly_graph/jlpg004_plots_plotlyjs_graph.jl diff --git a/test/integration/base/jl_plotly_graph/jlpg003_plots_plotly_graph.jl b/test/integration/base/jl_plotly_graph/jlpg003_plots_plotly_graph.jl new file mode 100644 index 0000000..c4131c0 --- /dev/null +++ b/test/integration/base/jl_plotly_graph/jlpg003_plots_plotly_graph.jl @@ -0,0 +1,23 @@ +using Dash +using Plots +plotly() + +app = dash() +app.layout = html_div() do + dcc_graph(id = "graph", figure = plot((1:10, 1:10))), + html_button("draw", id = "draw"), + html_div("", id = "status") +end + +callback!(app, + Output("graph", "figure"), + Output("status", "children"), + Input("draw", "n_clicks")) do nclicks + return if isnothing(nclicks) + no_update(), "first" + else + plot([(1:10, 1:10), (1:10, 1:2:20)]), "second" + end +end + +run_server(app) diff --git a/test/integration/base/jl_plotly_graph/jlpg004_plots_plotlyjs_graph.jl b/test/integration/base/jl_plotly_graph/jlpg004_plots_plotlyjs_graph.jl new file mode 100644 index 0000000..166b960 --- /dev/null +++ b/test/integration/base/jl_plotly_graph/jlpg004_plots_plotlyjs_graph.jl @@ -0,0 +1,23 @@ +using Dash +using Plots +plotlyjs() + +app = dash() +app.layout = html_div() do + dcc_graph(id = "graph", figure = plot((1:10, 1:10))), + html_button("draw", id = "draw"), + html_div("", id = "status") +end + +callback!(app, + Output("graph", "figure"), + Output("status", "children"), + Input("draw", "n_clicks")) do nclicks + return if isnothing(nclicks) + no_update(), "first" + else + plot([(1:10, 1:10), (1:10, 1:2:20)]), "second" + end +end + +run_server(app) diff --git a/test/integration/base/test_plotly_graph.py b/test/integration/base/test_plotly_graph.py index 77034e7..82e45d5 100644 --- a/test/integration/base/test_plotly_graph.py +++ b/test/integration/base/test_plotly_graph.py @@ -27,5 +27,8 @@ def test_jlpg001_plotly_graph(dashjl): def test_jlpg002_plotlyjs_graph(dashjl): _run_test(dashjl, "jlpg002_plotlyjs_graph.jl", "PlotlyJS") +def test_jlpg003_plots_plotly_graph(dashjl): + _run_test(dashjl, "jlpg003_plots_plotly_graph.jl", "Plots plotly") - +def test_jlpg004_plots_plotlyjs_graph(dashjl): + _run_test(dashjl, "jlpg004_plots_plotlyjs_graph.jl", "Plots plotlyjs") From 8c72870aeaf655d494a5cf22c43c81354f24f498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 09:36:41 -0400 Subject: [PATCH 09/16] update CircleCI browser tools to `1.4.3` same version used in `plotly/dash` --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2d5a34b..44535d0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 orbs: percy: percy/agent@0.1.3 - browser-tools: circleci/browser-tools@1.2.4 + browser-tools: circleci/browser-tools@1.4.3 jobs: From ac912391753aa17ccdad97d9795359901eea2c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 15:59:34 -0400 Subject: [PATCH 10/16] add DashBase `v1` in compat list --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 27454f9..6d17d8a 100644 --- a/Project.toml +++ b/Project.toml @@ -24,7 +24,7 @@ YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" [compat] Aqua = "0.6" CodecZlib = "0.6, 0.7" -DashBase = "0.2" +DashBase = "0.2, 1" DashCoreComponents = "2.0.0" DashHtmlComponents = "2.0.0" DashTable = "5.0.0" From 9478e85b5bb1404e503a7a900f71e5e12a8a314e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 16:16:37 -0400 Subject: [PATCH 11/16] fixup percy snapshot name --- test/integration/base/test_plotly_graph.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/integration/base/test_plotly_graph.py b/test/integration/base/test_plotly_graph.py index 82e45d5..50756b8 100644 --- a/test/integration/base/test_plotly_graph.py +++ b/test/integration/base/test_plotly_graph.py @@ -10,6 +10,8 @@ def jl_test_file_path(filename): def _run_test(dashjl, filename, percy_snapshot_prefix): fp = jl_test_file_path(filename) + name = f"{percy_snapshot_prefix} figure callback" + dashjl.start_server(fp) dashjl.wait_for_element_by_css_selector("#graph", timeout=20) @@ -18,7 +20,7 @@ def _run_test(dashjl, filename, percy_snapshot_prefix): dashjl.find_element("#draw").click() dashjl.wait_for_text_to_equal("#status", "second", timeout=10) - dashjl.percy_snapshot(name="f{percy_snapshot_prefix} figure callback") + dashjl.percy_snapshot(name=name) def test_jlpg001_plotly_graph(dashjl): From a1aba206c49e1cacd8ee1ca18a3392f7b873e707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 16:21:44 -0400 Subject: [PATCH 12/16] add a few more details to the release checklist --- CONTRIBUTING.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b4438df..b74219d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -76,7 +76,7 @@ releasing. ### step 1 Make sure the [unit tests][jltest] and [CircleCI integration tests][circlecI] -are passing. +are passing off the `dev` branch. ### step 2 @@ -89,7 +89,10 @@ For consistency, name the PR: "Release X.Y.Z" Bump the `version` field in the `Project.toml` (following [semver][semver]) and then ```sh +git checkout dev +git pull origin dev git commit -m "X.Y.Z" +git push ``` **N.B.** use `X.Y.Z` not `vX.Y.Z` in the commit message, the leading `v` is @@ -131,8 +134,8 @@ git push --tags Go the [release page][releases] and create a new release, name it "Version X.Y.Z" for consistency and fill out sections: -- _What's Changed_, which should include items for all the PRs merged since the last release -- _New Contributor_, which should include mention of all the first-time contributors +- (usually) _Added_, _Changed_, _Fixed_ while including links to the PRs merged since the last release +- _New Contributor_, which should include mentions for all the first-time contributors finally, place a [GitHub compare link][compare] between the last release and X.Y.Z e.g. this [one][ex-diff]. From dec22f6b3c3cf79008d5ebe007181824b1e5523e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 16:21:49 -0400 Subject: [PATCH 13/16] add useful links --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index cca6e4c..050920b 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,11 @@ Built on top of Plotly.js, React and HTTP.jl, [Dash](https://plotly.com/dash/) t Just getting started? Check out the [Dash for Julia User Guide](https://dash.plotly.com/julia)! If you can't find documentation there, then check out the unofficial [contributed examples](https://github.com/plotly/Dash.jl/issues/50) or check out source code from [demo applications](https://dash.gallery) in Python and then reference the Julia syntax style. +## Other resources + +- +- + ## Project Status Julia components can be generated in tandem with Python and R components. Interested in getting involved with the project? Sponsorship is a great way to accelerate the progress of open source projects like this one; please feel free to [reach out to us](https://plotly.com/consulting-and-oem/)! From 989269171c63adbcb1192dbaddc09a6ea28c7793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 16:39:59 -0400 Subject: [PATCH 14/16] fixup markdown items --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 050920b..622e316 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Just getting started? Check out the [Dash for Julia User Guide](https://dash.plo ## Other resources -- -- +* +* ## Project Status From 0666b4caab79bfe75df99be88b6dfdb6ed5fc95c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Thu, 24 Aug 2023 16:37:55 -0400 Subject: [PATCH 15/16] try dropping DashBase `0.2` --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 6d17d8a..4877b42 100644 --- a/Project.toml +++ b/Project.toml @@ -24,7 +24,7 @@ YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" [compat] Aqua = "0.6" CodecZlib = "0.6, 0.7" -DashBase = "0.2, 1" +DashBase = "1" DashCoreComponents = "2.0.0" DashHtmlComponents = "2.0.0" DashTable = "5.0.0" From 462b215b3bf4693965b4eb840fcd21550114e00c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Tue, 10 Oct 2023 10:23:35 -0400 Subject: [PATCH 16/16] 1.4.0 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 4877b42..ad3c428 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "Dash" uuid = "1b08a953-4be3-4667-9a23-3db579824955" authors = ["Chris Parmer ", "Alexandr Romanenko "] -version = "1.3.0" +version = "1.4.0" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"