Cog resurgence

Friday 14 January 2022

My cog tool has been having a resurgence of late: a number of people are discovering it’s useful to run a little bit of Python code inside otherwise static files.

It took cog 17 years to become an overnight success :)
(first posted Feb 2004: nedbatchelder.com/blog/200402/co…)

3:46 PM · Nov 22, 2021

Hynek Schlawack used it to de-duplicate his pyproject.toml:

As a test balloon, I’ve switched structlog from setup.py to flit w/ pyproject.toml in combination with @nedbat’s cog to maintain some deduplication. I think I like it! Sharp tools that do one thing well FTW.

Switch to flit with dynamic metadata via cog · hynek/structlog@5e6ea9c
4:09 AM · Nov 17, 2021

Automator extraordinaire Simon Willison started using it to keep docs up to date:

I’ve been solving so many documentation problems with @nedbat’s cog tool recently - it’s fantastic for keeping documentation automatically up-to-date, in Markdown or rST)

Here’s a new page of sqlite-utils docs showing --help for every CLI command! sqlite-utils.datasette.io/en/latest/cli-… pic.twitter.com/8tyfyfe7AT

Partial screenshot of that page, showing three different commands each with their --help output and a link to further information in the prose documentation
4:48 PM · Jan 11, 2022

Brett Cannon even called it trendy!

A quick, public thanks to @nedbat for creating Cog; I did the “trendy” thing and used Cog to automate the README for the Python Launcher for Unix (instead of using my home-grown solution). Makes editing the README simple again! Move to using cog for maintaining the README

Dec 31, 2021

Of course, some people were using it before it was cool.

With all this buzz(!), Tobias Macey invited me on podcast.__init__ to talk about it: Episode 347: Generate Your Text Files With Python Using Cog. It was fun to talk about this little tool I wrote nearly 18 years ago that has been plugging away all this time, and is now being re-discovered.

Even I am finding new uses for cog. I started using it to keep coverage.py docs up to date, I built my crazy over-engineered GitHub profile (source) with it, and I even used it on the source file of this blog post to pull in the tweets!

Comments

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.