Skip to main content

This module helps to solve the following problem:

You have an async program. It does lots of things in parallel. You don't really know what's happening. Then you get a deadlock, or a cancellation whose initial trigger is masked by another error or an unprotected async call within a finally: block.

You now have no idea what's happening, and low-level instrumentation of your code causes the error to get lost in the noise.

Here's how logcontext can help.

First, wrap your main code::

from logcontext import main_context
def main():
	with main_context():
		... # whatever your program does

Then you wrap each possibly-interesting block, nursery, async context, … with

from logcontext import context_of
...
async def code_of_interest(arg):
	with context_of("interesting: %s", arg) as ctx:
	    ... # start some subtask

		# display what my subcontexts are doing, if anything
		ctx.log_tree()  

Text and positional arguments will be passed to logging.log.

Reporting on the current state of your code is then as easy as::

from logcontext import log_backtrace, log_tree

...
log_tree()  # reports the whole program's context tree
log_backtrace()  # reports the contexts leading to the current code

Both context_of and log_tree accept a log level. This way you can selectively attach higher log levels to possibly-interesting code. "Uninteresting" subtrees are skipped.

"""

from ._main import main_context, context_of, log_backtrace, log_tree

Release files for logcontext 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 logcontext 0.1.1
File Size Uploaded
logcontext-0.1.1.tar.gz 4.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for logcontext 0.1.1
File Interpreter ABI Platform
logcontext-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 7.9 kB

Release files / logcontext-0.1.1.tar.gz

Download URL logcontext-0.1.1.tar.gz
Size 4.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e480277f542e058c31192ef1d1405f6cb3ce42ab944ebe37b640d359d0b376a6
BLAKE2b-256 checksum
How to use checksums
79ef77dc69541a6e8c252dc2fde062589577db660c50d784cf6bf6faf621dbf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.8.2 requests/2.25.1 setuptools/65.3.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.10.7

Release files / logcontext-0.1.1-py3-none-any.whl

Download URL logcontext-0.1.1-py3-none-any.whl
Size 3.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d527838a09092668e80c242bd31e20785d21e1e498a9094166c01b4ed8c0d6e9
BLAKE2b-256 checksum
How to use checksums
918840e57c0fdde654da660e9ac291d54f30ed5d86b5e7ab7abffe54a442cd12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.8.2 requests/2.25.1 setuptools/65.3.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.10.7

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

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