Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

integrate RecipesBase and RecipesPipeline into Plots #4419

Merged
merged 445 commits into from
Oct 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
445 commits
Select commit Hold shift + click to select a range
b76aa84
Add compat for RecipesBase
SebastianM-C Apr 5, 2020
fc93ad3
Merge pull request #32 from JuliaPlots/compat
SebastianM-C Apr 5, 2020
d7f2fad
Fix badges
SebastianM-C Apr 5, 2020
e209aa0
Plots test
SebastianM-C Apr 6, 2020
f45d4a9
Fix travis
SebastianM-C Apr 5, 2020
28d48fd
Forgot using
SebastianM-C Apr 5, 2020
cdad399
Update .travis.yml
SebastianM-C Apr 5, 2020
d642366
Use ds/rewrite
SebastianM-C Apr 5, 2020
9631974
Try with --project
SebastianM-C Apr 6, 2020
7dc6d3d
Use latest stable julia version
SebastianM-C Apr 6, 2020
519b8fc
Allow failures on MacOS
SebastianM-C Apr 6, 2020
5f9aaa4
Merge pull request #35 from JuliaPlots/smc/travis
SebastianM-C Apr 6, 2020
fcfb63e
Docs deployment
SebastianM-C Apr 6, 2020
bc20d54
Literate + enable deploy
asinghvi17 Apr 6, 2020
bf57349
Update Project.toml
asinghvi17 Apr 6, 2020
5ca6990
fix missing comma
asinghvi17 Apr 6, 2020
6f834d2
Fix error
SebastianM-C Apr 6, 2020
e030088
try fixing repo name
asinghvi17 Apr 6, 2020
92ad2c9
small change to trigger CI
asinghvi17 Apr 6, 2020
65a77aa
play better with Literate
asinghvi17 Apr 6, 2020
7c7370a
allow type recipes for `Number`s in arrays and surfaces
daschw Apr 6, 2020
6f03d5d
small fixes
asinghvi17 Apr 6, 2020
5e0ebc5
skip maybestrings
daschw Apr 6, 2020
38309b9
fix ambiguity
daschw Apr 6, 2020
603a10b
Merge pull request #37 from JuliaPlots/as/docs
SebastianM-C Apr 6, 2020
40ab457
Add badge
SebastianM-C Apr 6, 2020
9d5d191
Fix build badge link
SebastianM-C Apr 6, 2020
3dd7fb6
Show status only for master branch
SebastianM-C Apr 6, 2020
261e172
Merge pull request #36 from JuliaPlots/smc/docs
SebastianM-C Apr 6, 2020
eb4eae1
Merge pull request #38 from daschw/recipes
daschw Apr 6, 2020
159df77
Fix README docs link
asinghvi17 Apr 7, 2020
3ced4a8
remove subdomain
asinghvi17 Apr 7, 2020
c7bc267
Create TagBot.yml
asinghvi17 Apr 8, 2020
3921736
fix surface type recipe
daschw Apr 10, 2020
9bac5ee
bump version
daschw Apr 10, 2020
492677c
Merge pull request #41 from daschw/surface
daschw Apr 10, 2020
e49eea4
fix error for grouping
daschw Apr 10, 2020
fa54765
bump version
daschw Apr 10, 2020
a5d42cd
Merge pull request #42 from daschw/grouping
daschw Apr 10, 2020
63d6232
further grouping fixes
daschw Apr 11, 2020
295dc60
bump version
daschw Apr 11, 2020
1f68da2
Merge pull request #43 from daschw/group
daschw Apr 11, 2020
9bf0020
fix plotting functions
daschw Apr 11, 2020
ae0c18d
bump version
daschw Apr 11, 2020
dd2a2b2
Merge pull request #44 from daschw/functions
daschw Apr 11, 2020
681a5ea
downgrade version
daschw Apr 11, 2020
24770e7
Merge pull request #45 from daschw/release
daschw Apr 11, 2020
08eae2c
fix plotting rowvector of functions
daschw Apr 19, 2020
b5e9ce2
bump version
daschw Apr 19, 2020
465e8f1
Merge pull request #47 from daschw/functions
daschw Apr 19, 2020
8f26a51
support parametric type in `@userplot`
Lirimy Apr 22, 2020
460dc25
add docs for parametric type in `@userplot`
Lirimy Apr 23, 2020
09a2729
Merge pull request #68 from Lirimy/userplotwithtype
daschw Apr 23, 2020
a3594c5
bump version
daschw Apr 23, 2020
2058f72
fix grouping
daschw Apr 23, 2020
1ea081c
bump version
daschw Apr 23, 2020
00fe064
Merge pull request #49 from daschw/group
daschw Apr 23, 2020
0f1832a
Merge pull request #69 from daschw/release
daschw Apr 23, 2020
b1e6409
bump PlotUtils compat
daschw Apr 19, 2020
0ff3da1
bump version
daschw Apr 24, 2020
7e82e26
Merge pull request #50 from daschw/colorschemes
daschw Apr 24, 2020
a1afecd
add zulip chat link to readme [skip ci]
daschw Apr 28, 2020
ca3a7c6
add zulip link [skip ci]
daschw Apr 28, 2020
888cff2
Merge pull request #70 from daschw/zulip
daschw Apr 28, 2020
6922ea1
Merge pull request #51 from daschw/zulip
daschw Apr 28, 2020
966a1f0
Fix typo in docs
mtsch Apr 30, 2020
07beb98
Merge pull request #71 from mtsch/patch-1
daschw Apr 30, 2020
824f74a
add hook after series decomposition (#52)
BeastyBlacksmith May 7, 2020
116abb6
Update Project.toml
BeastyBlacksmith May 7, 2020
1c4d20a
Initial pass at CI
asinghvi17 Apr 2, 2020
2c8b5e3
Add script from Plots
SebastianM-C Apr 5, 2020
4201902
Update to MakieRecipes
SebastianM-C Apr 5, 2020
e301c1e
comment out artifact uploads
asinghvi17 Apr 5, 2020
977946c
Plots test
SebastianM-C Apr 5, 2020
a63793a
CairoMakie tests
SebastianM-C Apr 5, 2020
ae0d0e7
Forgot using
SebastianM-C Apr 5, 2020
ee0d0e7
Update .travis.yml
SebastianM-C Apr 5, 2020
1f83b42
Use ds/rewrite
SebastianM-C Apr 5, 2020
0771962
Try with --project
SebastianM-C Apr 5, 2020
b6adae2
Another try
SebastianM-C Apr 5, 2020
2bd13b2
Import examples from MakieRecipes
SebastianM-C Apr 6, 2020
5dedafb
add separately
SebastianM-C Apr 6, 2020
65ffb96
dev
SebastianM-C Apr 6, 2020
a6f691f
$(mktemp -d)
SebastianM-C Apr 6, 2020
cd51e54
Update .github/workflows/CI.yml
SebastianM-C Apr 6, 2020
a6c3bc1
use temp_for_test
SebastianM-C Apr 6, 2020
29677ac
fix typo
SebastianM-C Apr 6, 2020
f6bb9fd
Update .github/workflows/CI.yml
asinghvi17 Apr 7, 2020
af62878
ensure that images are uploaded
asinghvi17 May 7, 2020
28fa422
Pass a begin block to testset
asinghvi17 May 7, 2020
d3492a6
fix the macro
asinghvi17 May 7, 2020
e19becd
seriously, I forgot .png?
asinghvi17 May 7, 2020
4679ec4
Update .travis.yml
asinghvi17 May 7, 2020
b7e729e
Merge pull request #39 from JuliaPlots/as/ci
asinghvi17 May 7, 2020
90beb3d
Fix split_attribute (#53)
BeastyBlacksmith May 8, 2020
f3a52c8
Fix a typo in the `recipe_pipeline!` constructor (#54)
asinghvi17 May 8, 2020
7c47e20
bump version
BeastyBlacksmith May 8, 2020
480b84a
fix time and period recipes
daschw May 8, 2020
49c172c
bump version
daschw May 8, 2020
f930d70
Merge pull request #55 from daschw/recipes
daschw May 8, 2020
54abbff
Fix typo (#56)
SebastianM-C May 9, 2020
ff88236
implement `Base.axes` for `Volume`
daschw Jun 4, 2020
93e8430
bump version
daschw Jun 4, 2020
e514ed6
Merge pull request #57 from daschw/volume
daschw Jun 4, 2020
c0c0d31
Update group.jl
JonasIsensee Jun 12, 2020
0814725
Merge pull request #59 from JonasIsensee/patch-1
daschw Jun 17, 2020
c6062e4
implement iterate for Surface and Volume
daschw Jun 27, 2020
e72f75f
bump version
daschw Jun 27, 2020
22748cf
Merge pull request #60 from daschw/surface
daschw Jun 27, 2020
95d4e26
use NaNMath log functions
Jul 13, 2020
81c7164
Add one_arg_shorthands macro (#73)
briochemc Jul 23, 2020
720d400
patch version [skip ci]
BeastyBlacksmith Jul 23, 2020
624cfeb
Merge pull request #61 from mcabbott/log
mkborregaard Jul 28, 2020
fe76c3b
Add :mesh3d as 3d series type (#62)
dwd31415 Aug 14, 2020
9d8752f
0.1.12 [skip ci]
BeastyBlacksmith Aug 14, 2020
336263e
add compat for NaNMath
BeastyBlacksmith Aug 14, 2020
385d1d1
dispatch processing of axis args on the plot object (#63)
BeastyBlacksmith Sep 8, 2020
c6c29a4
0.1.13
BeastyBlacksmith Sep 8, 2020
1474496
remove one_arg_shorthands macro (#74)
BeastyBlacksmith Sep 9, 2020
af6e1de
1.1.0
BeastyBlacksmith Sep 9, 2020
284e9cf
more friendly error when x,y shape mis-match
Moelf Oct 9, 2020
2143f6e
AbstractDict plot sorted
Moelf Oct 9, 2020
9d67d1e
more friendly error when x,y shape mis-match (#65)
Moelf Oct 12, 2020
818c5ec
Update src/user_recipe.jl
Moelf Oct 21, 2020
e378872
Merge pull request #64 from Moelf/master
Moelf Oct 22, 2020
9092a3a
switch to github-actions and update runtests.jl to run Plots test images
daschw Oct 28, 2020
1c9dffa
update CI.yml
daschw Oct 28, 2020
22cc594
keep makie tests
daschw Oct 28, 2020
d1f1f4b
Merge pull request #66 from daschw/github-actions
daschw Oct 28, 2020
7bc6ab6
move `signature_string` to RecipesPipeline
daschw Sep 26, 2020
1f73a81
minor version bump
daschw Oct 31, 2020
d506688
Revert "minor version bump"
daschw Oct 31, 2020
c1d5754
move `warn_on_recipe_aliases!` from Plots and add some `@nospecialize`
daschw Oct 31, 2020
4736bd3
add CompileBot
daschw Oct 31, 2020
49d22e7
minor version bump
daschw Oct 31, 2020
9e62da8
add precompile statements
daschw Oct 31, 2020
da2324b
bump version
daschw Oct 31, 2020
b29df2d
add new line at end of file
daschw Oct 31, 2020
17265e4
add recipe for list of NamedTuples
daschw Nov 1, 2020
bdab504
add newline
daschw Nov 1, 2020
8b011d5
Merge pull request #75 from daschw/precompile
daschw Nov 9, 2020
d30b5f4
Merge pull request #68 from daschw/namedtuples
daschw Nov 9, 2020
3cf9034
update tagbot action
daschw Nov 9, 2020
d15f338
Merge pull request #77 from daschw/tagbot
daschw Nov 9, 2020
1d99d2f
add recipe for list of NamedTuples
daschw Nov 1, 2020
92a1d10
move `warn_on_recipe_aliases!` from Plots and add some `@nospecialize`
daschw Oct 31, 2020
286d957
Merge branch 'master' into precompile
daschw Nov 9, 2020
e33afb0
Merge pull request #67 from daschw/precompile
daschw Nov 9, 2020
c0adb7a
update tagbot action
daschw Nov 9, 2020
8633483
Merge pull request #69 from daschw/tagbot
daschw Nov 9, 2020
5460b65
Fix broken histogram and stepbins plotting
oschulz Nov 12, 2020
bf1f759
Increase package version to v0.2.1
oschulz Nov 12, 2020
fe3749a
Merge pull request #71 from oschulz/fix-hist-plotting
daschw Nov 12, 2020
e892ce8
Update precompile_*.jl file
daschw Nov 12, 2020
9841c2c
Merge pull request #72 from JuliaPlots/SnoopCompile_AutoPR
daschw Nov 12, 2020
30f7b0f
add TestImages test dependency
daschw Nov 14, 2020
4e37ef1
Merge pull request #76 from daschw/tests
daschw Nov 15, 2020
e5ced73
refine friendly error (#75)
Moelf Nov 15, 2020
80aa1ac
Update precompile_*.jl file
Moelf Nov 15, 2020
015dfbb
don't stringify argument to `warn_on_recipe_aliases!` early
jebej Feb 7, 2021
34bdb07
Merge pull request #78 from jebej/no-early-stringify
daschw Feb 7, 2021
f84eb88
minor release
daschw Feb 7, 2021
afa140d
Merge pull request #79 from daschw/release
daschw Feb 7, 2021
c3ddee4
Merge pull request #77 from JuliaPlots/SnoopCompile_AutoPR
daschw Feb 7, 2021
ee958b4
add `@nospecialize` annotations
jebej Feb 9, 2021
a1fd022
Merge pull request #80 from jebej/nospec
daschw Feb 9, 2021
2985fd8
release
daschw Feb 9, 2021
4d44948
Merge pull request #81 from daschw/release
daschw Feb 9, 2021
6cddc83
update CompileBot
daschw Apr 1, 2021
9c530e9
update TESTCMD in CI
daschw Apr 1, 2021
16ded40
Merge pull request #82 from daschw/actions
daschw Apr 1, 2021
608d9a3
fix TESTCMD in compilebot action
daschw Apr 1, 2021
05cdb1c
Merge pull request #83 from daschw/actions
daschw Apr 1, 2021
d17d697
Update precompile_*.jl file
daschw Apr 1, 2021
5078d6e
Merge pull request #84 from JuliaPlots/SnoopCompile_AutoPR
daschw Apr 1, 2021
f98716b
release
daschw Apr 1, 2021
7a4fcc6
Merge pull request #85 from daschw/release
daschw Apr 1, 2021
608ff4e
Update README.md
BeastyBlacksmith May 11, 2021
cb180f1
don't catch all the MethodErrors (#87)
BeastyBlacksmith Jun 20, 2021
18b06f7
0.3.3 [skip ci]
BeastyBlacksmith Jun 23, 2021
3de401b
add mesh3d for GR
t-bltg Jul 4, 2021
684c94c
Merge pull request #90 from t-bltg/mesh3d
t-bltg Jul 6, 2021
dccfd6e
v0.3.4
t-bltg Jul 6, 2021
ac45a7e
Small improvement in inferrability (#82)
timholy Aug 18, 2021
37f1ec7
1.1.2 [skip ci]
BeastyBlacksmith Aug 18, 2021
d386b07
CI: tentative fix
t-bltg Aug 25, 2021
d9a361d
CI: add LinearAlgebra (#96)
t-bltg Aug 25, 2021
6bf92dc
Test for error value from `apply_recipe` fallback. (#95)
BioTurboNick Aug 26, 2021
9516e7c
v0.3.5 [skip ci]
t-bltg Aug 26, 2021
672d479
Add `Downloads` test dependency
t-bltg Aug 28, 2021
02c99ff
Remove try/catch needed for compatibility with Plots.jl v1.21.0 and e…
BioTurboNick Aug 28, 2021
655f2f5
Improve groups perf from O(MxN) to O(M) (#98)
mdkeehan Aug 28, 2021
001c22e
Update MakieRecipes URL
t-bltg Aug 28, 2021
4676633
Update precompile_*.jl file (#91)
github-actions[bot] Aug 28, 2021
0250a8b
v0.3.6 [skip ci]
t-bltg Aug 28, 2021
4489fd5
Revert try/catch for patch version
t-bltg Aug 30, 2021
c04cca1
v0.3.7 (#101) [skip ci]
t-bltg Aug 30, 2021
40060be
v0.4.0 (#102) [skip ci]
t-bltg Aug 30, 2021
1e0bfdc
Avoid Vararg UnionAll dispatch (#104)
ChrisRackauckas Sep 14, 2021
890b9bf
0.4.1 [skip ci]
BeastyBlacksmith Sep 14, 2021
5fdd9ac
move layout macro from plots (#85)
BeastyBlacksmith Nov 23, 2021
ac27e78
1.2.0 [skip ci]
BeastyBlacksmith Nov 23, 2021
7af0248
remove pct
BeastyBlacksmith Nov 25, 2021
fedd543
1.2.1 [skip ci]
BeastyBlacksmith Nov 25, 2021
7645dfb
Update Project.toml
BeastyBlacksmith Nov 25, 2021
b312fe6
respect defaults for fillrange and ribbon (#106)
BeastyBlacksmith Jan 12, 2022
0f5fc7f
Update CI.yml
BeastyBlacksmith Jan 12, 2022
472d62d
move documentation to gh-actions
BeastyBlacksmith Jan 20, 2022
7ae9339
update run commands
BeastyBlacksmith Jan 20, 2022
5de679f
Update Documentation.yml
BeastyBlacksmith Jan 20, 2022
34cb065
Allow `NanMath` 1.0 - bump version (#108)
KristofferC Feb 23, 2022
2d78415
Fix `unzip` for empty vectors (#110)
t-bltg Mar 23, 2022
c4fa63c
0.5.2 [skip ci]
t-bltg Mar 23, 2022
3eb33dd
update url with https://docs.juliaplots.org/stable/generated/supporte…
hyrodium Mar 28, 2022
2514f83
Update precompile_*.jl file (#109)
github-actions[bot] Jul 9, 2022
ecbc492
run snoopcompile on pust to master only
t-bltg Jul 9, 2022
413c81f
update compat bounds (#111)
t-bltg Jul 9, 2022
4df32cc
0.6.0 [skip ci]
t-bltg Jul 9, 2022
9f9035b
Update precompile_*.jl file (#112)
github-actions[bot] Jul 9, 2022
f619899
`SnoopCompile` labels
t-bltg Jul 9, 2022
22adc11
use ssh key for `TagBot` (#91)
hyrodium Jul 9, 2022
196ce03
fix julia scripts in markdown (#90)
hyrodium Jul 9, 2022
3ec21c8
fix `SnoopCompile` (#113)
t-bltg Jul 9, 2022
e387a2f
Update precompile_*.jl file (#114)
github-actions[bot] Jul 9, 2022
8309431
0.6.1 [skip ci]
t-bltg Jul 9, 2022
59ca2e7
fix plotting `Union{Missing,Real}` arrays (#116)
rafaqz Jul 11, 2022
45845e5
Update precompile_*.jl file (#115)
github-actions[bot] Jul 11, 2022
a780739
0.6.2 [skip ci]
t-bltg Jul 11, 2022
5bd12ab
fix formatters (#118)
MrHenning Jul 29, 2022
c9951fa
0.6.3 [skip ci]
BeastyBlacksmith Jul 29, 2022
228e8c3
Update precompile_*.jl file (#117)
github-actions[bot] Jul 29, 2022
fba7a88
Create invalidations.yml (#93)
ranocha Aug 30, 2022
09ea075
rework precompilation using `SnoopPrecompile` - document `@layout` (#94)
t-bltg Sep 27, 2022
1245d2a
1.3.0
t-bltg Sep 27, 2022
8bf3429
more efficient `DefaultsDict` iteration (#121)
BioTurboNick Oct 1, 2022
9f32df8
bump julia version in `ci` (#122)
t-bltg Oct 1, 2022
7e53ead
0.6.4
t-bltg Oct 1, 2022
c11fc68
Add methods to access separate keysets of the DefaultsDict (#124)
BioTurboNick Oct 1, 2022
0d57567
bump version [skip ci]
BioTurboNick Oct 1, 2022
948fdfb
DefaultsDict - correctness and performance tweaks for large numbers o…
BioTurboNick Oct 1, 2022
72f17ab
0.6.6 [skip ci]
BioTurboNick Oct 1, 2022
807654d
Fix a deprecated syntax in docs of macro `@recipe` (#95)
singularitti Oct 2, 2022
6a527f5
fix broken docs
t-bltg Oct 2, 2022
ea658c4
Merge branch 'master' of RecipesBase.jl into rb_rp
t-bltg Oct 4, 2022
340a2ba
Merge branch 'master' of RecipesPipeline.jl into rb_rp
t-bltg Oct 4, 2022
be2dbe4
add common `CI`
t-bltg Oct 4, 2022
cd5fa89
update `RecipesPipeline` tests
t-bltg Oct 4, 2022
a36b583
remove un-needed files
t-bltg Oct 4, 2022
29d5c5a
restore `concurrency`
t-bltg Oct 4, 2022
7f26691
remove `Plots` tests from `RecipesPipeline`
t-bltg Oct 4, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 22 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ jobs:
GKS_ENCODING: "utf8"
GKSwstype: "nul"
PYTHON: "Conda" # for `PyPlot`

name: Julia ${{ matrix.version }} - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.version == 'nightly' }}
Expand All @@ -31,33 +30,34 @@ jobs:
- '1.6' # LTS (minimal declared julia compat in `Project.toml`)
- '1.8' # latest stable
os: [ubuntu-latest, windows-latest, macos-latest]
arch:
- x64
arch: [x64]
include:
- os: ubuntu-latest
prefix: xvfb-run # julia-actions/julia-runtest/blob/master/README.md
- os: ubuntu-latest
prefix: xvfb-run
version: '1.7'
version: '1.7' # only test intermediate relase on `ubuntu`
# - os: ubuntu-latest
# prefix: xvfb-run
# version: 'nightly'
# version: 'nightly'

steps:
- uses: actions/checkout@v3
- uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.version }}
- uses: julia-actions/cache@v1
- uses: julia-actions/julia-buildpkg@latest

- name: Ubuntu LaTeX dependencies
if: startsWith(matrix.os, 'ubuntu')
- name: test upstream RecipesBase
shell: julia --project=@. --color=yes {0}
run: |
sudo apt-get -y update
sudo apt-get -y install gnuplot poppler-utils texlive-{latex-base,latex-extra,luatex}
sudo fc-cache -vr
using Pkg; Pkg.develop(path="RecipesBase"); Pkg.test("RecipesBase")

- uses: julia-actions/julia-buildpkg@latest
- name: test upstream RecipesPipeline
shell: julia --project=@. --color=yes {0}
run: |
using Pkg; Pkg.develop(path="RecipesPipeline"); Pkg.test("RecipesPipeline")

- name: PyPlot dependencies
shell: julia --project=@. --color=yes {0}
Expand All @@ -71,15 +71,23 @@ jobs:
Conda.add("matplotlib")
Conda.list()

- name: Ubuntu LaTeX dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get -y update
sudo apt-get -y install gnuplot poppler-utils texlive-{latex-base,latex-extra,luatex}
sudo fc-cache -vr

- uses: julia-actions/julia-runtest@latest
with:
prefix: ${{ matrix.prefix }} # for `xvfb-run`

- name: Run downstream tests
if: startsWith(matrix.os, 'ubuntu')
run: |
xvfb-run julia -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots")'
xvfb-run julia -e 'using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes")'
shell: xvfb-run julia --project=@. --color=yes {0}
run: |
using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("StatsPlots"); Pkg.test("StatsPlots")
using Pkg; Pkg.activate(tempdir()); Pkg.develop(path=abspath(".")); Pkg.add("GraphRecipes"); Pkg.test("GraphRecipes")

- uses: julia-actions/julia-processcoverage@latest
if: startsWith(matrix.os, 'ubuntu')
Expand Down
22 changes: 22 additions & 0 deletions RecipesBase/LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
The RecipesBase.jl package is licensed under the MIT "Expat" License:

> Copyright (c) 2016: Thomas Breloff.
>
> Permission is hereby granted, free of charge, to any person obtaining
> a copy of this software and associated documentation files (the
> "Software"), to deal in the Software without restriction, including
> without limitation the rights to use, copy, modify, merge, publish,
> distribute, sublicense, and/or sell copies of the Software, and to
> permit persons to whom the Software is furnished to do so, subject to
> the following conditions:
>
> The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18 changes: 18 additions & 0 deletions RecipesBase/Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name = "RecipesBase"
uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
author = ["Tom Breloff (@tbreloff)"]
version = "1.3.0"

[deps]
SnoopPrecompile = "66db9d55-30c0-4569-8b51-7e840670fc0c"

[compat]
SnoopPrecompile = "1"
julia = "1.6"

[extras]
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Random", "Test"]
150 changes: 150 additions & 0 deletions RecipesBase/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# RecipesBase

[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://JuliaPlots.github.io/RecipesBase.jl/stable)
[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://JuliaPlots.github.io/RecipesBase.jl/dev)
[![Build Status](https://travis-ci.org/JuliaPlots/RecipesBase.jl.svg?branch=master)](https://travis-ci.org/JuliaPlots/RecipesBase.jl)
[![project chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://julialang.zulipchat.com/#narrow/stream/236493-plots)
[![deps](https://juliahub.com/docs/RecipesBase/deps.svg)](https://juliahub.com/ui/Packages/RecipesBase/8e2Mm?t=2)

### Author: Thomas Breloff (@tbreloff)

This package implements handy macros `@recipe` and `@series` which will define a custom transformation
and attach attributes for user types. Its design is an attempt to simplify and generalize
the summary and display of types and data from external packages. With no extra dependencies
and minimal code, package authors can describe visualization routines that can be used
as components in more complex visualizations.

This functionality is primarily geared to turning user types and settings into the
data and attributes that describe a [Plots](https://github.com/tbreloff/Plots.jl) visualization,
though it could be used for other purposes as well.
Plots has extensive machinery to uniquely take advantage of the simplified recipe description you define. See the [Plots documentation on recipes](http://docs.juliaplots.org/latest/recipes/) for more information.

The `@recipe` macro will process a function definition, use `-->` commands to define attributes, and
pass the return value through for further processing (likely by Plots.jl).

## Why should I care about this package?

Many packages have custom types and custom data. There is usually specialized structure, and useful
methods of visualizing that structure and data. This package solves the difficult problem of how to
build generic visualizations of user-defined data types, without adding bulky dependencies on complex
graphics packages.

This package is as lightweight as possible. It exports two macros, and defines only a few internal methods.
It has **zero dependencies**.

However, although it is lightweight, it enables a lot. The entirety of the Plots framework becomes available
to any package implementing a recipe. This means that complex plots and subplots can be built with uber-flexibility
using custom combinations of data types. Some examples of applications:

- Distributions: overlayed density plots for non-normal fitted distributions.
- DataFrames: "Grammar of Graphics"-style inputs using symbols.
- Deep Learning: frameworks for visualization of neural network states and tracking of internal calculations.
- Graphs: flexible, interactive graphs with easily customizable colors, etc.
- Symbolic frameworks: sample from complex symbolic distributions.

Really there's very little that *couldn't* be mapped to a useful visualization.
I challenge you to create the pictures that are worth a thousand words.

For more information about Plots, see [the docs](http://juliaplots.github.io/), and be sure to reference
the [supported keywords](https://docs.juliaplots.org/stable/generated/supported/#Keyword-Arguments).
For additional examples of recipes in the wild, see [PlotRecipes](https://github.com/JuliaPlots/PlotRecipes.jl).
Ask questions on [gitter](https://gitter.im/tbreloff/Plots.jl) or in the issues.

## Hello world

This will build a spiky surface:

```julia
using Plots; gr()
struct T end
@recipe f(::T) = rand(100,100)
surface(T())
```

![](https://cloud.githubusercontent.com/assets/933338/15089193/7a453ec6-13cc-11e6-9ae8-959e98b615dc.png)

## A real example

```julia
using RecipesBase

# Our user-defined data type
struct T end

# This is all we define. It uses a familiar signature, but strips it apart
# in order to add a custom definition to the internal method `RecipesBase.apply_recipe`
@recipe function plot(::T, n = 1; customcolor = :green)
markershape --> :auto # if markershape is unset, make it :auto
markercolor := customcolor # force markercolor to be customcolor
xrotation --> 45 # if xrotation is unset, make it 45
zrotation --> 90 # if zrotation is unset, make it 90
rand(10,n) # return the arguments (input data) for the next recipe
end

# ----------------------------

# Plots will be the ultimate consumer of our recipe in this example
using Plots
gr()

# This call will implicitly call `RecipesBase.apply_recipe` as part of the Plots
# processing pipeline (see the Pipeline section of the Plots documentation).
# It will plot 5 line plots (a 5-column matrix is returned from the recipe).
# All will have black circles:
# - user override for markershape: :c == :circle
# - customcolor overridden to :black, and markercolor is forced to be customcolor
# If markershape is an unsupported keyword, the call will error.
# By default, a warning will be shown for an unsupported keyword.
# This will be suppressed for zrotation (:quiet flag).
plot(T(), 5; customcolor = :black, shape=:c)
```

![](https://cloud.githubusercontent.com/assets/933338/15083906/02a06810-139e-11e6-98a0-dd81c3fb1ad8.png)

In this example, we see a lot of the machinery in action. We create a new type `T`, which
we will use for dispatch, and an optional argument `n`, which will be used to determine the
number of series to display. User-defined keyword arguments are passed through, and the
`-->` command can be trailed by flags:

- `quiet`: Suppress unsupported keyword warnings
- `require`: Error if keyword is unsupported
- `force`: Don't allow user override for this keyword

### Series

For complex visualizations, it can be beneficial to create many series inside a single recipe. The `@series` macro will make a copy of the attribute dictionary `d`, and add a new RecipeData object to the returned list. See the [case studies](http://docs.juliaplots.org/latest/recipes/#case-studies) for more details.

### Generated code

For the example above, the following code is generated. In it, you can see the managing of the scope of the keyword args, creation of a definition for `RecipesBase.apply_recipe`, setting attributes, and creating the list of `RecipeData` objects:

```julia
function RecipesBase.apply_recipe(d::Dict{Symbol,Any},::T,n=1)
if RecipesBase._debug_recipes[1]
println("apply_recipe args: ",Any[:(::T),:(n=1)])
end
begin
customcolor = get!(d,:customcolor,:green)
end
series_list = RecipesBase.RecipeData[]
func_return = begin
get!(d,:markershape,:auto)
d[:markercolor] = customcolor
get!(d,:xrotation,45)
get!(d,:zrotation,90)
rand(10,n)
end
if func_return != nothing
push!(series_list,RecipesBase.RecipeData(d,RecipesBase.wrap_tuple(func_return)))
end
begin
RecipesBase.is_key_supported(:customcolor) || delete!(d,:customcolor)
end
series_list
end
```

### A humble request

If you build a recipe for your package, please let me know! I'd love to compile both a gallery and
a listing of user-defined recipes, as well as the packages that are available for Plots visualizations.
Loading