Gabriel Genellina wrote:
En Tue, 30 Sep 2008 16:06:07 -0300, Stef Mientki <[EMAIL PROTECTED]> escribió:

Gabriel Genellina wrote:
En Sun, 28 Sep 2008 19:25:30 -0300, Stef Mientki <[EMAIL PROTECTED]> escribió:

I'm trying to implement autocompletion into my editor.
But I find some weird behavior,
or at least I don't have the faintest idea why this behavior occures,
and even more important how to solve it
In the example below I try to autocomplete " wx.s" , which in my humble opinion should at least produce "wx.stc" (and some others ).

wx is a package. Modules within the package are not, by default, attributes of the package - unless they're imported in __init__.py or your code imports them.
So the autocompleter is doing the right thing
in what perspective ?
the autocompleter is only meant to assist the program writer ;-)

It's hard to write an autocompleter that does the right thing in all cases :)

For a package, you have several sources for possibly valid attributes:

 - its dir() (that is, the package object's own attributes)
 - the __all__ attribute, when it exists
- the list of modules inside the package directory or directories (given by its __path__ attribute)

Sometimes __init__.py is empty - and enumerating the modules inside the directory is the right thing to do. Sometimes the author explicitely imports things in __init__.py, things that comprise the public interfase to the package. In that case I'd not like to see "private" modules appearing in the list. Combine with __all__, which might be defined or not. Mix all those, choose your own autocomplete algorithm, and see what happens...

- wx.stc does not exist until it is explicitely imported.
I guess I've to study the package.
For the moment I'll implement a user editable list of additions.

But with your remarks I tried __all__
And now I wonder why rlcompleter is not simply using "wx.__all__",
it than does gets all the items ?

__all__ isn't always defined. It's only used when you do "from xxx import *" AFAIK.

thanks Gabriel,
very valuable information for me,
I'll bookmark this message for later use.
cheers,
Setf

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to