# Package naming policies for Julia packages within conda-forge

**URL:** <https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659>\
**Category:** General Usage\
**Tags:** package, conda-forge\
**Created:** [September 1, 2022, 9:29pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659 "2022-09-01T21:29:37Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 1, 2022, 9:29pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/1 "2022-09-01T21:29:37Z")

</div>

We have a few cases of Python packages depending on Julia packages and vice versa.

I’ve posed the question about what to call Julia packages within conda-forge so that they may be referred to as explicitly dependencies.

My first preference would be to retain the original names. However, other factors may make capitalization or the inclusion of a period, `.`, challenging.

My second proposal is to use an explicit `julia-` prefix so that `Interpolations.jl` may become `julia-interpolations`.

> <https://github.com/conda-forge/conda-forge.github.io/issues/1822>
>
> \### Your question:
> 
> \# Question
> 
> How should Julia packages be named within cond…a-forge?
> 
> \# Introduction
> 
> The \[julia-feedstock\](https://github.com/conda-forge/julia-feedstock) is now current with upstream Julia at version 1.8.0. Support is currently best on Linux. Mac OS X support is possible on x86\_64 and arm64 but needs further work and testing. Windows support is likely not possible within conda-forge without a comprehensive mingw-w64 ecosystem as opposed to a Microsoft Visual C.
> 
> We current have two feedstocks employing a dual language Python - Julia strategy within conda-forge:
> \* https://github.com/ngam/pysr-feedstock
> \* https://github.com/conda-forge/xbitinfo-feedstock
> 
> These two packages primarily are Python interfaces for the following Julia packages:
> \* \[SymbolicRegression.jl\](https://github.com/MilesCranmer/SymbolicRegression.jl)
> \* \[BitInformation.jl\](https://github.com/milankl/BitInformation.jl)
> 
> Currently the installation of the Julia packages needs to be initiated by the user and is handled completely outside of the \`conda\` or \`mamba\` package management. The Julia feedstock configures the Julia depot within the conda prefix rather than the default \`~/.julia\` depot location.
> 
> It would best if these Julia packages could be directly installed by \`conda\` rather than having the user initiate a manual step. I have \[developed a mechanism using the Julia depot stack that allows \`conda\` to directly install Julia packages into the user's Julia load path\](https://github.com/conda-forge/pysr-feedstock/pull/43#issuecomment-1233129264) if they use a preconfigured Julia project environment. Thus we are now prepared to propose conda-forge feedstocks for individual Julia packages and now need to decide upon a naming scheme.
> 
> \# Julia package naming guidelines
> 
> Julia packages typically include capitalization according to camel case and a "file extension" with a preceding period. For example:
> 
> \* \[PyCall.jl
> \](https://github.com/JuliaPy/PyCall.jl)
> \* \[Conda.jl\](https://github.com/JuliaPy/Conda.jl)
> \* \[HDF5.jl\](https://github.com/JuliaIO/HDF5.jl)
> \* \[HDF5\_jll.jl\](https://github.com/JuliaBinaryWrappers/HDF5\_jll.jl)
> \* \[ClusterManagers.jl\](https://github.com/JuliaParallel/ClusterManagers.jl)
> \* \[SymbolicRegression.jl\](https://github.com/MilesCranmer/SymbolicRegression.jl)
> \* \[BitInformation.jl\](https://github.com/milankl/BitInformation.jl)
> 
> Julia package naming guidelines are located at the following URL:
> https://pkgdocs.julialang.org/v1/creating-packages/#Package-naming-guidelines-1
> 
> \# Potential naming schemes within conda-forge
> 
> My first preference would be to preserve the original package names. Julia packages can be uniquely identified by the ".jl" extension from those in other languages.
> 
> From #18, many seem to prefer no capitalization. If we do want to conform to a language prefix with all lowercase, my preference would be "julia-" since this would unambiguous:
> \* julia-pycall
> \* julia-conda
> \* julia-hdf5
> \* julia-hdf5\_jll
> \* julia-clustermanagers
> \* julia-symbolicregression
> \* julia-bitinformation
> 
> I could also see an argument for using "jl-" based on brevity and similarity to the original name:
> \* jl-pycall
> \* jl-conda
> \* jl-hdf5
> \* jl-hdf5\_jll
> \* jl-clustermanagers
> \* jl-symbolicregression
> \* jl-bitinformation
> 
> cc: @ngam, @isuruf @ocefpaf
> 
> \# References
> 
> 1. https://github.com/conda-forge/julia-feedstock/issues/14
> 2. https://github.com/conda-forge/pysr-feedstock/pull/43#issuecomment-1233129264

---

<div class="post-metadata">

**Author:** ![cjdoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cjdoris/32/213133_2.png) [@cjdoris](https://discourse.julialang.org/u/cjdoris)\
**Post date:** [September 1, 2022, 9:44pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/2 "2022-09-01T21:44:33Z")

</div>

I’m confused, since when could you use Conda to install Julia packages?

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 1, 2022, 10:06pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/3 "2022-09-01T22:06:28Z")

</div>

There are two conda-forge packages which are heading in that direction. They currently require secondary steps to invoke the Julia package manager.

1. [GitHub - conda-forge/pysr-feedstock: A conda-smithy repository for pysr.](https://github.com/conda-forge/pysr-feedstock)
2. [GitHub - conda-forge/xbitinfo-feedstock: A conda-smithy repository for xbitinfo.](https://github.com/conda-forge/xbitinfo-feedstock)

Those two packages are mainly Python interfaces to the following Julia packages, respectively:

1. [SymbolicRegression.jl](https://github.com/MilesCranmer/SymbolicRegression.jl)
2. [BitInformation.jl](https://github.com/milankl/BitInformation.jl)

Technically, neither `conda` or `mamba` are supposed to be language specific.

There are several mechanisms by which `conda` could “install” a Julia package.

One scenario is where conda-forge in managing a Julia depot within the conda environment. This conda-forge Julia depot would be similar to a [`/usr/local/share/julia` depot](https://docs.julialang.org/en/v1/base/constants/#Base.DEPOT_PATH). In this scenario, conda would use the Julia package manager at _build_ time to figure out where the Julia package should go within the depot rather than requiring the user to manually invoke the Julia package manager after installation. Insertion of this depot is made possible by depot stacking. An example of this is this conda-forge build script which currently bundles ~100 Julia packages in a depot:  
[build.sh](https://github.com/conda-forge/pysr-feedstock/pull/43/files#diff-d7075654874cb08007a21aaab3ecd4b3453a9087e7505d034d548b8938b599bc) . The depot is then included into the depot stack via an [activate.sh script](https://github.com/conda-forge/pysr-feedstock/pull/43/files#diff-21e364a8395fcb20625da180eadd13dcdc42c2e4c606083a45a674abad1a682b).

Another scenario might involve `conda` invoking the julia package manager via one of the user link scripts:  
[https://docs.conda.io/projects/conda-build/en/latest/resources/link-scripts.html](https://docs.conda.io/projects/conda-build/en/latest/resources/link-scripts.html)  
However, this kind of activity in this scripts is discouraged.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [September 2, 2022, 3:02am UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/4 "2022-09-02T03:02:58Z")

</div>

sounds extremely cursed, idk what these pkgs do but maybe you can do the same?

- [GitHub - MilesCranmer/PySR: High-Performance Symbolic Regression in Python](https://github.com/MilesCranmer/PySR)
- [GitHub - SciML/diffeqpy: Solving differential equations in Python using DifferentialEquations.jl and the SciML Scientific Machine Learning organization](https://github.com/SciML/diffeqpy)

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 2, 2022, 6:01am UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/5 "2022-09-02T06:01:41Z")

</div>

`PySR` is mentioned above but perhaps there is a misunderstanding about the question.

The question is not what should we call a Python wrapping of a Julia package. The question is what should the Julia packages themselves if we could not use the “CamelCase.jl” scheme due to capitalization being an issue or the `.` being disallowed.

---

<div class="post-metadata">

**Author:** ![digital\_carver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digital_carver/32/33818_2.png) [@digital\_carver](https://discourse.julialang.org/u/digital_carver)\
**Post date:** [September 2, 2022, 8:01am UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/6 "2022-09-02T08:01:40Z")

</div>

Can you explain a bit about how these packages would be _used_? Would the Python packages that depend on them do a juliacall type thing to import them?

I feel like CamelCase is part of the identity of Julia packages, so I hope the capitalization turns out to be okay in the end. But if it isn’t, the `julia-` name seems fine, with the CamelCase becoming snake\_case - for ApproxFun.jl becoming `julia-approx_fun` (assuming underscores are allowed).

The `julia-` prefix does seem a bit long, especially with names like SplitApplyCombine.jl - it becomes the even longer `julia-split_apply_combine`. But (slightly) shortening it to `split_apply_combine-jl` or `jl-split_apply_combine` doesn’t sound as nice. However, the shortened names do have the benefit that they emphasize the name of the package itself more.

I like that `split_apply_combine-jl` sounds pretty close to the package’s original name, but I also like the explicitness of `julia-split_apply_combine`. Knowing some of the context of where and how it will be used will help decide which one sounds more appropriate for that context.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 2, 2022, 8:59am UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/7 "2022-09-02T08:59:20Z")

</div>

> [@digital\_carver](#):
>
> Can you explain a bit about how these packages would be _used_? Would the Python packages that depend on them do a juliacall type thing to import them?

PySR uses `pyjulia` to invoke Julia from Python. PySR thus have a dependency on SymbolicRegression.jl.

The current procedure involves first installing PySR via `pip` or `conda` and then installing SymbolicRegression.jl by invoking this command `python -c 'import pysr; pysr.install()'`. That command invokes the julia package manager.

What I believe may soon be possible is using the julia package manager during conda-forge packaging so that the user does not need a second installation step. They could just `import pysr` and start using it.

The mechanism that conda or an operating system package manager could use to supply Julia packages is by populating a depot on Julia’s depot stack. From the docs for `Base.DEPOT_PATH`, we see there are three depots by default.

> - ~/.julia where ~ is the user home as appropriate on the system;
> - an architecture-specific shared system directory, e.g. /usr/local/share/julia;
> - an architecture-independent shared system directory, e.g. /usr/share/julia.

Within a conda environment this becomes

- “~/.julia”
- “$CONDA\_PREFIX/local/share/julia”
- “$CONDA\_PREFIX/share/julia”

By manipulating the environment `JULIA_DEPOT_PATH`, we can add a depot. Because conda-forge does not currently package individual Julia packages, one way to “install” Julia packages via conda would be to ship a Julia depot located in `$CONDA_PREFIX/share/pysr/depot`.

That depot just needs four directories.

- artifacts - binary artifacts that the packages may need
- conda - this just contains a deps.jl configuring Conda.jl
- environments - preconfigured Julia environments that can loaded via `@project_name`
- packages - Julia source code

The easiest way to create this depot is to first set `JULIA_DEPOT_PATH` to a temporary directory. Alternatively, within Julia one could do:

```julia
DEPOT_PATH_BACKUP = copy(DEPOT_PATH)
empty!(DEPOT_PATH)
push!(DEPOT_PATH, tempdir())

```

From there add the needed packages and create the environments desired. Before exiting Julia, copy the desired folders such as “packages” to the depot location (e.g. `$CONDA_PREFIX/share/pysr/depot`).

Now we just need to set `JULIA_DEPOT_PATH`. For example, one could do the following.

```julia
export JULIA_DEPOT_PATH="$HOME/.julia:$CONDA_PREFIX/share/pysr/depot"

```

Within julia one could also do

```julia
push!(DEPOT_PATH, joinpath(ENV["CONDA_PREFIX"], "share/pysr/depot")

```

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [September 2, 2022, 12:31pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/8 "2022-09-02T12:31:46Z")

</div>

> [@mkitti](#):
>
> pysr.install()

python being python can you not just do this at the python module loading-time if the julia package is not detected?

---

<div class="post-metadata">

**Author:** ![digital\_carver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digital_carver/32/33818_2.png) [@digital\_carver](https://discourse.julialang.org/u/digital_carver)\
**Post date:** [September 3, 2022, 2:30pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/9 "2022-09-03T14:30:55Z")

</div>

Thanks for the detailed explanation!

* * *

I was originally going to say that this seems like it doesn’t need a whole new DEPOT, just a shared environment would be better - but I saw that you [considered that option in this Github thread](https://github.com/conda-forge/julia-feedstock/issues/14#issuecomment-1000928127) and changed your mind later, so I’ll assume there’s good reason for going with Depots ultimately.

* * *

As for the naming itself, was there ever a conclusion from the [#18](https://github.com/conda-forge/conda-forge.github.io/issues/18) regarding a general policy? It seems like [this gist](https://gist.github.com/mcg1969/da5aec380d2ed083b79ddcf151ca16f1) is an attempt at a conclusion and a summary, but it’s not clear how official it is.  
According to that gist, the convention seems to be `language:package`, with the `language` prefix being optional if the package name is unambiguous. Was this ever implemented? What is the current status of R, Node, and Ruby packages (which are the other languages mentioned in these threads) in Conda? Do they have a common standard, `ruby-nokogiri` or `ruby:nokogiri` or anything else?

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 3, 2022, 5:28pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/10 "2022-09-03T17:28:00Z")

</div>

The current design is that each conda environment has its own Julia depot in `$CONDA_PREFIX/share/julia`  
This depot can be modified by the user via the Julia package manager.

The reason I want to install packages into a second depot is that it will be “read-only” and thus we will not have conflicts. There will be a separation between user installed packages and conda installed packages.

---

<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:** [September 5, 2022, 7:16pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/11 "2022-09-05T19:16:29Z")

</div>

> [@jling](#):
>
> python being python can you not just do this at the python module loading-time if the julia package is not detected?

It’s definitely possible (I think [PythonCall.jl/juliacall](https://github.com/cjdoris/PythonCall.jl/) does this?), but I think the safest option is to have a manual install step when the user is already connected to the internet.

For example, some clusters have compute nodes which do not have internet access (my local Tiger cluster at Princeton has this problem) - if you submit a PySR job, it would fail - so you need to install the packages before running it.

---

<div class="post-metadata">

**Author:** ![cjdoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cjdoris/32/213133_2.png) [@cjdoris](https://discourse.julialang.org/u/cjdoris)\
**Post date:** [September 5, 2022, 9:09pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/12 "2022-09-05T21:09:32Z")

</div>

> [@MilesCranmer](#):
>
> > [@jling](#):
> >
> > python being python can you not just do this at the python module loading-time if the julia package is not detected?
> 
> It’s definitely possible (I think [PythonCall.jl/juliacall](https://github.com/cjdoris/PythonCall.jl/) does this?), but I think the safest option is to have a manual install step when the user is already connected to the internet.

You can simply call `juliapkg.resolve()` after installing your dependencies. After that point you shouldn’t need an internet connection.

---

<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:** [September 5, 2022, 9:41pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/13 "2022-09-05T21:41:44Z")

</div>

> after installing your dependencies

Right this is what I was trying to emphasize - that the user (implicitly or explicitly) needs to run an extra dependency installation step _after_ `pip install <package>`, such as `import juliacall` or `import pysr; pysr.install()`, before running on a machine disconnected from the internet. To answer @jling’s question, the reason I have the explicit `install()` function rather than just `import pysr` just so it’s more explicit (so users are aware that further installation will occur). But this is obviously a subjective view on the API!

But what @mkitti and @ngam are working on, there won’t need to be this extra install step after `conda install -c conda-forge <package>`; it should come directly from conda-forge, which will be cool.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 5, 2022, 10:07pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/14 "2022-09-05T22:07:33Z")

</div>

Basically the question we’re asking is if we can run all the Pkg.jl steps to populate the depot, tar up part of the depot, and then untar it for the user so then all the packages are installed without further intervention by the user.

Here’s an example build script:

> <https://github.com/conda-forge/pysr-feedstock/blob/9baabe329888f6b2fa02d57618d8ad28a3a09a1e/recipe/build.sh>

---

<div class="post-metadata">

**Author:** ![cjdoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cjdoris/32/213133_2.png) [@cjdoris](https://discourse.julialang.org/u/cjdoris)\
**Post date:** [September 6, 2022, 6:58am UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/15 "2022-09-06T06:58:56Z")

</div>

What happens when you have two conda packages like this and their build scripts choose different/conflicting versions of some Julia packages?

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [September 6, 2022, 8:50pm UTC](https://discourse.julialang.org/t/package-naming-policies-for-julia-packages-within-conda-forge/86659/16 "2022-09-06T20:50:18Z")

</div>

Julia depots can contain multiple versions of a package, so it is not a problem to have different depots with different versions of the same package. In this case the depots are just acting as a package cache, so there is no direct conflict created by the depots themselves.

The real question is what happens when you try to add the packages to a common Julia environment. In this case, Julia will resolve the versions and draw from the depots if the packages exist at the needed versions. If not, then it will just download the needed versions.

I did an experiment by creating independent depots for SymbolicRegression.jl and BitInformation.jl. I then stacked those depots and then created a common environment with a third depot at the top of the depot stack. In that case, no new package versions needed to be downloaded. All the needed package versions were contained in the existing depots.

See the links below.

> <https://github.com/conda-forge/pysr-feedstock/pull/43#issuecomment-1237630200>
>
> Let's be practical and discuss the two large packages we actually have before us…. To resolve the problem for SymbolicRegression.jl (used by pysr) and BitInformation.jl (used by xbitinfo) we need to add them to the same Julia project environment. I'll first point out that is not practical for either pysr or xbitinfo because both Python packages activate individual Julia environments when you run the Python packages. Let's say we do it anyways.
> 
> For either package, having both depots present does not hinder anything. For this discussion I will create two depots
> 1. pysr\_depot
> 2. xbitinfo\_depot
> 
> These each respectively contain an environment.
> 1. pysr\_env
> 2. xbitinfo\_env
> 
> To the environments, I added a single package:
> 1. SymbolicRegressions.jl
> 2. BitInformation.jl
> 
> Now we have two individual depots. Here's how many packages are installed.
> \`\`\`
> $ ls pysr\_depot/packages | wc -l
> 93
> $ ls xbitinfo\_depot/packages | wc -l
> 32
> \`\`\`
> 
> Now I'll construct a common depot and put at the top of the depot stack while placing the two other depots underneath it.
> \`\`\`julia
> julia\> empty!(DEPOT\_PATH)
> String\[\]
> 
> julia\> mkpath("common\_depot/environments/common\_env")
> "common\_depot/environments/common\_env"
> 
> julia\> push!(DEPOT\_PATH, "common\_depot")
> 1-element Vector{String}:
> "common\_depot"
> 
> julia\> push!(DEPOT\_PATH, "pysr\_depot")
> 2-element Vector{String}:
> "common\_depot"
> "pysr\_depot"
> 
> julia\> push!(DEPOT\_PATH, "xbitinfo\_depot")
> 3-element Vector{String}:
> "common\_depot"
> "pysr\_depot"
> "xbitinfo\_depot"
> 
> julia\> Pkg.activate("common\_depot/environments/common\_env")
> Activating new project at \`~/src/depottest/common\_depot/environments/common\_env\`
> 
> julia\> pkg"add SymbolicRegression BitInformation"
> Resolving package versions...
> ...
> 
> julia\> pkg"status"
> Status \`~/src/depottest/common\_depot/environments/common\_env/Project.toml\`
> \[de688a37\] BitInformation v0.6.0
> \[8254be44\] SymbolicRegression v0.10.2
> \`\`\`
> 
> When I added both packages to the same environment, no downloads had to occur. In fact, if we look for \`common\_depot/packages\` we see that the directory does not even exist. We didn't need to "install" any additional packages!
> 
> \`\`\`julia
> julia\> readdir(DEPOT\_PATH\[1\])
> 4-element Vector{String}:
> "compiled"
> "environments"
> "logs"
> "scratchspaces"
> \`\`\`
> 
> What is in \`common\_depot/environments/common\_env\`? Two files
> 1. Project.toml
> 2. Manifest.toml
> 
> \`\`\`
> $ ls common\_depot/environments/common\_env/
> Manifest.toml Project.toml
> 
> $ cat common\_depot/environments/common\_env/Project.toml 
> \[deps\]
> BitInformation = "de688a37-743e-4ac2-a6f0-bd62414d1aa7"
> SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
> 
> 
> $ cat common\_depot/environments/common\_env/Manifest.toml 
> \# This file is machine-generated - editing it directly is not advised
> 
> julia\_version = "1.8.0"
> manifest\_format = "2.0"
> project\_hash = "c901445fd3719cd02549f8ebb4f6634de8639c29"
> 
> \[\[deps.AbstractFFTs\]\]
> deps = \["ChainRulesCore", "LinearAlgebra"\]
> git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409"
> uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
> version = "1.2.1"
> ...
> \`\`\`
> 
> \<details\>
> \<summary\>Full Manifest.toml\</summary\>
> 
> \`\`\`
> \# This file is machine-generated - editing it directly is not advised
> 
> julia\_version = "1.8.0"
> manifest\_format = "2.0"
> project\_hash = "c901445fd3719cd02549f8ebb4f6634de8639c29"
> 
> \[\[deps.AbstractFFTs\]\]
> deps = \["ChainRulesCore", "LinearAlgebra"\]
> git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409"
> uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
> version = "1.2.1"
> 
> \[\[deps.AbstractTrees\]\]
> git-tree-sha1 = "5c0b629df8a5566a06f5fef5100b53ea56e465a0"
> uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
> version = "0.4.2"
> 
> \[\[deps.Adapt\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "195c5505521008abea5aee4f96930717958eac6f"
> uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
> version = "3.4.0"
> 
> \[\[deps.ArgCheck\]\]
> git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4"
> uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197"
> version = "2.3.0"
> 
> \[\[deps.ArgTools\]\]
> uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
> version = "1.1.1"
> 
> \[\[deps.ArrayInterface\]\]
> deps = \["ArrayInterfaceCore", "Compat", "IfElse", "LinearAlgebra", "Static"\]
> git-tree-sha1 = "d6173480145eb632d6571c148d94b9d3d773820e"
> uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
> version = "6.0.23"
> 
> \[\[deps.ArrayInterfaceCore\]\]
> deps = \["LinearAlgebra", "SparseArrays", "SuiteSparse"\]
> git-tree-sha1 = "5bb0f8292405a516880a3809954cb832ae7a31c5"
> uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2"
> version = "0.1.20"
> 
> \[\[deps.ArrayInterfaceStaticArrays\]\]
> deps = \["Adapt", "ArrayInterface", "ArrayInterfaceStaticArraysCore", "LinearAlgebra", "Static", "StaticArrays"\]
> git-tree-sha1 = "efb000a9f643f018d5154e56814e338b5746c560"
> uuid = "b0d46f97-bff5-4637-a19a-dd75974142cd"
> version = "0.1.4"
> 
> \[\[deps.ArrayInterfaceStaticArraysCore\]\]
> deps = \["Adapt", "ArrayInterfaceCore", "LinearAlgebra", "StaticArraysCore"\]
> git-tree-sha1 = "a1e2cf6ced6505cbad2490532388683f1e88c3ed"
> uuid = "dd5226c6-a4d4-4bc7-8575-46859f9c95b9"
> version = "0.1.0"
> 
> \[\[deps.Artifacts\]\]
> uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
> 
> \[\[deps.AutoHashEquals\]\]
> git-tree-sha1 = "45bb6705d93be619b81451bb2006b7ee5d4e4453"
> uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f"
> version = "0.2.0"
> 
> \[\[deps.BangBang\]\]
> deps = \["Compat", "ConstructionBase", "Future", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables", "ZygoteRules"\]
> git-tree-sha1 = "b15a6bc52594f5e4a3b825858d1089618871bf9d"
> uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66"
> version = "0.3.36"
> 
> \[\[deps.Base64\]\]
> uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
> 
> \[\[deps.Baselet\]\]
> git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e"
> uuid = "9718e550-a3fa-408a-8086-8db961cd8217"
> version = "0.1.1"
> 
> \[\[deps.Bijections\]\]
> git-tree-sha1 = "fe4f8c5ee7f76f2198d5c2a06d3961c249cce7bd"
> uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04"
> version = "0.1.4"
> 
> \[\[deps.BitInformation\]\]
> deps = \["Distributions", "Random", "StatsBase"\]
> git-tree-sha1 = "9003617f8ba48b69c3316b9e6f45fa376ef24fd0"
> uuid = "de688a37-743e-4ac2-a6f0-bd62414d1aa7"
> version = "0.6.0"
> 
> \[\[deps.CEnum\]\]
> git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90"
> uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
> version = "0.4.2"
> 
> \[\[deps.Calculus\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad"
> uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9"
> version = "0.5.1"
> 
> \[\[deps.ChainRules\]\]
> deps = \["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics", "StructArrays"\]
> git-tree-sha1 = "a5fd229d3569a6600ae47abe8cd48cbeb972e173"
> uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2"
> version = "1.44.6"
> 
> \[\[deps.ChainRulesCore\]\]
> deps = \["Compat", "LinearAlgebra", "SparseArrays"\]
> git-tree-sha1 = "8a494fe0c4ae21047f28eb48ac968f0b8a6fcaa7"
> uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
> version = "1.15.4"
> 
> \[\[deps.ChangesOfVariables\]\]
> deps = \["ChainRulesCore", "LinearAlgebra", "Test"\]
> git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8"
> uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
> version = "0.1.4"
> 
> \[\[deps.Combinatorics\]\]
> git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860"
> uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
> version = "1.0.2"
> 
> \[\[deps.CommonSubexpressions\]\]
> deps = \["MacroTools", "Test"\]
> git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7"
> uuid = "bbf7d656-a473-5ed7-a52c-81e309532950"
> version = "0.3.0"
> 
> \[\[deps.Compat\]\]
> deps = \["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"\]
> git-tree-sha1 = "78bee250c6826e1cf805a88b7f1e86025275d208"
> uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
> version = "3.46.0"
> 
> \[\[deps.CompilerSupportLibraries\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
> version = "0.5.2+0"
> 
> \[\[deps.CompositionsBase\]\]
> git-tree-sha1 = "455419f7e328a1a2493cabc6428d79e951349769"
> uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b"
> version = "0.1.1"
> 
> \[\[deps.ConstructionBase\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "fb21ddd70a051d882a1686a5a550990bbe371a95"
> uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
> version = "1.4.1"
> 
> \[\[deps.DataAPI\]\]
> git-tree-sha1 = "fb5f5316dd3fd4c5e7c30a24d50643b73e37cd40"
> uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
> version = "1.10.0"
> 
> \[\[deps.DataStructures\]\]
> deps = \["Compat", "InteractiveUtils", "OrderedCollections"\]
> git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0"
> uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
> version = "0.18.13"
> 
> \[\[deps.DataValueInterfaces\]\]
> git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
> uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
> version = "1.0.0"
> 
> \[\[deps.Dates\]\]
> deps = \["Printf"\]
> uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
> 
> \[\[deps.DefineSingletons\]\]
> git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c"
> uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52"
> version = "0.1.2"
> 
> \[\[deps.DelimitedFiles\]\]
> deps = \["Mmap"\]
> uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
> 
> \[\[deps.DensityInterface\]\]
> deps = \["InverseFunctions", "Test"\]
> git-tree-sha1 = "80c3e8639e3353e5d2912fb3a1916b8455e2494b"
> uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
> version = "0.4.0"
> 
> \[\[deps.DiffResults\]\]
> deps = \["StaticArrays"\]
> git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805"
> uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
> version = "1.0.3"
> 
> \[\[deps.DiffRules\]\]
> deps = \["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"\]
> git-tree-sha1 = "992a23afdb109d0d2f8802a30cf5ae4b1fe7ea68"
> uuid = "b552c78f-8df3-52c6-915a-8e097449b14b"
> version = "1.11.1"
> 
> \[\[deps.Distributed\]\]
> deps = \["Random", "Serialization", "Sockets"\]
> uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
> 
> \[\[deps.Distributions\]\]
> deps = \["ChainRulesCore", "DensityInterface", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Test"\]
> git-tree-sha1 = "8579b5cdae93e55c0cff50fbb0c2d1220efd5beb"
> uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
> version = "0.25.70"
> 
> \[\[deps.DocStringExtensions\]\]
> deps = \["LibGit2"\]
> git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b"
> uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
> version = "0.8.6"
> 
> \[\[deps.Downloads\]\]
> deps = \["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"\]
> uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
> version = "1.6.0"
> 
> \[\[deps.DualNumbers\]\]
> deps = \["Calculus", "NaNMath", "SpecialFunctions"\]
> git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566"
> uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74"
> version = "0.6.8"
> 
> \[\[deps.DynamicPolynomials\]\]
> deps = \["DataStructures", "Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"\]
> git-tree-sha1 = "d0fa82f39c2a5cdb3ee385ad52bc05c42cb4b9f0"
> uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07"
> version = "0.4.5"
> 
> \[\[deps.ExprTools\]\]
> git-tree-sha1 = "56559bbef6ca5ea0c0818fa5c90320398a6fbf8d"
> uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04"
> version = "0.1.8"
> 
> \[\[deps.FileWatching\]\]
> uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
> 
> \[\[deps.FillArrays\]\]
> deps = \["LinearAlgebra", "Random", "SparseArrays", "Statistics"\]
> git-tree-sha1 = "87519eb762f85534445f5cda35be12e32759ee14"
> uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
> version = "0.13.4"
> 
> \[\[deps.FiniteDiff\]\]
> deps = \["ArrayInterfaceCore", "LinearAlgebra", "Requires", "Setfield", "SparseArrays", "StaticArrays"\]
> git-tree-sha1 = "5a2cff9b6b77b33b89f3d97a4d367747adce647e"
> uuid = "6a86dc24-6348-571c-b903-95158fe2bd41"
> version = "2.15.0"
> 
> \[\[deps.ForwardDiff\]\]
> deps = \["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"\]
> git-tree-sha1 = "187198a4ed8ccd7b5d99c41b69c679269ea2b2d4"
> uuid = "f6369f11-7733-5829-9624-2563aa707210"
> version = "0.10.32"
> 
> \[\[deps.Future\]\]
> deps = \["Random"\]
> uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
> 
> \[\[deps.GPUArrays\]\]
> deps = \["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"\]
> git-tree-sha1 = "45d7deaf05cbb44116ba785d147c518ab46352d7"
> uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7"
> version = "8.5.0"
> 
> \[\[deps.GPUArraysCore\]\]
> deps = \["Adapt"\]
> git-tree-sha1 = "6872f5ec8fd1a38880f027a26739d42dcda6691f"
> uuid = "46192b85-c4d5-4398-a991-12ede77f4527"
> version = "0.1.2"
> 
> \[\[deps.HypergeometricFunctions\]\]
> deps = \["DualNumbers", "LinearAlgebra", "OpenLibm\_jll", "SpecialFunctions", "Test"\]
> git-tree-sha1 = "709d864e3ed6e3545230601f94e11ebc65994641"
> uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
> version = "0.3.11"
> 
> \[\[deps.IRTools\]\]
> deps = \["InteractiveUtils", "MacroTools", "Test"\]
> git-tree-sha1 = "af14a478780ca78d5eb9908b263023096c2b9d64"
> uuid = "7869d1d1-7146-5819-86e3-90919afe41df"
> version = "0.4.6"
> 
> \[\[deps.IfElse\]\]
> git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1"
> uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
> version = "0.1.1"
> 
> \[\[deps.InitialValues\]\]
> git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3"
> uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c"
> version = "0.3.1"
> 
> \[\[deps.InteractiveUtils\]\]
> deps = \["Markdown"\]
> uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
> 
> \[\[deps.InverseFunctions\]\]
> deps = \["Test"\]
> git-tree-sha1 = "b3364212fb5d870f724876ffcd34dd8ec6d98918"
> uuid = "3587e190-3f89-42d0-90ee-14403ec27112"
> version = "0.1.7"
> 
> \[\[deps.IrrationalConstants\]\]
> git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151"
> uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
> version = "0.1.1"
> 
> \[\[deps.IteratorInterfaceExtensions\]\]
> git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
> uuid = "82899510-4779-5014-852e-03e436cf321d"
> version = "1.0.0"
> 
> \[\[deps.JLLWrappers\]\]
> deps = \["Preferences"\]
> git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1"
> uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
> version = "1.4.1"
> 
> \[\[deps.JSON3\]\]
> deps = \["Dates", "Mmap", "Parsers", "StructTypes", "UUIDs"\]
> git-tree-sha1 = "fd6f0cae36f42525567108a42c1c674af2ac620d"
> uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
> version = "1.9.5"
> 
> \[\[deps.LLVM\]\]
> deps = \["CEnum", "LLVMExtra\_jll", "Libdl", "Printf", "Unicode"\]
> git-tree-sha1 = "e7e9184b0bf0158ac4e4aa9daf00041b5909bf1a"
> uuid = "929cbde3-209d-540e-8aea-75f648917ca0"
> version = "4.14.0"
> 
> \[\[deps.LLVMExtra\_jll\]\]
> deps = \["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg", "TOML"\]
> git-tree-sha1 = "771bfe376249626d3ca12bcd58ba243d3f961576"
> uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab"
> version = "0.0.16+0"
> 
> \[\[deps.LabelledArrays\]\]
> deps = \["ArrayInterfaceCore", "ArrayInterfaceStaticArrays", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"\]
> git-tree-sha1 = "3926535a04c12fb986028a4a86bf5a0a3cf88b91"
> uuid = "2ee39098-c373-598a-b85f-a56591580800"
> version = "1.12.0"
> 
> \[\[deps.LazyArtifacts\]\]
> deps = \["Artifacts", "Pkg"\]
> uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
> 
> \[\[deps.LibCURL\]\]
> deps = \["LibCURL\_jll", "MozillaCACerts\_jll"\]
> uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
> version = "0.6.3"
> 
> \[\[deps.LibCURL\_jll\]\]
> deps = \["Artifacts", "LibSSH2\_jll", "Libdl", "MbedTLS\_jll", "Zlib\_jll", "nghttp2\_jll"\]
> uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
> version = "7.84.0+0"
> 
> \[\[deps.LibGit2\]\]
> deps = \["Base64", "NetworkOptions", "Printf", "SHA"\]
> uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
> 
> \[\[deps.LibSSH2\_jll\]\]
> deps = \["Artifacts", "Libdl", "MbedTLS\_jll"\]
> uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
> version = "1.10.2+0"
> 
> \[\[deps.Libdl\]\]
> uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
> 
> \[\[deps.LineSearches\]\]
> deps = \["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"\]
> git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d"
> uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
> version = "7.2.0"
> 
> \[\[deps.LinearAlgebra\]\]
> deps = \["Libdl", "libblastrampoline\_jll"\]
> uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
> 
> \[\[deps.LogExpFunctions\]\]
> deps = \["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"\]
> git-tree-sha1 = "94d9c52ca447e23eac0c0f074effbcd38830deb5"
> uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
> version = "0.3.18"
> 
> \[\[deps.Logging\]\]
> uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
> 
> \[\[deps.LossFunctions\]\]
> deps = \["InteractiveUtils", "Markdown", "RecipesBase"\]
> git-tree-sha1 = "53cd63a12f06a43eef6f4aafb910ac755c122be7"
> uuid = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7"
> version = "0.8.0"
> 
> \[\[deps.MacroTools\]\]
> deps = \["Markdown", "Random"\]
> git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf"
> uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
> version = "0.5.9"
> 
> \[\[deps.Markdown\]\]
> deps = \["Base64"\]
> uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
> 
> \[\[deps.MbedTLS\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
> version = "2.28.0+0"
> 
> \[\[deps.Metatheory\]\]
> deps = \["AutoHashEquals", "DataStructures", "Dates", "DocStringExtensions", "Parameters", "Reexport", "TermInterface", "ThreadsX", "TimerOutputs"\]
> git-tree-sha1 = "a160e323d3684889e6026914576f1f4288de131d"
> uuid = "e9d8d322-4543-424a-9be4-0cc815abe26c"
> version = "1.3.4"
> 
> \[\[deps.MicroCollections\]\]
> deps = \["BangBang", "InitialValues", "Setfield"\]
> git-tree-sha1 = "6bb7786e4f24d44b4e29df03c69add1b63d88f01"
> uuid = "128add7d-3638-4c79-886c-908ea0c25c34"
> version = "0.1.2"
> 
> \[\[deps.Missings\]\]
> deps = \["DataAPI"\]
> git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f"
> uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
> version = "1.0.2"
> 
> \[\[deps.Mmap\]\]
> uuid = "a63ad114-7e13-5084-954f-fe012c677804"
> 
> \[\[deps.MozillaCACerts\_jll\]\]
> uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
> version = "2022.2.1"
> 
> \[\[deps.MultivariatePolynomials\]\]
> deps = \["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"\]
> git-tree-sha1 = "393fc4d82a73c6fe0e2963dd7c882b09257be537"
> uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3"
> version = "0.4.6"
> 
> \[\[deps.MutableArithmetics\]\]
> deps = \["LinearAlgebra", "SparseArrays", "Test"\]
> git-tree-sha1 = "4e675d6e9ec02061800d6cfb695812becbd03cdf"
> uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0"
> version = "1.0.4"
> 
> \[\[deps.NLSolversBase\]\]
> deps = \["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"\]
> git-tree-sha1 = "50310f934e55e5ca3912fb941dec199b49ca9b68"
> uuid = "d41bc354-129a-5804-8e4c-c37616107c6c"
> version = "7.8.2"
> 
> \[\[deps.NaNMath\]\]
> deps = \["OpenLibm\_jll"\]
> git-tree-sha1 = "a7c3d1da1189a1c2fe843a3bfa04d18d20eb3211"
> uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
> version = "1.0.1"
> 
> \[\[deps.NetworkOptions\]\]
> uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
> version = "1.2.0"
> 
> \[\[deps.OpenBLAS\_jll\]\]
> deps = \["Artifacts", "CompilerSupportLibraries\_jll", "Libdl"\]
> uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
> version = "0.3.20+0"
> 
> \[\[deps.OpenLibm\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
> version = "0.8.1+0"
> 
> \[\[deps.OpenSpecFun\_jll\]\]
> deps = \["Artifacts", "CompilerSupportLibraries\_jll", "JLLWrappers", "Libdl", "Pkg"\]
> git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1"
> uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
> version = "0.5.5+0"
> 
> \[\[deps.Optim\]\]
> deps = \["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"\]
> git-tree-sha1 = "ad8de074ed5dad13e87d76c467a82e5eff9c693a"
> uuid = "429524aa-4258-5aef-a3af-852621145aeb"
> version = "1.7.2"
> 
> \[\[deps.OrderedCollections\]\]
> git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c"
> uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
> version = "1.4.1"
> 
> \[\[deps.PDMats\]\]
> deps = \["LinearAlgebra", "SparseArrays", "SuiteSparse"\]
> git-tree-sha1 = "cf494dca75a69712a72b80bc48f59dcf3dea63ec"
> uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
> version = "0.11.16"
> 
> \[\[deps.Parameters\]\]
> deps = \["OrderedCollections", "UnPack"\]
> git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe"
> uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a"
> version = "0.12.3"
> 
> \[\[deps.Parsers\]\]
> deps = \["Dates"\]
> git-tree-sha1 = "3d5bf43e3e8b412656404ed9466f1dcbf7c50269"
> uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
> version = "2.4.0"
> 
> \[\[deps.Pkg\]\]
> deps = \["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip\_jll"\]
> uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
> version = "1.8.0"
> 
> \[\[deps.PositiveFactorizations\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20"
> uuid = "85a6dd25-e78a-55b7-8502-1745935b8125"
> version = "0.2.4"
> 
> \[\[deps.PreallocationTools\]\]
> deps = \["Adapt", "ArrayInterfaceCore", "ForwardDiff"\]
> git-tree-sha1 = "50bf1eae0ace9a993ddfa78e83f9b76a898faf36"
> uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46"
> version = "0.4.1"
> 
> \[\[deps.Preferences\]\]
> deps = \["TOML"\]
> git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d"
> uuid = "21216c6a-2e73-6563-6e65-726566657250"
> version = "1.3.0"
> 
> \[\[deps.Printf\]\]
> deps = \["Unicode"\]
> uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
> 
> \[\[deps.QuadGK\]\]
> deps = \["DataStructures", "LinearAlgebra"\]
> git-tree-sha1 = "3c009334f45dfd546a16a57960a821a1a023d241"
> uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
> version = "2.5.0"
> 
> \[\[deps.REPL\]\]
> deps = \["InteractiveUtils", "Markdown", "Sockets", "Unicode"\]
> uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
> 
> \[\[deps.Random\]\]
> deps = \["SHA", "Serialization"\]
> uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
> 
> \[\[deps.RealDot\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9"
> uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9"
> version = "0.1.0"
> 
> \[\[deps.RecipesBase\]\]
> git-tree-sha1 = "6bf3f380ff52ce0832ddd3a2a7b9538ed1bcca7d"
> uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
> version = "1.2.1"
> 
> \[\[deps.RecursiveArrayTools\]\]
> deps = \["Adapt", "ArrayInterfaceCore", "ArrayInterfaceStaticArraysCore", "ChainRulesCore", "DocStringExtensions", "FillArrays", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "Tables", "ZygoteRules"\]
> git-tree-sha1 = "3004608dc42101a944e44c1c68b599fa7c669080"
> uuid = "731186ca-8d62-57ce-b412-fbd966d074cd"
> version = "2.32.0"
> 
> \[\[deps.Reexport\]\]
> git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
> uuid = "189a3867-3050-52da-a836-e630ba90ab69"
> version = "1.2.2"
> 
> \[\[deps.Referenceables\]\]
> deps = \["Adapt"\]
> git-tree-sha1 = "e681d3bfa49cd46c3c161505caddf20f0e62aaa9"
> uuid = "42d2dcc6-99eb-4e98-b66c-637b7d73030e"
> version = "0.1.2"
> 
> \[\[deps.Requires\]\]
> deps = \["UUIDs"\]
> git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
> uuid = "ae029012-a4dd-5104-9daa-d747884805df"
> version = "1.3.0"
> 
> \[\[deps.Rmath\]\]
> deps = \["Random", "Rmath\_jll"\]
> git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f"
> uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
> version = "0.7.0"
> 
> \[\[deps.Rmath\_jll\]\]
> deps = \["Artifacts", "JLLWrappers", "Libdl", "Pkg"\]
> git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7"
> uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
> version = "0.3.0+0"
> 
> \[\[deps.SHA\]\]
> uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
> version = "0.7.0"
> 
> \[\[deps.Serialization\]\]
> uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
> 
> \[\[deps.Setfield\]\]
> deps = \["ConstructionBase", "Future", "MacroTools", "Requires"\]
> git-tree-sha1 = "38d88503f695eb0301479bc9b0d4320b378bafe5"
> uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46"
> version = "0.8.2"
> 
> \[\[deps.SharedArrays\]\]
> deps = \["Distributed", "Mmap", "Random", "Serialization"\]
> uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
> 
> \[\[deps.Sockets\]\]
> uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
> 
> \[\[deps.SortingAlgorithms\]\]
> deps = \["DataStructures"\]
> git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508"
> uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
> version = "1.0.1"
> 
> \[\[deps.SparseArrays\]\]
> deps = \["LinearAlgebra", "Random"\]
> uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
> 
> \[\[deps.SpecialFunctions\]\]
> deps = \["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm\_jll", "OpenSpecFun\_jll"\]
> git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d"
> uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
> version = "2.1.7"
> 
> \[\[deps.SplittablesBase\]\]
> deps = \["Setfield", "Test"\]
> git-tree-sha1 = "39c9f91521de844bad65049efd4f9223e7ed43f9"
> uuid = "171d559e-b47b-412a-8079-5efa626c420e"
> version = "0.1.14"
> 
> \[\[deps.Static\]\]
> deps = \["IfElse"\]
> git-tree-sha1 = "f94f9d627ba3f91e41a815b9f9f977d729e2e06f"
> uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
> version = "0.7.6"
> 
> \[\[deps.StaticArrays\]\]
> deps = \["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"\]
> git-tree-sha1 = "dfec37b90740e3b9aa5dc2613892a3fc155c3b42"
> uuid = "90137ffa-7385-5640-81b9-e52037218182"
> version = "1.5.6"
> 
> \[\[deps.StaticArraysCore\]\]
> git-tree-sha1 = "ec2bd695e905a3c755b33026954b119ea17f2d22"
> uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
> version = "1.3.0"
> 
> \[\[deps.Statistics\]\]
> deps = \["LinearAlgebra", "SparseArrays"\]
> uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
> 
> \[\[deps.StatsAPI\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6"
> uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
> version = "1.5.0"
> 
> \[\[deps.StatsBase\]\]
> deps = \["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"\]
> git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916"
> uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
> version = "0.33.21"
> 
> \[\[deps.StatsFuns\]\]
> deps = \["ChainRulesCore", "HypergeometricFunctions", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"\]
> git-tree-sha1 = "5783b877201a82fc0014cbf381e7e6eb130473a4"
> uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
> version = "1.0.1"
> 
> \[\[deps.StructArrays\]\]
> deps = \["Adapt", "DataAPI", "StaticArraysCore", "Tables"\]
> git-tree-sha1 = "8c6ac65ec9ab781af05b08ff305ddc727c25f680"
> uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
> version = "0.6.12"
> 
> \[\[deps.StructTypes\]\]
> deps = \["Dates", "UUIDs"\]
> git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70"
> uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
> version = "1.10.0"
> 
> \[\[deps.SuiteSparse\]\]
> deps = \["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"\]
> uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
> 
> \[\[deps.SymbolicRegression\]\]
> deps = \["Distributed", "JSON3", "LineSearches", "LinearAlgebra", "LossFunctions", "Optim", "Pkg", "PreallocationTools", "Printf", "Random", "Reexport", "SpecialFunctions", "SymbolicUtils", "Zygote"\]
> git-tree-sha1 = "46a3fcb433f06f00f60f706cf281a6d8bcb509dc"
> uuid = "8254be44-1295-4e6a-a16d-46603ac705cb"
> version = "0.10.2"
> 
> \[\[deps.SymbolicUtils\]\]
> deps = \["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "Metatheory", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TermInterface", "TimerOutputs"\]
> git-tree-sha1 = "027b43d312f6d52187bb16c2d4f0588ddb8c4bb2"
> uuid = "d1185830-fcd6-423d-90d6-eec64667417b"
> version = "0.19.11"
> 
> \[\[deps.TOML\]\]
> deps = \["Dates"\]
> uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
> version = "1.0.0"
> 
> \[\[deps.TableTraits\]\]
> deps = \["IteratorInterfaceExtensions"\]
> git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
> uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
> version = "1.0.1"
> 
> \[\[deps.Tables\]\]
> deps = \["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"\]
> git-tree-sha1 = "5ce79ce186cc678bbb5c5681ca3379d1ddae11a1"
> uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
> version = "1.7.0"
> 
> \[\[deps.Tar\]\]
> deps = \["ArgTools", "SHA"\]
> uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
> version = "1.10.0"
> 
> \[\[deps.TermInterface\]\]
> git-tree-sha1 = "7aa601f12708243987b88d1b453541a75e3d8c7a"
> uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c"
> version = "0.2.3"
> 
> \[\[deps.Test\]\]
> deps = \["InteractiveUtils", "Logging", "Random", "Serialization"\]
> uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
> 
> \[\[deps.ThreadsX\]\]
> deps = \["ArgCheck", "BangBang", "ConstructionBase", "InitialValues", "MicroCollections", "Referenceables", "Setfield", "SplittablesBase", "Transducers"\]
> git-tree-sha1 = "d223de97c948636a4f34d1f84d92fd7602dc555b"
> uuid = "ac1d9e8a-700a-412c-b207-f0111f4b6c0d"
> version = "0.1.10"
> 
> \[\[deps.TimerOutputs\]\]
> deps = \["ExprTools", "Printf"\]
> git-tree-sha1 = "9dfcb767e17b0849d6aaf85997c98a5aea292513"
> uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
> version = "0.5.21"
> 
> \[\[deps.Transducers\]\]
> deps = \["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"\]
> git-tree-sha1 = "c76399a3bbe6f5a88faa33c8f8a65aa631d95013"
> uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999"
> version = "0.4.73"
> 
> \[\[deps.UUIDs\]\]
> deps = \["Random", "SHA"\]
> uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
> 
> \[\[deps.UnPack\]\]
> git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b"
> uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
> version = "1.0.2"
> 
> \[\[deps.Unicode\]\]
> uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
> 
> \[\[deps.Zlib\_jll\]\]
> deps = \["Libdl"\]
> uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
> version = "1.2.12+3"
> 
> \[\[deps.Zygote\]\]
> deps = \["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"\]
> git-tree-sha1 = "c3f4af6b167f0c181148650221a4cbabf6bbb8a6"
> uuid = "e88e6eb3-aa80-5325-afca-941959d7151f"
> version = "0.6.47"
> 
> \[\[deps.ZygoteRules\]\]
> deps = \["MacroTools"\]
> git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0"
> uuid = "700de1a5-db45-46bc-99cf-38207098b444"
> version = "0.2.2"
> 
> \[\[deps.libblastrampoline\_jll\]\]
> deps = \["Artifacts", "Libdl", "OpenBLAS\_jll"\]
> uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
> version = "5.1.1+0"
> 
> \[\[deps.nghttp2\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
> version = "1.48.0+0"
> 
> \[\[deps.p7zip\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
> version = "17.4.0+0"
> \`\`\`
> 
> \</details\>
> 
> Practically, it may be possible to build the Project.toml file. We can then generate the Manifest.toml by invoking \`Pkg.resolve()\`.
> 
> The summary of this experiment is as follows.
> 1. We created individual depots and environments for two packages: SymbolicRegression.jl and BitInformation.jl
> 2. We created a common depot and environment for both of them. Because the individual depots were lower on the depot stack, we didn't need to install any additional packages.
> 3. Having the two depots around did not hinder the creation of the common environment. In fact, it made it significantly faster since the packages were already locally available.
> 4. Note that I did not manipulate the \`JULIA\_LOAD\_PATH\`. The only modification to code loading I did was creating the depot stack and activating different projects.
> 5. The bottom line here is the depot preloading does not interfere with creating the common environment between the two packages.
> 
> You guys are getting distracted by the \`JULIA\_PROJECT\` and \`JULIA\_LOAD\_PATH\` manipulation. This is only temporarily filling in for something the Python packages themselves can do. The main point is that we can package depots with preconfigured environments that do not need further installation.
> 
> Solving the conflicting version dependency issue is one step further. It either needs the user to create the common environment or we need to do something in a post-link script. Nonetheless, packaging the depots help rather than hinder the creation of the common environment. They also allow the distinct environments to be completely installed.

> <https://github.com/conda-forge/pysr-feedstock/pull/43#issuecomment-1237630200>
>
> Let's be practical and discuss the two large packages we actually have before us…. To resolve the problem for SymbolicRegression.jl (used by pysr) and BitInformation.jl (used by xbitinfo) we need to add them to the same Julia project environment. I'll first point out that is not practical for either pysr or xbitinfo because both Python packages activate individual Julia environments when you run the Python packages. Let's say we do it anyways.
> 
> For either package, having both depots present does not hinder anything. For this discussion I will create two depots
> 1. pysr\_depot
> 2. xbitinfo\_depot
> 
> These each respectively contain an environment.
> 1. pysr\_env
> 2. xbitinfo\_env
> 
> To the environments, I added a single package:
> 1. SymbolicRegressions.jl
> 2. BitInformation.jl
> 
> Now we have two individual depots. Here's how many packages are installed.
> \`\`\`
> $ ls pysr\_depot/packages | wc -l
> 93
> $ ls xbitinfo\_depot/packages | wc -l
> 32
> \`\`\`
> 
> Now I'll construct a common depot and put at the top of the depot stack while placing the two other depots underneath it.
> \`\`\`julia
> julia\> empty!(DEPOT\_PATH)
> String\[\]
> 
> julia\> mkpath("common\_depot/environments/common\_env")
> "common\_depot/environments/common\_env"
> 
> julia\> push!(DEPOT\_PATH, "common\_depot")
> 1-element Vector{String}:
> "common\_depot"
> 
> julia\> push!(DEPOT\_PATH, "pysr\_depot")
> 2-element Vector{String}:
> "common\_depot"
> "pysr\_depot"
> 
> julia\> push!(DEPOT\_PATH, "xbitinfo\_depot")
> 3-element Vector{String}:
> "common\_depot"
> "pysr\_depot"
> "xbitinfo\_depot"
> 
> julia\> Pkg.activate("common\_depot/environments/common\_env")
> Activating new project at \`~/src/depottest/common\_depot/environments/common\_env\`
> 
> julia\> pkg"add SymbolicRegression BitInformation"
> Resolving package versions...
> ...
> 
> julia\> pkg"status"
> Status \`~/src/depottest/common\_depot/environments/common\_env/Project.toml\`
> \[de688a37\] BitInformation v0.6.0
> \[8254be44\] SymbolicRegression v0.10.2
> \`\`\`
> 
> When I added both packages to the same environment, no downloads had to occur. In fact, if we look for \`common\_depot/packages\` we see that the directory does not even exist. We didn't need to "install" any additional packages!
> 
> \`\`\`julia
> julia\> readdir(DEPOT\_PATH\[1\])
> 4-element Vector{String}:
> "compiled"
> "environments"
> "logs"
> "scratchspaces"
> \`\`\`
> 
> What is in \`common\_depot/environments/common\_env\`? Two files
> 1. Project.toml
> 2. Manifest.toml
> 
> \`\`\`
> $ ls common\_depot/environments/common\_env/
> Manifest.toml Project.toml
> 
> $ cat common\_depot/environments/common\_env/Project.toml 
> \[deps\]
> BitInformation = "de688a37-743e-4ac2-a6f0-bd62414d1aa7"
> SymbolicRegression = "8254be44-1295-4e6a-a16d-46603ac705cb"
> 
> 
> $ cat common\_depot/environments/common\_env/Manifest.toml 
> \# This file is machine-generated - editing it directly is not advised
> 
> julia\_version = "1.8.0"
> manifest\_format = "2.0"
> project\_hash = "c901445fd3719cd02549f8ebb4f6634de8639c29"
> 
> \[\[deps.AbstractFFTs\]\]
> deps = \["ChainRulesCore", "LinearAlgebra"\]
> git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409"
> uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
> version = "1.2.1"
> ...
> \`\`\`
> 
> \<details\>
> \<summary\>Full Manifest.toml\</summary\>
> 
> \`\`\`
> \# This file is machine-generated - editing it directly is not advised
> 
> julia\_version = "1.8.0"
> manifest\_format = "2.0"
> project\_hash = "c901445fd3719cd02549f8ebb4f6634de8639c29"
> 
> \[\[deps.AbstractFFTs\]\]
> deps = \["ChainRulesCore", "LinearAlgebra"\]
> git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409"
> uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
> version = "1.2.1"
> 
> \[\[deps.AbstractTrees\]\]
> git-tree-sha1 = "5c0b629df8a5566a06f5fef5100b53ea56e465a0"
> uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c"
> version = "0.4.2"
> 
> \[\[deps.Adapt\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "195c5505521008abea5aee4f96930717958eac6f"
> uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
> version = "3.4.0"
> 
> \[\[deps.ArgCheck\]\]
> git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4"
> uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197"
> version = "2.3.0"
> 
> \[\[deps.ArgTools\]\]
> uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
> version = "1.1.1"
> 
> \[\[deps.ArrayInterface\]\]
> deps = \["ArrayInterfaceCore", "Compat", "IfElse", "LinearAlgebra", "Static"\]
> git-tree-sha1 = "d6173480145eb632d6571c148d94b9d3d773820e"
> uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
> version = "6.0.23"
> 
> \[\[deps.ArrayInterfaceCore\]\]
> deps = \["LinearAlgebra", "SparseArrays", "SuiteSparse"\]
> git-tree-sha1 = "5bb0f8292405a516880a3809954cb832ae7a31c5"
> uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2"
> version = "0.1.20"
> 
> \[\[deps.ArrayInterfaceStaticArrays\]\]
> deps = \["Adapt", "ArrayInterface", "ArrayInterfaceStaticArraysCore", "LinearAlgebra", "Static", "StaticArrays"\]
> git-tree-sha1 = "efb000a9f643f018d5154e56814e338b5746c560"
> uuid = "b0d46f97-bff5-4637-a19a-dd75974142cd"
> version = "0.1.4"
> 
> \[\[deps.ArrayInterfaceStaticArraysCore\]\]
> deps = \["Adapt", "ArrayInterfaceCore", "LinearAlgebra", "StaticArraysCore"\]
> git-tree-sha1 = "a1e2cf6ced6505cbad2490532388683f1e88c3ed"
> uuid = "dd5226c6-a4d4-4bc7-8575-46859f9c95b9"
> version = "0.1.0"
> 
> \[\[deps.Artifacts\]\]
> uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
> 
> \[\[deps.AutoHashEquals\]\]
> git-tree-sha1 = "45bb6705d93be619b81451bb2006b7ee5d4e4453"
> uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f"
> version = "0.2.0"
> 
> \[\[deps.BangBang\]\]
> deps = \["Compat", "ConstructionBase", "Future", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables", "ZygoteRules"\]
> git-tree-sha1 = "b15a6bc52594f5e4a3b825858d1089618871bf9d"
> uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66"
> version = "0.3.36"
> 
> \[\[deps.Base64\]\]
> uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
> 
> \[\[deps.Baselet\]\]
> git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e"
> uuid = "9718e550-a3fa-408a-8086-8db961cd8217"
> version = "0.1.1"
> 
> \[\[deps.Bijections\]\]
> git-tree-sha1 = "fe4f8c5ee7f76f2198d5c2a06d3961c249cce7bd"
> uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04"
> version = "0.1.4"
> 
> \[\[deps.BitInformation\]\]
> deps = \["Distributions", "Random", "StatsBase"\]
> git-tree-sha1 = "9003617f8ba48b69c3316b9e6f45fa376ef24fd0"
> uuid = "de688a37-743e-4ac2-a6f0-bd62414d1aa7"
> version = "0.6.0"
> 
> \[\[deps.CEnum\]\]
> git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90"
> uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
> version = "0.4.2"
> 
> \[\[deps.Calculus\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad"
> uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9"
> version = "0.5.1"
> 
> \[\[deps.ChainRules\]\]
> deps = \["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics", "StructArrays"\]
> git-tree-sha1 = "a5fd229d3569a6600ae47abe8cd48cbeb972e173"
> uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2"
> version = "1.44.6"
> 
> \[\[deps.ChainRulesCore\]\]
> deps = \["Compat", "LinearAlgebra", "SparseArrays"\]
> git-tree-sha1 = "8a494fe0c4ae21047f28eb48ac968f0b8a6fcaa7"
> uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
> version = "1.15.4"
> 
> \[\[deps.ChangesOfVariables\]\]
> deps = \["ChainRulesCore", "LinearAlgebra", "Test"\]
> git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8"
> uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0"
> version = "0.1.4"
> 
> \[\[deps.Combinatorics\]\]
> git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860"
> uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
> version = "1.0.2"
> 
> \[\[deps.CommonSubexpressions\]\]
> deps = \["MacroTools", "Test"\]
> git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7"
> uuid = "bbf7d656-a473-5ed7-a52c-81e309532950"
> version = "0.3.0"
> 
> \[\[deps.Compat\]\]
> deps = \["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"\]
> git-tree-sha1 = "78bee250c6826e1cf805a88b7f1e86025275d208"
> uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
> version = "3.46.0"
> 
> \[\[deps.CompilerSupportLibraries\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
> version = "0.5.2+0"
> 
> \[\[deps.CompositionsBase\]\]
> git-tree-sha1 = "455419f7e328a1a2493cabc6428d79e951349769"
> uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b"
> version = "0.1.1"
> 
> \[\[deps.ConstructionBase\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "fb21ddd70a051d882a1686a5a550990bbe371a95"
> uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9"
> version = "1.4.1"
> 
> \[\[deps.DataAPI\]\]
> git-tree-sha1 = "fb5f5316dd3fd4c5e7c30a24d50643b73e37cd40"
> uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
> version = "1.10.0"
> 
> \[\[deps.DataStructures\]\]
> deps = \["Compat", "InteractiveUtils", "OrderedCollections"\]
> git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0"
> uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
> version = "0.18.13"
> 
> \[\[deps.DataValueInterfaces\]\]
> git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6"
> uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464"
> version = "1.0.0"
> 
> \[\[deps.Dates\]\]
> deps = \["Printf"\]
> uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
> 
> \[\[deps.DefineSingletons\]\]
> git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c"
> uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52"
> version = "0.1.2"
> 
> \[\[deps.DelimitedFiles\]\]
> deps = \["Mmap"\]
> uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
> 
> \[\[deps.DensityInterface\]\]
> deps = \["InverseFunctions", "Test"\]
> git-tree-sha1 = "80c3e8639e3353e5d2912fb3a1916b8455e2494b"
> uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d"
> version = "0.4.0"
> 
> \[\[deps.DiffResults\]\]
> deps = \["StaticArrays"\]
> git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805"
> uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
> version = "1.0.3"
> 
> \[\[deps.DiffRules\]\]
> deps = \["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"\]
> git-tree-sha1 = "992a23afdb109d0d2f8802a30cf5ae4b1fe7ea68"
> uuid = "b552c78f-8df3-52c6-915a-8e097449b14b"
> version = "1.11.1"
> 
> \[\[deps.Distributed\]\]
> deps = \["Random", "Serialization", "Sockets"\]
> uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
> 
> \[\[deps.Distributions\]\]
> deps = \["ChainRulesCore", "DensityInterface", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Test"\]
> git-tree-sha1 = "8579b5cdae93e55c0cff50fbb0c2d1220efd5beb"
> uuid = "31c24e10-a181-5473-b8eb-7969acd0382f"
> version = "0.25.70"
> 
> \[\[deps.DocStringExtensions\]\]
> deps = \["LibGit2"\]
> git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b"
> uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
> version = "0.8.6"
> 
> \[\[deps.Downloads\]\]
> deps = \["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"\]
> uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
> version = "1.6.0"
> 
> \[\[deps.DualNumbers\]\]
> deps = \["Calculus", "NaNMath", "SpecialFunctions"\]
> git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566"
> uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74"
> version = "0.6.8"
> 
> \[\[deps.DynamicPolynomials\]\]
> deps = \["DataStructures", "Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"\]
> git-tree-sha1 = "d0fa82f39c2a5cdb3ee385ad52bc05c42cb4b9f0"
> uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07"
> version = "0.4.5"
> 
> \[\[deps.ExprTools\]\]
> git-tree-sha1 = "56559bbef6ca5ea0c0818fa5c90320398a6fbf8d"
> uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04"
> version = "0.1.8"
> 
> \[\[deps.FileWatching\]\]
> uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
> 
> \[\[deps.FillArrays\]\]
> deps = \["LinearAlgebra", "Random", "SparseArrays", "Statistics"\]
> git-tree-sha1 = "87519eb762f85534445f5cda35be12e32759ee14"
> uuid = "1a297f60-69ca-5386-bcde-b61e274b549b"
> version = "0.13.4"
> 
> \[\[deps.FiniteDiff\]\]
> deps = \["ArrayInterfaceCore", "LinearAlgebra", "Requires", "Setfield", "SparseArrays", "StaticArrays"\]
> git-tree-sha1 = "5a2cff9b6b77b33b89f3d97a4d367747adce647e"
> uuid = "6a86dc24-6348-571c-b903-95158fe2bd41"
> version = "2.15.0"
> 
> \[\[deps.ForwardDiff\]\]
> deps = \["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"\]
> git-tree-sha1 = "187198a4ed8ccd7b5d99c41b69c679269ea2b2d4"
> uuid = "f6369f11-7733-5829-9624-2563aa707210"
> version = "0.10.32"
> 
> \[\[deps.Future\]\]
> deps = \["Random"\]
> uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820"
> 
> \[\[deps.GPUArrays\]\]
> deps = \["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"\]
> git-tree-sha1 = "45d7deaf05cbb44116ba785d147c518ab46352d7"
> uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7"
> version = "8.5.0"
> 
> \[\[deps.GPUArraysCore\]\]
> deps = \["Adapt"\]
> git-tree-sha1 = "6872f5ec8fd1a38880f027a26739d42dcda6691f"
> uuid = "46192b85-c4d5-4398-a991-12ede77f4527"
> version = "0.1.2"
> 
> \[\[deps.HypergeometricFunctions\]\]
> deps = \["DualNumbers", "LinearAlgebra", "OpenLibm\_jll", "SpecialFunctions", "Test"\]
> git-tree-sha1 = "709d864e3ed6e3545230601f94e11ebc65994641"
> uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a"
> version = "0.3.11"
> 
> \[\[deps.IRTools\]\]
> deps = \["InteractiveUtils", "MacroTools", "Test"\]
> git-tree-sha1 = "af14a478780ca78d5eb9908b263023096c2b9d64"
> uuid = "7869d1d1-7146-5819-86e3-90919afe41df"
> version = "0.4.6"
> 
> \[\[deps.IfElse\]\]
> git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1"
> uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
> version = "0.1.1"
> 
> \[\[deps.InitialValues\]\]
> git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3"
> uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c"
> version = "0.3.1"
> 
> \[\[deps.InteractiveUtils\]\]
> deps = \["Markdown"\]
> uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
> 
> \[\[deps.InverseFunctions\]\]
> deps = \["Test"\]
> git-tree-sha1 = "b3364212fb5d870f724876ffcd34dd8ec6d98918"
> uuid = "3587e190-3f89-42d0-90ee-14403ec27112"
> version = "0.1.7"
> 
> \[\[deps.IrrationalConstants\]\]
> git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151"
> uuid = "92d709cd-6900-40b7-9082-c6be49f344b6"
> version = "0.1.1"
> 
> \[\[deps.IteratorInterfaceExtensions\]\]
> git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
> uuid = "82899510-4779-5014-852e-03e436cf321d"
> version = "1.0.0"
> 
> \[\[deps.JLLWrappers\]\]
> deps = \["Preferences"\]
> git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1"
> uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
> version = "1.4.1"
> 
> \[\[deps.JSON3\]\]
> deps = \["Dates", "Mmap", "Parsers", "StructTypes", "UUIDs"\]
> git-tree-sha1 = "fd6f0cae36f42525567108a42c1c674af2ac620d"
> uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
> version = "1.9.5"
> 
> \[\[deps.LLVM\]\]
> deps = \["CEnum", "LLVMExtra\_jll", "Libdl", "Printf", "Unicode"\]
> git-tree-sha1 = "e7e9184b0bf0158ac4e4aa9daf00041b5909bf1a"
> uuid = "929cbde3-209d-540e-8aea-75f648917ca0"
> version = "4.14.0"
> 
> \[\[deps.LLVMExtra\_jll\]\]
> deps = \["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg", "TOML"\]
> git-tree-sha1 = "771bfe376249626d3ca12bcd58ba243d3f961576"
> uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab"
> version = "0.0.16+0"
> 
> \[\[deps.LabelledArrays\]\]
> deps = \["ArrayInterfaceCore", "ArrayInterfaceStaticArrays", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"\]
> git-tree-sha1 = "3926535a04c12fb986028a4a86bf5a0a3cf88b91"
> uuid = "2ee39098-c373-598a-b85f-a56591580800"
> version = "1.12.0"
> 
> \[\[deps.LazyArtifacts\]\]
> deps = \["Artifacts", "Pkg"\]
> uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3"
> 
> \[\[deps.LibCURL\]\]
> deps = \["LibCURL\_jll", "MozillaCACerts\_jll"\]
> uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
> version = "0.6.3"
> 
> \[\[deps.LibCURL\_jll\]\]
> deps = \["Artifacts", "LibSSH2\_jll", "Libdl", "MbedTLS\_jll", "Zlib\_jll", "nghttp2\_jll"\]
> uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
> version = "7.84.0+0"
> 
> \[\[deps.LibGit2\]\]
> deps = \["Base64", "NetworkOptions", "Printf", "SHA"\]
> uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
> 
> \[\[deps.LibSSH2\_jll\]\]
> deps = \["Artifacts", "Libdl", "MbedTLS\_jll"\]
> uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
> version = "1.10.2+0"
> 
> \[\[deps.Libdl\]\]
> uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
> 
> \[\[deps.LineSearches\]\]
> deps = \["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"\]
> git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d"
> uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255"
> version = "7.2.0"
> 
> \[\[deps.LinearAlgebra\]\]
> deps = \["Libdl", "libblastrampoline\_jll"\]
> uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
> 
> \[\[deps.LogExpFunctions\]\]
> deps = \["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"\]
> git-tree-sha1 = "94d9c52ca447e23eac0c0f074effbcd38830deb5"
> uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
> version = "0.3.18"
> 
> \[\[deps.Logging\]\]
> uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
> 
> \[\[deps.LossFunctions\]\]
> deps = \["InteractiveUtils", "Markdown", "RecipesBase"\]
> git-tree-sha1 = "53cd63a12f06a43eef6f4aafb910ac755c122be7"
> uuid = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7"
> version = "0.8.0"
> 
> \[\[deps.MacroTools\]\]
> deps = \["Markdown", "Random"\]
> git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf"
> uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
> version = "0.5.9"
> 
> \[\[deps.Markdown\]\]
> deps = \["Base64"\]
> uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
> 
> \[\[deps.MbedTLS\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
> version = "2.28.0+0"
> 
> \[\[deps.Metatheory\]\]
> deps = \["AutoHashEquals", "DataStructures", "Dates", "DocStringExtensions", "Parameters", "Reexport", "TermInterface", "ThreadsX", "TimerOutputs"\]
> git-tree-sha1 = "a160e323d3684889e6026914576f1f4288de131d"
> uuid = "e9d8d322-4543-424a-9be4-0cc815abe26c"
> version = "1.3.4"
> 
> \[\[deps.MicroCollections\]\]
> deps = \["BangBang", "InitialValues", "Setfield"\]
> git-tree-sha1 = "6bb7786e4f24d44b4e29df03c69add1b63d88f01"
> uuid = "128add7d-3638-4c79-886c-908ea0c25c34"
> version = "0.1.2"
> 
> \[\[deps.Missings\]\]
> deps = \["DataAPI"\]
> git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f"
> uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28"
> version = "1.0.2"
> 
> \[\[deps.Mmap\]\]
> uuid = "a63ad114-7e13-5084-954f-fe012c677804"
> 
> \[\[deps.MozillaCACerts\_jll\]\]
> uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
> version = "2022.2.1"
> 
> \[\[deps.MultivariatePolynomials\]\]
> deps = \["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"\]
> git-tree-sha1 = "393fc4d82a73c6fe0e2963dd7c882b09257be537"
> uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3"
> version = "0.4.6"
> 
> \[\[deps.MutableArithmetics\]\]
> deps = \["LinearAlgebra", "SparseArrays", "Test"\]
> git-tree-sha1 = "4e675d6e9ec02061800d6cfb695812becbd03cdf"
> uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0"
> version = "1.0.4"
> 
> \[\[deps.NLSolversBase\]\]
> deps = \["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"\]
> git-tree-sha1 = "50310f934e55e5ca3912fb941dec199b49ca9b68"
> uuid = "d41bc354-129a-5804-8e4c-c37616107c6c"
> version = "7.8.2"
> 
> \[\[deps.NaNMath\]\]
> deps = \["OpenLibm\_jll"\]
> git-tree-sha1 = "a7c3d1da1189a1c2fe843a3bfa04d18d20eb3211"
> uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
> version = "1.0.1"
> 
> \[\[deps.NetworkOptions\]\]
> uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
> version = "1.2.0"
> 
> \[\[deps.OpenBLAS\_jll\]\]
> deps = \["Artifacts", "CompilerSupportLibraries\_jll", "Libdl"\]
> uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
> version = "0.3.20+0"
> 
> \[\[deps.OpenLibm\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
> version = "0.8.1+0"
> 
> \[\[deps.OpenSpecFun\_jll\]\]
> deps = \["Artifacts", "CompilerSupportLibraries\_jll", "JLLWrappers", "Libdl", "Pkg"\]
> git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1"
> uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
> version = "0.5.5+0"
> 
> \[\[deps.Optim\]\]
> deps = \["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"\]
> git-tree-sha1 = "ad8de074ed5dad13e87d76c467a82e5eff9c693a"
> uuid = "429524aa-4258-5aef-a3af-852621145aeb"
> version = "1.7.2"
> 
> \[\[deps.OrderedCollections\]\]
> git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c"
> uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
> version = "1.4.1"
> 
> \[\[deps.PDMats\]\]
> deps = \["LinearAlgebra", "SparseArrays", "SuiteSparse"\]
> git-tree-sha1 = "cf494dca75a69712a72b80bc48f59dcf3dea63ec"
> uuid = "90014a1f-27ba-587c-ab20-58faa44d9150"
> version = "0.11.16"
> 
> \[\[deps.Parameters\]\]
> deps = \["OrderedCollections", "UnPack"\]
> git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe"
> uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a"
> version = "0.12.3"
> 
> \[\[deps.Parsers\]\]
> deps = \["Dates"\]
> git-tree-sha1 = "3d5bf43e3e8b412656404ed9466f1dcbf7c50269"
> uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
> version = "2.4.0"
> 
> \[\[deps.Pkg\]\]
> deps = \["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip\_jll"\]
> uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
> version = "1.8.0"
> 
> \[\[deps.PositiveFactorizations\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20"
> uuid = "85a6dd25-e78a-55b7-8502-1745935b8125"
> version = "0.2.4"
> 
> \[\[deps.PreallocationTools\]\]
> deps = \["Adapt", "ArrayInterfaceCore", "ForwardDiff"\]
> git-tree-sha1 = "50bf1eae0ace9a993ddfa78e83f9b76a898faf36"
> uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46"
> version = "0.4.1"
> 
> \[\[deps.Preferences\]\]
> deps = \["TOML"\]
> git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d"
> uuid = "21216c6a-2e73-6563-6e65-726566657250"
> version = "1.3.0"
> 
> \[\[deps.Printf\]\]
> deps = \["Unicode"\]
> uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
> 
> \[\[deps.QuadGK\]\]
> deps = \["DataStructures", "LinearAlgebra"\]
> git-tree-sha1 = "3c009334f45dfd546a16a57960a821a1a023d241"
> uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
> version = "2.5.0"
> 
> \[\[deps.REPL\]\]
> deps = \["InteractiveUtils", "Markdown", "Sockets", "Unicode"\]
> uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
> 
> \[\[deps.Random\]\]
> deps = \["SHA", "Serialization"\]
> uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
> 
> \[\[deps.RealDot\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9"
> uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9"
> version = "0.1.0"
> 
> \[\[deps.RecipesBase\]\]
> git-tree-sha1 = "6bf3f380ff52ce0832ddd3a2a7b9538ed1bcca7d"
> uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
> version = "1.2.1"
> 
> \[\[deps.RecursiveArrayTools\]\]
> deps = \["Adapt", "ArrayInterfaceCore", "ArrayInterfaceStaticArraysCore", "ChainRulesCore", "DocStringExtensions", "FillArrays", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "Tables", "ZygoteRules"\]
> git-tree-sha1 = "3004608dc42101a944e44c1c68b599fa7c669080"
> uuid = "731186ca-8d62-57ce-b412-fbd966d074cd"
> version = "2.32.0"
> 
> \[\[deps.Reexport\]\]
> git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
> uuid = "189a3867-3050-52da-a836-e630ba90ab69"
> version = "1.2.2"
> 
> \[\[deps.Referenceables\]\]
> deps = \["Adapt"\]
> git-tree-sha1 = "e681d3bfa49cd46c3c161505caddf20f0e62aaa9"
> uuid = "42d2dcc6-99eb-4e98-b66c-637b7d73030e"
> version = "0.1.2"
> 
> \[\[deps.Requires\]\]
> deps = \["UUIDs"\]
> git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7"
> uuid = "ae029012-a4dd-5104-9daa-d747884805df"
> version = "1.3.0"
> 
> \[\[deps.Rmath\]\]
> deps = \["Random", "Rmath\_jll"\]
> git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f"
> uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa"
> version = "0.7.0"
> 
> \[\[deps.Rmath\_jll\]\]
> deps = \["Artifacts", "JLLWrappers", "Libdl", "Pkg"\]
> git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7"
> uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
> version = "0.3.0+0"
> 
> \[\[deps.SHA\]\]
> uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
> version = "0.7.0"
> 
> \[\[deps.Serialization\]\]
> uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
> 
> \[\[deps.Setfield\]\]
> deps = \["ConstructionBase", "Future", "MacroTools", "Requires"\]
> git-tree-sha1 = "38d88503f695eb0301479bc9b0d4320b378bafe5"
> uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46"
> version = "0.8.2"
> 
> \[\[deps.SharedArrays\]\]
> deps = \["Distributed", "Mmap", "Random", "Serialization"\]
> uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
> 
> \[\[deps.Sockets\]\]
> uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
> 
> \[\[deps.SortingAlgorithms\]\]
> deps = \["DataStructures"\]
> git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508"
> uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c"
> version = "1.0.1"
> 
> \[\[deps.SparseArrays\]\]
> deps = \["LinearAlgebra", "Random"\]
> uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
> 
> \[\[deps.SpecialFunctions\]\]
> deps = \["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm\_jll", "OpenSpecFun\_jll"\]
> git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d"
> uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
> version = "2.1.7"
> 
> \[\[deps.SplittablesBase\]\]
> deps = \["Setfield", "Test"\]
> git-tree-sha1 = "39c9f91521de844bad65049efd4f9223e7ed43f9"
> uuid = "171d559e-b47b-412a-8079-5efa626c420e"
> version = "0.1.14"
> 
> \[\[deps.Static\]\]
> deps = \["IfElse"\]
> git-tree-sha1 = "f94f9d627ba3f91e41a815b9f9f977d729e2e06f"
> uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
> version = "0.7.6"
> 
> \[\[deps.StaticArrays\]\]
> deps = \["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"\]
> git-tree-sha1 = "dfec37b90740e3b9aa5dc2613892a3fc155c3b42"
> uuid = "90137ffa-7385-5640-81b9-e52037218182"
> version = "1.5.6"
> 
> \[\[deps.StaticArraysCore\]\]
> git-tree-sha1 = "ec2bd695e905a3c755b33026954b119ea17f2d22"
> uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
> version = "1.3.0"
> 
> \[\[deps.Statistics\]\]
> deps = \["LinearAlgebra", "SparseArrays"\]
> uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
> 
> \[\[deps.StatsAPI\]\]
> deps = \["LinearAlgebra"\]
> git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6"
> uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0"
> version = "1.5.0"
> 
> \[\[deps.StatsBase\]\]
> deps = \["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"\]
> git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916"
> uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
> version = "0.33.21"
> 
> \[\[deps.StatsFuns\]\]
> deps = \["ChainRulesCore", "HypergeometricFunctions", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"\]
> git-tree-sha1 = "5783b877201a82fc0014cbf381e7e6eb130473a4"
> uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
> version = "1.0.1"
> 
> \[\[deps.StructArrays\]\]
> deps = \["Adapt", "DataAPI", "StaticArraysCore", "Tables"\]
> git-tree-sha1 = "8c6ac65ec9ab781af05b08ff305ddc727c25f680"
> uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
> version = "0.6.12"
> 
> \[\[deps.StructTypes\]\]
> deps = \["Dates", "UUIDs"\]
> git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70"
> uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
> version = "1.10.0"
> 
> \[\[deps.SuiteSparse\]\]
> deps = \["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"\]
> uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9"
> 
> \[\[deps.SymbolicRegression\]\]
> deps = \["Distributed", "JSON3", "LineSearches", "LinearAlgebra", "LossFunctions", "Optim", "Pkg", "PreallocationTools", "Printf", "Random", "Reexport", "SpecialFunctions", "SymbolicUtils", "Zygote"\]
> git-tree-sha1 = "46a3fcb433f06f00f60f706cf281a6d8bcb509dc"
> uuid = "8254be44-1295-4e6a-a16d-46603ac705cb"
> version = "0.10.2"
> 
> \[\[deps.SymbolicUtils\]\]
> deps = \["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "Metatheory", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TermInterface", "TimerOutputs"\]
> git-tree-sha1 = "027b43d312f6d52187bb16c2d4f0588ddb8c4bb2"
> uuid = "d1185830-fcd6-423d-90d6-eec64667417b"
> version = "0.19.11"
> 
> \[\[deps.TOML\]\]
> deps = \["Dates"\]
> uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
> version = "1.0.0"
> 
> \[\[deps.TableTraits\]\]
> deps = \["IteratorInterfaceExtensions"\]
> git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39"
> uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c"
> version = "1.0.1"
> 
> \[\[deps.Tables\]\]
> deps = \["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"\]
> git-tree-sha1 = "5ce79ce186cc678bbb5c5681ca3379d1ddae11a1"
> uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
> version = "1.7.0"
> 
> \[\[deps.Tar\]\]
> deps = \["ArgTools", "SHA"\]
> uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
> version = "1.10.0"
> 
> \[\[deps.TermInterface\]\]
> git-tree-sha1 = "7aa601f12708243987b88d1b453541a75e3d8c7a"
> uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c"
> version = "0.2.3"
> 
> \[\[deps.Test\]\]
> deps = \["InteractiveUtils", "Logging", "Random", "Serialization"\]
> uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
> 
> \[\[deps.ThreadsX\]\]
> deps = \["ArgCheck", "BangBang", "ConstructionBase", "InitialValues", "MicroCollections", "Referenceables", "Setfield", "SplittablesBase", "Transducers"\]
> git-tree-sha1 = "d223de97c948636a4f34d1f84d92fd7602dc555b"
> uuid = "ac1d9e8a-700a-412c-b207-f0111f4b6c0d"
> version = "0.1.10"
> 
> \[\[deps.TimerOutputs\]\]
> deps = \["ExprTools", "Printf"\]
> git-tree-sha1 = "9dfcb767e17b0849d6aaf85997c98a5aea292513"
> uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
> version = "0.5.21"
> 
> \[\[deps.Transducers\]\]
> deps = \["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"\]
> git-tree-sha1 = "c76399a3bbe6f5a88faa33c8f8a65aa631d95013"
> uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999"
> version = "0.4.73"
> 
> \[\[deps.UUIDs\]\]
> deps = \["Random", "SHA"\]
> uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
> 
> \[\[deps.UnPack\]\]
> git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b"
> uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed"
> version = "1.0.2"
> 
> \[\[deps.Unicode\]\]
> uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
> 
> \[\[deps.Zlib\_jll\]\]
> deps = \["Libdl"\]
> uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
> version = "1.2.12+3"
> 
> \[\[deps.Zygote\]\]
> deps = \["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"\]
> git-tree-sha1 = "c3f4af6b167f0c181148650221a4cbabf6bbb8a6"
> uuid = "e88e6eb3-aa80-5325-afca-941959d7151f"
> version = "0.6.47"
> 
> \[\[deps.ZygoteRules\]\]
> deps = \["MacroTools"\]
> git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0"
> uuid = "700de1a5-db45-46bc-99cf-38207098b444"
> version = "0.2.2"
> 
> \[\[deps.libblastrampoline\_jll\]\]
> deps = \["Artifacts", "Libdl", "OpenBLAS\_jll"\]
> uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
> version = "5.1.1+0"
> 
> \[\[deps.nghttp2\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
> version = "1.48.0+0"
> 
> \[\[deps.p7zip\_jll\]\]
> deps = \["Artifacts", "Libdl"\]
> uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
> version = "17.4.0+0"
> \`\`\`
> 
> \</details\>
> 
> Practically, it may be possible to build the Project.toml file. We can then generate the Manifest.toml by invoking \`Pkg.resolve()\`.
> 
> The summary of this experiment is as follows.
> 1. We created individual depots and environments for two packages: SymbolicRegression.jl and BitInformation.jl
> 2. We created a common depot and environment for both of them. Because the individual depots were lower on the depot stack, we didn't need to install any additional packages.
> 3. Having the two depots around did not hinder the creation of the common environment. In fact, it made it significantly faster since the packages were already locally available.
> 4. Note that I did not manipulate the \`JULIA\_LOAD\_PATH\`. The only modification to code loading I did was creating the depot stack and activating different projects.
> 5. The bottom line here is the depot preloading does not interfere with creating the common environment between the two packages.
> 
> You guys are getting distracted by the \`JULIA\_PROJECT\` and \`JULIA\_LOAD\_PATH\` manipulation. This is only temporarily filling in for something the Python packages themselves can do. The main point is that we can package depots with preconfigured environments that do not need further installation.
> 
> Solving the conflicting version dependency issue is one step further. It either needs the user to create the common environment or we need to do something in a post-link script. Nonetheless, packaging the depots help rather than hinder the creation of the common environment. They also allow the distinct environments to be completely installed.
