Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(296)

Side by Side Diff: third_party/logilab/common/debugger.py

Issue 739393004: Revert "Revert "pylint: upgrade to 1.3.1"" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/logilab/common/dbf.py ('k') | third_party/logilab/common/decorators.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved. 1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr 2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3 # 3 #
4 # This file is part of logilab-common. 4 # This file is part of logilab-common.
5 # 5 #
6 # logilab-common is free software: you can redistribute it and/or modify it unde r 6 # logilab-common is free software: you can redistribute it and/or modify it unde r
7 # the terms of the GNU Lesser General Public License as published by the Free 7 # the terms of the GNU Lesser General Public License as published by the Free
8 # Software Foundation, either version 2.1 of the License, or (at your option) an y 8 # Software Foundation, either version 2.1 of the License, or (at your option) an y
9 # later version. 9 # later version.
10 # 10 #
11 # logilab-common is distributed in the hope that it will be useful, but WITHOUT 11 # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 13 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14 # details. 14 # details.
15 # 15 #
16 # You should have received a copy of the GNU Lesser General Public License along 16 # You should have received a copy of the GNU Lesser General Public License along
17 # with logilab-common. If not, see <http://www.gnu.org/licenses/>. 17 # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18 """Customized version of pdb's default debugger. 18 """Customized version of pdb's default debugger.
19 19
20 - sets up a history file 20 - sets up a history file
21 - uses ipython if available to colorize lines of code 21 - uses ipython if available to colorize lines of code
22 - overrides list command to search for current block instead 22 - overrides list command to search for current block instead
23 of using 5 lines of context 23 of using 5 lines of context
24 24
25 25
26 26
27 27
28 """ 28 """
29
30 from __future__ import print_function
31
29 __docformat__ = "restructuredtext en" 32 __docformat__ = "restructuredtext en"
30 33
31 try: 34 try:
32 import readline 35 import readline
33 except ImportError: 36 except ImportError:
34 readline = None 37 readline = None
35 import os 38 import os
36 import os.path as osp 39 import os.path as osp
37 import sys 40 import sys
38 from pdb import Pdb 41 from pdb import Pdb
39 from cStringIO import StringIO
40 import inspect 42 import inspect
41 43
44 from logilab.common.compat import StringIO
45
42 try: 46 try:
43 from IPython import PyColorize 47 from IPython import PyColorize
44 except ImportError: 48 except ImportError:
45 def colorize(source, *args): 49 def colorize(source, *args):
46 """fallback colorize function""" 50 """fallback colorize function"""
47 return source 51 return source
48 def colorize_source(source, *args): 52 def colorize_source(source, *args):
49 return source 53 return source
50 else: 54 else:
51 def colorize(source, start_lineno, curlineno): 55 def colorize(source, start_lineno, curlineno):
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 179
176 ## specific / overridden commands 180 ## specific / overridden commands
177 def do_list(self, arg): 181 def do_list(self, arg):
178 """overrides default list command to display the surrounding block 182 """overrides default list command to display the surrounding block
179 instead of 5 lines of context 183 instead of 5 lines of context
180 """ 184 """
181 self.lastcmd = 'list' 185 self.lastcmd = 'list'
182 if not arg: 186 if not arg:
183 try: 187 try:
184 source, start_lineno = getsource(self.curframe) 188 source, start_lineno = getsource(self.curframe)
185 print colorize(''.join(source), start_lineno, 189 print(colorize(''.join(source), start_lineno,
186 self.curframe.f_lineno) 190 self.curframe.f_lineno))
187 except KeyboardInterrupt: 191 except KeyboardInterrupt:
188 pass 192 pass
189 except IOError: 193 except IOError:
190 Pdb.do_list(self, arg) 194 Pdb.do_list(self, arg)
191 else: 195 else:
192 Pdb.do_list(self, arg) 196 Pdb.do_list(self, arg)
193 do_l = do_list 197 do_l = do_list
194 198
195 def do_open(self, arg): 199 def do_open(self, arg):
196 """opens source file corresponding to the current stack level""" 200 """opens source file corresponding to the current stack level"""
197 filename = self.curframe.f_code.co_filename 201 filename = self.curframe.f_code.co_filename
198 lineno = self.curframe.f_lineno 202 lineno = self.curframe.f_lineno
199 cmd = 'emacsclient --no-wait +%s %s' % (lineno, filename) 203 cmd = 'emacsclient --no-wait +%s %s' % (lineno, filename)
200 os.system(cmd) 204 os.system(cmd)
201 205
202 do_o = do_open 206 do_o = do_open
203 207
204 def pm(): 208 def pm():
205 """use our custom debugger""" 209 """use our custom debugger"""
206 dbg = Debugger(sys.last_traceback) 210 dbg = Debugger(sys.last_traceback)
207 dbg.start() 211 dbg.start()
208 212
209 def set_trace(): 213 def set_trace():
210 Debugger().set_trace(sys._getframe().f_back) 214 Debugger().set_trace(sys._getframe().f_back)
OLDNEW
« no previous file with comments | « third_party/logilab/common/dbf.py ('k') | third_party/logilab/common/decorators.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698