# python 1,283

Published articles for python 1,283.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## commit-rewriter 0.1

DevFeed: [commit-rewriter 0.1](<https://devfeed.tech/articles/commit-rewriter-0-1-31176.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Sep/14/commit-rewriter/>)

Author: Simon Willison

Published: 2026-09-14T00:28:10Z

Content type: release

Language: en

Sources: [Simon Willison's Weblog](<https://devfeed.tech/sources/simon-willison-s-weblog.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [repo](<https://devfeed.tech/topics/repo.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Git](<https://devfeed.tech/topics/git.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [ai-assisted-programming](<https://devfeed.tech/tags/ai-assisted-programming.md>), [ai-assisted-programming-407](<https://devfeed.tech/tags/ai-assisted-programming-407.md>), [git](<https://devfeed.tech/tags/git.md>), [git-55](<https://devfeed.tech/tags/git-55.md>), [projects](<https://devfeed.tech/tags/projects.md>), [projects-553](<https://devfeed.tech/tags/projects-553.md>), [python](<https://devfeed.tech/tags/python.md>), [python-1-283](<https://devfeed.tech/tags/python-1-283.md>)

### AI overview

Release announcement for commit-rewriter 0.1, a small web app that edits repository commit messages and rewrites commits from the first edited commit through the latest one. It creates a timestamped branch of the current repository state so changes can be reverted.

### Source excerpt

Release: commit-rewriter 0.1 I built this little web app the other day to help edit the commit messages for the Datasette security releases. The initial commits were full of coding agent cruft and references to issue IDs from our private repository, so they weren't fit for publication. If you want to edit the commit messages for a repository you can run it like this: uvx commit-rewriter path/to/repo Omit the path if you are already in the directory for that repo. When you submit your edits the tool creates a timestamped branch of your current repo state - to allow you to revert if you need to - and then rewrites every commit from the first one you edited to the most recent. Tags: git, projects, python, ai-assisted-programming

## Soft-deprecating re.match()

DevFeed: [Soft-deprecating re.match()](<https://devfeed.tech/articles/soft-deprecating-re-match-31169.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Sep/11/soft-deprecating-re-match/>)

Author: Simon Willison

Published: 2026-09-11T14:47:57Z

Content type: article

Language: en

Sources: [Simon Willison's Weblog](<https://devfeed.tech/sources/simon-willison-s-weblog.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [python](<https://devfeed.tech/tags/python.md>), [python-1-283](<https://devfeed.tech/tags/python-1-283.md>), [regular-expressions](<https://devfeed.tech/tags/regular-expressions.md>), [regular-expressions-38](<https://devfeed.tech/tags/regular-expressions-38.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

Python 3.15 is soft-deprecating the confusing re.match() function, recommending clearer alternatives such as re.prefixmatch(), re.search(), and re.fullmatch().

### Source excerpt

Soft-deprecating re.match() Python has a concept of soft deprecation, where APIs are marked as "should no longer be used to write new code" without any promise/threat to remove them in the future. Python 3.15 release manager Hugo van Kemenade describes how in the upcoming 3.15 release soft deprecation has come for the venerable but deeply confusing re.match() function. It's now available with the much clearer alternative re.prefixmatch() name - reflecting how it anchors at the beginning of the string but not the end. Most of the time you probably want re.search() (match this pattern anywhere in the string) or re.fullmatch() (match the entire string) instead. Via Lobste.rs Tags: python, regular-expressions

## Wrapture: a Python package for monkey patching, testing, and observability

DevFeed: [Wrapture: a Python package for monkey patching, testing, and observability](<https://devfeed.tech/articles/don-t-sleep-on-wrapture-31170.md>)

Original publisher: [Read original article](<https://simonwillison.net/2026/Sep/11/wrapture/>)

Author: Simon Willison

Published: 2026-09-11T13:51:32Z

Content type: opinion

Language: en

Sources: [Simon Willison's Weblog](<https://devfeed.tech/sources/simon-willison-s-weblog.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Instrumentation](<https://devfeed.tech/topics/instrumentation.md>), [tracing](<https://devfeed.tech/topics/tracing.md>), [OpenTelemetry](<https://devfeed.tech/topics/opentelemetry.md>), [Flask](<https://devfeed.tech/topics/flask.md>), [jupyterlab](<https://devfeed.tech/topics/jupyterlab.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [graham-dumpleton](<https://devfeed.tech/tags/graham-dumpleton.md>), [graham-dumpleton-6](<https://devfeed.tech/tags/graham-dumpleton-6.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [monkey-patching](<https://devfeed.tech/tags/monkey-patching.md>), [monkey-patching-10](<https://devfeed.tech/tags/monkey-patching-10.md>), [observability](<https://devfeed.tech/tags/observability.md>), [observability-10](<https://devfeed.tech/tags/observability-10.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [open-source-320](<https://devfeed.tech/tags/open-source-320.md>), [opentelemetry](<https://devfeed.tech/tags/opentelemetry.md>), [python](<https://devfeed.tech/tags/python.md>), [python-1-283](<https://devfeed.tech/tags/python-1-283.md>), [testing](<https://devfeed.tech/tags/testing.md>), [testing-95](<https://devfeed.tech/tags/testing-95.md>), [tracing](<https://devfeed.tech/tags/tracing.md>)

### AI overview

This article reviews wrapture, an alpha Python package by Graham Dumpleton for monkey patching, unit testing, call recording, live and zero-code tracing, timing analysis, and OpenTelemetry export. It highlights tutorials and JupyterLab workshops covering the package and related instrumentation.

### Source excerpt

Graham Dumpleton's new monkey patching package wrapture is shaping up to be an indispensable tool for Python developers. I'm not sure why I've seen so little buzz about it! Graham has been posting new tutorials for it almost daily since the initial release on August 31st. Here's everything he's published so far: Introducing wrapture - a new monkey patching library that serves both testing and observability (think New Relic style tracing) at the same time. Unit testing with wrapture - how to use it for the same kinds of thing as unittest.mock. Recording calls with wrapture - recording method calls as timelines and processing and displaying them as trees. Phased behaviour in wrapture - arranging patched methods to change behavior across multiple calls. Beyond callables in wrapture - monkey patching attributes, dictionaries, generators. Live tracing with wrapture - tracing a live application to see exactly how it works. Zero-code tracing with wrapture - configuring tracing in a separate TOML file without modifying Python code at all. Tracing Flask with wrapture - using the separate wrapture-instrumenation package to instrument a Flask application. That package also provides instrumentation for aiohttp.client, aiohttp.web, django, fastapi, flask, grpc, http.client, httpx, jinja2, requests, sqlalchemy, sqlite3, starlette, urllib.request, urllib3, uvicorn, werkzeug.serving, wsgiref.simple_server, xmlrpc.client, xmlrpc.server. Finding slow code with wrapture - wrapture's tools for recording timing information, both individually and aggregated across multiple calls. OpenTelemetry export in wrapture - exporting traces to OpenTelemetry. Graham also has a set of interactive workshops for wrapture, implemented as JupyterLab notebooks. Wrapture is still alpha software but it's already very usable - especially given you can configure and try it out with a TOML file without modifying any Python code at all. This feels like one of those Swiss Army Knife packages that, once mastered