[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [stem/master] Renaming whitespace_check.py to check_whitespace.py
commit 1a2c7559e31fea6fba6856594f982f6f0959cd5d
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Mon Apr 16 09:22:25 2012 -0700
Renaming whitespace_check.py to check_whitespace.py
Previous naming was stupid, making it read better.
---
test/check_whitespace.py | 106 ++++++++++++++++++++++++++++++++++++++++++++++
test/whitespace_check.py | 106 ----------------------------------------------
2 files changed, 106 insertions(+), 106 deletions(-)
diff --git a/test/check_whitespace.py b/test/check_whitespace.py
new file mode 100644
index 0000000..e0419a5
--- /dev/null
+++ b/test/check_whitespace.py
@@ -0,0 +1,106 @@
+"""
+Performs a check that our python source code follows its whitespace conventions
+which are...
+
+* two space indentations
+* tabs are the root of all evil and should be shot on sight
+* no trailing whitespace unless the line is empty, in which case it should have
+ the same indentation as the surrounding code
+"""
+
+import re
+import os
+
+# if ran directly then run over everything one level up
+DEFAULT_TARGET = os.path.sep.join(__file__.split(os.path.sep)[:-1])
+
+def get_issues(base_path = DEFAULT_TARGET):
+ """
+ Checks python source code in the given directory for whitespace issues.
+
+ Arguments:
+ base_path (str) - directory to be iterated over
+
+ Returns:
+ dict of the form...
+ path => [(line_number, message)...]
+ """
+
+ # TODO: This does not check that block indentations are two spaces because
+ # differentiating source from string blocks ("""foo""") is more of a pita
+ # than I want to deal with right now.
+
+ issues = {}
+
+ for file_path in _get_python_files(base_path):
+ with open(file_path) as f: file_contents = f.read()
+ lines, file_issues, prev_indent = file_contents.splitlines(), [], 0
+
+ for i in xrange(len(lines)):
+ whitespace, content = re.match("^(\s*)(.*)$", lines[i]).groups()
+
+ if "\t" in whitespace:
+ file_issues.append((i + 1, "indentation has a tab"))
+ elif content != content.rstrip():
+ file_issues.append((i + 1, "line has trailing whitespace"))
+ elif content == '':
+ # empty line, check its indentation against the previous and next line
+ # with content
+
+ next_indent = 0
+
+ for k in xrange(i + 1, len(lines)):
+ future_whitespace, future_content = re.match("^(\s*)(.*)$", lines[k]).groups()
+
+ if future_content:
+ next_indent = len(future_whitespace)
+ break
+
+ if not len(whitespace) in (prev_indent, next_indent):
+ msg = "indentation should match surrounding content (%s spaces)"
+
+ if prev_indent == next_indent:
+ msg = msg % prev_indent
+ elif prev_indent < next_indent:
+ msg = msg % ("%i or %i" % (prev_indent, next_indent))
+ else:
+ msg = msg % ("%i or %i" % (next_indent, prev_indent))
+
+ file_issues.append((i + 1, msg))
+ else:
+ # we had content and it's fine, making a note of its indentation
+ prev_indent = len(whitespace)
+
+ if file_issues:
+ issues[file_path] = file_issues
+
+ return issues
+
+def _get_python_files(base_path):
+ """
+ Iterates over all of the python files within a directory.
+
+ Arguments:
+ base_path (str) - directory to be iterated over
+
+ Returns:
+ iterator that yields the absolute path for python source code
+ """
+
+ for root, _, files in os.walk(base_path, followlinks = True):
+ for filename in files:
+ if filename.endswith(".py"):
+ yield os.path.join(root, filename)
+
+if __name__ == '__main__':
+ issues = get_issues()
+
+ for file_path in issues:
+ print file_path
+
+ for line_number, msg in issues[file_path]:
+ line_count = "%-4s" % line_number
+ print " line %s %s" % (line_count, msg)
+
+ print
+
diff --git a/test/whitespace_check.py b/test/whitespace_check.py
deleted file mode 100644
index e0419a5..0000000
--- a/test/whitespace_check.py
+++ /dev/null
@@ -1,106 +0,0 @@
-"""
-Performs a check that our python source code follows its whitespace conventions
-which are...
-
-* two space indentations
-* tabs are the root of all evil and should be shot on sight
-* no trailing whitespace unless the line is empty, in which case it should have
- the same indentation as the surrounding code
-"""
-
-import re
-import os
-
-# if ran directly then run over everything one level up
-DEFAULT_TARGET = os.path.sep.join(__file__.split(os.path.sep)[:-1])
-
-def get_issues(base_path = DEFAULT_TARGET):
- """
- Checks python source code in the given directory for whitespace issues.
-
- Arguments:
- base_path (str) - directory to be iterated over
-
- Returns:
- dict of the form...
- path => [(line_number, message)...]
- """
-
- # TODO: This does not check that block indentations are two spaces because
- # differentiating source from string blocks ("""foo""") is more of a pita
- # than I want to deal with right now.
-
- issues = {}
-
- for file_path in _get_python_files(base_path):
- with open(file_path) as f: file_contents = f.read()
- lines, file_issues, prev_indent = file_contents.splitlines(), [], 0
-
- for i in xrange(len(lines)):
- whitespace, content = re.match("^(\s*)(.*)$", lines[i]).groups()
-
- if "\t" in whitespace:
- file_issues.append((i + 1, "indentation has a tab"))
- elif content != content.rstrip():
- file_issues.append((i + 1, "line has trailing whitespace"))
- elif content == '':
- # empty line, check its indentation against the previous and next line
- # with content
-
- next_indent = 0
-
- for k in xrange(i + 1, len(lines)):
- future_whitespace, future_content = re.match("^(\s*)(.*)$", lines[k]).groups()
-
- if future_content:
- next_indent = len(future_whitespace)
- break
-
- if not len(whitespace) in (prev_indent, next_indent):
- msg = "indentation should match surrounding content (%s spaces)"
-
- if prev_indent == next_indent:
- msg = msg % prev_indent
- elif prev_indent < next_indent:
- msg = msg % ("%i or %i" % (prev_indent, next_indent))
- else:
- msg = msg % ("%i or %i" % (next_indent, prev_indent))
-
- file_issues.append((i + 1, msg))
- else:
- # we had content and it's fine, making a note of its indentation
- prev_indent = len(whitespace)
-
- if file_issues:
- issues[file_path] = file_issues
-
- return issues
-
-def _get_python_files(base_path):
- """
- Iterates over all of the python files within a directory.
-
- Arguments:
- base_path (str) - directory to be iterated over
-
- Returns:
- iterator that yields the absolute path for python source code
- """
-
- for root, _, files in os.walk(base_path, followlinks = True):
- for filename in files:
- if filename.endswith(".py"):
- yield os.path.join(root, filename)
-
-if __name__ == '__main__':
- issues = get_issues()
-
- for file_path in issues:
- print file_path
-
- for line_number, msg in issues[file_path]:
- line_count = "%-4s" % line_number
- print " line %s %s" % (line_count, msg)
-
- print
-
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits