Skip to main content

withhacks: building blocks for with-statement-related hackery

This module is a collection of useful building-blocks for hacking the Python “with” statement. It combines ideas from several neat with-statement hacks I found around the internet into a suite of re-usable components:

By subclassing the appropriate context managers from this module, you can easily do things such as:

  • skip execution of the code inside the with-statement

  • set local variables in the frame executing the with-statement

  • capture the bytecode from inside the with-statement

  • capture local variables defined inside the with-statement

Building on these basic tools, this module also provides some useful prebuilt hacks:

xargs:

call a function with additional arguments defined in the body of the with-statement

xkwargs:

call a function with additional keyword arguments defined in the body of the with-statement

namespace:

direct all variable accesses and assignments to the attributes of a given object (like “with” in JavaScript or VB)

keyspace:

direct all variable accesses and assignments to the keys of of a given object (like namespace() but for dicts)

WithHacks makes extensive use of Noam Raphael’s fantastic “byteplay” module; since the official byteplay distribution doesn’t support Python 2.6, a local version with appropriate patches is included in this module.

Metadata

Release files for withhacks 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for withhacks 0.1.1
File Size Uploaded
withhacks-0.1.1.tar.gz 18.0 kB Details

Release files / withhacks-0.1.1.tar.gz

Download URL withhacks-0.1.1.tar.gz
Size 18.0 kB
Tags Source
SHA-256 checksum
How to use checksums
75c87de051d61dde59bc7e7f861fdf1687c495a79cf3cf8ee2d70243403576e2
BLAKE2b-256 checksum
How to use checksums
16857483d29784c086e07c313df1a659a0450a8cb6ff4c34630656484c72c87c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page