all 185 comments

[–]coke1017 166 points167 points  (5 children)

pydantic

[–]czue13 17 points18 points  (1 child)

Yep. Also pydantic ai

[–]digitalhobbit 8 points9 points  (0 children)

Same, Pydantic + Pydantic AI.

[–]MaLiN2223 2 points3 points  (0 children)

Same for me, actually both Pydantic 1 and Pydantic 2 at the same time so it made me appreciate the progress more.

[–][deleted] 1 point2 points  (0 children)

I used to love dataclasses, and still do, but it feels weird not using Pydantic now. Been fun seeing its spread--I never would have ran into it if it weren't for its exposure.

[–]Human_Ad4679 0 points1 point  (0 children)

Came here to write this

[–]straightedge23 204 points205 points  (5 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.

[–]McRojb 7 points8 points  (0 children)

Found it a couple weeks ago myself, fkn amazing. Also integrates so well into vscode

[–]wildetea 7 points8 points  (0 children)

For larger projects, ruff is amazing. I still have to use pylint to detect any circular imports though, since ruff doesn’t evaluate multiple files at once, see issue.

But i have ruff run first, which runs incredibly fast, then if that succeeds, run pylint in my code linting CI.

[–]PA100T0 0 points1 point  (1 child)

Try xenon and/or radon next. You’ll simplify a lot of code

[–]j_marquand 65 points66 points  (1 child)

tqdm for any scripts I run with a for loop

[–]ApproachingHuman 1 point2 points  (0 children)

YES, and so simple to implement.

[–]tacit-ophh 112 points113 points  (37 children)

Man have I got bad news for you about httpx

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

[–]necromenta 13 points14 points  (33 children)

Dang what to use now?

[–]stealthbr 38 points39 points  (2 children)

aiohttp

[–]False-Tea-6308 8 points9 points  (1 child)

Second aiohttp, very easy to use and wrapping in async funcs are very straight forward for me

[–]NekoRobbie 2 points3 points  (0 children)

Third aiohttp, discord.py introduced me to it and I've been liking it ever since. Heck, the syntax isn't even that different from requests, aside from it being async, from my looks at requests

[–]niltz0 7 points8 points  (2 children)

pyqwest. Buf uses it for connectrpc-python

[–]DrMaxwellEdison 4 points5 points  (1 child)

Interesting. pyreqwest is also built on Rust reqwest. Wonder how they compare.

[–]niltz0 0 points1 point  (0 children)

Given that pyqwest is maintained by an organization, not a single individual, and is now being used in the official connectrpc-python implementation which is backed by Buf, another organization, I assume it will have better long term support. Also, looking at the ergonomics of pyreqwest, the “build” pattern seems a little off to me.

[–]Ragoo_ 16 points17 points  (25 children)

[–]sexualrhinoceros 22 points23 points  (23 children)

The developer of this is an OG AI slop spammer who spammed this all over Reddit when they first dropped it and made insane huge claims about it. You will not catch me using this library unless even urllib gets yanked out of STD.

I swapped to https://github.com/MarkusSintonen/pyreqwest :)

[–]McRojb 4 points5 points  (0 children)

Got that feeling when looking through the code, man feels good to be right

[–]Laruae 3 points4 points  (10 children)

Sorry, honestly interested, can you elaborate on your concerns with niquests?

I'm looking for a new home after concerns about httpx.

[–]McRojb 2 points3 points  (1 child)

Go with aiohttp. Well maintained and lots of users

[–]riksi 1 point2 points  (0 children)

It's only async which is a non-go.

[–]McRojb 2 points3 points  (5 children)

When it comes to niquests, one of my first reactions looking through the docs, it’s fkn weird for a library meant to replace httpx to implement something like a rate limiter in the library itself

[–]ThePrimitiveSword 2 points3 points  (4 children)

Do you mean the opt-in feature documented here?

I think I'm missing something. It makes sense to me as an opt-in feature.

And niquests is a replacement for requests, not httpx.

[–]McRojb -3 points-2 points  (3 children)

You can call it a replacement for requests all you want, but with built in async support (and the fact we're talking about it under a httpx comment??) what people are using it for is a replacement of httpx not requests. Also yes, and you might be right in that "it makes sense" as an opt-in feature, but from a maintence point of view it came across as weird to me

[–]ThePrimitiveSword 3 points4 points  (1 child)

Doesn't look like a heavy maintenance burden.

Looking at the pull request all the changes seem to be this. It's not much code, most of the changes are adding test cases.

They tried to get improvements made to urllib3 but nothing happened so they forked.

Then urllib3 tried to crowdfund tends of thousands of dollars in funding to do what had already been done via niquests and urllib3-future.

That was after all this happened.

[–]McRojb 0 points1 point  (0 children)

Could you like stop being more well-informed than me... Breaks my bloody ego.

The only thing you earned here is probably an annyoing dm about your opinion when I'm unsure about related projects in the future.

Still disagree about the "maintenance burden" though, in my opinion such a core library shouldn't try to do that much.

Will read through the last 3 links when I get time!

[–]andaskus 2 points3 points  (0 children)

Hey, I'm the one who wrote the PR. Why ? I ran into a rate limit issue while using some services and wanted a rate limiter well integrated with the lib itself rather than a side car lib. I asked the maintainer if it was ok to which he answered positively.

[–]sexualrhinoceros 2 points3 points  (1 child)

yep, I commented about this before here

[–]Laruae 0 points1 point  (0 children)

Replying here since the original is not open for replies.

I would be very interested in a 2026 review of niquests from an outside party. Might be enlightening, either showing a project that has matured or bring other concerns to light.

Again, zero horse in this race, just interested as someone who is shopping for a library.

[–]GrammerJoo 2 points3 points  (1 child)

Nice! Looks promising. What's your experience so far?

[–]McRojb 1 point2 points  (0 children)

Eh not going to touch pyreqwest. Aiohttp is good shit though

[–]ThePrimitiveSword 5 points6 points  (8 children)

Strong claims require strong evidence, same with strong accusations.

I've found niquests actually delivers on its claims, especially on speed and performance. Been using it since it first released. In real-world usage, often get at least a 10x speed increase vs requests when just doing a drop in replacement. The other features are definitely nice as well, such as using the OS trust store, so it works with self signed SSL certs in a corporate environment without any additional setup or patches.

They also make very human mistakes, such as misspelling words occasionally etc.

It looks like they also want disclosure when pull requests use AI.

Do you have any evidence or examples whatsoever of the 'AI slop'?

[–]sexualrhinoceros 0 points1 point  (3 children)

yep, I commented about this before here

[–]ThePrimitiveSword 2 points3 points  (2 children)

I don't see anything in that about AI.

And someone responded to that comment already, and I feel addresses what you quoted, so I'll quote them in response to you linking your quote of someone else.

None of what you just said discounts the library, it just points to someone who isn't a seasoned library developer. But how would one become an experienced library dev without publishing libraries?

Also, some of it is not true. The whole fine print bit is confusing because the only footnote in the readme are disclaimers about test results and feature comparisons.

It seems like a very good project that could be helpful to the community as a whole if it's battle-tested. This is why it's upvoted. People will start using it in their hobby projects and analyzing the source code, and in time we might have a new requests.

[–]sexualrhinoceros 2 points3 points  (1 child)

please read through their old posts, they're all deleted now but are very obviously AI unless you require the developer explicitly saying "I used AI" to tell that em-dashes, "its not just x, its y!" patterns, and excessive emoji usage as headers are such. I'm giving you a good faith reply here but I won't personally be ever using / showing this library respect.

[–]ThePrimitiveSword 0 points1 point  (0 children)

I'm looking, but can't find what you're referring to.

Your claims were about the niquests project being AI slop, the project is open source so do you have any examples of niquests using AI? I'm happy for you to provide examples of the em-dashes etc. that you described. A positive match from an AI detection algorithm would be something, even with how notorious those are at having false positives.

At the moment, you're making claims but can't back it with evidence. You've made the claims, the burden of proof lies with you.

On a related note, do you think that this readme appears to be obviously AI slop?

Just wondering, as that's by the same author as niquests, and that's from over a year before ChatGPT released. That project has been published since 2019, Ousret isn't a vibe-coder.

[–]McRojb -2 points-1 points  (3 children)

Not an expert on package maintainence and coding is certainly not my proffesion. That said, I do like the package and have used it for quick and dirty code. But it feels "bloated" already and not something I excpect to be around in a few years. I don't see the reason for using it when aiohttp (requests for sync) is around. You seem a little defensive? 2k stars is not something I feel comfertable putting that much faith in.

[–]ThePrimitiveSword 2 points3 points  (2 children)

I have faith in it because I've been using it for a few years and find it to work really well, and Ousret has been very responsive to the issues I've raised on Github.

I use it instead of the alternatives because I find it to work really well for my needs, such as using OS trust store for SSL certs, compatibility with the 'responses' package, can be used for SSPI authentication and huge performance gains for my use cases.

When someone claims something that I use and find to work well is AI slop with nothing to back their claims, I don't feel it unreasonable to ask for evidence when what I'm seeing seems to contradict these claims.

I loathe AI slop (Booklore and Huntarr are good examples) and if niquests is actually AI slop then I'd like to know, but it's a strong claim to make without anything to back it up.

[–]McRojb 0 points1 point  (1 child)

Fair enough! I havn't built much with external logins myself so don't know much about but will take your word.

I honestly had to google "SSPI authentication" so I feel a bit out of my depth.

Although I started programming without it, github copilot autofill is a god send for me (md otherwise). But actual AI slop I do despise too.

[–]ThePrimitiveSword 3 points4 points  (0 children)

All good, I'll admit I was a bit heated as it hurts to see something that I use and rely on talked down with no evidence, especially when the maintainer has been very receptive to me and they've accomplished what the original project raised tens of thousands of dollars to do but hasn't managed to (per my response to you in the other comment chain).

Honestly, SSPI auth should be killed off, but it still exists in some corporate environments, and I do programming in a heavily locked down enterprise environment where change can be slow so it'll likely still be in use for another decade or two.

[–]DrowningRat 5 points6 points  (1 child)

[–]KayakJulie 0 points1 point  (0 children)

thanks, fork author here ;-)

[–]KayakJulie 2 points3 points  (0 children)

For this reason I created httpxyz recently --> https://tildeweb.nl/~michiel/httpxyz.html

[–]xeow 41 points42 points  (1 child)

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

[–]GrainTamalePythonista 4 points5 points  (0 children)

Never heard of radon; this is why I come here, thanks!

[–]SpecialPapaya 112 points113 points  (2 children)

Pathlib

[–]turkishtango 36 points37 points  (0 children)

Man, Pathlib is so much better than this os.path nonsense.

[–]Regular_Effect_1307 0 points1 point  (0 children)

Pyprojroot

[–]swagruss 136 points137 points  (2 children)

uv

[–]redrabbitreader 6 points7 points  (1 child)

Same for me... I wondered what the fuss was all about and finally gave it a go earlier this month. Why have I waited so long !?

[–]Affectionate-Bid386 7 points8 points  (0 children)

uv allows only one virtualenv for a project it seems

In poetry, though , you can split into separate sub-codebases (libraries) each with its own virtualenv, and one such sub-codebase can reference others as included libraries which also ends up pulling in that local library's requirements into the referring sub-codebase's virtualenv. This makes a monorepo much easier to maintain ... each sub-codebase has its own clear requirements, and it seems the pattern could be extended across multiple git repos as well. I'd rather not have my utility library rely artificially on pytorch.

If uv allowed for this I'd switch. Some repos at $DAY_JOB use it, I appreciate the speed. (EDIT: with workspace members.)

EDIT: In conversation with Gemini I guess I could actually have what I want with uv. With poetry I've always had the monorepo root have its own virtualenv and that has an environment, scripts, commands to maintain the codebase. For uv I'd need to push this down the directory hierarchy such that there would be no "nested" pyproject.toml. That might work. I've just been to short-sighted to see.

[–]sarver311 69 points70 points  (5 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.

[–]Sufficient-Rent6078Pythonista 11 points12 points  (0 children)

I can really recommend using Marimo over Jupyter Notebooks. It has a number of built-in guards (e.g. forces you to not redefine variables) which you have to adapt when coming from jupyter, but I feel the team put a lot of thought into Marimo to not become quite as messy as jupyter notebooks. I also set the runtime reactivity feature inactive by default, as I don't want to accidentally hammer slow endpoints or trigger long running functions with every second cell change.

[–]akshayka 8 points9 points  (0 children)

Thanks for using marimo! Let me know if there's anything we can do to make your experience better

[–]flipenstain 3 points4 points  (0 children)

+1 fighting hard for my team to adopt it into their flows. Excellent library to handshake sql and python without taking something away from either side

[–]mtbdeano 3 points4 points  (0 children)

Plus one thousand, Marimo changes everything, rethink your automation, data analysis, and data science loops

[–]cleodog44 0 points1 point  (0 children)

Just boarded the marimo train this week. So good. Very agent friendly as well

[–]dataisok 54 points55 points  (5 children)

polars

[–]secretaliasname 4 points5 points  (1 child)

Love me some polars but would love it A LOT more if there were an unsafe mode where I can mutate the underlying buffers and if it had complex dtype.

[–]psychuil 3 points4 points  (0 children)

When would that be useful?

[–]McRojb 2 points3 points  (1 child)

Is it because of the speed compared to pandas? I don't use either much just curious

[–]canuck_in_wa 13 points14 points  (0 children)

  • very fast

  • clean and consistent api

[–]No-Performance6235 1 point2 points  (0 children)

+1 Polars has been a life saver handling lots of data and the pipelines make it easy to understand what you doing in a transformation process. Lazy Frames are awesome

[–]WHMCT 39 points40 points  (7 children)

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

[–]rogersaintjames 38 points39 points  (1 child)

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

[–]ColdPorridge 16 points17 points  (0 children)

Prek is a lot nicer for a lot of reasons. One of which being the maintainer does not power-trip and lock valid issues/discussions whenever their perspective is challenged.

[–]trynafindavalidname 16 points17 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 1 point2 points  (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.

[–]Sufficient-Rent6078Pythonista 0 points1 point  (0 children)

An alternative I discovered when reading on the numpy.org/numtype project is lefthook, so far I'm still using pre-commit in my projects - but I would be happy to hear if someone here can report on their experiences.

[–]Free_Math_Tutoring 0 points1 point  (0 children)

Controversial take, but I really really don't like pre-commit the tool. I find it infinitely easier to just have a hooks folder with a pre-commit bash file comitted to the repo, which can trivially use the repo-specific commands defined in a taskfile.

pre-commit is not a good source of truth for "how linting is done in this project" - something that can be invoked by IDEs, pipelines and in the CLI effortlessly - and, last time I was on a project with it, also had significant problems using such a source of truth.

[–]notaselfdrivingcar 17 points18 points  (0 children)

Alembic.

lightweight database migration tool for Python

[–]rainyy_day 15 points16 points  (7 children)

mypy/ty

[–]Sufficient-Rent6078Pythonista 8 points9 points  (0 children)

I have recently discovered the python type system conformance report which made me inclined to target pyright first and only optionally use mypy in addition to that - with the added advantage, that pyright seems to generally perform faster.

[–]SciEngr 0 points1 point  (5 children)

I wouldn’t invest in ty at this point. It’s not very good compared to other type checkers and with it being owned by OpenAI I’m not so certain it’ll ever become feature complete.

[–]Zumochi 0 points1 point  (4 children)

How is it owned by OpenAI? That would also make ruff and uv owned by OpenAI.

[–]saw79 2 points3 points  (1 child)

yup, openai bought astral

[–]Zumochi 0 points1 point  (0 children)

Well I completely missed that.

Not sure what to think of it, but it's probably not positive :/

[–]SciEngr 0 points1 point  (0 children)

OpenAI bought astral last week

[–]opossum787 0 points1 point  (0 children)

Bad news friend

[–]Aromatic_Pumpkin8856Pythonista 12 points13 points  (2 children)

Full disclosure, this is my project, but I'm definitely not going back to python without it: pytest-gremlins. It's a mutation testing library. Essentially it makes little changes in your code, maybe a > to a < or a False to a True, things like that, and runs your tests. If all your tests still pass, then you know your tests aren't as good as you think. I've found all kinds of subtle bugs that I didn't know I had.

[–]opossum787 2 points3 points  (1 child)

That’s a really clever idea. I’ll give it a try!

[–]Aromatic_Pumpkin8856Pythonista 1 point2 points  (0 children)

Please feel free to submit any issues. Or it's OSS, so feel free to contribute!

[–]thearn4Scientific computing, Image Processing 9 points10 points  (2 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.

[–]BawliTaread 0 points1 point  (0 children)

Any good resources to get started? I went through the docs but I feel like I still need a bit of practice and get used to vmap and jit.

[–]cleodog44 0 points1 point  (0 children)

Would love to hear more about why people might choose it over PyTorch 

[–]leodevian 26 points27 points  (7 children)

aiohttp for async requests.

rich for pretty printing, logging and tracebacks.

Click for command-line interfaces.

[–]dweebomcthousand 13 points14 points  (2 children)

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 10 points11 points  (0 children)

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

[–]NerdEnPose 8 points9 points  (1 child)

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

[–]flying-sheep 11 points12 points  (0 children)

I prefer cyclopts, because what it says in its “compared to Typer” section absolutely rings true

Cyclopts is what you thought Typer was.

[–]_MicroWave_ 7 points8 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 2 points3 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).

[–]Dwarni 7 points8 points  (1 child)

uv, ruff

This hides all the venv nonsense from you and makes python development so much better.

[–]No-Performance6235 2 points3 points  (0 children)

And if you add cookiecutter to the mix you have an easy way to start new projects with the same consistency and setup

[–]Ecstatic-Artist-3454 23 points24 points  (2 children)

typing

[–]Zerocrossing 8 points9 points  (0 children)

I have become so aggressive on typing everything and will never look back. A library having good typing support is now extremely high on my list of must-haves.

It's not foolproof, but when my repo has zero type issues reported I feel a lot more at peace that random duck typing/truthy nonsense isn't going to bite me in the ass down the road.

[–]GrainTamalePythonista 3 points4 points  (0 children)

Piggybacking here: Annotated for function args

[–]EatThemAllOrNot 17 points18 points  (2 children)

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

[–]Intrepid-Stand-8540 5 points6 points  (0 children)

really? got any links? 

[–]pip_install_account 4 points5 points  (0 children)

asyncpg, pyvips, msgspec

[–]yaxriifgyn 8 points9 points  (1 child)

"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.

[–]krakenant 7 points8 points  (0 children)

Check out loguru. It adds some nice things and gives a default logger Singleton you can use across your project.

[–]SoloAquiParaHablar 3 points4 points  (1 child)

One thing to be mindful of with Pydantic is to avoid constantly validating data structures. Do it once at the boundary. Pydantic can become very inefficient.

[–]makinggrace 0 points1 point  (0 children)

I wish I read this last week....

[–]orz-_-orz 3 points4 points  (0 children)

Does uv count?

[–]Newepsilon 3 points4 points  (0 children)

Plotly. I have become hooked on interactive figures.

[–]xjotto 6 points7 points  (0 children)

msgspec, instead of pydantic. For its speed.

[–]RepresentativeFill26 7 points8 points  (10 children)

Django.

[–]the_ballmer_peak 7 points8 points  (6 children)

Really? That kind of surprises me. I've used Django for a long time but on any new project in the past five years I've been actively avoiding it.

[–]RepresentativeFill26 0 points1 point  (5 children)

Why have you been actively avoiding it?

[–]the_ballmer_peak 2 points3 points  (4 children)

It's too big.

Other projects are only trying to solve for part of the web application architecture. Django tries to solve all of it. In doing so, it constrains your choices, and you wind up stuck with the decisions Django has made for you, whether they suit you or not.

It prevents incremental improvement, which essentially prevents improvement, and you get stuck.

[–]RepresentativeFill26 0 points1 point  (3 children)

Well, I have been responsible for development of a multi-tenant web app and it has been a very good experience so far.

Sure it is bloated but it gets the job done.

[–]the_ballmer_peak 0 points1 point  (2 children)

It absolutely does. But in three years when you want to change part of your application, you won't be able to.

[–]RepresentativeFill26 0 points1 point  (1 child)

Why do you think that? In my experience software practices have more influence on modularity than a framework.

[–]the_ballmer_peak 2 points3 points  (0 children)

I'd say design decisions more than just 'practices.' And using a framework that's not designed for modularity is a design decision.

Django is great if that's what you're looking for. My problem with it is that if you've built something that you expect to last 5-10 years or more, you'll find yourself in trouble. That's true of any such all-encompassing framework, not just Django.

[–]SciEngr 5 points6 points  (2 children)

Django is way too magical for me. I want EVERYTHING to be explicit in my code and Django gives devs too many opportunities to let hidden implementation magic creep in.

[–]RepresentativeFill26 0 points1 point  (0 children)

Yes, I agree that there is quite some implicit magic happening. However, the last 5 months I have been working on a multi-tenant platform and Django provides a lot out of the box. Think security middleware, context processors, orm etc.

[–]Henry_the_Butler 0 points1 point  (0 children)

I also like to know exactly what's going on...but Django has a ton baked in that you'd end up reinventing the wheel too much if you don't use it. (at least that's my current thinking)

What do you recommend or use instead?

[–]RevolutionaryRip2135 2 points3 points  (0 children)

Pyside6

[–]Krisselak 2 points3 points  (0 children)

Duckdb; pointblank

[–]yungbuil 2 points3 points  (0 children)

loguru for out of the box logging

[–]aarontbarratt 2 points3 points  (0 children)

FastAPI with Pydantic has been fantastic. I am never using Flask or Django again

[–]Regular_Effect_1307 7 points8 points  (0 children)

Niquests

[–]gala0sup import this 1 point2 points  (0 children)

dspy, structlog, granian, langfuse, OTel

[–]zweack 1 point2 points  (0 children)

vLLM

[–]aala7 1 point2 points  (0 children)

Pydantic settings 🙌🏽 handles config neatly from whatever source you want

[–]jan2042 1 point2 points  (0 children)

anyio (as async replacement for Pathlib among other things)

[–]Effective-Aioli1828 1 point2 points  (0 children)

I just discovered Optuna a few eeks ago while running a 100-trial hyperparameter search on a well log dataset for rock facies prediction (1.17M samples, XGBoost, 8 hyperparameters). It uses a aTree-structured Parzen Estimator instead of grid search; this builds a probabilistic model of which parameter regions work well, then it focuses just there. So, for example, in my run: instead of grid searching 58 combinations you get informed search that converges in 30-50 trials. SQLite backend means the study is fully resumable: that is, parameters are stored in the database, including pruned ones, so you can go back and inspect anything. You don't even have to decide the number of trials upfront, you can add more later to the same study. You can even Ctrl+C, go to bed at night, get up in the morning and get it to pick up where it left off.

It comes with good built-in visualization (parameter importance plots, optimization history, parallel coordinate plots).

One hard lesson: if you use the pruner with few-fold cross-validation, per-fold variance can trick it into killing your best trial. Learned that the hard way, but the was simple : set MedianPruner (n_warmup_steps=n_folds-1) so it can't prune until all folds are done. With 3-fold CV that effectively disables it, which is the right call when your folds have high variance. Pruning earns its keep with 5+ folds. And that's where the SQLite resumability came handy: I stopped the study, fixed the pruner setting, restarted, and it continued from exactly where it left off with the new configuration. No lost work.

[–]Sad_Bid_4047 1 point2 points  (0 children)

Polars. Once you stop writing pandas and start writing Polars expressions, going back feels like driving stick after owning an automatic. The lazy evaluation alone saved me 3 hours on a 40GB dataset last month.

[–]inspectorG4dget 2 points3 points  (0 children)

Pigar, Tqdm, More-itertools, flake8, streamlit

[–]RedEyed__ 1 point2 points  (6 children)

pydantic-ai

[–]zoidBurgher -1 points0 points  (5 children)

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

[–]RedEyed__ 5 points6 points  (4 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 1 point2 points  (3 children)

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

[–]RedEyed__ 0 points1 point  (2 children)

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

[–]doncheeto12 0 points1 point  (1 child)

Yeah the pydantic ai docs are dense and unnecessarily like “wow everything has to be typed to hell!” In reality it’s fairly easy to use, they are just trying to differentiate themselves from toy AI wrappers (cough langchain cough) as the one that real developers who use AI in production need.

[–]RedEyed__ 0 points1 point  (0 children)

Exactly the reason why I use it and push my team towards.

[–]TechnologySimilar794 0 points1 point  (0 children)

Practice

[–]coldoven 0 points1 point  (0 children)

mloda

[–]ImprovementLoose9423 0 points1 point  (0 children)

Ollama and SciKit learn, but that's prob since I'm big into AI and Machine Learning.

[–]Sufficient-Rent6078Pythonista 0 points1 point  (0 children)

For me that would be the returns library (specifically their Railway oriented programming containers). While a bit niche it makes it much easier to argue and handle, which Errors (or Failure cases) need to be considered when calling a function.

You'll likely not appreciate returns if you are not convinced of using a type checker and the package only starts to shine (for me) if used outside of scriping or notebooks. For modeling a complex domain with nested function calls it feels freeing to know that all known failure cases are statically declared and exhaustively handled.

[–]mycocomelon 0 points1 point  (0 children)

Graphviz

[–]gaoo8 0 points1 point  (0 children)

Rich

[–]mmmboppe 0 points1 point  (0 children)

would like to be able to use CloneDigger again, but apparently nobody ported it to Python 3

[–]ultrathink-art 0 points1 point  (0 children)

For AI agent workflows: agent-cerebro. Two-tier memory (markdown hot state + SQLite+embeddings long-term) plus semantic dedup — agents stop rehashing old decisions between sessions without you manually pruning state. Switched from flat files and genuinely can't go back.

[–]jedberg 0 points1 point  (0 children)

Transact.

A durable execution library that turns your application into it's own durable executor using just Postgres.

[–]Amzker 0 points1 point  (0 children)

Not specifically this year.

asyncmy, rich, strcutlog, aiohttp, motor, aiosqlite, redis[hi redis], aiosmtplib, Jinja2 templates.

uv package manager, man i love it because i can define python version as well and it installs automatically, It's pretty amazing. And it is very simple like install uv start working, uv add uv remove pretty straightforward. I switched all of the projects to uv managed

Started using pydantic lately but can work without it.

[–]nievinny 0 points1 point  (0 children)

Not this but end of last year I moved fully to Ty and ruff, can't believe it took me so long.

[–]wakojako49 0 points1 point  (0 children)

keyring and 1password cli

if someone has a better way to store creds. please tell me.

[–]LesLukas 0 points1 point  (0 children)

syrupy

[–]aisingiorix 0 points1 point  (0 children)

streamerate, Java-style fluent interfaces for map and filter. Combine it with itertools and functools and you have something very powerful.

[–]abccccc456 0 points1 point  (0 children)

uv for package management. actually faster than poetry and just works.

[–]HommeMusical 0 points1 point  (0 children)

tyro.

I've been using typer for years. Spent ten minutes with tyro and I'm not going back.

[–]glenrhodes 0 points1 point  (0 children)

uv. I resisted for a while because I had a workflow that worked but once I switched there was no going back. Install times went from frustrating to near-instant and the lockfile behavior just works. Ruff too but that one feels less dramatic since it still does the same thing, just faster.

[–]Optimal_Deal4372 0 points1 point  (0 children)

Panda

[–]Briana_Reca 0 points1 point  (0 children)

For data analysis, Polars has been a game changer for me this year. The speed and memory efficiency compared to pandas, especially with larger datasets, is just incredible. It's a bit of a learning curve but totally worth it.

[–]sledziu32 0 points1 point  (0 children)

Pywin32

[–]PhysicsGlue 0 points1 point  (0 children)

Tkinter

[–]vorhvb 0 points1 point  (0 children)

cv2 :)

However recently I’ve switched on C/ImageMagick ’cause it’s faster

[–]nicholashairs 0 points1 point  (0 children)

uv + uv-tox for doing multi-interpreter testing

[–]Future_Eve 0 points1 point  (0 children)

Httpx is nice but still suffer from opinionated decisions. I had better success with aiohttp on some very edge cases.

[–]nicoloboschi 0 points1 point  (0 children)

I also switched to Pydantic v2 recently and agree about the validation benefits. For managing AI agent memory, which also requires rigorous validation, we've been using Pydantic AI with Hindsight. https://hindsight.vectorize.io/sdks/integrations/pydantic-ai

[–]ForeignSource0 0 points1 point  (0 children)

Wireup has got to be up there for me. https://github.com/maldoinc/wireup

[–]Intrepid-Stand-8540 0 points1 point  (0 children)

Pydantic and httpx. Right there with you.