Mercurial > kallithea
annotate scripts/docs-headings.py @ 5770:82f818616265
db: cache SCM instance short-term (tied to SQLAlchemy session lifetime)
Repeatedly checking whether SCM instances are invalidated is slow, and
we don't actually _want_ SCM instances to invalidate half-way through
a request either.
Therefore cache them in on the db.Repository object, the lifetime
of which is directly tied to the lifetime of the SQLAlchemy session,
the lifetime of which is tied directly to the individual HTTP request.
This way, we only check for invalidation the first time the SCM instance
is accessed in a request.
This will improve performance in cases where we have (by definition) badly
written code that retrieves repo objects several times.
author | Søren Løvborg <sorenl@unity3d.com> |
---|---|
date | Tue, 08 Mar 2016 12:28:06 +0100 |
parents | ed2fb6e84a02 |
children | 665dfa112f2c |
rev | line source |
---|---|
5537
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python2 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
2 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
3 """ |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
4 Consistent formatting of rst section titles |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
5 """ |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
6 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
7 import re |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
8 import subprocess |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
9 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
10 spaces = [ |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
11 (0, 1), # we assume this is a over-and-underlined header |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
12 (2, 1), |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
13 (1, 1), |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
14 (1, 0), |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
15 (1, 0), |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
16 ] |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
17 |
5575
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
18 # http://sphinx-doc.org/rest.html : |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
19 # for the Python documentation, this convention is used which you may follow: |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
20 # # with overline, for parts |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
21 # * with overline, for chapters |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
22 # =, for sections |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
23 # -, for subsections |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
24 # ^, for subsubsections |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
25 # ", for paragraphs |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
26 pystyles = ['#', '*', '=', '-', '^', '"'] |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
27 |
5537
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
28 # match on a header line underlined with one of the valid characters |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
29 headermatch = re.compile(r'''\n*(.+)\n([][!"#$%&'()*+,./:;<=>?@\\^_`{|}~-])\2{2,}\n+''', flags=re.MULTILINE) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
30 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
31 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
32 def main(): |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
33 for fn in subprocess.check_output(['hg', 'loc', 'set:**.rst+kallithea/i18n/how_to']).splitlines(): |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
34 print 'processing %s:' % fn |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
35 s = file(fn).read() |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
36 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
37 # find levels and their styles |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
38 lastpos = 0 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
39 styles = [] |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
40 for markup in headermatch.findall(s): |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
41 style = markup[1] |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
42 if style in styles: |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
43 stylepos = styles.index(style) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
44 if stylepos > lastpos + 1: |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
45 print 'bad style %r with level %s - was at %s' % (style, stylepos, lastpos) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
46 else: |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
47 stylepos = len(styles) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
48 if stylepos > lastpos + 1: |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
49 print 'bad new style %r - expected %r' % (style, styles[lastpos + 1]) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
50 else: |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
51 styles.append(style) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
52 lastpos = stylepos |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
53 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
54 # remove superfluous spacing (may however be restored by header spacing) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
55 s = re.sub(r'''(\n\n)\n*''', r'\1', s, flags=re.MULTILINE) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
56 |
5575
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
57 if styles: |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
58 newstyles = pystyles[pystyles.index(styles[0]):] |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
59 |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
60 def subf(m): |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
61 title, style = m.groups() |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
62 level = styles.index(style) |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
63 before, after = spaces[level] |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
64 newstyle = newstyles[level] |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
65 return '\n' * (before + 1) + title + '\n' + newstyle * len(title) + '\n' * (after + 1) |
ed2fb6e84a02
docs: use consistent style for section titles
Mads Kiilerich <madski@unity3d.com>
parents:
5537
diff
changeset
|
66 s = headermatch.sub(subf, s) |
5537
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
67 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
68 # remove superfluous spacing when headers are adjacent |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
69 s = re.sub(r'''(\n.+\n([][!"#$%&'()*+,./:;<=>?@\\^_`{|}~-])\2{2,}\n\n\n)\n*''', r'\1', s, flags=re.MULTILINE) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
70 # fix trailing space and spacing before link sections |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
71 s = s.strip() + '\n' |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
72 s = re.sub(r'''\n+((?:\.\. _[^\n]*\n)+)$''', r'\n\n\n\1', s) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
73 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
74 file(fn, 'w').write(s) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
75 print subprocess.check_output(['hg', 'diff', fn]) |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
76 print |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
77 |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
78 if __name__ == '__main__': |
f38b50f8a6a6
scripts: introduce scripts/docs-headings.py for reformatting rst section titles in docs
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
79 main() |