U:: [[Python (Language)]]
Description:: My gold standard python libraries
## Developer Tools
- [`poetry`](https://python-poetry.org/) for dependency management. The main things I
really like are:
- just works - dependency resolution may be slow but it's thorough
- can specify development dependencies and actual dependencies
- `poetry run` is a convenient interface to create scripts for deployment, etc.
- [`ipython`](https://ipython.org) - can easily be confused with Jupyter, as that's the
underlying shell, but ipython by itself is a great alternative REPL that I use for
any development.
- the `autoload` magic is super useful for developing libraries, so that you don't
have to keep restarting your REPL as you develop your module.
- [`black`](https://github.com/psf/black) - opinionated. I don't want to mess with
formatting and code style - I just want it to be _consistent_. That's what `black`
does to my code. Set python files to autoformat in VS code for additional
convenience.
## Web Technologies
- [`requests`](https://requests.readthedocs.io/en/latest/) for making HTTP requests.
Just simple, pretty much ubiquitous, and well supported.
- [`requests-cache`](https://pypi.org/project/requests-cache/) is super useful when
scraping websites because it allows you to cache the responses while developing
(and even in production) so that you don't need to keep refetching the same data.
- [`beautifulsoup4`](https://beautiful-soup-4.readthedocs.io/en/latest/) - standard
scraping library - nothing much to ask for. Maybe form handling can be improved.
## Programming Utilities
- [`pydantic`](https://pydantic-docs.helpmanual.io/) is a library underlying more
popular libraries. If you use functional programming a lot and only want objects to
have data, not methods, then this is super useful.
## Publishing
- [`quarto`](https://quarto.org) is a scientific publishing tool that encompasses
Python, R, and Julia - which are my main languages. It's what I built these field
notes in so obviously it should make it.