alt.hn

5/21/2025 at 5:20:30 PM

Python Tooling at Scale: LlamaIndex’s Monorepo Overhaul

https://www.llamaindex.ai/blog/python-tooling-at-scale-llamaindex-s-monorepo-overhaul

by cheesyFish

5/21/2025 at 6:22:49 PM

I recently did something similar. Using uv workspaces, I used the uv CLI's dependency graph to analyze the dependency tree then conditionally trigger CI workflows for affected projects. I wish there was a better way to access the uv dependency worktree other than parsing the `tree` like output

by lyjackal

5/21/2025 at 7:41:01 PM

I use Github Actions triggers to pass flags to a monorepo dagger script to build and test the affected components. For example, if a commit touches the front- and back ends, rebuild both. If it only touches the front end, run integration tests using the latest backend without rebuilding it.

edit: spell out GHA

by esafak

5/21/2025 at 7:56:39 PM

Yea this definitely makes sense for smaller monorepos. For us, we ended up writing our own dependency graph parser to figure out what tests to run (which is easy enough with a single language like python honestly)

by cheesyFish

5/21/2025 at 8:06:33 PM

Was bazel an option?

by esafak

5/21/2025 at 8:09:26 PM

We used pants initially (which I believe is similar to bazel). And indeed the dependency graphing it does was very helpful, but other parts of the tool motivated us to create something more bespoke and debuggable (we were only using like 20% or less of the features pants offers)

by cheesyFish

5/21/2025 at 8:50:30 PM

GHA - GitHub Actions, right?

by chrisweekly

5/21/2025 at 6:28:12 PM

I agree! I hope uv introduces more tools for monorepos or refines the workspaces concept.

I saw workspaces require all dependencies to agree with eachother, which isn't quite possible in our repo

by cheesyFish

5/21/2025 at 7:11:07 PM

So just to let me get this straight: Does this new setup aim to make it easier to contribute to llamaindex submodules specifically?

by tuanacelik

5/21/2025 at 7:16:38 PM

Yes! For example, previously with pants, users would hit a lot of weird errors since how tests run with pants is different than running tests locally with pytest

We did not expect users to learn pants, but this often meant a lot of back and forth with maintainers to get PR tests working.

Should be much easier now!

by cheesyFish

5/21/2025 at 9:32:25 PM

Interesting to see LlamaIndex's journey from Poetry+Pants to uv+LlamaDev for managing their extensive monorepo. The speed improvements and better developer experience with `uv` are compelling. It's a good reminder of how tooling choices evolve with scale.

by SlimIon729