1 """This module contains internal logging utilities."""
2
3 import logging
4
5
6
7 _log = logging.getLogger("instant")
8 _loghandler = logging.StreamHandler()
9 _log.addHandler(_loghandler)
10 _log.setLevel(logging.WARNING)
11 _log.setLevel(logging.INFO)
12
13
16
19
25
27 if isinstance(level, str):
28 level = level.upper()
29 assert level in ("INFO", "WARNING", "ERROR", "DEBUG")
30 level = getattr(logging, level)
31 else:
32 assert isinstance(level, int)
33 _log.setLevel(level)
34
35
36
39
42
44 _log.warning(*message)
45
47 _log.error(*message)
48 text = message[0] % message[1:]
49 raise RuntimeError(text)
50
52 if not condition:
53 _log.error(*message)
54 text = message[0] % message[1:]
55 raise AssertionError(text)
56
57
58
60 "Write text to a file and close it."
61 try:
62 f = open(filename, "w")
63 f.write(text)
64 f.close()
65 except IOError as e:
66 instant_error("Can't open '%s': %s" % (filename, e))
67
68
69
70 from subprocess import Popen, PIPE, STDOUT
72 pipe = Popen(cmd, shell=True, cwd=cwd, env=env, stdout=PIPE, stderr=STDOUT)
73
74 (output, errout) = pipe.communicate(input=input)
75 assert not errout
76
77 status = pipe.returncode
78
79 return (status, output)
80