コード例 #1
0
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')
コード例 #2
0
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')
コード例 #3
0
ファイル: breakpoint.py プロジェクト: mportela/wdb
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):
コード例 #4
0
ファイル: _bdbdb.py プロジェクト: arthru/wdb
"""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 = {}
コード例 #5
0
ファイル: __init__.py プロジェクト: JacekPliszka/wdb
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
コード例 #6
0
ファイル: ext.py プロジェクト: niziou/wdb
# 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(
コード例 #7
0
ファイル: __init__.py プロジェクト: rayleyva/wdb
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()
コード例 #8
0
ファイル: ui.py プロジェクト: seletz/wdb
# *-* 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():
コード例 #9
0
ファイル: __init__.py プロジェクト: arthru/wdb
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
コード例 #10
0
ファイル: breakpoint.py プロジェクト: JacekPliszka/wdb
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

コード例 #11
0
ファイル: conftest.py プロジェクト: B-Rich/wdb
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]
コード例 #12
0
ファイル: websocket.py プロジェクト: hellcoderz/wdb
# 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
コード例 #13
0
# 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

コード例 #14
0
ファイル: __init__.py プロジェクト: tuxcanfly/w
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

コード例 #15
0
ファイル: ui.py プロジェクト: seletz/wdb
# *-* 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"""
コード例 #16
0
ファイル: ext.py プロジェクト: minisin/wdb
# 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(
コード例 #17
0
ファイル: conftest.py プロジェクト: apriljdai/wdb
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',
コード例 #18
0
ファイル: breakpoint.py プロジェクト: s0undt3ch/wdb
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):