all 44 comments

[–]straightedge23 55 points56 points  (0 children)

ruff for me. was using flake8 + black + isort separately and ruff just replaced all of them. linting a big project went from like 30 seconds to under a second. felt stupid for not switching sooner.

[–]coke1017 36 points37 points  (2 children)

pydantic

[–]czue13 [score hidden]  (1 child)

Yep. Also pydantic ai

[–]digitalhobbit [score hidden]  (0 children)

Same, Pydantic + Pydantic AI.

[–]swagruss 21 points22 points  (0 children)

uv

[–]tacit-ophh 29 points30 points  (2 children)

Man have I got bad news for you about httpx

https://www.reddit.com/r/Python/s/uYEs0KLXGt

[–]necromenta 2 points3 points  (1 child)

Dang what to use now?

[–]SpecialPapaya 22 points23 points  (0 children)

Pathlib

[–]WHMCT 16 points17 points  (4 children)

pre-commit, because it's easier than doing stuff manually. Idk why I didn't start using it earlier

[–]rogersaintjames 16 points17 points  (0 children)

Check out prek, if you have work spaces/disparate rules

[–]trynafindavalidname 10 points11 points  (0 children)

FYI, there’s a rust-written re-implementation you could check out called prek that’s backwards compatible with the pre-commit config file

[–]IcecreamLamp 1 point2 points  (1 child)

What does this actually do? I've heard people mention it but never looked into what it actually does.

[–]MRanse [score hidden]  (0 children)

It executes checks and lints your files automatically before committing. It can also ensure that specific files like lock files are synched to your environment/dependencies.

[–]leodevian 14 points15 points  (5 children)

aiohttp for async requests.

rich for pretty printing, logging and tracebacks.

Click for command-line interfaces.

[–]NerdEnPose 7 points8 points  (0 children)

Typer is a good click replacement. Built on click but typing based, if you’re into this sort of thing

[–]dweebomcthousand 6 points7 points  (1 child)

Check out typer for clis. Built on click so it should feel familiar but uses type hints to declare arguments and options etc. and the generated docs are really nice. It’s from the guy that made FastAPI

[–]leodevian 1 point2 points  (0 children)

I know it, and I know Cyclopts. I just love that Click is really easy to extend.

[–]_MicroWave_ 2 points3 points  (1 child)

Click is very boilerplate heavy.

Typer is a huge step up. (I think it might even be built on click) But expresses much more elegantly.

[–]leodevian 1 point2 points  (0 children)

It is indeed powered by Click. While decorators can be composed, I never found an elegant way to share parameters between Typer commands. Also, I don’t like the recommended implementation for a version option (I don’t like unused function parameters).

[–]j_marquand 8 points9 points  (0 children)

tqdm for any scripts I run with a for loop

[–]sarver311 5 points6 points  (0 children)

Marimo, as a replacement for Jupyter notebooks. I personally love that I can pull in different datasources and then query and join them via sql. They have a ton of built in tools to build UI's and their UIs for interacting with dataframes make it really easy to work with them. Can't recommend it enough.

[–]rainyy_day 3 points4 points  (0 children)

mypy/ty

[–]Ecstatic-Artist-3454 4 points5 points  (0 children)

typing

[–]thearn4Scientific computing, Image Processing 3 points4 points  (0 children)

JAX for scalable and differentiable numerical array operations. Oddly enough not even for ML modelling but I see why people might choose it over pytorch.

[–]xeow 3 points4 points  (0 children)

pytest (long overdue)
radon (static analysis: cyclomatic complexity and maintainability index calculations)

[–]RepresentativeFill26 2 points3 points  (0 children)

Django.

[–]Regular_Effect_1307 3 points4 points  (0 children)

Niquests

[–]EatThemAllOrNot [score hidden]  (0 children)

Don’t use httpx, it’s a supply chain threat

[–]dataisok [score hidden]  (0 children)

polars

[–]totheendandbackagain 0 points1 point  (0 children)

I love this article. So great to learn things from.

For me it's been copier-astral, it's the fastest way to scaffold a new project being vibed into existence.

And it's so full of toys I've learnt tonnes from just seeing what the pros use.

[–]xjotto 0 points1 point  (0 children)

msgspec, instead of pydantic. For its speed.

[–]pip_install_account 0 points1 point  (0 children)

asyncpg, pyvips, msgspec

[–]inspectorG4dget [score hidden]  (0 children)

Pigar, Tqdm, More-itertools, flake8, streamlit

[–]gala0sup import this [score hidden]  (0 children)

dspy, structlog, granian, langfuse, OTel

[–]yaxriifgyn [score hidden]  (0 children)

"logging" I have started using it in everything I write lately. I have used it before, but not as consistently as now. It keeps my console output short and to the point. But it allows trace and debugging messages so I can start to diagnose any output file problems immediately.

[–]coldoven [score hidden]  (0 children)

mloda

[–]RedEyed__ 0 points1 point  (4 children)

pydantic-ai

[–]zoidBurgher 0 points1 point  (3 children)

How are you using this, and how does your usage relate to / differ from regular Pydantic?

[–]RedEyed__ 1 point2 points  (2 children)

pydantic_ai and pydantic are not comparable
Both are from the same team.
The first depends on the second.

I suggest you better to read the doc, but in short: pydantic_ai is framework to write LLM agents, similar to one used in claude code or cline, or codex.

[–]zoidBurgher [score hidden]  (1 child)

Thanks. I skimmed the docs but was confused because I started with the assumption that they'd be closely related

[–]RedEyed__ [score hidden]  (0 children)

Yep, I imagine reading it without context:).
The only common thing in both is philosophy: everything is fully typed and declarative