blob: 3e359e8ca162a4d4c3802724d63aed336634e3dc [file] [log] [blame]
#!/usr/bin/env python
"""
This script looks for ImportModules calls in C extensions
of the stdlib.
The current version has harcoded the location of the source
tries on Ronald's machine, a future version will be able
to rebuild the modulegraph source file that contains
this information.
"""
from __future__ import print_function
import re
import sys
import os
import pprint
import_re = re.compile('PyImport_ImportModule\w+\("(\w+)"\);')
def extract_implies(root):
modules_dir = os.path.join(root, "Modules")
for fn in os.listdir(modules_dir):
if not fn.endswith('.c'):
continue
module_name = fn[:-2]
if module_name.endswith('module'):
module_name = module_name[:-6]
with open(os.path.join(modules_dir, fn)) as fp:
data = fp.read()
imports = list(sorted(set(import_re.findall(data))))
if imports:
yield module_name, imports
def main():
for version in ('2.6', '2.7', '3.1'):
print("====", version)
pprint.pprint(list(extract_implies('/Users/ronald/Projects/python/release%s-maint'%(version.replace('.', '')))))
if __name__ == "__main__":
main()