debug_toolbar.core.context

Request context management using contextvars for async-safe data propagation.

Functions

ensure_request_context()

Get or create a request context.

get_request_context()

Get the current request context.

set_request_context(context)

Set the current request context.

Classes

RequestContext([request_id, panel_data, ...])

Request-scoped context for debug toolbar data collection.

class debug_toolbar.core.context.RequestContext(request_id=<factory>, panel_data=<factory>, timing_data=<factory>, metadata=<factory>)[source]

Request-scoped context for debug toolbar data collection.

This context is stored in a contextvar and is accessible throughout the request lifecycle without passing it explicitly through the call stack.

request_id

Unique identifier for this request.

panel_data

Dictionary of data collected by panels, keyed by panel_id.

timing_data

Dictionary of timing measurements.

metadata

Additional metadata about the request.

request_id: UUID
panel_data: dict[str, dict[str, Any]]
timing_data: dict[str, float]
metadata: dict[str, Any]
store_panel_data(panel_id, key, value)[source]

Store data for a specific panel.

Parameters:
  • panel_id (str) – The panel’s identifier.

  • key (str) – The data key.

  • value (Any) – The data value.

Return type:

None

get_panel_data(panel_id)[source]

Get all data for a specific panel.

Parameters:

panel_id (str) – The panel’s identifier.

Return type:

dict[str, Any]

Returns:

Dictionary of panel data, or empty dict if no data exists.

record_timing(name, duration)[source]

Record a timing measurement.

Parameters:
  • name (str) – The name of the timing measurement.

  • duration (float) – The duration in seconds.

Return type:

None

get_timing(name)[source]

Get a timing measurement.

Parameters:

name (str) – The name of the timing measurement.

Return type:

float | None

Returns:

The duration in seconds, or None if not recorded.

__init__(request_id=<factory>, panel_data=<factory>, timing_data=<factory>, metadata=<factory>)
debug_toolbar.core.context.get_request_context()[source]

Get the current request context.

Return type:

RequestContext | None

Returns:

The current RequestContext, or None if no context is set.

debug_toolbar.core.context.set_request_context(context)[source]

Set the current request context.

Parameters:

context (RequestContext | None) – The RequestContext to set, or None to clear.

Return type:

None

debug_toolbar.core.context.ensure_request_context()[source]

Get or create a request context.

Return type:

RequestContext

Returns:

The current RequestContext, creating a new one if none exists.