[Python-Dev] patching pydoc? (original) (raw)
tomer filiba tomerfiliba at gmail.com
Fri Jul 28 15:35:27 CEST 2006
- Previous message: [Python-Dev] Bad interaction of __index__ and sequence repeat
- Next message: [Python-Dev] Fwd: patching pydoc?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
i have a problem with pydoc in rpyc. i wanted help(obj), where obj is a NetProxy object, to work as if it were local.
i followed the code starting from site.help to pydoc.doc, which is the ultimate function that generates and prints the text. i expected there would be some function in the middle that prepares the text, and another that writes it to the pager, but to my disappointment pydoc.doc does both.
this means i can't transfer the document to my local machine (it's printed directly to the remote console).
therefore, i would like to split this behavior into two parts:
- render_doc - a function that returns the document text
- doc - a function that calls render_doc and sends it to the pager
this way no existing code breaks (no existing function signatures are changed) and i gain help on remote objects. i hope people would be in favor, as it's not such a big change anyway.
is it possible to add to 2.5?
-tomer
this is the code of pydoc, starting at line 1457
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< def doc(thing, title='Python Library Documentation: %s', forceload=0): """Display text documentation, given an object or a path to an object.""" try: object, name = resolve(thing, forceload) desc = describe(object) module = inspect.getmodule(object) if name and '.' in name: desc += ' in ' + name[:name.rfind('.')] elif module and module is not object: desc += ' in module ' + module.name if not (inspect.ismodule(object) or inspect.isclass(object) or inspect.isroutine(object) or isinstance(object, property)): # If the passed object is a piece of data or an instance, # document its available methods instead of its value. object = type(object) desc += ' object' pager(title % desc + '\n\n' + text.document(object, name)) except (ImportError, ErrorDuringImport), value: print value
this is the suggested code
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< def render_doc(thing, title='Python Library Documentation: %s', forceload=0): """generate the text""" object, name = resolve(thing, forceload) desc = describe(object) module = inspect.getmodule(object) if name and '.' in name: desc += ' in ' + name[:name.rfind('.')] elif module and module is not object: desc += ' in module ' + module.name if not (inspect.ismodule(object) or inspect.isclass(object) or inspect.isroutine(object) or isinstance(object, property)): # If the passed object is a piece of data or an instance, # document its available methods instead of its value. object = type(object) desc += ' object' return title % desc + '\n\n' + text.document(object, name)
def doc(*args, **kwargs): """Display text documentation, given an object or a path to an object.""" try: text = render_doc(*args, **kwargs) pager(text) except (ImportError, ErrorDuringImport), value: print value
- Previous message: [Python-Dev] Bad interaction of __index__ and sequence repeat
- Next message: [Python-Dev] Fwd: patching pydoc?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]