import sys
import tokenize
import types
+import wx
def getAutoCompleteList(command='', locals=None, includeMagic=1,
includeSingle=1, includeDouble=1):
attrdict = getAllAttributeNames(object)
# Store the object's dir.
object_dir = dir(object)
- for (str_obj, technique, count), attrlist in attrdict.items():
+ for (obj_type_name, technique, count), attrlist in attrdict.items():
# This complexity is necessary to avoid accessing all the
# attributes of the object. This is very handy for objects
# whose attributes are lazily evaluated.
- if str(object) == str_obj and technique == 'dir':
+ if type(object).__name__ == obj_type_name and technique == 'dir':
attributes += attrlist
else:
attributes += [attr for attr in attrlist \
# They always return true for hasattr().
# !!!
try:
- # Yes, this can fail if object is an instance of a class with
- # __str__ (or __repr__) having a bug or raising an
- # exception. :-(
- key = str(object)
+ # This could(?) fail if the type is poorly defined without
+ # even a name.
+ key = type(object).__name__
except:
key = 'anonymous'
# Wake up sleepy objects - a hack for ZODB objects in "ghost" state.
def getTokens(command):
"""Return list of token tuples for command."""
- command = str(command) # In case the command is unicode, which fails.
+
+ # In case the command is unicode try encoding it
+ if type(command) == unicode:
+ try:
+ command = command.encode(wx.GetDefaultPyEncoding())
+ except UnicodeEncodeError:
+ pass # otherwise leave it alone
+
f = cStringIO.StringIO(command)
# tokens is a list of token tuples, each looking like:
# (type, string, (srow, scol), (erow, ecol), line)