mirror of https://github.com/mpastell/Weave.jl
allow configuration of jupyter command while weaving notebooks, fixes #194
* notebook refactor and tests * update PR * add jupyter test jmd * add back full warnings and remove debugging output * Update test filename [ci skip] * Conda for CI * update for CI? * remove Conda, IJulia, and tests for now * Project.toml changes suggested by tinagly * revive travis tests * comment out nb testspull/221/head
parent
6621920bec
commit
5d3e05511e
|
@ -17,6 +17,7 @@ test/**/*.html
|
||||||
test/**/*.pdf
|
test/**/*.pdf
|
||||||
test/**/*.png
|
test/**/*.png
|
||||||
test/**/chunk_options.jl
|
test/**/chunk_options.jl
|
||||||
|
test/**/*.ipynb
|
||||||
!test/**/*ref.*
|
!test/**/*ref.*
|
||||||
|
|
||||||
doc/build
|
doc/build
|
||||||
|
|
28
Project.toml
28
Project.toml
|
@ -1,32 +1,34 @@
|
||||||
name = "Weave"
|
name = "Weave"
|
||||||
uuid = "44d3d7a6-8a23-5bf8-98c5-b353f8df5ec9"
|
uuid = "44d3d7a6-8a23-5bf8-98c5-b353f8df5ec9"
|
||||||
version="0.9.0"
|
version = "0.9.0"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
|
|
||||||
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
|
|
||||||
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
|
||||||
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
||||||
REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
|
|
||||||
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
|
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
|
||||||
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
|
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
||||||
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
|
|
||||||
Highlights = "eafb193a-b7ab-5a9e-9068-77385905fa72"
|
Highlights = "eafb193a-b7ab-5a9e-9068-77385905fa72"
|
||||||
|
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
|
||||||
|
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
|
||||||
Mustache = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70"
|
Mustache = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70"
|
||||||
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
|
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
|
||||||
|
REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
|
||||||
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
|
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
|
||||||
|
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
|
||||||
|
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
|
||||||
|
|
||||||
[compat]
|
[compat]
|
||||||
Highlights = ">=0.3.1"
|
Highlights = ">=0.3.1"
|
||||||
|
Mustache = ">=0.4.1"
|
||||||
Plots = ">=0.19.0"
|
Plots = ">=0.19.0"
|
||||||
YAML = ">=0.3.0"
|
YAML = ">=0.3.0"
|
||||||
Mustache = ">=0.4.1"
|
|
||||||
|
|
||||||
[extras]
|
[extras]
|
||||||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
|
||||||
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
|
|
||||||
Gadfly = "c91e804a-d5a3-530f-b6f0-dfbca275c004"
|
|
||||||
Cairo = "159f3aea-2a34-519c-b102-8c37f9878175"
|
Cairo = "159f3aea-2a34-519c-b102-8c37f9878175"
|
||||||
|
Conda = "8f4d0f93-b110-5947-807f-2305c1781a2d"
|
||||||
|
Gadfly = "c91e804a-d5a3-530f-b6f0-dfbca275c004"
|
||||||
|
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
|
||||||
|
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||||
|
IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a"
|
||||||
|
|
||||||
[targets]
|
[targets]
|
||||||
test = ["Test", "Plots", "Gadfly", "Cairo"]
|
test = ["Test", "Plots", "Gadfly", "Cairo", "Conda", "IJulia"]
|
||||||
|
|
|
@ -13,15 +13,17 @@ weave("notebook.ipynb")
|
||||||
## Output to Jupyter notebooks
|
## Output to Jupyter notebooks
|
||||||
|
|
||||||
As of Weave 0.5.1. there is new `notebook` method to convert Weave documents
|
As of Weave 0.5.1. there is new `notebook` method to convert Weave documents
|
||||||
to Jupyter notebooks using [nbconvert](http://nbconvert.readthedocs.io/en/latest/execute_api.html). The code **is not executed by Weave**
|
to Jupyter notebooks using [nbconvert](http://nbconvert.readthedocs.io/en/latest/execute_api.html). The code **is not executed by Weave**
|
||||||
and the output doesn't always work properly,
|
and the output doesn't always work properly,
|
||||||
see [#116](https://github.com/mpastell/Weave.jl/issues/116).
|
see [#116](https://github.com/mpastell/Weave.jl/issues/116).
|
||||||
|
|
||||||
```@docs
|
```@docs
|
||||||
notebook(source::String, out_path=:pwd)
|
notebook(source::String, out_path=:pwd)
|
||||||
```
|
```
|
||||||
|
|
||||||
You might wan't to use the `convert_doc` method below instead and run the code in Jupyter.
|
You might want to use the `convert_doc` method below instead and run the code in Jupyter.
|
||||||
|
|
||||||
|
You can select the `jupyter` used to execute the notebook with the `jupyter_path` argument (this defaults to the string "jupyter," i.e., whatever you have linked to that location.)
|
||||||
|
|
||||||
## Converting between formats
|
## Converting between formats
|
||||||
|
|
||||||
|
|
10
src/Weave.jl
10
src/Weave.jl
|
@ -171,18 +171,19 @@ function weave(doc::AbstractString, doctype::AbstractString)
|
||||||
end
|
end
|
||||||
|
|
||||||
"""
|
"""
|
||||||
notebook(source::String, out_path=:pwd, timeout=-1, nbconvert_options="")
|
notebook(source::String; out_path=:pwd, timeout=-1, nbconvert_options="", jupyter_path = "jupyter")
|
||||||
|
|
||||||
Convert Weave document `source` to Jupyter notebook and execute the code
|
Convert Weave document `source` to Jupyter notebook and execute the code
|
||||||
using nbconvert. Requires IJulia. **Ignores** all chunk options
|
using nbconvert. **Ignores** all chunk options
|
||||||
|
|
||||||
* `out_path`: Path where the output is generated. Can be: `:doc`: Path of the source document,
|
* `out_path`: Path where the output is generated. Can be: `:doc`: Path of the source document,
|
||||||
`:pwd`: Julia working directory, `"somepath"`: Path as a
|
`:pwd`: Julia working directory, `"somepath"`: Path as a
|
||||||
String e.g `"/home/mpastell/weaveout"`
|
String e.g `"/home/mpastell/weaveout"`
|
||||||
* `timeout`: nbconvert cell timeout in seconds. Defaults to -1 (no timeout)
|
* `timeout`: nbconvert cell timeout in seconds. Defaults to -1 (no timeout)
|
||||||
* `nbconvert_options`: string of additional options to pass to nbconvert, such as `--allow-errors`
|
* `nbconvert_options`: string of additional options to pass to nbconvert, such as `--allow-errors`
|
||||||
|
* `jupyter_path`: Path/command for the Jupyter you want to use. Defaults to "jupyter," which runs whatever is linked/alias to that.
|
||||||
"""
|
"""
|
||||||
function notebook(source::String, out_path=:pwd, timeout=-1, nbconvert_options=[])
|
function notebook(source::String; out_path=:pwd, timeout=-1, nbconvert_options=[], jupyter_path = "jupyter")
|
||||||
doc = read_doc(source)
|
doc = read_doc(source)
|
||||||
converted = convert_doc(doc, NotebookOutput())
|
converted = convert_doc(doc, NotebookOutput())
|
||||||
doc.cwd = get_cwd(doc, out_path)
|
doc.cwd = get_cwd(doc, out_path)
|
||||||
|
@ -193,8 +194,7 @@ function notebook(source::String, out_path=:pwd, timeout=-1, nbconvert_options=[
|
||||||
end
|
end
|
||||||
|
|
||||||
@info("Running nbconvert")
|
@info("Running nbconvert")
|
||||||
Base.eval(Main, Meta.parse("import IJulia"))
|
out = read(`$jupyter_path nbconvert --ExecutePreprocessor.timeout=$timeout --to notebook --execute $outfile $nbconvert_options --output $outfile`, String)
|
||||||
out = read(`$(Main.IJulia.JUPYTER) nbconvert --ExecutePreprocessor.timeout=$timeout --to notebook --execute $outfile $nbconvert_options --output $outfile`, String)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
Here's some text
|
||||||
|
|
||||||
|
And here's some code
|
||||||
|
|
||||||
|
```julia
|
||||||
|
x = 1
|
||||||
|
y = 2
|
||||||
|
@show x + y
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's some more complicated code
|
||||||
|
|
||||||
|
```julia
|
||||||
|
@code_native +(1.0, π)
|
||||||
|
using Test
|
||||||
|
@test 1 == 1
|
||||||
|
```
|
|
@ -0,0 +1,7 @@
|
||||||
|
file = joinpath(@__DIR__, "documents", "jupyter_test.jmd")
|
||||||
|
using IJulia, Conda
|
||||||
|
|
||||||
|
Conda.add("nbconvert") # should be the same as IJulia.JUPYTER, i.e. the miniconda Python
|
||||||
|
|
||||||
|
Weave.notebook(file, jupyter_path = IJulia.JUPYTER)
|
||||||
|
@test "jupyter_test.ipynb" ∈ readdir(@__DIR__) # test if the result was weaved
|
|
@ -58,4 +58,9 @@ using Test
|
||||||
@info("Testing inline code")
|
@info("Testing inline code")
|
||||||
include("inline_test.jl")
|
include("inline_test.jl")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# @testset "Notebooks" begin
|
||||||
|
# @info("Testing Jupyter options")
|
||||||
|
# include("notebooks.jl")
|
||||||
|
# end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue