10
10
from argparse import ArgumentParser
11
11
from code import InteractiveConsole
12
12
from textwrap import dedent
13
- import _colorize as colorize
13
+ from _colorize import get_theme , theme_no_color
14
14
15
- def _clr (color , use_color ):
16
- if use_color :
17
- return color
18
- return ''
19
-
20
- def execute (c , sql , suppress_errors = True , use_color = False ):
15
+ def execute (c , sql , suppress_errors = True , theme = theme_no_color ):
21
16
"""Helper that wraps execution of SQL code.
22
17
23
18
This is used both by the REPL and by direct execution from the CLI.
@@ -30,15 +25,16 @@ def execute(c, sql, suppress_errors=True, use_color=False):
30
25
for row in c .execute (sql ):
31
26
print (row )
32
27
except sqlite3 .Error as e :
33
- theme = colorize . get_theme ( force_color = True ) .traceback
28
+ t = theme .traceback
34
29
tp = type (e ).__name__
35
30
try :
36
- print (f"{ _clr (theme .type , use_color )} { tp } ({ e .sqlite_errorname } )"
37
- f"{ _clr (theme .reset , use_color )} : "
38
- f"{ _clr (theme .message , use_color )} { e } { _clr (theme .reset , use_color )} " , file = sys .stderr )
31
+ tp += f" ({ e .sqlite_errorname } )"
39
32
except AttributeError :
40
- print (f"{ _clr (theme .type , use_color )} { tp } { _clr (theme .reset , use_color )} : "
41
- f"{ _clr (theme .message , use_color )} { e } { _clr (theme .reset , use_color )} " , file = sys .stderr )
33
+ pass
34
+ print (
35
+ f"{ t .type } { tp } { t .reset } : { t .message } { e } { t .reset } " ,
36
+ file = sys .stderr ,
37
+ )
42
38
if not suppress_errors :
43
39
sys .exit (1 )
44
40
@@ -68,7 +64,8 @@ def runsource(self, source, filename="<input>", symbol="single"):
68
64
case _:
69
65
if not sqlite3 .complete_statement (source ):
70
66
return True
71
- execute (self ._cur , source , use_color = self ._use_color )
67
+ theme = get_theme (force_no_color = not self ._use_color )
68
+ execute (self ._cur , source , theme = theme )
72
69
return False
73
70
74
71
@@ -116,11 +113,10 @@ def main(*args):
116
113
Type ".help" for more information; type ".quit" or { eofkey } to quit.
117
114
""" ).strip ()
118
115
119
- use_color = colorize .can_colorize ()
120
- theme = colorize .get_theme (force_color = True ).syntax
116
+ s = get_theme ().syntax
121
117
122
- sys .ps1 = f"{ _clr ( theme .prompt , use_color ) } sqlite> { _clr ( theme .reset , use_color ) } "
123
- sys .ps2 = f"{ _clr ( theme .prompt , use_color ) } ... { _clr ( theme .reset , use_color ) } "
118
+ sys .ps1 = f"{ s .prompt } sqlite> { s .reset } "
119
+ sys .ps2 = f"{ s .prompt } ... { s .reset } "
124
120
125
121
con = sqlite3 .connect (args .filename , isolation_level = None )
126
122
try :
@@ -129,7 +125,7 @@ def main(*args):
129
125
execute (con , args .sql , suppress_errors = False )
130
126
else :
131
127
# No SQL provided; start the REPL.
132
- console = SqliteInteractiveConsole (con , use_color )
128
+ console = SqliteInteractiveConsole (con , use_color = True )
133
129
try :
134
130
import readline # noqa: F401
135
131
except ImportError :
0 commit comments