# Is there a Julia package similar to the Python's "ShowYourWork"?

**URL:** <https://discourse.julialang.org/t/is-there-a-julia-package-similar-to-the-pythons-showyourwork/97475>\
**Category:** VS Code\
**Created:** [April 14, 2023, 1:44pm UTC](https://discourse.julialang.org/t/is-there-a-julia-package-similar-to-the-pythons-showyourwork/97475 "2023-04-14T13:44:07Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![MilesCranmer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/milescranmer/32/21070_2.png) [@MilesCranmer](https://discourse.julialang.org/u/MilesCranmer)\
**Post date:** [April 14, 2023, 9:03pm UTC](https://discourse.julialang.org/t/is-there-a-julia-package-similar-to-the-pythons-showyourwork/97475/7 "2023-04-14T21:03:24Z")

</div>

I think there are some misconceptions in this thread about what ShowYourWork does. I’m one of the maintainers of the package - it does quite a bit more than make code reproducible or generate TeX. While it is written in Python (and JavaScript), it’s actually language independent and you can execute arbitrary scripts at each build step, **including Julia code**.

It’s basically a way of involving code execution/data processing/etc., into the source of a LaTeX project in a reproducible way (e.g., `\variable{mytable.tex}` would declare `mytable.tex` as a node in the data processing graph, and it would be generated by some script).

It uses [Snakemake](https://github.com/snakemake/snakemake) (a modern version of `make`, but which also allows Python syntax inside the make file) to declare dependencies in the build process, which is supposed to lazily run your entire research pipeline from raw data (which might stored and versioned on zenodo) to processed data (which might be uploaded to cloud as well) to final plots/tables/or even single numbers.

The goal is for the command `showyourwork` to run your entire research analysis pipeline all the way from raw data to final PDF compilation in a reproducible way. Changing a single version number of any dependency would result in all dependent tasks to be re-run.

SYW also has really nice GitHub actions integration, and will re-generate dependencies of your paper each time something changes. There’s even an action that will generate a `latexdiff` whenever there is a PR to your SYW-based repo.

It uses conda for version management, which can install specific versions of `julia`, and you can totally include a `{Manifest,Project}.toml` and have the Snakemake file re-compute every Julia step whenever those change. (Similar for whatever other languages are used in your analysis).

---

_[View the full topic](https://discourse.julialang.org/t/is-there-a-julia-package-similar-to-the-pythons-showyourwork/97475)._
