source: waflib/Logs.py @ 733aea2

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5pitchshiftsamplertimestretchyinfft+
Last change on this file since 733aea2 was 0fa325b, checked in by Paul Brossier <piem@piem.org>, 11 years ago

waf: unpack

  • Property mode set to 100644
File size: 4.6 KB
RevLine 
[0fa325b]1#! /usr/bin/env python
2# encoding: utf-8
3# WARNING! Do not edit! http://waf.googlecode.com/git/docs/wafbook/single.html#_obtaining_the_waf_file
4
5import os,re,traceback,sys
6try:
7        import threading
8except ImportError:
9        pass
10else:
11        wlock=threading.Lock()
12        class sync_stream(object):
13                def __init__(self,stream):
14                        self.stream=stream
15                        self.encoding=self.stream.encoding
16                def write(self,txt):
17                        try:
18                                wlock.acquire()
19                                self.stream.write(txt)
20                                self.stream.flush()
21                        finally:
22                                wlock.release()
23                def fileno(self):
24                        return self.stream.fileno()
25                def flush(self):
26                        self.stream.flush()
27                def isatty(self):
28                        return self.stream.isatty()
29        _nocolor=os.environ.get('NOCOLOR','no')not in('no','0','false')
30        try:
31                if not _nocolor:
32                        import waflib.ansiterm
33        except ImportError:
34                pass
35        if not os.environ.get('NOSYNC',False):
36                if id(sys.stdout)==id(sys.__stdout__):
37                        sys.stdout=sync_stream(sys.stdout)
38                        sys.stderr=sync_stream(sys.stderr)
39import logging
40LOG_FORMAT="%(asctime)s %(c1)s%(zone)s%(c2)s %(message)s"
41HOUR_FORMAT="%H:%M:%S"
42zones=''
43verbose=0
44colors_lst={'USE':True,'BOLD':'\x1b[01;1m','RED':'\x1b[01;31m','GREEN':'\x1b[32m','YELLOW':'\x1b[33m','PINK':'\x1b[35m','BLUE':'\x1b[01;34m','CYAN':'\x1b[36m','NORMAL':'\x1b[0m','cursor_on':'\x1b[?25h','cursor_off':'\x1b[?25l',}
45got_tty=not os.environ.get('TERM','dumb')in['dumb','emacs']
46if got_tty:
47        try:
48                got_tty=sys.stderr.isatty()and sys.stdout.isatty()
49        except AttributeError:
50                got_tty=False
51if(not got_tty and os.environ.get('TERM','dumb')!='msys')or _nocolor:
52        colors_lst['USE']=False
53def get_term_cols():
54        return 80
55try:
56        import struct,fcntl,termios
57except ImportError:
58        pass
59else:
60        if got_tty:
61                def get_term_cols_real():
62                        dummy_lines,cols=struct.unpack("HHHH",fcntl.ioctl(sys.stderr.fileno(),termios.TIOCGWINSZ,struct.pack("HHHH",0,0,0,0)))[:2]
63                        return cols
64                try:
65                        get_term_cols_real()
66                except Exception:
67                        pass
68                else:
69                        get_term_cols=get_term_cols_real
70get_term_cols.__doc__="""
71        Get the console width in characters.
72
73        :return: the number of characters per line
74        :rtype: int
75        """
76def get_color(cl):
77        if not colors_lst['USE']:return''
78        return colors_lst.get(cl,'')
79class color_dict(object):
80        def __getattr__(self,a):
81                return get_color(a)
82        def __call__(self,a):
83                return get_color(a)
84colors=color_dict()
85re_log=re.compile(r'(\w+): (.*)',re.M)
86class log_filter(logging.Filter):
87        def __init__(self,name=None):
88                pass
89        def filter(self,rec):
90                rec.c1=colors.PINK
91                rec.c2=colors.NORMAL
92                rec.zone=rec.module
93                if rec.levelno>=logging.INFO:
94                        if rec.levelno>=logging.ERROR:
95                                rec.c1=colors.RED
96                        elif rec.levelno>=logging.WARNING:
97                                rec.c1=colors.YELLOW
98                        else:
99                                rec.c1=colors.GREEN
100                        return True
101                m=re_log.match(rec.msg)
102                if m:
103                        rec.zone=m.group(1)
104                        rec.msg=m.group(2)
105                if zones:
106                        return getattr(rec,'zone','')in zones or'*'in zones
107                elif not verbose>2:
108                        return False
109                return True
110class formatter(logging.Formatter):
111        def __init__(self):
112                logging.Formatter.__init__(self,LOG_FORMAT,HOUR_FORMAT)
113        def format(self,rec):
114                if rec.levelno>=logging.WARNING or rec.levelno==logging.INFO:
115                        try:
116                                msg=rec.msg.decode('utf-8')
117                        except Exception:
118                                msg=rec.msg
119                        return'%s%s%s'%(rec.c1,msg,rec.c2)
120                return logging.Formatter.format(self,rec)
121log=None
122def debug(*k,**kw):
123        if verbose:
124                k=list(k)
125                k[0]=k[0].replace('\n',' ')
126                global log
127                log.debug(*k,**kw)
128def error(*k,**kw):
129        global log
130        log.error(*k,**kw)
131        if verbose>2:
132                st=traceback.extract_stack()
133                if st:
134                        st=st[:-1]
135                        buf=[]
136                        for filename,lineno,name,line in st:
137                                buf.append('  File "%s", line %d, in %s'%(filename,lineno,name))
138                                if line:
139                                        buf.append('    %s'%line.strip())
140                        if buf:log.error("\n".join(buf))
141def warn(*k,**kw):
142        global log
143        log.warn(*k,**kw)
144def info(*k,**kw):
145        global log
146        log.info(*k,**kw)
147def init_log():
148        global log
149        log=logging.getLogger('waflib')
150        log.handlers=[]
151        log.filters=[]
152        hdlr=logging.StreamHandler()
153        hdlr.setFormatter(formatter())
154        log.addHandler(hdlr)
155        log.addFilter(log_filter())
156        log.setLevel(logging.DEBUG)
157def make_logger(path,name):
158        logger=logging.getLogger(name)
159        hdlr=logging.FileHandler(path,'w')
160        formatter=logging.Formatter('%(message)s')
161        hdlr.setFormatter(formatter)
162        logger.addHandler(hdlr)
163        logger.setLevel(logging.DEBUG)
164        return logger
165def make_mem_logger(name,to_log,size=10000):
166        from logging.handlers import MemoryHandler
167        logger=logging.getLogger(name)
168        hdlr=MemoryHandler(size,target=to_log)
169        formatter=logging.Formatter('%(message)s')
170        hdlr.setFormatter(formatter)
171        logger.addHandler(hdlr)
172        logger.memhandler=hdlr
173        logger.setLevel(logging.DEBUG)
174        return logger
175def pprint(col,str,label='',sep='\n'):
176        sys.stderr.write("%s%s%s %s%s"%(colors(col),str,colors.NORMAL,label,sep))
Note: See TracBrowser for help on using the repository browser.