ptmcg
ptmcg-pm.bsky.social
ptmcg
@ptmcg-pm.bsky.social
Author/maintainer of pyparsing, littletable, plusminus, logmerger; co-author of Python in a Nutshell 4th edition
There's no link in this article, but if you like these pieces, many are available as phone cases and laptop skins at www.gelaskins.com/search?q=pau...
Search: 109 results found for "paul mcguire"
Personalize and protect your iPhone, iPad, MacBook, Dell, Microsoft and Samsung devices with artist-designed and custom skins and cases.
www.gelaskins.com
January 31, 2026 at 2:36 PM
I'm excited to share this article published this week in the Artsy Shark blog, on my artistic journey with generative art (which I've been doing since the mid-1980's, so NOT AI). www.artsyshark.com/2026/01/26/f... #art #digitalart #abstractart #generativeart #fractals
Featured Artist Paul McGuire | Artsy Shark
Blending math and imagination, Paul McGuire creates fractal-inspired images that reveal unexpected beauty in algorithmic form. View more on his
www.artsyshark.com
January 31, 2026 at 2:18 PM
Featured this week on the Artsy Shark website! Includes some of my favorite pieces, and some backstory on how they all came about.

Featured Artist Paul McGuire www.artsyshark.com/2026/01/26/f...
Featured Artist Paul McGuire | Artsy Shark
Blending math and imagination, Paul McGuire creates fractal-inspired images that reveal unexpected beauty in algorithmic form. View more on his
www.artsyshark.com
January 27, 2026 at 5:13 PM
Reposted by ptmcg
If you're a Python developer using Claude Code, or something similar, we just published a blog that covers 10 rules we add to our prompt for drastically improved code gen.

And we include the full prompt at the end of the post!

dagster.io/blog/dignifi...
January 9, 2026 at 5:26 PM
Even though they have refactored pyparsing out of packaging, I'm proud of its prior inclusion in this core Python component.
January 10, 2026 at 6:58 AM
Add `time.sleep((366 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0) else 365)*24*60*60)` to your loop, and you can just leave it running (barring future leap seconds).
December 31, 2025 at 9:15 AM
This past weekend I pushed version 3.3.1 of pyparsing to PyPI (3.3.0 had a small but CI-stopping packaging blip). Includes AI instructions of pyparsing best practices. Deprecated camelCase names now throw DeprecatedWarnings. TINY teaching language parser+REPL
#PythonDevelopment #python #pyparsing
December 25, 2025 at 4:46 AM
A TINY script for finding prime numbers
November 26, 2025 at 5:23 AM
The TINY interpreter was written with AI assistance (Junie in PyCharm), using the AI-targeted best practices that ship with this release of pyparsing. The interpreter examples include a transcript of the AI session, including prompts and the corresponding AI plans and actions taken.
November 26, 2025 at 3:52 AM
I just published pyparsing version 3.3.0b1, with some significant additions:
- example implementation of the TINY language
- performance tests with scripts to run and tabulate results using pyparsing 3.1-3.3 and Python 3.9-3.14

Github link: github.com/pyparsing/py...

#pyparsing #python #parsing
Release Pyparsing 3.3.0b1 · pyparsing/pyparsing
(added in 3.3.0b1) Implemented a TINY language parser/interpreter using pyparsing, in the examples/tiny directory. This is a little tutorial language that I used to demonstrate how to use pyparsi...
github.com
November 26, 2025 at 3:18 AM
I just released version 0.13.0, with some significant performance speedups, and visibility to loading time while building the display DataTable. Changelog here: github.com/ptmcg/logmer...
November 15, 2025 at 5:08 PM
But do you pronounce it "toople" or "tupple"?
October 9, 2025 at 7:16 AM
And even a "<<=" operator!
October 1, 2025 at 12:14 PM
Mini-gallery of business card-sized prints of my artwork. Submitting these to the Bee Cave Arts Foundation's Christmas Fair. Prints by moo.com #art #digitalart #beecaveartsfoundation
October 1, 2025 at 5:42 AM
With the upcoming release of #pyparsing 3.3.0, this code would emit DeprecationWarnings: nestedExpr is deprecated in favor of nested_expr, and parseString in favor of parse_string. A conversion utility ships with pyparsing to auto-update all of these pre-PEP8 names to PEP-8 compliant snake case.
September 29, 2025 at 7:26 PM
`operator.attrgetter("first")` and `operator.attrgetter("last")` would work here too. `attrgetter` can also drill down into the structure of an object, like `operator.attrgetter("address.postal_code")`. Best of all, attrgetter runs at C speed, when lambdas are the Pokey Little Puppy of Python.
September 29, 2025 at 4:38 PM
Get a post-it note and write CUT ME on it. Attach it to the jacket's coat tail, but do so surreptitiously to avoid embarrassment.
September 29, 2025 at 3:17 PM
I pushed out version 3.3.0a1 late yesterday, so that folks with existing apps can upgrade their code from the deprecated pre-PEP8 API, or to try out the AI instructions to generate a new parser app. There is a discussion link here: github.com/pyparsing/py...
Pyparsing 3.3.0a1 · pyparsing pyparsing · Discussion #620
Supports Python 3.14 and free-threaded 3.14t. (Note: this does not mean that pyparsing is thread-safe, simply that pyparsing can safely run using the free-threaded build of Python.) The version 3.3...
github.com
September 29, 2025 at 2:05 PM
This pigment is a plot device in the book "Sacre Bleu", a fantasy/light horror with a heavy dose of art history, set in Paris during the Impressionist period.
September 29, 2025 at 7:31 AM
The upcoming 3.3.0 release of pyparsing will include AI instructions for best practices when using this package. They can be accessed from the command-line using `python -m pyparsing.ai.show_best_practices` (They work for human developers too.) #python #pythondev #pyparsing #ai
September 29, 2025 at 5:51 AM
I should have added the #Art and #DigitalArt hashtags (always forgetting those hashtags...) :shrug-emoji:
September 28, 2025 at 4:43 PM
Greetings, BlueSky-ers! I'm new here so I wanted to do a quick introduction. My name is Paul McGuire, I've been using Python for about 24 years. I maintain the #pyparsing package, which is about to have its release 3.3.0 next month. I also make digital art. #PythonDev #Python #Introduction
September 28, 2025 at 4:33 PM
Oh, and you can type hint the hh variable as:

hh: Heapq[tuple[str, int]] = Heapq()
September 28, 2025 at 1:11 PM
Here is a Heapq class wrapper around those heapq functions, if you really want to en-class-ify them.

Code is in the ALT text.
September 28, 2025 at 1:09 PM