Skip to content

Commit 78b8c43

Browse files
author
Łukasz Langa
committed
initial version, basic pdb substitute with a BPython command
1 parent eadda42 commit 78b8c43

File tree

4 files changed

+93
-1
lines changed

4 files changed

+93
-1
lines changed

AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ bpython is written and maintained by Bob Farrell and Andreas Stuehrk
66
Other contributors are (in alphabetical order):
77

88
* Federico Ceratto <federico dot ceratto at gmail dot com>
9+
* Łukasz Langa <lukasz at langa dot pl>
910
* Pavel Panchekha <pavpanchekha at gmail dot com>
1011
* Simon de Vlieger <simon at ikanobori dot jp>
1112

bpdb/__init__.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# The MIT License
2+
#
3+
# Copyright (c) 2008 Bob Farrell
4+
#
5+
# Permission is hereby granted, free of charge, to any person obtaining a copy
6+
# of this software and associated documentation files (the "Software"), to deal
7+
# in the Software without restriction, including without limitation the rights
8+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
# copies of the Software, and to permit persons to whom the Software is
10+
# furnished to do so, subject to the following conditions:
11+
#
12+
# The above copyright notice and this permission notice shall be included in
13+
# all copies or substantial portions of the Software.
14+
#
15+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
# THE SOFTWARE.
22+
23+
24+
import bpython
25+
26+
27+
__version__ = bpython.__version__
28+
29+
30+
def set_trace():
31+
""" Just like pdb.set_trace(), a helper function that creates
32+
a debugger instance and sets the trace. """
33+
import sys
34+
from bpdb.debugger import BPdb
35+
BPdb().set_trace(sys._getframe().f_back)
36+
37+
38+
go = set_trace

bpdb/debugger.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# The MIT License
2+
#
3+
# Copyright (c) 2008 Bob Farrell
4+
#
5+
# Permission is hereby granted, free of charge, to any person obtaining a copy
6+
# of this software and associated documentation files (the "Software"), to deal
7+
# in the Software without restriction, including without limitation the rights
8+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
# copies of the Software, and to permit persons to whom the Software is
10+
# furnished to do so, subject to the following conditions:
11+
#
12+
# The above copyright notice and this permission notice shall be included in
13+
# all copies or substantial portions of the Software.
14+
#
15+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
# THE SOFTWARE.
22+
23+
24+
import pdb
25+
import bpython
26+
27+
class BPdb(pdb.Pdb):
28+
""" PDB with BPython support. """
29+
30+
def __init__(self):
31+
pdb.Pdb.__init__(self)
32+
self.rcLines = []
33+
self.prompt = '(BPdb) '
34+
35+
36+
### cmd.Cmd commands
37+
38+
39+
def do_BPython(self, arg):
40+
bpython.embed(self.curframe.f_locals, ['-i'])
41+
42+
43+
def help_BPython(self):
44+
print >>self.stdout, "B(Python)"
45+
print >>self.stdout, """Invoke the BPython interpreter for this
46+
stack frame. To exit BPython and return to BPdb type in CTRL+D
47+
(CTRL+Z on Windows)."""
48+
49+
50+
### shortcuts
51+
52+
do_B = do_BPython
53+
help_B = help_BPython

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
install_requires = [
4141
'pygments'
4242
],
43-
packages = ["bpython"],
43+
packages = ["bpython", "bpdb"],
4444
data_files = [
4545
(os.path.join(man_dir, 'man1'), ['doc/bpython.1']),
4646
(os.path.join(man_dir, 'man5'), ['doc/bpython-config.5']),

0 commit comments

Comments
 (0)