Coverage for apps.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.3.4, created at 2024-01-20 18:02 +0000

1import inspect 

2 

3from django.apps import AppConfig 

4from django.conf import settings 

5from django.core.checks import Warning, register 

6from django.utils.translation import gettext_lazy as _ 

7 

8from django_typer import traceback_config 

9 

10try: 

11 import rich 

12 

13 tb_config = traceback_config() 

14 if isinstance(tb_config, dict) and not tb_config.get("no_install", False): 

15 rich.traceback.install( 

16 **{ 

17 param: value 

18 for param, value in tb_config.items() 

19 if param 

20 in set(inspect.signature(rich.traceback.install).parameters.keys()) 

21 } 

22 ) 

23except ImportError: 

24 rich = None 

25 

26 

27@register("settings") 

28def check_traceback_config(app_configs, **kwargs): 

29 warnings = [] 

30 tb_cfg = traceback_config() 

31 if isinstance(tb_cfg, dict): 

32 if rich: 

33 expected = { 

34 "no_install", 

35 "short", 

36 *inspect.signature(rich.traceback.install).parameters.keys(), 

37 } 

38 unexpected = set(tb_cfg.keys()) - expected 

39 if unexpected: 

40 warnings.append( 

41 Warning( 

42 "DT_RICH_TRACEBACK_CONFIG", 

43 hint=_("Unexpected parameters encountered: {keys}.").format( 

44 keys=", ".join(unexpected) 

45 ), 

46 obj=settings.SETTINGS_MODULE, 

47 id="django_typer.W001", 

48 ) 

49 ) 

50 return warnings 

51 

52 

53class DjangoTyperConfig(AppConfig): 

54 name = "django_typer" 

55 label = name.replace(".", "_") 

56 verbose_name = "Django Typer"