The rlcompleter module defines a completion function suitable for the
readline module by completing valid Python identifiers and keywords.

When this module is imported on a Unix platform with the readline module
available, an instance of the Completer class is automatically created
and its complete() method is set as the readline completer.

If called for text that doesn’t include a period character ('.'), it will
complete from names currently defined in __main__, builtins and
keywords (as defined by the keyword module).

If called for a dotted name, it will try to evaluate anything without obvious
side-effects (functions will not be evaluated, but it can generate calls to
__getattr__()) up to the last part, and find matches for the rest via the
dir() function. Any exception raised during the evaluation of the
expression is caught, silenced and None is returned.