Anonymous avatar Anonymous committed fa7fae9

pycore: add import_dynamic_stdmods variable

Comments (0)

Files changed (2)

rope/base/default_config.py

 
     # 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

rope/base/pycore.py

 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
 
     @property
+    @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):
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.