Skip to content

Commit 96aac85

Browse files
authored
Merge pull request #217 from plotly/dev
Release 1.3.0
2 parents 5ec76d9 + d01ce73 commit 96aac85

File tree

118 files changed

+703
-334
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+703
-334
lines changed

.circleci/config.yml

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
version: 2
1+
version: 2.1
2+
3+
orbs:
4+
percy: percy/[email protected]
5+
browser-tools: circleci/[email protected]
26

37
jobs:
48

59
test:
610
working_directory: ~/dashjl
711
docker:
8-
- image: plotly/julia:ci
12+
- image: etpinard/dashjl-tests:0.3.0
913
auth:
1014
username: dashautomation
1115
password: $DASH_PAT_DOCKERHUB
@@ -15,6 +19,8 @@ jobs:
1519
steps:
1620
- checkout
1721

22+
- browser-tools/install-browser-tools
23+
1824
- run:
1925
name: ℹ️ CI Context
2026
command: |
@@ -27,19 +33,15 @@ jobs:
2733
echo "CIRCLE_REPOSITORY_URL: ${CIRCLE_REPOSITORY_URL}"
2834
echo $CIRCLE_JOB > circlejob.txt
2935
30-
- run:
31-
name: 🔎 Unit tests
32-
command: |
33-
julia test/ci_prepare.jl
34-
3536
- run:
3637
name: ⚙️ Integration tests
3738
command: |
39+
julia --project -e 'import Pkg; Pkg.instantiate(); Pkg.update();'
3840
python -m venv venv
3941
. venv/bin/activate
42+
pip install --upgrade pip wheel
4043
git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main
41-
cd dash-main && pip install -e .[dev,testing] --progress-bar off && cd ~/dashjl
42-
export PATH=$PATH:/home/circleci/.local/bin/
44+
cd dash-main && pip install -e .[ci,dev,testing] --progress-bar off && cd ..
4345
pytest --headless --nopercyfinalize --junitxml=test-reports/dashjl.xml --percy-assets=test/assets/ test/integration/
4446
- store_artifacts:
4547
path: test-reports
@@ -48,13 +50,11 @@ jobs:
4850
- store_artifacts:
4951
path: /tmp/dash_artifacts
5052

51-
- run:
52-
name: 🦔 percy finalize
53-
command: npx percy finalize --all
54-
5553
workflows:
5654
version: 2
5755
build:
5856
jobs:
59-
- "test"
60-
when: false # disable this workflow until Percy tests are functional again
57+
- test
58+
- percy/finalize_all:
59+
requires:
60+
- test

.github/labeler.yml

-5
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,3 @@ CI:
1414
enhancement:
1515
- "src/*.jl"
1616
- "./*"
17-
18-
19-
20-
21-

.github/workflows/CompatHelper.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ jobs:
1212
- name: CompatHelper.main()
1313
env:
1414
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
15-
run: julia -e 'using CompatHelper; CompatHelper.main()'
15+
run: julia -e 'using CompatHelper; CompatHelper.main()'

.github/workflows/jl_test.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Run Julia tests
1+
name: Julia tests
22

33
on: [push, pull_request]
44

@@ -8,7 +8,7 @@ jobs:
88
strategy:
99
fail-fast: false
1010
matrix:
11-
jl_version: ["1.6", "1.8"]
11+
jl_version: ["1.6", "1.8", "1.9"]
1212
steps:
1313
- uses: actions/checkout@v2
1414
- uses: julia-actions/setup-julia@v1

.github/workflows/label.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ jobs:
77
runs-on: ubuntu-latest
88

99
steps:
10-
- uses: actions/labeler@v2
10+
- uses: actions/labeler@v4
1111
with:
1212
repo-token: "${{ secrets.GITHUB_TOKEN }}"

.github/workflows/lint.yml

+27-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,35 @@
1-
name: Lint Markdown
1+
name: Lint
22

33
on: [push, pull_request]
44

55
jobs:
66
test:
7-
runs-on: ubuntu-18.04
7+
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v2
9+
- uses: actions/checkout@v3
1010
- name: Use Node.js
11-
uses: actions/setup-node@v1
11+
uses: actions/setup-node@v3
1212
with:
13-
node-version: '12.x'
14-
- run: npm install -g [email protected]
15-
- run: markdownlint '**/*.md' --ignore node_modules
13+
node-version: '18'
14+
- name: "Lint markdown files"
15+
run: |
16+
npm install -g markdownlint-cli
17+
markdownlint '**/*.md' --ignore-path=.gitignore
18+
- name: "No trailing whitespaces at EOLs"
19+
run: |
20+
EXIT_CODE=0
21+
git --no-pager grep --full-name -I -n -e ' $' . && EXIT_CODE=1
22+
exit $EXIT_CODE
23+
- name: "No tab characters"
24+
run: |
25+
EXIT_CODE=0
26+
git --no-pager grep --full-name -I -n -P '\t' . && EXIT_CODE=1
27+
exit $EXIT_CODE
28+
- name: "Newline at EOF"
29+
run: |
30+
EXIT_CODE=0
31+
for f in $(git --no-pager grep --full-name -I -l ''); do
32+
tail -c1 "$f" | read -r _ || echo "$f"
33+
tail -c1 "$f" | read -r _ || EXIT_CODE=1
34+
done
35+
exit $EXIT_CODE

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ docs/build
1212
venv
1313
*.pyc
1414
tmp
15-
gen_resources/build
15+
gen_resources/build
16+
dash-main

.markdownlint.yml

+3
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,6 @@ MD026: false
1212

1313
# MD032 Lists should be surrounded by blank lines
1414
MD032: false
15+
16+
# MD033 Inline HTML
17+
MD033: false

Artifacts.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[dash_resources]
2-
git-tree-sha1 = "c857e355d2c21dfc458fb315371431dda2506109"
2+
git-tree-sha1 = "cf73063fdfc374bc98925f87ac967051cdee66e5"
33

44
[[dash_resources.download]]
5-
sha256 = "4ff3910a8ff1f5420784397cfc6ad80341bbe03f1010eab38dcb9b8ce2423310"
6-
url = "https://github.com/plotly/DashCoreResources/releases/download/v2.0.0+0/DashCoreResources.v2.0.0.tar.gz"
5+
sha256 = "c0fda20e816034b8f97f779af8b3081d3578164649d9ff6c21a8146d4af52d96"
6+
url = "https://github.com/plotly/DashCoreResources/releases/download/v2.10.2+0/DashCoreResources.v2.10.2.tar.gz"

CONTRIBUTING.md

+160
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# Contributor Guide
2+
3+
## Git
4+
5+
We use the `dev` branch for development. All feature branches should be based
6+
off `dev`.
7+
8+
The `master` branch corresponds to the latest release. We deploy to [Julia
9+
General Registry][jgr] and `git tag -a` off `master`.
10+
11+
## Running the unit tests (aka Julia tests)
12+
13+
```sh
14+
git clone [email protected]:plotly/Dash.jl.git
15+
cd Dash.jl
16+
julia
17+
```
18+
19+
```jl
20+
julia> import Pkg
21+
julia> Pkg.activate(".")
22+
julia> Pkg.instantiate()
23+
julia> Pkg.update()
24+
julia> Pkg.test()
25+
```
26+
27+
To run the unit tests for multiple versions of Julia, we recommend using [`juliaup`][juliaup].
28+
29+
## Running the integration tests
30+
31+
The integration tests make use of the [`dash.testing`][testing] module part of
32+
the Python version of dash.
33+
34+
Instructions on how to install the required system dependencies can be found
35+
in the [dash Contributor Guide][dash-cg].
36+
37+
Then,
38+
39+
```sh
40+
cd Dash.jl
41+
git clone --depth 1 https://github.com/plotly/dash.git -b dev dash-main
42+
python3 -m venv venv
43+
pip install --upgrade pip wheel
44+
cd dash-main && pip install -e .[ci,dev,testing] && cd ..dash
45+
pytest --headless --nopercyfinalize --percy-assets=test/assets/ test/integration/
46+
```
47+
48+
Alternatively, one can run the integration tests using the same Docker
49+
image as for our CircleCI test runs. See the [Docker image guide][docker-test]
50+
for the details.
51+
52+
## Updating the resources
53+
54+
See the [Generate Dash.jl artifacts][resources].
55+
56+
## Updating the CircleCI Docker image
57+
58+
See the [Docker image guide][docker-update].
59+
60+
## Code Style
61+
62+
- indent with 4 spaces (no tabs),
63+
- no whitespaces at EOLs,
64+
- add a single newline at EOFs.
65+
66+
See the [`lint.yml` workflow][lint] for the details.
67+
68+
## Making a release
69+
70+
**Please follow the steps in order!** For example, running `git tag -a` before
71+
`@JuliaRegistrator register` will lead to a failed release!
72+
73+
In the following steps, note that "X.Y.Z" refers to the new version we are
74+
releasing.
75+
76+
### step 1
77+
78+
Make sure the [unit tests][jltest] and [CircleCI integration tests][circlecI]
79+
are passing.
80+
81+
### step 2
82+
83+
Make a [PR][compare] with `master` as the _base_ branch and `dev` as _compare_ branch.
84+
85+
For consistency, name the PR: "Release X.Y.Z"
86+
87+
### step 3
88+
89+
Bump the `version` field in the `Project.toml` (following [semver][semver]) and then
90+
91+
```sh
92+
git commit -m "X.Y.Z"
93+
```
94+
95+
**N.B.** use `X.Y.Z` not `vX.Y.Z` in the commit message, the leading `v` is
96+
reserved for git tags.
97+
98+
### step 4
99+
100+
Wait for approval and then merge the PR onto `master`.
101+
102+
### step 5
103+
104+
Navigate on GitHub to the merge commit from the `master` branch e.g. this
105+
[one][ex-commit] and then add the following comment:
106+
107+
```sh
108+
@JuliaRegistrator register branch=master
109+
```
110+
111+
which tells the [Julia Registrator][registrator] to create a PR to the
112+
[General Registry][jgr] e.g. this [one][ex-jgr-pr].
113+
114+
### step 6
115+
116+
Wait for the Julia Registry PR to be merged. If things go well, this should be
117+
automatic!
118+
119+
### step 7
120+
121+
Off `master`, create and push a new git tag with:
122+
123+
```sh
124+
git checkout master
125+
git tag -a vX.Y.Z # N.B. leading `v`
126+
git push --tags
127+
```
128+
129+
### step 8
130+
131+
Go the [release page][releases] and create a new release,
132+
name it "Version X.Y.Z" for consistency and fill out sections:
133+
134+
- _What's Changed_, which should include items for all the PRs merged since the last release
135+
- _New Contributor_, which should include mention of all the first-time contributors
136+
137+
finally, place a [GitHub compare link][compare] between the last release and X.Y.Z
138+
e.g. this [one][ex-diff].
139+
140+
### step 9
141+
142+
you are done :tada:
143+
144+
[jgr]: https://github.com/JuliaRegistries/General
145+
[juliaup]: https://github.com/JuliaLang/juliaup
146+
[testing]: https://dash.plotly.com/testing#end-to-end-tests
147+
[dash-cg]: https://github.com/plotly/dash/blob/dev/CONTRIBUTING.md#tests
148+
[resources]: ./gen_resources/README.md
149+
[docker-test]: ./build/README.md#local-usage
150+
[docker-update]: ./build/README.md#how-to-update-the-docker-image
151+
[lint]: ./.github/workflows/lint.yml
152+
[jltest]: https://github.com/plotly/Dash.jl/actions/workflows/jl_test.yml?query=branch%3Adev
153+
[circlecI]: https://app.circleci.com/pipelines/github/plotly/Dash.jl?branch=dev
154+
[semver]: https://pkgdocs.julialang.org/v1/toml-files/#The-version-field
155+
[registrator]: https://github.com/JuliaRegistries/Registrator.jl
156+
[releases]: https://github.com/plotly/Dash.jl/releases
157+
[compare]: https://github.com/plotly/Dash.jl/compare/
158+
[ex-commit]: https://github.com/plotly/Dash.jl/commit/5ec76d9d3360f370097937efd06e5de5a6025888
159+
[ex-jgr-pr]: https://github.com/JuliaRegistries/General/pull/77586
160+
[ex-diff]: https://github.com/plotly/Dash.jl/compare/v1.1.2...v1.2.0

Project.toml

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "Dash"
22
uuid = "1b08a953-4be3-4667-9a23-3db579824955"
33
authors = ["Chris Parmer <[email protected]>", "Alexandr Romanenko <[email protected]>"]
4-
version = "1.2.1"
4+
version = "1.3.0"
55

66
[deps]
77
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
@@ -24,8 +24,9 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
2424
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
2525

2626
[compat]
27+
Aqua = "0.6"
2728
CodecZlib = "0.6, 0.7"
28-
DashBase = "0.1"
29+
DashBase = "0.2"
2930
DashCoreComponents = "2.0.0"
3031
DashHtmlComponents = "2.0.0"
3132
DashTable = "5.0.0"
@@ -40,7 +41,8 @@ YAML = "0.4.7"
4041
julia = "1.6"
4142

4243
[extras]
44+
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
4345
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
4446

4547
[targets]
46-
test = ["Test"]
48+
test = ["Aqua", "Test"]

0 commit comments

Comments
 (0)