Kaydet (Commit) a17fd1f3 authored tarafından Georg Brandl's avatar Georg Brandl

Port suspicious markup builder and patchlevel.py so that they can be used with…

Port suspicious markup builder and patchlevel.py so that they can be used with Python 2 and 3 without conversion.
üst b98273ff
...@@ -68,4 +68,4 @@ def get_version_info(): ...@@ -68,4 +68,4 @@ def get_version_info():
return version, release return version, release
if __name__ == '__main__': if __name__ == '__main__':
print get_header_version_info('.')[1] print(get_header_version_info('.')[1])
...@@ -49,13 +49,15 @@ import sys ...@@ -49,13 +49,15 @@ import sys
from docutils import nodes from docutils import nodes
from sphinx.builders import Builder from sphinx.builders import Builder
detect_all = re.compile(ur''' detect_all = re.compile(r'''
::(?=[^=])| # two :: (but NOT ::=) ::(?=[^=])| # two :: (but NOT ::=)
:[a-zA-Z][a-zA-Z0-9]+| # :foo :[a-zA-Z][a-zA-Z0-9]+| # :foo
`| # ` (seldom used by itself) `| # ` (seldom used by itself)
(?<!\.)\.\.[ \t]*\w+: # .. foo: (but NOT ... else:) (?<!\.)\.\.[ \t]*\w+: # .. foo: (but NOT ... else:)
''', re.UNICODE | re.VERBOSE).finditer ''', re.UNICODE | re.VERBOSE).finditer
py3 = sys.version_info >= (3, 0)
class Rule: class Rule:
def __init__(self, docname, lineno, issue, line): def __init__(self, docname, lineno, issue, line):
...@@ -136,7 +138,11 @@ class CheckSuspiciousMarkupBuilder(Builder): ...@@ -136,7 +138,11 @@ class CheckSuspiciousMarkupBuilder(Builder):
if not self.any_issue: self.info() if not self.any_issue: self.info()
self.any_issue = True self.any_issue = True
self.write_log_entry(lineno, issue, text) self.write_log_entry(lineno, issue, text)
self.warn('[%s:%d] "%s" found in "%-.120s"' % ( if py3:
self.warn('[%s:%d] "%s" found in "%-.120s"' %
(self.docname, lineno, issue, text))
else:
self.warn('[%s:%d] "%s" found in "%-.120s"' % (
self.docname.encode(sys.getdefaultencoding(),'replace'), self.docname.encode(sys.getdefaultencoding(),'replace'),
lineno, lineno,
issue.encode(sys.getdefaultencoding(),'replace'), issue.encode(sys.getdefaultencoding(),'replace'),
...@@ -144,13 +150,19 @@ class CheckSuspiciousMarkupBuilder(Builder): ...@@ -144,13 +150,19 @@ class CheckSuspiciousMarkupBuilder(Builder):
self.app.statuscode = 1 self.app.statuscode = 1
def write_log_entry(self, lineno, issue, text): def write_log_entry(self, lineno, issue, text):
f = open(self.log_file_name, 'ab') if py3:
writer = csv.writer(f, dialect) f = open(self.log_file_name, 'a')
writer.writerow([self.docname.encode('utf-8'), writer = csv.writer(f, dialect)
lineno, writer.writerow([self.docname, lineno, issue, text.strip()])
issue.encode('utf-8'), f.close()
text.strip().encode('utf-8')]) else:
f.close() f = open(self.log_file_name, 'ab')
writer = csv.writer(f, dialect)
writer.writerow([self.docname.encode('utf-8'),
lineno,
issue.encode('utf-8'),
text.strip().encode('utf-8')])
f.close()
def load_rules(self, filename): def load_rules(self, filename):
"""Load database of previously ignored issues. """Load database of previously ignored issues.
...@@ -160,18 +172,26 @@ class CheckSuspiciousMarkupBuilder(Builder): ...@@ -160,18 +172,26 @@ class CheckSuspiciousMarkupBuilder(Builder):
""" """
self.info("loading ignore rules... ", nonl=1) self.info("loading ignore rules... ", nonl=1)
self.rules = rules = [] self.rules = rules = []
try: f = open(filename, 'rb') try:
except IOError: return if py3:
f = open(filename, 'r')
else:
f = open(filename, 'rb')
except IOError:
return
for i, row in enumerate(csv.reader(f)): for i, row in enumerate(csv.reader(f)):
if len(row) != 4: if len(row) != 4:
raise ValueError( raise ValueError(
"wrong format in %s, line %d: %s" % (filename, i+1, row)) "wrong format in %s, line %d: %s" % (filename, i+1, row))
docname, lineno, issue, text = row docname, lineno, issue, text = row
docname = docname.decode('utf-8') if lineno:
if lineno: lineno = int(lineno) lineno = int(lineno)
else: lineno = None else:
issue = issue.decode('utf-8') lineno = None
text = text.decode('utf-8') if not py3:
docname = docname.decode('utf-8')
issue = issue.decode('utf-8')
text = text.decode('utf-8')
rule = Rule(docname, lineno, issue, text) rule = Rule(docname, lineno, issue, text)
rules.append(rule) rules.append(rule)
f.close() f.close()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment