-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathdebug.py
More file actions
56 lines (40 loc) · 1.34 KB
/
Copy pathdebug.py
File metadata and controls
56 lines (40 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import logging
import platform
import sqlparse.sql as S
from sqlitis.version import VERSION
LOG = logging.getLogger(__name__)
def version_info():
return {
"sqlitis": VERSION,
"python": platform.python_version(),
"platform": platform.platform(),
}
def debug_tokens(tokens):
for t in tokens:
LOG.debug(" %r %s", t, type(t))
def is_tokens(x):
return isinstance(x, list) and len(x) > 0 and isinstance(x[0], S.Token)
def debug(f):
"""Decorator for functions. Provies useful debug logging"""
def wrapped(*args, **kwargs):
debug_args = []
for a in args:
if is_tokens(a):
debug_args.append("[<%s tokens>]" % len(a))
else:
debug_args.append("%r" % a)
args_str = " ".join(str(a) for a in debug_args)
kwargs_str = " ".join("%s=%s" for k, v in kwargs.items())
LOG.debug("%s %s", f.__name__, args_str + kwargs_str)
# try to find tokens
if "tokens" in kwargs:
if is_tokens(kwargs["tokens"]):
debug_tokens(kwargs["tokens"])
for a in args:
if is_tokens(a):
debug_tokens(a)
result = f(*args, **kwargs)
if result is not None:
LOG.debug("%s returned %r", f.__name__, result)
return result
return wrapped