Skip to main content

This package is not maintained anymore. Please switch to 'contextvars-registry'.

Project description

Project Moved

The project was renamed to `contextvars-registry` and moved to:

This package is not maintained anymore. Please switch to `contextvars-registry`.

Description

contextvars-extras is a set of extensions for the Python’s contextvars module.

In case you are not familiar with the contextvars module, its ContextVar objects work like Thread-Local storage, but better: they are both thread-safe and async task-safe, and they can be copied (all existing vars copied in O(1) time), and then you can run a function in the copied and isolated context.

The contextvars is a powerful module, but its API seems too low-level.

So this contextvars_extras package provides some higher-level additions on top of the standard API, like, for example, organizing ContextVar objects into registry classes, with nice @property-like access:

from contextvars_extras import ContextVarsRegistry

class CurrentVars(ContextVarsRegistry):
    locale: str = 'en'
    timezone: str = 'UTC'

current = CurrentVars()

# calls ContextVar.get() under the hood
current.timezone  # => 'UTC'

# calls ContextVar.set() under the hood
current.timezone = 'GMT'

# ContextVar() objects can be reached as class members
CurrentVars.timezone.get()  # => 'GMT'

That makes your code more readable (no more noisy .get() calls), and it is naturally firendly to typing, so static code analysis features (like type checkers and auto-completion in your IDE) work nicely.

Check out the full documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

contextvars_extras-0.7.0.tar.gz (24.4 kB view hashes)

Uploaded Source

Built Distribution

contextvars_extras-0.7.0-py3-none-any.whl (27.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page