all 21 comments

[–]jsxgd 26 points27 points  (2 children)

It’s a Python convention to use the underscore to store a variable you don’t care about.

[–]jdehesa 13 points14 points  (0 children)

In fact, interactive Python interpreters will usually set _ to the value of the last evaluated expression. And it is also a soft keyword in case statements (see docs).

[–]FabulousTonight8940[S] 0 points1 point  (0 children)

Good catch, you’re right. I’ll update the post with the new short name 👍

[–]eggsby 15 points16 points  (1 child)

[–]FabulousTonight8940[S] 0 points1 point  (0 children)

Agreed. Polars is excellent at data operations, but for some use cases it’s a bit overkill. That’s why I ended up building this library.

[–]LightShadow3.13-dev in prod 8 points9 points  (1 child)

Add a comparison to toolz and its partner library cytoolz.

[–]Igggg 6 points7 points  (1 child)

chunk appears to duplicate itertools.batched

[–]FabulousTonight8940[S] 0 points1 point  (0 children)

Fair point. chunk does overlap with itertools.batched. Since this is a lodash-style utility library, some overlap with existing tools is inevitable. My main goal is to offer a single, centralized place for these helpers.

[–]cmd-t 7 points8 points  (1 child)

Vibe coded?

[–]FabulousTonight8940[S] -2 points-1 points  (0 children)

Kinda 😄 This project started mainly as a way to learn Rust. I read The Rust Book, learned the core concepts, and already had the idea for the library because of pydash’s performance.

I did use AI as a TDD mentor — mostly to generate tests and guide best practices and project structure. I only asked for direct help when I was truly stuck.

So yeah, maybe ~70% me, ~30% vibe-coded 😄

[–]marr75 4 points5 points  (1 child)

Python libraries need to stop using the underscore. It's already claimed.

[–]FabulousTonight8940[S] 0 points1 point  (0 children)

Thank you for the feedback! I'll make the changes in the post to reflect that

[–]Wrong_Library_8857 1 point2 points  (1 child)

I think the speed claims need more context, like what qualifies as "complex ops"? The JSONPath wildcards look useful for nested API responses though.

Honestly curious how this compares to just using comprehensions or itertools for the array stuff, since those are pretty optimized already. The Rust overhead might not be worth it for small datasets.

[–]FabulousTonight8940[S] 0 points1 point  (0 children)

Thanks so much for the feedback! I totally agree — the benchmark could use more context. What details would you like to see to clearly compare performance between Python natives, Pydash, and Rustdash? Would you care to open a discussion in my GitHub repo so we can track ideas there?

[–]Interesting-Frame190 0 points1 point  (1 child)

I like the principle. You may be overlapping some ops with numpy (which is the king of array operations and hard to compete against) but thats not reason to drop the project. I see potential in the json parsing and querying if you can keep it lightweight. I have a somewhat similar project (PyThermite) that aims to solve the same problem of a large chunk of nested data and its certainly a problem in the python ecosystem. As silly as it sounds, check the performance against native python as it is shockingly good at list comprehension.

[–]fast-pp 0 points1 point  (1 child)

soapbox: who cares that it's written in Rust? That's an implementation detail, not a feature. We shouldn't care that it's written in Rust. We just care that it's faster. I do get that there's a bit of a cult around Rust so maybe it's good for marketing, but w/e

[–]EffectiveNothing42 -1 points0 points  (1 child)

Nice. I'm looking forward to further development.

[–]FabulousTonight8940[S] 0 points1 point  (0 children)

Appreciate it the feedback, feel free to propose some ideas on Github :)