Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
marvel
GitHub Repository: marvel/qnf
Path: blob/master/elisp/emacs-for-python/rope-dist/rope/base/stdmods.py
1419 views
1
import os
2
import sys
3
4
from rope.base import utils
5
6
7
def _stdlib_path():
8
import inspect
9
return os.path.dirname(inspect.getsourcefile(inspect))
10
11
@utils.cached(1)
12
def standard_modules():
13
return python_modules() | dynload_modules()
14
15
@utils.cached(1)
16
def python_modules():
17
result = set()
18
lib_path = _stdlib_path()
19
if os.path.exists(lib_path):
20
for name in os.listdir(lib_path):
21
path = os.path.join(lib_path, name)
22
if os.path.isdir(path):
23
if '-' not in name:
24
result.add(name)
25
else:
26
if name.endswith('.py'):
27
result.add(name[:-3])
28
return result
29
30
@utils.cached(1)
31
def dynload_modules():
32
result = set(sys.builtin_module_names)
33
dynload_path = os.path.join(_stdlib_path(), 'lib-dynload')
34
if os.path.exists(dynload_path):
35
for name in os.listdir(dynload_path):
36
path = os.path.join(dynload_path, name)
37
if os.path.isfile(path):
38
if name.endswith('.so') or name.endswith('.dll'):
39
result.add(os.path.splitext(name)[0])
40
return result
41
42