Python Packages¶
A small collection of python packages. Some are notes for further investigation, some I use occasionally and want a reminder for, some I use all the time. This is not a complete list, just a scratchpad of sorts.
CLI tools¶
Click¶
https://click.palletsprojects.com/en/7.x/
Definitely my favourite CLI tool so far. Read a comparison of argparse, docopt and click on Real Python
Nubia¶
https://github.com/facebookincubator/python-nubia/blob/master/README.md
Nubia is a lightweight framework for building command-line applications with Python. It was originally designed for the "logdevice interactive shell (aka. ldshell)" at Facebook. Since then it was factored out to be a reusable component and several internal Facebook projects now rely on it as a quick and easy way to get an intuitive shell/cli application without too much boilerplate.
Nubia is built on top of python-prompt-toolkit which is a fantastic toolkit for building interactive command-line applications.
Rich¶
https://rich.readthedocs.io/en/latest/
Rich is a Python library for writing rich text (with color and style) to the terminal, and for displaying advanced content such as tables, markdown, and syntax highlighted code. I'll use this in the next release of hint.
Documentation¶
Portray¶
https://github.com/timothycrosley/portray
MKDocs¶
pdoc3¶
terminalizer¶
Ok, so it's Node.js but useful to note here to generate animated terminal gifs for cli documentation.
General¶
isort¶
https://github.com/timothycrosley/isort
Sorts your imports, so you don't have to.
natsort¶
https://natsort.readthedocs.io/en/master/
Sort things 'naturally', including but not limited to semantic version numbers.
parse¶
https://pypi.org/project/parse/
Simplified regex-based string search.
python-benedict¶
https://github.com/fabiocaccamo/python-benedict
dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, json, pickle, plist, query-string, toml, xml, yaml) and many utilities.
Diagrams as code¶
https://diagrams.mingrammer.com/
GUI Tools¶
Dear PyGUI¶
https://github.com/hoffstadt/DearPyGui
Logging and error handling¶
PrettyErrors¶
https://github.com/onelivesleft/PrettyErrors
"Prettifies Python exception output to make it legible". Tracebacks are legible IMO, the problems are mostly getting users (including myself) to read them carefully and diligently every time. They could still be formatted better for humans though. One to review, my initial impression is I'm not 100% sold on the output. One to compare and constrast with the logging and error handling features in Rich. Could be a useful tool for new users of python though, as it can be configured with no code changes required.
Managing¶
Poetry¶
Packaging and dependency management. Doesn't yet support autoversioning from Git tags, that's dependent on the plugin framework in v1.2, hopefully soon. Still great for personal projects where manually bumping versions is manageable (ymmv) and releasing to pypi.org is fine to do locally.
Sailboat¶
https://github.com/cole-wilson/sailboat
Templating¶
Cruft¶
https://timothycrosley.github.io/cruft/
Built in top of cookiecutter, Cruft enables a project template to be reapplied as and when the template is updated.
Versioning¶
setuptools-scm¶
https://pypi.org/project/setuptools-scm/
setuptools_scm handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file. It also handles file finders for the supported SCMs.
Zest-Releaser¶
https://github.com/zestsoftware/zest.releaser
Versions using one of four different files, no support for using git tags :(
bumpversion¶
https://pypi.org/project/bumpversion/
Python Semantic Release¶
https://github.com/relekang/python-semantic-release
Web¶
BeautifulSoup¶
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Beautiful Soup is a Python library for pulling data out of HTML and XML files. It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. Use with Requests.
Scrapy¶
https://doc.scrapy.org/en/latest/index.html
Scrapy is a fast (async) high-level web crawling and web scraping framework, used to crawl websites and extract structured data from their pages. It can be used for a wide range of purposes, from data mining to monitoring and automated testing.