55
66import inspect
77import os
8+ import sys
89import typing as t
9- from types import ModuleType
1010
1111from django .apps import AppConfig
1212from django .conf import settings
1313from django .core .checks import CheckMessage , register
1414from django .core .checks import Warning as CheckWarning
1515from django .utils .translation import gettext as _
1616
17- from django_typer import patch
18- from django_typer .utils import traceback_config
17+ from .config import traceback_config
1918
20- patch .apply ()
19+ tb_config = traceback_config ()
20+ try_install = isinstance (tb_config , dict ) and not tb_config .get ("no_install" , False )
2121
22- rich : t .Optional [ModuleType ]
23- traceback : t .Optional [ModuleType ]
22+ if try_install :
23+ try :
24+ import rich
25+ from rich import traceback
2426
25- try :
26- import sys
27+ from django_typer import patch
2728
28- import rich
29- from rich import traceback
30- from typer import main as typer_main
29+ patch . apply ()
30+
31+ from typer import main as typer_main
3132
32- tb_config = traceback_config ()
33- if (
34- rich
35- and traceback
36- and isinstance (tb_config , dict )
37- and not tb_config .get ("no_install" , False )
38- ):
3933 # install rich tracebacks if we've been configured to do so (default)
34+ assert isinstance (tb_config , dict )
4035 no_color = "NO_COLOR" in os .environ
4136 force_color = "FORCE_COLOR" in os .environ
4237 traceback .install (
6459 # on when typer was imported it may have the original fallback system hook or our
6560 # installed rich one - we patch it here to make sure!
6661 typer_main ._original_except_hook = sys .excepthook
67- except ImportError :
68- rich = None
69- traceback = None
62+
63+ except ImportError :
64+ pass
7065
7166
7267@register ("settings" )
@@ -76,15 +71,17 @@ def check_traceback_config(app_configs, **kwargs) -> t.List[CheckMessage]:
7671 contains only the expected parameters.
7772 """
7873 warnings : t .List [CheckMessage ] = []
79- tb_cfg = traceback_config ()
80- if isinstance (tb_cfg , dict ):
81- if rich and traceback :
74+ if try_install :
75+ assert isinstance (tb_config , dict )
76+ try :
77+ from rich import traceback
78+
8279 expected = {
8380 "no_install" ,
8481 "short" ,
8582 * inspect .signature (traceback .install ).parameters .keys (),
8683 }
87- unexpected = set (tb_cfg .keys ()) - expected
84+ unexpected = set (tb_config .keys ()) - expected
8885 if unexpected :
8986 warnings .append (
9087 CheckWarning (
@@ -96,6 +93,8 @@ def check_traceback_config(app_configs, **kwargs) -> t.List[CheckMessage]:
9693 id = "django_typer.W001" ,
9794 )
9895 )
96+ except ImportError :
97+ pass
9998 return warnings
10099
101100
0 commit comments