def pdoc(self,obj,oname='',formatter = None): """Print the docstring for any object. Optional: -formatter: a function to run the docstring through for specially formatted docstrings.""" head = self.__head # so that itpl can find it even if private ds = getdoc(obj) if formatter: ds = formatter(ds) if inspect.isclass(obj): init_ds = getdoc(obj.__init__) output = itpl('$head("Class Docstring:")\n' '$indent(ds)\n' '$head("Constructor Docstring"):\n' '$indent(init_ds)') elif isinstance(obj,object) and hasattr(obj,'__call__'): call_ds = getdoc(obj.__call__) if call_ds: output = itpl('$head("Class Docstring:")\n$indent(ds)\n' '$head("Calling Docstring:")\n$indent(call_ds)') else: output = ds else: output = ds if output is None: self.noinfo('documentation',oname) return page.page(output)
def pdoc(self,obj,oname='',formatter = None): """Print the docstring for any object. Optional: -formatter: a function to run the docstring through for specially formatted docstrings.""" head = self.__head # so that itpl can find it even if private ds = getdoc(obj) if formatter: ds = formatter(ds) if inspect.isclass(obj): init_ds = getdoc(obj.__init__) output = itpl('$head("Class Docstring:")\n' '$indent(ds)\n' '$head("Constructor Docstring"):\n' '$indent(init_ds)') elif (type(obj) is types.InstanceType or isinstance(obj,object)) \ and hasattr(obj,'__call__'): call_ds = getdoc(obj.__call__) if call_ds: output = itpl('$head("Class Docstring:")\n$indent(ds)\n' '$head("Calling Docstring:")\n$indent(call_ds)') else: output = ds else: output = ds if output is None: self.noinfo('documentation',oname) return page.page(output)
def __call__(self, etype, evalue, etb): """Handle an exception, call for compatible with sys.excepthook""" # Report tracebacks shouldn't use color in general (safer for users) color_scheme = 'NoColor' # Use this ONLY for developer debugging (keep commented out for release) #color_scheme = 'Linux' # dbg try: rptdir = self.app.ipython_dir except: rptdir = os.getcwd() if not os.path.isdir(rptdir): rptdir = os.getcwd() report_name = os.path.join(rptdir,self.crash_report_fname) # write the report filename into the instance dict so it can get # properly expanded out in the user message template self.crash_report_fname = report_name TBhandler = ultratb.VerboseTB( color_scheme=color_scheme, long_header=1, call_pdb=self.call_pdb, ) if self.call_pdb: TBhandler(etype,evalue,etb) return else: traceback = TBhandler.text(etype,evalue,etb,context=31) # print traceback to screen if self.show_crash_traceback: print >> sys.stderr, traceback # and generate a complete report on disk try: report = open(report_name,'w') except: print >> sys.stderr, 'Could not create crash report on disk.' return # Inform user on stderr of what happened msg = itpl('\n'+'*'*70+'\n'+self.message_template) print >> sys.stderr, msg # Construct report on disk report.write(self.make_report(traceback)) report.close() raw_input("Hit <Enter> to quit this message (your terminal may close):")
def __call__(self, etype, evalue, etb): """Handle an exception, call for compatible with sys.excepthook""" # Report tracebacks shouldn't use color in general (safer for users) color_scheme = 'NoColor' # Use this ONLY for developer debugging (keep commented out for release) #color_scheme = 'Linux' # dbg try: rptdir = self.app.ipython_dir except: rptdir = os.getcwd() if rptdir is None or not os.path.isdir(rptdir): rptdir = os.getcwd() report_name = os.path.join(rptdir, self.crash_report_fname) # write the report filename into the instance dict so it can get # properly expanded out in the user message template self.crash_report_fname = report_name TBhandler = ultratb.VerboseTB( color_scheme=color_scheme, long_header=1, call_pdb=self.call_pdb, ) if self.call_pdb: TBhandler(etype, evalue, etb) return else: traceback = TBhandler.text(etype, evalue, etb, context=31) # print traceback to screen if self.show_crash_traceback: print >> sys.stderr, traceback # and generate a complete report on disk try: report = open(report_name, 'w') except: print >> sys.stderr, 'Could not create crash report on disk.' return # Inform user on stderr of what happened msg = itpl('\n' + '*' * 70 + '\n' + self.message_template) print >> sys.stderr, msg # Construct report on disk report.write(self.make_report(traceback)) report.close() raw_input( "Hit <Enter> to quit this message (your terminal may close):")
def __call__(self,lst,pos='',**kw): """Prints the nested list numbering levels.""" kw.setdefault('indent',' ') kw.setdefault('sep',': ') kw.setdefault('start',0) kw.setdefault('stop',len(lst)) # we need to remove start and stop from kw so they don't propagate # into a recursive call for a nested list. start = kw['start']; del kw['start'] stop = kw['stop']; del kw['stop'] if self.depth == 0 and 'header' in list(kw.keys()): print(kw['header']) for idx in range(start,stop): elem = lst[idx] if type(elem)==type([]): self.depth += 1 self.__call__(elem,itpl('$pos$idx,'),**kw) self.depth -= 1 else: printpl(kw['indent']*self.depth+'$pos$idx$kw["sep"]$elem')
def __call__(self, lst, pos='', **kw): """Prints the nested list numbering levels.""" kw.setdefault('indent', ' ') kw.setdefault('sep', ': ') kw.setdefault('start', 0) kw.setdefault('stop', len(lst)) # we need to remove start and stop from kw so they don't propagate # into a recursive call for a nested list. start = kw['start'] del kw['start'] stop = kw['stop'] del kw['stop'] if self.depth == 0 and 'header' in kw.keys(): print(kw['header']) for idx in range(start, stop): elem = lst[idx] if type(elem) == type([]): self.depth += 1 self.__call__(elem, itpl('$pos$idx,'), **kw) self.depth -= 1 else: printpl(kw['indent'] * self.depth + '$pos$idx$kw["sep"]$elem')