DEV Community

Cover image for Pytabby: a tabbed menu system for console-based Python programs
David Taylor
David Taylor

Posted on

Pytabby: a tabbed menu system for console-based Python programs

I made a thing. I’m sharing the thing.

pytabby on GitHub

pytabby on PyPI

pytabby on ReadTheDocs

For 99% of its life the repo had a boring name (tabbedconsolemenus), but the day I did the initial release, I threw caution to the wind and named it pytabby.

Basically, it’s a utility that allows you to define a console-based menu system to control your program flow.

I, being wierd, like console-based programs, as opposed to command-line with args, or GUIs, or whatever. (On Windows, which I admit I use less and less in favor of Linux, mostly thanks to my new System76 Oryx Pro laptop, it’s easy to create a context menu to launch all kinds of Python scripts using the ugly but serviceable ContextEdit utility, and it’s nice to have everything under one umbrella, so I can select a folder and recursively remove empty folders, find duplicate files, resize image files, etc., all with one wrapper.).

Now on Github and PyPI (the Python package organizer) there are several tiers of contributors: commercial organizations like Google that contribute huge open-source projects like Tensorflow, volunteer organizations that contribute huge open-source projects like scikit-learn, godlike individuals like Kenneth Reitz who do most of the heavy lifting for ubiquitous projects like request and Pipenv… and then a few other tiers. I’m definitely a few places further down that list.

I think my journey here is typical of many developers. I had a thing I used (one single .py script I used to make a menu system and control other python programs), and I thought, (a) this could be more robust, (b) perhaps others could user this, and (c) it would be good to get some real experience with many of the elements of open-source toolset, including Pipenv (which I ended up not using, for a reason that turned out not apply, but by then I was locked into virtualenvwrapper, for the moment anyway), continuous integration with Travis, Appveyor, tox, pytest (which I’d used before but never for a self-contained project like this), linting (which I’d used before, but not assiduously), coverage, codacy code quality and security checking, ReStructured Text and Sphinx and readthedocs. And, of course, setup.py, and putting my source code in a src/ folder so it’s out of your path and has to be locally, editably pip installed. I have a feeling I have a future blog post in me describing this ecosystem. Oh, and badges. (“Badges? We don’t need no stinkin’ badges.” But they are nice.)

So it was a great learning journey. I think my final product is okay. I doubt it will be very popular, but it’s the journey that counts, right?

Oh, and given the name, how could I not make a picture to accompany it?

Top comments (0)