Coverage for apps.py: 100%
28 statements
« prev ^ index » next coverage.py v7.3.4, created at 2024-01-20 18:02 +0000
« prev ^ index » next coverage.py v7.3.4, created at 2024-01-20 18:02 +0000
1import inspect
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 _
8from django_typer import traceback_config
10try:
11 import rich
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
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
53class DjangoTyperConfig(AppConfig):
54 name = "django_typer"
55 label = name.replace(".", "_")
56 verbose_name = "Django Typer"