Coverage for src/zapy/requests/context.py: 100%
24 statements
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-10 19:35 +0000
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-10 19:35 +0000
1from dataclasses import dataclass, field
2from pathlib import Path
3from types import ModuleType
4from typing import Callable
6from zapy.base import ZapyAuto
7from zapy.store import Store, use_store
9from .file_loader import ZapyFileInfo, load_file
10from .hooks import RequestHookBlueprint
13@dataclass
14class ZapyRequestContext:
16 store: Store = field(default_factory=use_store)
17 hooks: RequestHookBlueprint = field(default_factory=RequestHookBlueprint)
18 logger: Callable = print
20 def load_file(self, path: str | Path, mime: type[ZapyAuto] = ZapyAuto) -> ZapyFileInfo:
21 return load_file(path, mime)
23 def auto(self) -> type[ZapyAuto]:
24 return ZapyAuto
27def build_context_module(ctx: ZapyRequestContext) -> ModuleType:
28 module_ctx = ModuleType("zapy.context")
29 ctx_attrs = (name for name in dir(ctx) if not name.startswith("_"))
30 for name in ctx_attrs:
31 value = getattr(ctx, name)
32 setattr(module_ctx, name, value)
34 return module_ctx