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

1from dataclasses import dataclass, field 

2from pathlib import Path 

3from types import ModuleType 

4from typing import Callable 

5 

6from zapy.base import ZapyAuto 

7from zapy.store import Store, use_store 

8 

9from .file_loader import ZapyFileInfo, load_file 

10from .hooks import RequestHookBlueprint 

11 

12 

13@dataclass 

14class ZapyRequestContext: 

15 

16 store: Store = field(default_factory=use_store) 

17 hooks: RequestHookBlueprint = field(default_factory=RequestHookBlueprint) 

18 logger: Callable = print 

19 

20 def load_file(self, path: str | Path, mime: type[ZapyAuto] = ZapyAuto) -> ZapyFileInfo: 

21 return load_file(path, mime) 

22 

23 def auto(self) -> type[ZapyAuto]: 

24 return ZapyAuto 

25 

26 

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) 

33 

34 return module_ctx