January 2026 update
Typer reference docs, uv and nanochat progress
In January, my OSS maintenance time was pretty much divided between FastAPI, Typer and friends on the one hand, and nanochat on the other hand. In this monthly update, I’ll talk about:
Writing reference docs for Typer (finally!)
Guiding users to use uv instead of poetry
Reviewing nanochat progress
Typer reference docs
Sebastián Ramírez, or Tiangolo as he’s known on GitHub, is not only famous for the awesome developer-friendly open-source tools he creates, but also for the extremely extensive and beginner-friendly documentation that he always writes. As an example, the docs for FastAPI give you an introduction on Python types and explain concurrency and environment variables, before kicking off with a “First Steps” introduction to FastAPI. The tutorial continues to build complexity and provides detailed code examples along the way.
For Typer, a very similar philosophy was taken when writing the documentation, and users are generally very happy with the high quality of available information. However at some point, when you’re a seasoned developer already familiar with FastAPI and/or Typer, you don’t want to go scrolling through pages & pages of verbose text to find a particular setting or default value.
Enter reference docs: a concise overview of the relevant methods, parameters & defaults, and how they can be used. While we already had one for FastAPI, it took me until now to write this up for Typer, too. PR 1504 shows how we approach this: rather than writing these reference docs from scratch, we basically add Doc() annotations within Annotated[] definitions for the parameters of important functions - right in the code itself.
So for instance this
would now become
And that will render on the reference docs like so:
(kudos to Yurii Motov for improving the layout in PR 1630 !)
Anyway while we hope this will be useful for all Typer developers out there, it was actually also fun to write, because it kind of made me stop and think about every single functionality that Typer offers.
uv instead of poetry
uv has pretty much taken the land of Python by storm. Built by Astral, the same team behind ruff, uv is written in Rust and meant to be an extremely fast Python package and project manager, which it is. Pretty much everyone I know has switched to using uv instead of pip, but for the “Building a package” tutorial in Typer we were still referencing poetry. Rectified that since PR 1474 !
It’s the kind of change where you carefully have to read all the documentation surrounding the edits, to see whether there are any spurious remarks still referencing the old documentation. For instance, the package structure will look slightly different on file with uv instead of with poetry, so all of that needs to be updated too. What I think would be boring work to many, is something I actually quite enjoy doing, being meticulous and ensuring consistency across documentation, to ensure there’s as little friction for first-time users as possible. And ofcourse, ask your favourite LLM to double check everything to make sure you haven’t forgotten any references!
nanochat reviewing
In December, things were relatively quiet on the nanochat front, the open-source repo by Andrej Karpathy that provides you all the code for training and fine-tuning an LLM, even providing scripts to chat with it on a web or CLI interface. But in January a few major refactors happened:
The configurator was nuked in favor of argparse
The base_train script was improved both in code layout as well as hyper-parameter tuned
Muon optimizer changes resulting in a bump of val_bpb
Integration of Flash Attention 3
…
While I had nothing to do with any of these improvements, as “repo czar” I’ve tried to be helpful by updating older PRs that had accumulated merge conflicts, closing PRs that were no longer relevant, and making sure that everything remained consistent (e.g. PR 407, PR 416, PR 438).
It’s really a lot of fun to have a “front row seat” watching this repo evolve and get better every day!
-Sofie




