Rob Hooft, Moshe Zadka: converted to 4 space indents and re instead of regex.
diff --git a/Tools/scripts/eptags.py b/Tools/scripts/eptags.py
index 58021b4..0e93447 100755
--- a/Tools/scripts/eptags.py
+++ b/Tools/scripts/eptags.py
@@ -1,50 +1,55 @@
 #! /usr/bin/env python
+"""Create a TAGS file for Python programs, usable with GNU Emacs.
 
-# eptags
-#
-# Create a TAGS file for Python programs, usable with GNU Emacs (version 18).
-# Tagged are:
-# - functions (even inside other defs or classes)
-# - classes
-# Warns about files it cannot open.
-# No warnings about duplicate tags.
+usage: eptags pyfiles...
 
-import sys
-import regex
+The output TAGS file is usable with Emacs version 18, 19, 20.
+Tagged are:
+ - functions (even inside other defs or classes)
+ - classes
 
-def main():
-	outfp = open('TAGS', 'w')
-	args = sys.argv[1:]
-	for file in args:
-		treat_file(file, outfp)
+eptags warns about files it cannot open.
+eptags will not give warnings about duplicate tags.
 
-expr = '^[ \t]*\(def\|class\)[ \t]+\([a-zA-Z0-9_]+\)[ \t]*[:(]'
-matcher = regex.compile(expr)
+BUGS:
+   Because of tag duplication (methods with the same name in different
+   classes), TAGS files are not very useful for most object-oriented
+   python projects.
+"""
+import sys,re
+
+expr = r'^[ \t]*(def|class)[ \t]+([a-zA-Z_][a-zA-Z0-9_]*)[ \t]*[:\(]'
+matcher = re.compile(expr)
 
 def treat_file(file, outfp):
-	try:
-		fp = open(file, 'r')
-	except:
-		print 'Cannot open', file
-		return
-	charno = 0
-	lineno = 0
-	tags = []
-	size = 0
-	while 1:
-		line = fp.readline()
-		if not line: break
-		lineno = lineno + 1
-		if matcher.search(line) >= 0:
-			(a, b), (a1, b1), (a2, b2) = matcher.regs[:3]
-			name = line[a2:b2]
-			pat = line[a:b]
-			tag = pat + '\177' + `lineno` + ',' + `charno` + '\n'
-			tags.append((name, tag))
-			size = size + len(tag)
-		charno = charno + len(line)
-	outfp.write('\f\n' + file + ',' + `size` + '\n')
-	for name, tag in tags:
-		outfp.write(tag)
+    """Append tags found in file named 'file' to the open file 'outfp'"""
+    try:
+	fp = open(file, 'r')
+    except:
+	sys.stderr.write('Cannot open %s\n'%file)
+	return
+    charno = 0
+    lineno = 0
+    tags = []
+    size = 0
+    while 1:
+	line = fp.readline()
+	if not line: break
+	lineno = lineno + 1
+	m = matcher.search(line)
+	if m:
+	    tag = m.group(0) + '\177%d,%d\n'%(lineno,charno)
+	    tags.append(tag)
+	    size = size + len(tag)
+	charno = charno + len(line)
+    outfp.write('\f\n%s,%d\n'%(file,size))
+    for tag in tags:
+	outfp.write(tag)
 
-main()
+def main():
+    outfp = open('TAGS', 'w')
+    for file in sys.argv[1:]:
+	treat_file(file, outfp)
+
+if __name__=="__main__":
+    main()