context
context ¶
Route context for API request configuration.
This module provides the RouteContext dataclass for consolidating debug and session parameters across route functions.
RouteContext
dataclass
¶
RouteContext(
session: AsyncClient | None = None,
debug_num_stacks_to_drop: int = 1,
parent_class: str | None = None,
log_level: str | None = None,
debug_api: bool = False,
dry_run: bool = False,
is_follow_redirects: bool = True,
reuse_session: bool = True,
cache_responses: bool = False,
invalidate_cache: bool = False,
is_verify: bool = False,
cache_config: dict | None = None,
logger: Any = None,
is_log_client: bool | None = None,
is_log_route: bool | None = None,
is_log_class: bool | None = None,
)
Context object for route function execution.
Consolidates debugging, session, and cache control parameters that are commonly passed to route functions and get_data calls.
Attributes:
| Name | Type | Description |
|---|---|---|
session |
AsyncClient | None
|
Optional httpx client session for connection reuse |
debug_api |
bool
|
Enable detailed API request/response logging |
debug_num_stacks_to_drop |
int
|
Number of stack frames to drop in debug output |
parent_class |
str | None
|
Optional parent class name for debugging context |
log_level |
str | None
|
Optional log level for the request |
dry_run |
bool
|
If True, return request parameters without executing the API call |
is_follow_redirects |
bool
|
Follow HTTP redirects (default: True) |
reuse_session |
bool
|
Reuse one pooled httpx session per auth so TCP/TLS handshakes are amortized across many calls (default: True). Safe — httpx connection pools are concurrency-safe. |
cache_responses |
bool
|
Cache GET responses (and invalidate on writes) so multi-step reads don't re-fetch the same request (default: False). Opt-in: heuristic URL invalidation can serve stale reads in write-heavy flows, so it is off unless you know your reads repeat. |
invalidate_cache |
bool
|
Invalidate cache before this request (default: False) |
is_verify |
bool
|
SSL certificate verification (default: False) |
cache_config |
dict | None
|
Optional cache configuration dict |
is_log_client |
bool | None
|
When False, suppress log_call output for client layer (get_data, get_data_stream). None = do not override. |
is_log_route |
bool | None
|
When False, suppress log_call output for route layer. None = do not override. |
is_log_class |
bool | None
|
When False, suppress log_call output for class layer. None = do not override. |
build_context
classmethod
¶
build_context(
context: RouteContext | None = None, **kwargs
) -> RouteContext
Build RouteContext from either existing context or individual parameters.
This helper allows route functions to accept either a pre-built context or individual parameters, enabling clean signatures.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
context
|
RouteContext | None
|
Optional pre-built RouteContext |
None
|
**kwargs
|
Individual context parameters (session, debug_api, debug_num_stacks_to_drop, parent_class, log_level, dry_run) |
{}
|
Returns:
| Type | Description |
|---|---|
RouteContext
|
RouteContext built from provided parameters |
Example
In a route function¶
def my_route(auth, , context=None, context_kwargs): ... context = build_context(context, *context_kwargs) ... res = await get_data(auth=auth, url=url, context=context)
Source code in src/crew_dcs/client/context.py
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | |