summaryrefslogtreecommitdiffstats
path: root/Tools/scripts/pdeps.py
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-01-17 08:48:39 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-01-17 08:48:39 (GMT)
commit70c4378dbcfdcbeef6fb3aa348f32ed862fe8eb7 (patch)
treecf47b67db3753288cfd9fa2adc45e7c5cd2f8741 /Tools/scripts/pdeps.py
parenta88854059309667092000da55d4d5a5804267e9f (diff)
downloadcpython-70c4378dbcfdcbeef6fb3aa348f32ed862fe8eb7.zip
cpython-70c4378dbcfdcbeef6fb3aa348f32ed862fe8eb7.tar.gz
cpython-70c4378dbcfdcbeef6fb3aa348f32ed862fe8eb7.tar.bz2
Whitespace normalization.
Diffstat (limited to 'Tools/scripts/pdeps.py')
-rwxr-xr-xTools/scripts/pdeps.py194
1 files changed, 97 insertions, 97 deletions
diff --git a/Tools/scripts/pdeps.py b/Tools/scripts/pdeps.py
index fb730f1..18b582b 100755
--- a/Tools/scripts/pdeps.py
+++ b/Tools/scripts/pdeps.py
@@ -5,7 +5,7 @@
# Find dependencies between a bunch of Python modules.
#
# Usage:
-# pdeps file1.py file2.py ...
+# pdeps file1.py file2.py ...
#
# Output:
# Four tables separated by lines like '--- Closure ---':
@@ -29,31 +29,31 @@ import string
# Main program
#
def main():
- args = sys.argv[1:]
- if not args:
- print 'usage: pdeps file.py file.py ...'
- return 2
- #
- table = {}
- for arg in args:
- process(arg, table)
- #
- print '--- Uses ---'
- printresults(table)
- #
- print '--- Used By ---'
- inv = inverse(table)
- printresults(inv)
- #
- print '--- Closure of Uses ---'
- reach = closure(table)
- printresults(reach)
- #
- print '--- Closure of Used By ---'
- invreach = inverse(reach)
- printresults(invreach)
- #
- return 0
+ args = sys.argv[1:]
+ if not args:
+ print 'usage: pdeps file.py file.py ...'
+ return 2
+ #
+ table = {}
+ for arg in args:
+ process(arg, table)
+ #
+ print '--- Uses ---'
+ printresults(table)
+ #
+ print '--- Used By ---'
+ inv = inverse(table)
+ printresults(inv)
+ #
+ print '--- Closure of Uses ---'
+ reach = closure(table)
+ printresults(reach)
+ #
+ print '--- Closure of Used By ---'
+ invreach = inverse(reach)
+ printresults(invreach)
+ #
+ return 0
# Compiled regular expressions to search for import statements
@@ -65,56 +65,56 @@ m_from = regex.compile('^[ \t]*import[ \t]+\([^#]+\)')
# Collect data from one file
#
def process(filename, table):
- fp = open(filename, 'r')
- mod = os.path.basename(filename)
- if mod[-3:] == '.py':
- mod = mod[:-3]
- table[mod] = list = []
- while 1:
- line = fp.readline()
- if not line: break
- while line[-1:] == '\\':
- nextline = fp.readline()
- if not nextline: break
- line = line[:-1] + nextline
- if m_import.match(line) >= 0:
- (a, b), (a1, b1) = m_import.regs[:2]
- elif m_from.match(line) >= 0:
- (a, b), (a1, b1) = m_from.regs[:2]
- else: continue
- words = string.splitfields(line[a1:b1], ',')
- # print '#', line, words
- for word in words:
- word = string.strip(word)
- if word not in list:
- list.append(word)
+ fp = open(filename, 'r')
+ mod = os.path.basename(filename)
+ if mod[-3:] == '.py':
+ mod = mod[:-3]
+ table[mod] = list = []
+ while 1:
+ line = fp.readline()
+ if not line: break
+ while line[-1:] == '\\':
+ nextline = fp.readline()
+ if not nextline: break
+ line = line[:-1] + nextline
+ if m_import.match(line) >= 0:
+ (a, b), (a1, b1) = m_import.regs[:2]
+ elif m_from.match(line) >= 0:
+ (a, b), (a1, b1) = m_from.regs[:2]
+ else: continue
+ words = string.splitfields(line[a1:b1], ',')
+ # print '#', line, words
+ for word in words:
+ word = string.strip(word)
+ if word not in list:
+ list.append(word)
# Compute closure (this is in fact totally general)
#
def closure(table):
- modules = table.keys()
- #
- # Initialize reach with a copy of table
- #
- reach = {}
- for mod in modules:
- reach[mod] = table[mod][:]
- #
- # Iterate until no more change
- #
- change = 1
- while change:
- change = 0
- for mod in modules:
- for mo in reach[mod]:
- if mo in modules:
- for m in reach[mo]:
- if m not in reach[mod]:
- reach[mod].append(m)
- change = 1
- #
- return reach
+ modules = table.keys()
+ #
+ # Initialize reach with a copy of table
+ #
+ reach = {}
+ for mod in modules:
+ reach[mod] = table[mod][:]
+ #
+ # Iterate until no more change
+ #
+ change = 1
+ while change:
+ change = 0
+ for mod in modules:
+ for mo in reach[mod]:
+ if mo in modules:
+ for m in reach[mo]:
+ if m not in reach[mod]:
+ reach[mod].append(m)
+ change = 1
+ #
+ return reach
# Invert a table (this is again totally general).
@@ -122,13 +122,13 @@ def closure(table):
# so there may be empty lists in the inverse.
#
def inverse(table):
- inv = {}
- for key in table.keys():
- if not inv.has_key(key):
- inv[key] = []
- for item in table[key]:
- store(inv, item, key)
- return inv
+ inv = {}
+ for key in table.keys():
+ if not inv.has_key(key):
+ inv[key] = []
+ for item in table[key]:
+ store(inv, item, key)
+ return inv
# Store "item" in "dict" under "key".
@@ -136,32 +136,32 @@ def inverse(table):
# If there is no list for the key yet, it is created.
#
def store(dict, key, item):
- if dict.has_key(key):
- dict[key].append(item)
- else:
- dict[key] = [item]
+ if dict.has_key(key):
+ dict[key].append(item)
+ else:
+ dict[key] = [item]
# Tabulate results neatly
#
def printresults(table):
- modules = table.keys()
- maxlen = 0
- for mod in modules: maxlen = max(maxlen, len(mod))
- modules.sort()
- for mod in modules:
- list = table[mod]
- list.sort()
- print string.ljust(mod, maxlen), ':',
- if mod in list:
- print '(*)',
- for ref in list:
- print ref,
- print
+ modules = table.keys()
+ maxlen = 0
+ for mod in modules: maxlen = max(maxlen, len(mod))
+ modules.sort()
+ for mod in modules:
+ list = table[mod]
+ list.sort()
+ print string.ljust(mod, maxlen), ':',
+ if mod in list:
+ print '(*)',
+ for ref in list:
+ print ref,
+ print
# Call main and honor exit status
try:
- sys.exit(main())
+ sys.exit(main())
except KeyboardInterrupt:
- sys.exit(1)
+ sys.exit(1)