[IPython-user] Re: ipython as zope interactive console
Fernando.Perez at colorado.edu
Tue Oct 5 15:57:41 CDT 2004
Jeff Kowalczyk schrieb:
> Fernando Perez wrote:
>>>- Zope objects have *lots* of attributes! Any tips available for using
>>>the code-completion and attribute exploration with massive lists of
>>>attributes would probably help Zope newbies immensely.
>>Mmh. I've run into the same problem with VTK objects, which also have
>>monster attribute lists. My approach is just to type obj.A<TAB>,
>>obj.B<TAB>, etc: typing first a letter or two to narrow down the size of
>>the completion list. Not ideal, I know...
> Do you have any tricks to view code completion only for attributes which
> do not start with '_' (public attributes)
Yes, see in ~/.ipython/ipythonrc:
# iii. readline_omit__names: normally hitting <tab> after a '.' in a name will
# complete all attributes of an object, including all the special methods
# whose names inlclude double underscores (like __getitem__ or __class__). If
# you'd rather not see these names by default, you can set this option to
# 1. Note that even when this option is set, you can still see those names by
# explicitly typing a _ after the period and hitting <tab>: 'name._<tab>' will
# always complete attribute names starting with '_'.
# This option is off by default so that new users see all attributes of any
# objects they are dealing with.
Just set this to 1 in your config, and you'll only see public names.
> Is there any way to view code completion only for defined attributes of
> the object, not those it inherits from the acquisition environment (if
> that's the right term)? Object.__dict__ usually gives an attribute list
> that's close to the API, can that be linked to code completion?
> It would be cool to be able to alternate between code-completing in
> __dict__ or the acquisition environment based on some easily applied trick
> or magic syntax. Perhaps Object.(tab) -> __dict__ and
> Object..(tab) -> acquisition, with the second . stripped from the next
> input prompt. Maybe Object...(tab) could search both, bringing the
> whole huge attribute list into play.
I'm not really sure what the 'acquisition environment' means. Something like
this goes beyond what normal ipython can do, since it's obviously a
zope-specific thing. However, you could certainly extend the ipython
completion mechanism by inheriting from MagicCompleter in IPython.iplib, and
then have a zope profile which implements these enhancements in the context of
zope debugging. That's the whole point of ipython: it exposes pretty much all
of its internals for problem-specific customization, and choosing these
customizations is trivial with a profile:
ipython -p zope
could load your fancy, zope-enhanced completer into ipython while a simple
would give you the plain vanilla version.
I hope this helps,
More information about the IPython-user