FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
bpython/bpdb/__init__.py at master · pythonthings/bpython · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
pythonthings
/
bpython
Public
forked from
bpython/bpython
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
bpython
/
bpdb
/
__init__.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
118 lines (98 loc) · 3.99 KB
Breadcrumbs
bpython
/
bpdb
/
__init__.py
Copy path
File metadata and controls
118 lines (98 loc) · 3.99 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# encoding: utf-8
# The MIT License
#
# Copyright (c) 2008 Bob Farrell
# Copyright (c) 2013 Sebastian Ramacher
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
from
__future__
import
print_function
,
absolute_import
import
os
import
sys
import
traceback
import
bpython
from
.
debugger
import
BPdb
from
optparse
import
OptionParser
from
pdb
import
Restart
__version__
=
bpython
.
__version__
def
set_trace
():
""" Just like pdb.set_trace(), a helper function that creates
a debugger instance and sets the trace. """
debugger
=
BPdb
()
debugger
.
set_trace
(
sys
.
_getframe
().
f_back
)
# Adopted verbatim from pdb for completeness:
def
post_mortem
(
t
=
None
):
# handling the default
if
t
is
None
:
# sys.exc_info() returns (type, value, traceback) if an exception is
# being handled, otherwise it returns None
t
=
sys
.
exc_info
()[
2
]
if
t
is
None
:
raise
ValueError
(
"A valid traceback must be passed if no "
"exception is being handled"
)
p
=
BPdb
()
p
.
reset
()
p
.
interaction
(
None
,
t
)
def
pm
():
post_mortem
(
getattr
(
sys
,
"last_traceback"
,
None
))
def
main
():
parser
=
OptionParser
(
usage
=
'Usage: %prog [options] [file [args]]'
)
parser
.
add_option
(
'--version'
,
'-V'
,
action
=
'store_true'
,
help
=
'Print version and exit.'
)
options
,
args
=
parser
.
parse_args
(
sys
.
argv
)
if
options
.
version
:
print
(
'bpdb on top of bpython version'
,
__version__
,
end
=
""
)
print
(
'on top of Python'
,
sys
.
version
.
split
()[
0
])
print
(
'(C) 2008-2013 Bob Farrell, Andreas Stuehrk et al. '
'See AUTHORS for detail.'
)
return
0
if
len
(
args
)
<
2
:
print
(
'usage: bpdb scriptfile [arg] ...'
)
return
2
# The following code is based on Python's pdb.py.
mainpyfile
=
args
[
1
]
if
not
os
.
path
.
exists
(
mainpyfile
):
print
(
'Error:'
,
mainpyfile
,
'does not exist'
)
return
1
# Hide bpdb from argument list.
del
sys
.
argv
[
0
]
# Replace bpdb's dir with script's dir in front of module search path.
sys
.
path
[
0
]
=
os
.
path
.
dirname
(
mainpyfile
)
pdb
=
BPdb
()
while
True
:
try
:
pdb
.
_runscript
(
mainpyfile
)
if
pdb
.
_user_requested_quit
:
break
print
(
"The program finished and will be restarted"
)
except
Restart
:
print
(
"Restarting"
,
mainpyfile
,
"with arguments:"
)
print
(
"
\t
"
+
" "
.
join
(
sys
.
argv
[
1
:]))
except
SystemExit
:
# In most cases SystemExit does not warrant a post-mortem session.
print
(
"The program exited via sys.exit(). Exit status: "
,)
print
(
sys
.
exc_info
()[
1
])
except
:
traceback
.
print_exc
()
print
(
"Uncaught exception. Entering post mortem debugging"
)
print
(
"Running 'cont' or 'step' will restart the program"
)
t
=
sys
.
exc_info
()[
2
]
pdb
.
interaction
(
None
,
t
)
print
(
"Post mortem debugger finished. The "
+
mainpyfile
+
" will be restarted"
)
Back
|
FazBrowse Home
|
New Git URL