1. Oscar Campos
  2. rope


Ali Gholami Rudi  committed fa7fae9

pycore: add import_dynamic_stdmods variable

  • Participants
  • Parent commits dfbbf85
  • Branches trunk

Comments (0)

Files changed (2)

File rope/base/default_config.py

View file
     # Builtin and c-extension modules that are allowed to be imported
     # and inspected by rope.
-    prefs['extension_modules'] = [
-        '_bisect', '_bytesio', '_collections', '_ctypes',
-        '_curses', '_csv', '_elementtree', '_fileio',
-        '_functools', '_heapq', '_hotshot', '_json',
-        '_locale', '_lsprof', '_md5', '_multibytecodec',
-        '_multiprocessing', '_random', '_sha', '_socket',
-        '_ssl', '_struct', '_weakref',
-        'array', 'binascii', 'cmath', 'bz2', 'collections',
-        'cPickle', 'crypt', 'cStringIO', 'datetime', 'dl',
-        'errno', 'exceptions', 'fcntl', 'gc', 'grp', 'imageop',
-        'imp', 'itertools', 'marshal', 'math', 'mmap', 'nis',
-        'nt', 'operator', 'parser', 'posix', 'pwd', 'pyexpat',
-        'resource', 'select', 'signal', 'strop', 'swpd', 'sys',
-        'syslog', 'thread', 'time', 'termios', 'unicodedata',
-        'zlib', 'zipimport']
+    prefs['extension_modules'] = []
+    # Add all standard c-extensions to extension_modules list.
+    prefs['import_dynamic_stdmods'] = True
     # If `True` modules with syntax errors are considered to be empty.
     # The default value is `False`; When `False` syntax errors raise

File rope/base/pycore.py

View file
 import rope.base.oi.doa
 import rope.base.oi.objectinfo
 import rope.base.oi.soa
-from rope.base import ast, exceptions, taskhandle
+from rope.base import ast, exceptions, taskhandle, utils, stdmods
 from rope.base.exceptions import ModuleNotFoundError
 from rope.base.pyobjectsdef import PyModule, PyPackage, PyClass
 import rope.base.resources
         return module_name
+    @utils.cacheit
     def extension_modules(self):
-        return self.project.prefs.get('extension_modules', [])
+        result = set(self.project.prefs.get('extension_modules', []))
+        if self.project.prefs.get('import_dynamic_stdmods', False):
+            result.update(stdmods.dynload_modules())
+        return result
 class _ModuleCache(object):