def test_get_color_logger(): assert get_color_logger() == logging.root assert get_color_logger('test_get_color_logger') != logging.root assert get_color_logger('test_get_color_logger') == logging.getLogger( 'test_get_color_logger') sio = StringIO() logr = get_color_logger('test_get_color_logger', std=sio) logr.warning('HALP!') sio.seek(0) res = sio.read() assert res.startswith('\x1b[0m\x1b[33m') assert res.endswith(' \x1b[1m\x1b[33m' 'test_get_color_logger test_get_color_logger:75 ' '\x1b[0m HALP!\x1b[0m\n')
def test_get_color_logger(): assert get_color_logger() == logging.root assert get_color_logger('test_get_color_logger') != logging.root assert get_color_logger('test_get_color_logger') == logging.getLogger( 'test_get_color_logger') sio = StringIO() logr = get_color_logger('test_get_color_logger', std=sio) logr.warning('HALP!') sio.seek(0) res = sio.read() assert res.startswith('\x1b[0m\x1b[33m') assert res.endswith( ' \x1b[1m\x1b[33m' 'test_get_color_logger test_get_color_logger:75 ' '\x1b[0m HALP!\x1b[0m\n')
import os.path from log_colorizer import get_color_logger from hashlib import sha1 log = get_color_logger('wdb.bp') def canonic(filename): if filename == "<" + filename[1:-1] + ">": return filename canonic = os.path.abspath(filename) canonic = os.path.normcase(canonic) if canonic.endswith(('.pyc', '.pyo')): canonic = canonic[:-1] return canonic def file_from_import(filename, function=None): try: module = __import__(filename) except ImportError: return filename if function is None: return module.__file__ fun = getattr(module, function, None) if not fun: return filename return fun.__code__.co_filename class Breakpoint(object):
"""Debugger basics""" import fnmatch import sys import os import types __all__ = ["BdbQuit","Bdb","Breakpoint"] class BdbQuit(Exception): """Exception to give up completely""" from log_colorizer import get_color_logger log = get_color_logger('_bdbdb') class Bdb: """Generic Python debugger base class. This class takes care of details of the trace facility; a derived class should implement user interaction. The standard debugger class (pdb.Pdb) is an example. """ def __init__(self, skip=None): self.skip = set(skip) if skip else None self.breaks = {} self.fncache = {}
import atexit import time # Get wdb server host SOCKET_SERVER = os.getenv('WDB_SOCKET_SERVER', 'localhost') # and port SOCKET_PORT = int(os.getenv('WDB_SOCKET_PORT', '19840')) # Get wdb web server host WEB_SERVER = os.getenv('WDB_WEB_SERVER') # and port WEB_PORT = int(os.getenv('WDB_WEB_PORT', 0)) WDB_NO_BROWSER_AUTO_OPEN = bool(os.getenv('WDB_NO_BROWSER_AUTO_OPEN', False)) log = get_color_logger('wdb') trace_log = logging.getLogger('wdb.trace') for log_name in ('main', 'trace', 'ui', 'ext', 'bp'): logger = 'wdb.%s' % log_name if log_name != 'main' else 'wdb' level = os.getenv( 'WDB_%s_LOG' % log_name.upper(), os.getenv('WDB_LOG', 'WARNING')).upper() logging.getLogger(logger).setLevel(getattr(logging, level, 'WARNING')) class Wdb(object): """Wdb debugger main class""" _instances = {} _sockets = [] enabled = True
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from wdb import trace, start_trace, stop_trace, set_trace, Wdb from wdb.ui import dump from wdb._compat import to_bytes from log_colorizer import get_color_logger import os import traceback import sys log = get_color_logger('wdb.ext') def _handle_off(silent=False): if not silent: log.exception('Exception with wdb off') type_, value, tb = sys.exc_info() stack = traceback.extract_tb(tb) stack.reverse() with open( os.path.join( os.path.abspath(os.path.dirname(__file__)), 'res', '500.html')) as f: return to_bytes(
import atexit import pickle # Get wdb server host SOCKET_SERVER = os.getenv('WDB_SOCKET_SERVER', 'localhost') # and port SOCKET_PORT = int(os.getenv('WDB_SOCKET_PORT', '19840')) # Get wdb web server host WEB_SERVER = os.getenv('WDB_WEB_SERVER') # and port WEB_PORT = int(os.getenv('WDB_WEB_PORT', 0)) WDB_NO_BROWSER_AUTO_OPEN = bool(os.getenv('WDB_NO_BROWSER_AUTO_OPEN', False)) log = get_color_logger('wdb') trace_log = logging.getLogger('wdb.trace') for log_name in ('main', 'trace', 'ui', 'ext', 'bp'): logger = 'wdb.%s' % log_name if log_name != 'main' else 'wdb' level = os.getenv('WDB_%s_LOG' % log_name.upper(), os.getenv('WDB_LOG', 'WARNING')).upper() logging.getLogger(logger).setLevel(getattr(logging, level, 'WARNING')) class Wdb(object): """Wdb debugger main class""" _instances = {} _sockets = [] enabled = True breakpoints = set()
# *-* coding: utf-8 *-* from ._compat import dumps, JSONEncoder, quote, execute, to_unicode from .websocket import WsError from bdb import BdbQuit from cgi import escape from jedi import Script from linecache import getline from log_colorizer import get_color_logger from shutil import move from tempfile import gettempdir import os import sys import time import traceback log = get_color_logger('wdb-ui') log.setLevel(30) class ReprEncoder(JSONEncoder): """JSON encoder using repr for objects""" def default(self, obj): return repr(obj) def dump(o): """Shortcut to json.dumps with ReprEncoder""" return dumps(o, cls=ReprEncoder, sort_keys=True) def handle_exc():
from pprint import pprint, pformat from gc import get_objects from urllib import quote try: from cStringIO import StringIO except ImportError: from StringIO import StringIO import os import sys import time import dis RES_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), "resources") log = get_color_logger("wdb") log.setLevel(30) class ReprEncoder(JSONEncoder): def default(self, obj): return repr(obj) def dump(o): return dumps(o, cls=ReprEncoder, sort_keys=True) class WdbOff(Exception): pass
import os.path from log_colorizer import get_color_logger from hashlib import sha1 from wdb._compat import import_module log = get_color_logger('wdb.bp') def canonic(filename): if filename == "<" + filename[1:-1] + ">": return filename canonic = os.path.abspath(filename) canonic = os.path.normcase(canonic) if canonic.endswith(('.pyc', '.pyo')): canonic = canonic[:-1] return canonic def file_from_import(filename, function=None): try: module = import_module(filename) except ImportError: return filename if function is None: return module.__file__ fun = getattr(module, function, None) if not fun or not hasattr(fun, '__code__'): return filename return fun.__code__.co_filename
from pytest import mark import pickle import logging import signal import json import os import sys def u(s): if sys.version_info[0] == 2: return s.decode('utf-8') return s log = get_color_logger('wdb.test') log.info('Conftest') log.setLevel(getattr(logging, os.getenv('WDB_TEST_LOG', 'WARNING'))) GLOBALS = globals() LOCALS = locals() class Slave(Process): def __init__(self, use, host='localhost', port=19999): self.argv = None self.file = os.path.join( os.path.dirname(__file__), 'scripts', use.file) if use.with_main: self.argv = ['', self.file]
# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from log_colorizer import get_color_logger from StringIO import StringIO import array import atexit import base64 import hashlib import socket import struct import sys log = get_color_logger('wdb-socket') log.setLevel(30) OPCODES = ['continuation', 'text', 'binary', '?', '?', '?', '?', '?', 'close', 'ping', 'pong', '?', '?', '?', '?', '?'] class WsError(Exception): pass class WsClosed(WsError): pass
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from log_colorizer import get_color_logger from StringIO import StringIO import array import base64 import hashlib import socket import struct import sys log = get_color_logger('wdb-socket') OPCODES = [ 'continuation', 'text', 'binary', '?', '?', '?', '?', '?', 'close', 'ping', 'pong', '?', '?', '?', '?', '?' ] class WsError(Exception): pass class WsClosed(WsError): pass
from log_colorizer import get_color_logger from random import randint from sys import exc_info from websocket import WebSocket, WsError from mimetypes import guess_type from hashlib import sha512 try: from cStringIO import StringIO except ImportError: from StringIO import StringIO import os import sys RES_PATH = os.path.join( os.path.abspath(os.path.dirname(__file__)), 'resources') log = get_color_logger('w') @contextmanager def capture_output(): stdout, stderr = sys.stdout, sys.stderr sys.stdout, sys.stderr = StringIO(), StringIO() out, err = [], [] try: yield out, err finally: out.extend(sys.stdout.getvalue().splitlines()) err.extend(sys.stderr.getvalue().splitlines()) sys.stdout, sys.stderr = stdout, stderr
# *-* coding: utf-8 *-* from ._compat import dumps, JSONEncoder, quote, execute, to_unicode from .websocket import WsError from bdb import BdbQuit from cgi import escape from jedi import Script from linecache import getline from log_colorizer import get_color_logger from shutil import move from tempfile import gettempdir import os import sys import time import traceback log = get_color_logger('wdb-ui') log.setLevel(30) class ReprEncoder(JSONEncoder): """JSON encoder using repr for objects""" def default(self, obj): return repr(obj) def dump(o): """Shortcut to json.dumps with ReprEncoder""" return dumps(o, cls=ReprEncoder, sort_keys=True) def handle_exc(): """Return a formated exception traceback for wdb.js use"""
# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from wdb import (trace, start_trace, stop_trace, set_trace, Wdb, WEB_SERVER, WEB_PORT) from wdb.ui import dump from wdb._compat import to_bytes, escape from log_colorizer import get_color_logger from threading import Thread from uuid import uuid4 import sys log = get_color_logger('wdb.ext') def post_mortem_interaction(uuid, exc_info): wdb = Wdb.get(force_uuid=uuid) type_, value, tb = exc_info frame = None _value = value if not isinstance(_value, BaseException): _value = type_(value) wdb.obj_cache[id(exc_info)] = exc_info wdb.extra_vars['__exception__'] = exc_info exception = type_.__name__ exception_description = str(value) + ' [POST MORTEM]' init = 'Echo|%s' % dump(
from pytest import mark import pickle import logging import signal import json import os import sys def u(s): if sys.version_info[0] == 2: return s.decode('utf-8') return s log = get_color_logger('wdb.test') log.info('Conftest') log.setLevel(getattr(logging, os.getenv('WDB_TEST_LOG', 'WARNING'))) GLOBALS = globals() LOCALS = locals() class Slave(Process): def __init__(self, use, host='localhost', port=19999): self.argv = None self.file = os.path.join(os.path.dirname(__file__), 'scripts', use.file) if use.with_main: self.argv = ['', self.file] self.file = os.path.join(os.path.dirname(__file__), '..', 'client',
import os.path from log_colorizer import get_color_logger from hashlib import sha1 log = get_color_logger("wdb.bp") def canonic(filename): if filename == "<" + filename[1:-1] + ">": return filename canonic = os.path.abspath(filename) canonic = os.path.normcase(canonic) if canonic.endswith((".pyc", ".pyo")): canonic = canonic[:-1] return canonic def file_from_import(filename, function=None): try: module = __import__(filename) except ImportError: return filename if function is None: return module.__file__ fun = getattr(module, function, None) if not fun: return filename return fun.__code__.co_filename class Breakpoint(object):