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.