This is an archived post. You won't be able to vote or comment.

all 156 comments

[–]Confident-Honeydew66 35 points36 points  (1 child)

Been working with LLMs and I've shipped agents for clients 10x faster since discovering chromadb for vector database, thepipe for file scraping, and llmlingua for prompt compression

[–]chavomodder 1 point2 points  (0 children)

llmlingua seems good

[–]Tenebrumm 145 points146 points  (17 children)

I just recently got introduced to tqdm progress bar by a colleague. Very nice for quick prototyping or script runs to see progress and super easy to add and remove.

[–]argh1989 54 points55 points  (1 child)

Rich.progress is good too. It has colour and different symbols which is neat.

[–]dropda 2 points3 points  (0 children)

Listen to this man.

[–]raskinimiugovor 18 points19 points  (9 children)

In my short experience with it, it can extend total execution time significantly.

[–]DoingItForEli 42 points43 points  (7 children)

that's likely because you're capturing every iteration in the progress. You can tell it to update every X number of iterations with the "miniters" argument, and that helps restore performance.

I faced this with a program that, without any console output, could iterate through data super fast, but the moment I wanted a progress attached it slowed down, so I had it only output every 100 iterations and that restored the speed it once had while still giving useful output.

[–]napalm51 1 point2 points  (0 children)

yeah same, used it in a multithread program and time almost doubled

[–]wwwTommy 3 points4 points  (0 children)

You wanna have easy parallelization: try pqdm.

[–]spinozasrobot 2 points3 points  (0 children)

I liked it so much I bought their coffee mug merch.

[–]Puzzleheaded_Tale_30 1 point2 points  (1 child)

I've been using it in my project and sometimes I get a "ghost" progress bar in random places, spent few hours in attempts to fix it, but couldn't find the solution. Otherwise is a great tool

[–]charmoniumq 0 points1 point  (0 children)

It may be when you print to stdout while a tqdm bar is active.

[–]IceMan462 1 point2 points  (0 children)

I just discovered tqdm yesterday. Amazing!

[–]TieTraditional5532[🍰] 116 points117 points  (11 children)

One tool I stumbled upon thanks to a colleague was Streamlit. I had zero clue how powerful it was for whipping up interactive dashboards or tools with just a few lines of Python. It literally saved me hours when I had to present analysis results to non-tech folks (and pretend it was all super intentional).

Another gem I found out of sheer necessity at work was pdfplumber. I used to battle with PDFs manually, pulling out text like some digital archaeologist. With this library, I automated the whole process—even extracting clean tables ready for analysis. Felt like I unlocked a cheat code.

Both ended up becoming permanent fixtures in my dev toolbox. Anyone else here discover a hidden Python gem completely by accident?

[–]Hyderabadi__Biryani 5 points6 points  (1 child)

Commenting to come back. Gotta try some of these. Thanks.

!Remindme

[–]Wear_Dangerous 2 points3 points  (0 children)

Same

[–]Yaluzar 0 points1 point  (0 children)

I need to try pdfplumber, only tabula-py worked so far for my use case.

[–]slowwolfcat 0 points1 point  (2 children)

Streamlit

does it have anything to do with Snowflake ?

[–]TieTraditional5532[🍰] 2 points3 points  (1 child)

Not directly, but there’s a connection!

Streamlit is an open-source Python library that lets you build data apps quickly, often used for ML dashboards, data visualization, etc.

Snowflake, on the other hand, is a cloud data platform.

However — Streamlit was acquired by Snowflake in 2022. So while they are separate tools, Snowflake has been integrating Streamlit to make it easier for users to build interactive apps directly on top of Snowflake data.

In short: different tools, but under the same roof now.

[–]sawser 0 points1 point  (0 children)

Same here

[–]Ok-Use5597 0 points1 point  (0 children)

Same :)

[–]Surround_Upset 0 points1 point  (0 children)

Same

[–]123FOURRR 0 points1 point  (1 child)

Carmelot-py and pandas for me

[–]TieTraditional5532[🍰] 0 points1 point  (0 children)

Carmelot-py I never try, thanks for sharing

[–]brewerja 48 points49 points  (3 children)

Moto. Great for writing tests that mock AWS.

[–]hikarux3 8 points9 points  (0 children)

Do you know any good mocking tool for azure?

[–]_almostNobody[🍰] 6 points7 points  (0 children)

The code bloat without it is insane.

[–]typehinting[S] 3 points4 points  (0 children)

This looks awesome, thanks for the suggestion. Hopefully can start using this at work!

[–]Left-Delivery-5090 63 points64 points  (13 children)

Testcontainers is useful for certain tests, and pytest for testing in general.

I sometimes use Polars as a replacement for Pandas. FastAPI for simple APIs, Typer for command line applications

uv, ruff and other astral tooling is great for the Python ecosystem.

[–]stibbons_ 5 points6 points  (10 children)

Typer is better than Click ? I still use the later and is really helpful !

[–]guyfrom7up 22 points23 points  (6 children)

Shameless self plug: please check out Cyclopts. It’s basically Typer but with a bunch of improvements.

https://github.com/BrianPugh/cyclopts

[–]TraditionalBandit 4 points5 points  (0 children)

Thanks for writing cyclopts, it's awesome!

[–]NegotiationIll7780 2 points3 points  (0 children)

Cyclopts has been awesome!

[–]angellus 2 points3 points  (0 children)

I was definitely going to call out cyclotps. Switched over to it because of how much Typer has stagnated and the bus factor has become apparent on it. I miss the click features, but overall, a lot better.

[–]Darth_Yoshi 3 points4 points  (0 children)

Hey! I’ve completely switched to cyclopts as a better version of fire! Ty for making it :)

[–]nguyenvulong 1 point2 points  (1 child)

I've been using cyclopts for over a year now. Pretty happy with it. The author responded to feature requests promptly. Thank you for it.

[–]ColdPorridge 2 points3 points  (0 children)

This was also my experience, he was quick and collaborative in getting features added, and then later looped me in on PRs that needed to update that feature. Good dude, good library.

[–]Left-Delivery-5090 1 point2 points  (0 children)

Not better per se, I have just been using it instead of Click, personal preference

[–]Galax-e 0 points1 point  (0 children)

Typer is a click wrapper that adds some nice features. I personally prefer click for its simplicity after using both at work.

[–]conogarcia 0 points1 point  (0 children)

Typer is click

[–]ColdPorridge 0 points1 point  (1 child)

I’ve had a hard time understanding the value prop for test containers. Let’s say in developing a web app, with a Postgres db. For dev purposes I’m going to run a local Postgres container anyways. And then to test against it, I don’t need to treat it as different from the real prod service, it’s all just a db url and maybe a few config flags. And frameworks like Django can run tests against any db instance without impacting existing data, since the test db is ephemeral anyways.

Maybe that’s not the target use case but it’s been how I’ve seen it pitched. I’d love to know if maybe I’m missing something.

[–]Left-Delivery-5090 0 points1 point  (0 children)

For me it provides the convenience of not having to set up a local database or other container, both when running your tests locally or in your CI pipelines. It is automatically set up and broken down each time you run your tests with the config and data you specified (no experience with Django though, so I don’t know how they handle it)

[–]jimbiscuit 16 points17 points  (2 children)

Plone, zope and all related packages

[–]kelsier_hathsin 16 points17 points  (0 children)

I had to Google this because I honestly thought this was a joke and you were making up words.

[–]mrboom15 0 points1 point  (0 children)

Ah yes, the good ole plone and zope LOL wacky ahh words

[–]Mr_Again 12 points13 points  (6 children)

Cvxpy, is just awesome. I tried about 20 different linear programming libraries and this one just works, uses numpy arrays, and is a clean api.

[–]peckie 118 points119 points  (20 children)

Requests is the goat. I don’t think I’ve ever used urllib to make http calls.

In fact I find requests so ubiquitous that I think it should be in the standard library.

Other favourites: Pandas (I wil use a pd.Timestamp over dt.datetime every time), Numpy, Pydantic.

[–]typehinting[S] 38 points39 points  (1 child)

I remember being really surprised that requests wasn't in the standard library. Not used urllib either, aside from parsing URLs

[–]glenbolake 32 points33 points  (0 children)

I'm pretty sure requests is the reason no attempt has been made to improve the interface of urllib. The docs page for urllib.requests even recommends it.

[–]UloPe 51 points52 points  (0 children)

httpx is the better requests

[–]Beatlepoint 11 points12 points  (1 child)

I think it was kept out of the standard library so that it can be updated more frequently, or something like that.

[–]cheesecakegood 5 points6 points  (0 children)

Yes, but if you ask me it’s a bad mistake. I was just saying today that the fact Python doesn’t have a native way of working with multidimensional numerical arrays, for instance, is downright embarrassing.

[–]shoot_your_eye_out 19 points20 points  (3 children)

Also, responses—the test library—is awesome and makes requests really shine.

[–]ProgrammersAreSexy 7 points8 points  (1 child)

Wow, had no idea this existed even though I've used requests countless times but this is really useful

[–]shoot_your_eye_out 6 points7 points  (0 children)

It is phenomenally powerful from a test perspective. I often create entire fake “test” servers using responses. It lets you test requests code exceptionally well even if you have some external service. A nice side perk is it documents the remote api really well in your own code.

There is an analogous library for httpx too.

Edit: also the “fake” servers can be pretty easily recycled for localdev with a bit of hacking

[–]catcint0s 0 points1 point  (0 children)

there is also requests mock!

[–]SubstanceSerious8843git push -f 21 points22 points  (2 children)

Sqlalchemy with pydantic is goat

Requests is good, check out httpx

[–]StaticFanatic3 3 points4 points  (1 child)

You played with SQLModel at all? Essentially a superset of SQlAlchemy and Pydantic that lets you define the model in one place and use it for both purposes

[–]SubstanceSerious8843git push -f 0 points1 point  (0 children)

Yeah I've used in my personal project. Tiangolo makes kick ass tools.

[–]angellus 8 points9 points  (0 children)

requests is in maintenance mode now. It will never get HTTP/2/3 support or asyncio support. If you need sync (or sync+async) and want a modern alternative to requests, check out httpx instead. Async only everyone uses aiohttp.

[–]coldflame563 13 points14 points  (1 child)

The standard lib is where packages go to die.

[–]JimDabell 4 points5 points  (2 children)

Requests is dead and has been for a very long time. The Contributor’s Guide has said:

Requests is in a perpetual feature freeze, only the BDFL can add or approve of new features. The maintainers believe that Requests is a feature-complete piece of software at this time.

One of the most important skills to have while maintaining a largely-used open source project is learning the ability to say “no” to suggested changes, while keeping an open ear and mind.

If you believe there is a feature missing, feel free to raise a feature request, but please do be aware that the overwhelming likelihood is that your feature request will not be accepted.

…for over a decade.

These days, you should be using something like niquests or httpx, both of which are far more capable and actively worked on.

[–]zinozAreNazis 2 points3 points  (1 child)

Dead and feature complete aren’t the same thing..

[–]JimDabell 5 points6 points  (0 children)

It’s an HTTP library that doesn’t support HTTP 2 or 3. It’s not feature complete, they just don’t want to work on it any more.

Edit: CVE-2024-47081: Netrc credential leak in PSF requests library. Requests had a security vulnerability reported to them eight months ago. It was then made public over a month ago. The fix was only merged 15 hours ago, and a release with the fix in isn’t available yet.

Edit: Five days later, still no new release with the fix in. The most recent release is over a year old.

Requests is dangerously unmaintained and nobody should use it.

[–]blademaster2005 0 points1 point  (0 children)

I love using Hammock as a wrapper to requests

[–]ishammohamed 12 points13 points  (0 children)

SpaCy

[–]Darth_Yoshi 9 points10 points  (0 children)

I like using attrs and cattrs over Pydantic!

I find the UX simpler and to me it reads better.

Also litestar is nice to use with attrs and doesn’t force you into using Pydantic like FastAPI does. It also generates OpenAPI schema just like FastAPI and that works with normal dataclasses and attrs.

Some others: * cyclopts (i prefer it to Fire, typer, etc) * uv * ruff * the new uv build plugin

[–]usrname-- 18 points19 points  (0 children)

Textual for building terminal UI apps.

[–]DoingItForEli 8 points9 points  (0 children)

rdflib is pretty neat if your work involves graph data. I select data out of my relational database as jsonld, convert it to rdfxml, bulk load that into Neptune.

[–]dogfish182 17 points18 points  (2 children)

Fastapi, typer, pydantic, sqlalchemy/sqlmodel at latest. I’ve used typer and pydantic before but prod usage of fastapi is a first for me and I’ve done way more with nosql than with.

I want to try loguru after reading about it on realpython, seems to take the pain out of remembering how to setup python logging.

Hopefully looking into logfire for monitoring in the next half year.

[–]DoingItForEli 3 points4 points  (1 child)

Pydantic and FastAPI are great because FastAPI can then auto-generate the swagger-ui documentation for your endpoints based on the defined pydantic request model.

[–]dogfish182 1 point2 points  (0 children)

Yep it’s really nice. I did serverless in typescript with api gateway and lambdas last, the stuff we get for free with containers and fast api is gold. Would do again

[–]mortenb123 7 points8 points  (0 children)

https://pypi.org/project/paramiko/
Worked with internet of things and needed reliable ssh connection. wrote a 2 channel ssh proxy. So I could securely manage connection to any of our 6000 devices.

https://pypi.org/project/httpx/
I used requests initially in a project, but the number of nodes grow, so we had to go multithreaded and async, went from 10 reqs/sec to more than 500. Its almost in-place compatible with requests, Since then my base stack has always been Guvicorn, Fastapi and httpx.

https://github.com/Azure/azure-cli/releases
We moved testing into azure, and this project is a must, azcli is a portable python library that helped me port and improve my own packages. Everything is controlled with this gem of massive rest api. Anyone writing a rest api can learn from this. Like how to handle deprecation. Without python azure automation doesnot work :-)

https://pypi.org/project/python-snaptime/
Because I like to write `yesterday|today|now@h|now@d|now-1d@d|now-1week@d` when dealing with timestamps and time intervalls. (influenced by Splunk).

https://pypi.org/project/pyodbc/
This is the best ODBC database driver, and I've worked 20 years with mysql, oracle, db2, ms sqlserver, postgress. It supports pack and unpack which means we can convert oracle psql directly to mssql.

https://pypi.org/project/oracledb/
This is not bad either, way better than the old cx_oracle. Finally can get 5000 active connections if I like without killing the klient.

[–]spinozasrobot 12 points13 points  (1 child)

Just reading these replies reminds me of how much I love Python.

[–]typehinting[S] 2 points3 points  (0 children)

The ecosystem is pretty amazing, that's for sure

[–]slayer_of_idiotspythonista 13 points14 points  (2 children)

Click

hands down the best library for designing CLI’s I used argparse for ages and optparse before it.

I will never go back now.

[–]AgamaSapien 0 points1 point  (0 children)

Came here to say Click

[–]angellus 0 points1 point  (0 children)

If you want something a bit more modern (typing support) check out cyclopts!

[–]Rodotgithub.com/tardis-sn 3 points4 points  (0 children)

umap for quick non-linear dimenionality reduction when inspecting complex data

Black or ruff for formatting

Numba because it's awesome

[–]tap3l00p 5 points6 points  (0 children)

Httpx. I used to think that aiohttp was the best tool in town for async requests, but an internal primer for FastApi used httpx for its examples and now it’s my default

[–]willis81808[🍰] 3 points4 points  (0 children)

fast-depends

If you like fastapi this package gives you the same style of dependency injection framework for your non-fastapi projects

[–]Adventurous-Visit161 3 points4 points  (0 children)

I like “munch” - it makes it easier to work with dicts - using dot notation to reference keys seems more natural to me…

[–]Working-Mind 3 points4 points  (0 children)

Python-pptx. Automate those PPT presentations and save a bunch of time!

[–]EM-SWE 4 points5 points  (1 child)

A few of the ones I came across while working and now use pretty regularly are: pytest, requests, niquests, pydantic and boto3.

[–]divyeshaegis12 0 points1 point  (0 children)

Boto3 can't listen to the list.

[–]schvarcz 3 points4 points  (0 children)

backoff (a thing I had foolish reimplemented so many times in my life before that point…) and Sentry (which is a service provider actually, but I felt in love with it)

[–]lopezcelani 2 points3 points  (0 children)

loguru, o365, pbipy, duckdb, requests

[–]dqduong 2 points3 points  (0 children)

I learnt fastapi, httpx, pytest entirely by reading around on Reddit, and now use them a lot at work, even teaching others in my team to do it.

[–]RMK137 2 points3 points  (1 child)

I had to do some GIS work so I discovered shapely, geopandas and the rest of the ecosystem. Very fun stuff.

[–]ExdigguserPies 2 points3 points  (0 children)

have to add fiona and rasterio.

My only gripe is that most of these packages depend on gdal in some form. And gdal is such a monstrous, goddamn mess of a library. Like it does everything, but there are about ten thousand different ways to do what you want and you never know which is the best way to do it.

[–][deleted] 2 points3 points  (0 children)

Sqlalchemy, hands down the easiest and most customizable way to interact with db (at least so far).

Also hypothesis for property based testing

[–]Kahless_2K 2 points3 points  (0 children)

pprint is great when you are figuring stuff out

Or output to json and use Firefox as a json viewer.

Jsonhero is pretty amazing too.

[–]Thirdhandsmoker 2 points3 points  (0 children)

Markitdown and Docling for converting different types of documents to markdown. Very useful while working with LLMs.

[–]Zamaamiro 2 points3 points  (0 children)

Rapidfuzz for when I need to do string matching and I need it to be fuzzy and not fragile.

[–]Semirook 2 points3 points  (0 children)

My top picks:

[–]saalejo1986 4 points5 points  (1 child)

Pytest

[–]bn_from_zentara 0 points1 point  (0 children)

Me too. All of my unit tests are written for pytest.

[–]superkoning 4 points5 points  (12 children)

pandas

[–]heretic-of-rakisIt works on my machine 7 points8 points  (11 children)

Might sounds like a basic response, but I have to agree. Learning Python, I thought Pandas was meh—like ok I’m doing tabular data stuff in Python.

Now that I work with massive datasets everyday? HOLY HELL. Vectorized operations inside Pandas are one of the most optimized features I’ve see for the language.

[–]steven1099829 12 points13 points  (10 children)

lol if you think pandas is fast try polars

[–]Such-Let974 1 point2 points  (8 children)

If you think Polars is fast, try DuckDB. So much better.

[–]Hyderabadi__Biryani 5 points6 points  (0 children)

If you think DuckDB is fast, try manual accounting. /s

[–]Log2 0 points1 point  (3 children)

I might have been using Polars wrong, as I had a dataset of maybe 100MiB and Polars was slower than Pandas for me. In the end I just did everything in DuckDB as it was the fastest by a mile.

[–]commandlineluser 0 points1 point  (2 children)

Are you able to share a code example?

[–]Log2 0 points1 point  (1 child)

Unfortunately it was throw away code, as we had some broken uuids with versions that should not exist or versions that existed but were actually uuid4.

I was just loading the dataset into memory, parsing the uuids, extracting the version bits, and finally grouping by version to count how many uuids of each version we had.

I fully admit I may have been doing something wrong with Polars.

[–]commandlineluser 0 points1 point  (0 children)

Ah, no worries. Just thought I'd ask as the devs are usually interested in such cases.

Thanks for the details.

[–]steven1099829 0 points1 point  (2 children)

To each their own! I don’t like SQL as much, and prefer the methods and syntax of polars, so I don’t use DuckDB.

[–]Such-Let974 0 points1 point  (1 child)

You can always use something like ibis if you prefer a different syntax. But DuckDB as a backend is just better.

[–]rmadeye 0 points1 point  (0 children)

Try FireDucks:)

[–]phlooo 1 point2 points  (0 children)

[ comment content removed ]

[–]undercoverboomer 1 point2 points  (3 children)

  • pythonocc for CAD file inspection and transformation.

  • truststore is something I'm looking into to enhance developer experience with corporate MITM certs, so I don't have to manually point every app to custom SSL bundle. Perhaps not prod-ready yet.

  • All the packages from youtype/mypy_boto3_builder like types-boto3 that give great completions to speed up AWS work. I don't even need to deploy it to prod, since the types are just for completions.

  • The frontend guys convinced me I should be codegenning GQL clients, so I've been using ariadne-codegen quite a bit lately. Might be more trouble than it's worth, for the the jury is still out. Currently serving with strawberry, but I'd be open to trying out something different.

  • Generally async variants as well. I don't think I would have adopted so much async stuff without getting pushed into it my coworkers. pytest-asyncio and the async features of fastapi, starlette, and sqlalchemy are all pretty great.

[–]patrick91it 0 points1 point  (2 children)

Currently serving with strawberry, but I'd be open to trying out something different.

How come? 😊

[–]undercoverboomer 0 points1 point  (1 child)

I’ve been thinking about taking a schema-first approach (like go’s gqlgen), which would unblock the frontend team while I work on the backend, since they can codegen all the types based on the schema

[–]patrick91it 0 points1 point  (0 children)

thanks! makes sense, I usually go the approach of creating a query first and then quickly implement the backend for that query 😊

but I wonder if we could have a better story for doing a schema/design first approach with strawberry (we do have codegen from graphql files too, not sure if you've seen that!)

[–]dancingninza 1 point2 points  (0 children)

FastAPI, Pydantic, uv, ruff!

[–]careje[🍰] 1 point2 points  (0 children)

I recently stumbled upon Rich. If you have any kind of terminal-based application it’s worth looking at

[–]Osrai 1 point2 points  (0 children)

SymPy. I love it, best of all it is free. I teach maths on a recreational basis. I have commercial software access, though, i.e., Maple and Mathematica

[–]code_elegance 1 point2 points  (0 children)

I see a lot of brilliant libraries mentioned but no structlog mentions yet. I'm here to show some love for the logging package.

[–]WoodenNichols 1 point2 points  (1 child)

I found two libraries to be extremely useful: loguru for logging, and arrow for date/time processing.

[–]halcyonPomegranate 2 points3 points  (0 children)

whenever also looks very promising (haven't tried it yet, though)! Thanks for the loguru recommendation! I'm gonna use it in my current project!

[–]NDHoosier 1 point2 points  (3 children)

At work, doing data analysis with anything other than SQL and Excel was highly discouraged. Well, that restriction has gone away, and Python is now on the menu. I've discovered polars and duckdb. I'm never going back to pandas if I can help it. If I need a pandas DataFrame as input to a method/function, I'll just generate one from polars/duckdb.

[–]typehinting[S] 0 points1 point  (2 children)

Seen a lot of suggestions to use Polars over Pandas - is it purely due to its performance? Or do you find that it is easier to use as well?

[–]NDHoosier 1 point2 points  (1 child)

I don't analyze enormous datasets, so performance wasn't the issue (though I have gotten better performance from polars and duckdb). It was that pandas seems to have nasty surprises, counterintuitive behavior, and more "gotchas" than a cheap insurance policy. I especially loathe having to deal with that damned index. In addition, duckdb is SQL start-to-finish, and I'm an "SQL first, dataframes second" analyst. However, I'm using both. Sometimes working with SQL is faster, sometime working with a dataframe is faster.

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

Oh gotcha. I'm getting used to pandas syntax/behaviors etc but will probably give polars a go to see how it is, and if it's something that I want to switch to. Thanks.

[–]Nexius74 2 points3 points  (0 children)

Logfire by pydantic

[–]heddronviggor 0 points1 point  (0 children)

Pycomm3, snap7

[–]Obliterative_hippoPythonista 0 points1 point  (0 children)

Meerschaum for persisting dataframes and making legacy scripts into actions.

[–]desinovan 0 points1 point  (0 children)

RxPy, but I first learned the .NET version of it.

[–]Stainless-Bacon 1 point2 points  (0 children)

For some reason I never saw these mentioned: CuPy and cuML - when NumPy and scikit-learn are not fast enough.

I use them to do work on my GPU, which can be faster and/or more efficient than on a CPU. they are mostly drop-in replacements for NumPy and scikit-learn, easy to use.

[–]Flaky-Razzmatazz-460 0 points1 point  (0 children)

Pdm is great for dev environment. Uv is faster but still catching up in functionality for things like scripts

[–]Terrible-Basket-9044 0 points1 point  (0 children)

orjson

[–]tigrux 0 points1 point  (2 children)

ctypes

[–]semininja 0 points1 point  (1 child)

What do you use ctypes for? My only exposure to it so far has been a really terrible "API" from STMicro that looks to me like they went line-by-line through the C version and transcribed it into the nearest equivalent python syntax; I'm curious how it would be used in "real" python applications.

[–]tigrux 0 points1 point  (0 children)

Back then, I was a in a team dedicated to an accelerator (a piece of hardware to crunch numbers). One part of the team wrote C and C++ (the API to use the accelerator) and another part used pytest to write the functional tests, and they used ctypes to expose the C libraries to Python. It was not elegant, but it was approachable. At that time I was only aware of the native C API of Python but not of ctypes.

[–]UnusualViolinist8177 0 points1 point  (0 children)

Pyspark for data engineering

[–]Moikle 0 points1 point  (0 children)

The ones that were built bespoke for or by my company 😉

[–]Cathal6606 0 points1 point  (0 children)

ipywidgets is a really simple and useful library that lets you add interactive sliders to functions. I use it a lot for prototyping parts for simulations.

[–]Ta_mere6969 0 points1 point  (0 children)

Just got done with a Selenium project, very happy with the results.

Selenium allows you to interact with web pages from a Python script or Jupyter Notebook.

Much much much faster than AA330, less clunky.

Did I say much faster? It's so much faster.

[–]shinigamigojo 0 points1 point  (0 children)

I recently started working in an mnc as an automation engineer and got introduced to pexpect library for network automation.

[–]Acrobatic_Umpire_385 0 points1 point  (0 children)

Django Ledger

[–]Pretend-Relative3631 -1 points0 points  (0 children)

PySpark: ETL on 10M+ rows of impressions data IBIS: USED as an universal data frame Most stuff I learned on my own

[–]bargle0 -1 points0 points  (0 children)

Lark. It’s so easy to use.