portageq: exclude expand_new_virt from commands
authorZac Medico <zmedico@gentoo.org>
Thu, 2 Jun 2011 21:02:46 +0000 (14:02 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 2 Jun 2011 21:02:46 +0000 (14:02 -0700)
This is necessary since portage probes functions in globals() and
treats functions it finds as commands. Also, use lazy import to
minimize global scope imports.

bin/portageq

index d6d9c170abacf23b694a5e3eb7b1465532cb8b44..92719fb5b6931b2d8de68d46189c03385c8c0940 100755 (executable)
@@ -21,7 +21,6 @@ except KeyboardInterrupt:
        sys.exit(128 + signal.SIGINT)
 
 import os
-import subprocess
 import types
 
 # Avoid sandbox violations after python upgrade.
@@ -43,8 +42,11 @@ except ImportError:
 del pym_path
 
 from portage import os
-from portage.dbapi._expand_new_virt import expand_new_virt
 from portage.util import writemsg, writemsg_stdout
+portage.proxy.lazyimport.lazyimport(globals(),
+       'subprocess',
+       'portage.dbapi._expand_new_virt:expand_new_virt',
+)
 
 def eval_atom_use(atom):
        if 'USE' in os.environ:
@@ -656,10 +658,11 @@ list_preserved_libs.uses_root = True
 if not portage.const._ENABLE_PRESERVE_LIBS:
        del list_preserved_libs
 
-non_commands = frozenset(['elog', 'eval_atom_use', 'exithandler', 'main',
+non_commands = frozenset(['elog', 'eval_atom_use',
+       'exithandler', 'expand_new_virt', 'main',
        'usage', 'writemsg', 'writemsg_stdout'])
 commands = sorted(k for k, v in globals().items() \
-       if type(v) is types.FunctionType and k not in non_commands)
+       if k not in non_commands and isinstance(v, types.FunctionType))
 
 def usage(argv):
        print(">>> Portage information query tool")