Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a17fd1f

Browse files
committed
Port suspicious markup builder and patchlevel.py so that they can be used with Python 2 and 3 without conversion.
1 parent b98273f commit a17fd1f

2 files changed

Lines changed: 37 additions & 17 deletions

File tree

Doc/tools/sphinxext/patchlevel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,4 @@ def get_version_info():
6868
return version, release
6969

7070
if __name__ == '__main__':
71-
print get_header_version_info('.')[1]
71+
print(get_header_version_info('.')[1])

Doc/tools/sphinxext/suspicious.py

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@
4949
from docutils import nodes
5050
from sphinx.builders import Builder
5151

52-
detect_all = re.compile(ur'''
52+
detect_all = re.compile(r'''
5353
::(?=[^=])| # two :: (but NOT ::=)
5454
:[a-zA-Z][a-zA-Z0-9]+| # :foo
5555
`| # ` (seldom used by itself)
5656
(?<!\.)\.\.[ \t]*\w+: # .. foo: (but NOT ... else:)
5757
''', re.UNICODE | re.VERBOSE).finditer
5858

59+
py3 = sys.version_info >= (3, 0)
60+
5961

6062
class Rule:
6163
def __init__(self, docname, lineno, issue, line):
@@ -136,21 +138,31 @@ def report_issue(self, text, lineno, issue):
136138
if not self.any_issue: self.info()
137139
self.any_issue = True
138140
self.write_log_entry(lineno, issue, text)
139-
self.warn('[%s:%d] "%s" found in "%-.120s"' % (
141+
if py3:
142+
self.warn('[%s:%d] "%s" found in "%-.120s"' %
143+
(self.docname, lineno, issue, text))
144+
else:
145+
self.warn('[%s:%d] "%s" found in "%-.120s"' % (
140146
self.docname.encode(sys.getdefaultencoding(),'replace'),
141147
lineno,
142148
issue.encode(sys.getdefaultencoding(),'replace'),
143149
text.strip().encode(sys.getdefaultencoding(),'replace')))
144150
self.app.statuscode = 1
145151

146152
def write_log_entry(self, lineno, issue, text):
147-
f = open(self.log_file_name, 'ab')
148-
writer = csv.writer(f, dialect)
149-
writer.writerow([self.docname.encode('utf-8'),
150-
lineno,
151-
issue.encode('utf-8'),
152-
text.strip().encode('utf-8')])
153-
f.close()
153+
if py3:
154+
f = open(self.log_file_name, 'a')
155+
writer = csv.writer(f, dialect)
156+
writer.writerow([self.docname, lineno, issue, text.strip()])
157+
f.close()
158+
else:
159+
f = open(self.log_file_name, 'ab')
160+
writer = csv.writer(f, dialect)
161+
writer.writerow([self.docname.encode('utf-8'),
162+
lineno,
163+
issue.encode('utf-8'),
164+
text.strip().encode('utf-8')])
165+
f.close()
154166

155167
def load_rules(self, filename):
156168
"""Load database of previously ignored issues.
@@ -160,18 +172,26 @@ def load_rules(self, filename):
160172
"""
161173
self.info("loading ignore rules... ", nonl=1)
162174
self.rules = rules = []
163-
try: f = open(filename, 'rb')
164-
except IOError: return
175+
try:
176+
if py3:
177+
f = open(filename, 'r')
178+
else:
179+
f = open(filename, 'rb')
180+
except IOError:
181+
return
165182
for i, row in enumerate(csv.reader(f)):
166183
if len(row) != 4:
167184
raise ValueError(
168185
"wrong format in %s, line %d: %s" % (filename, i+1, row))
169186
docname, lineno, issue, text = row
170-
docname = docname.decode('utf-8')
171-
if lineno: lineno = int(lineno)
172-
else: lineno = None
173-
issue = issue.decode('utf-8')
174-
text = text.decode('utf-8')
187+
if lineno:
188+
lineno = int(lineno)
189+
else:
190+
lineno = None
191+
if not py3:
192+
docname = docname.decode('utf-8')
193+
issue = issue.decode('utf-8')
194+
text = text.decode('utf-8')
175195
rule = Rule(docname, lineno, issue, text)
176196
rules.append(rule)
177197
f.close()

0 commit comments

Comments
 (0)