annotate website/issues/extensions/local_replace.py @ 8566:e4191aa7b402 default tip

doc: issue2551415 correct doc for change input->input_payload in 2.5 the rest interface changed a variable name from input to input_payload. An earlier commit changed the rest docs. This commit adds an item for it to the upgrading 2.4.0->2.5.0 section. Also cross reference added to the rest docs with the updated examples.
author John Rouillard <rouilj@ieee.org>
date Thu, 09 Apr 2026 00:19:06 -0400
parents 9c3ec0a5c7fc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4024
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
1 import re
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
2
4892
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
3 hg_url_base = r'http://sourceforge.net/p/roundup/code/ci/'
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
4
4884
595a8c5a6d13 website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents: 4883
diff changeset
5 substitutions = [ (re.compile(r'debian:\#(?P<id>\d+)'),
6969
ca62a7cc3c9b change url into https from http.
John Rouillard <rouilj@ieee.org>
parents: 6281
diff changeset
6 r'<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=\g<id>">debian#\g<id></a>' ),
4884
595a8c5a6d13 website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents: 4883
diff changeset
7 (re.compile(r'\#(?P<ws>\s*)(?P<id>\d+)'),
595a8c5a6d13 website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents: 4883
diff changeset
595a8c5a6d13 website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents: 4883
diff changeset
9 (re.compile(r'(?P<prews>^|\s+)issue(?P<ws>\s*)(?P<id>\d+)'),
595a8c5a6d13 website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents: 4883
diff changeset
4892
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
11 # matching the typical number:hash format of hg's own output
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
12 # and then use use hash instead of the number
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
13 (re.compile(r'(?P<prews>(^|\s+))(?P<revstr>(rev\s*|hg\s*|changeset: ))(?P<revnumber>\d+):(?P<refhash>[0-9a-fA-F]{12,40})(?P<post>\W+|$)'),
4892
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
14 r'\g<prews><a href="' + hg_url_base + '\g<refhash>">\g<revstr>\g<revnumber>:\g<refhash></a>\g<post>'),
4883
c0eb1d9f2cb7 website: local_replace.py: now explicitely match hashes with hex characters only if they are at least 4 chars long.
Bernhard Reiter <bernhard@intevation.de>
parents: 4882
diff changeset
15 # matching hg revison number or hash
4892
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
16 (re.compile(r'(?P<prews>(^|\s+))(?P<revstr>(revision|rev|r)\s?)(?P<revision>([1-9][0-9]*)|[0-9a-fA-F]{4,40})(?P<post>\W+|$)'),
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
17 r'\g<prews><a href="' + hg_url_base + '\g<revision>">\g<revstr>\g<revision></a>\g<post>'),
4024
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
18 ]
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
19
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
20 def local_replace(message):
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
21
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
22 for cre, replacement in substitutions:
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
23 message = cre.sub(replacement, message)
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
24
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
25 return message
4865
7140ebfc3764 Website, Issues: local_replace.py whitespace cleanup.
Bernhard Reiter <bernhard@intevation.de>
parents: 4232
diff changeset
26
7140ebfc3764 Website, Issues: local_replace.py whitespace cleanup.
Bernhard Reiter <bernhard@intevation.de>
parents: 4232
diff changeset
27
4024
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
28 def init(instance):
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
29 instance.registerUtil('localReplace', local_replace)
4865
7140ebfc3764 Website, Issues: local_replace.py whitespace cleanup.
Bernhard Reiter <bernhard@intevation.de>
parents: 4232
diff changeset
30
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
31 def quicktest(msgstr, should_replace = True, substr = True):
5341
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
32 testcount['run'] += 1
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
33 replacedstr = local_replace(msgstr)
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
34
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
35 if not (not replacedstr == msgstr ) == should_replace:
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
36 print("(fail)", end=' ')
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
37 testcount['failed'] += 1
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
38 elif substr and (msgstr not in replacedstr):
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
39 print("(fail)", end=' ')
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
40 testcount['failed'] += 1
5341
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
41
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
42 if replacedstr == msgstr:
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
43 print( "'%s'" % (msgstr,))
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
44 else:
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
45 print("'%s' -> '%s'" % (msgstr, replacedstr))
4024
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
46
c2d0d3e9099d svn repository setup
Stefan Seefeld <stefan@users.sourceforge.net>
parents:
diff changeset
47 if "__main__" == __name__:
5341
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
48 testcount = {'run':0 , 'failed': 0}
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
49 print("Replacement examples:")
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
50 quicktest(" debian:#222", substr=False)
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
51 quicktest(" #555", substr=False)
4882
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
52 quicktest("issue333")
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
53 quicktest(" revision 222", substr=False)
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
54 quicktest(" r 222", substr=False)
4882
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
55 quicktest(" wordthatendswithr 222", False)
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
56 quicktest(" references", False)
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
57 quicktest(" too many spaces r 222", False)
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
58 quicktest("re-evaluate", False)
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
59 quicktest("rex140eb", False)
4883
c0eb1d9f2cb7 website: local_replace.py: now explicitely match hashes with hex characters only if they are at least 4 chars long.
Bernhard Reiter <bernhard@intevation.de>
parents: 4882
diff changeset
60 quicktest("rev 012", False) # too short for a hg hash
4884
595a8c5a6d13 website: local_replace.py: Using raw strings for clarity (suggested by Thomas Arendsen Hein). One test fixed.
Bernhard Reiter <bernhard@intevation.de>
parents: 4883
diff changeset
61 quicktest("rev 0123")
4882
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
62 quicktest("re140eb")
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
63 quicktest(" r7140eb", substr=False)
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
64 quicktest(" rev7140eb ", substr=False)
4882
7f02765c6c31 website: local_replace.py: fixed one corner case for hg revisions. Better test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4874
diff changeset
65 quicktest("rev7140eb")
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
66 quicktest("rev7140eb,", substr=False)
4892
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
67 quicktest("rev4891:ad3d628e73f2")
29bc5484969a Improved website/issues/extensions/local_replace.py and hg copied it over to the devel and responsive templates.
Bernhard Reiter <bernhard@intevation.de>
parents: 4884
diff changeset
68 quicktest("hg4891:ad3d628e73f2")
4972
f87c0cca37ae Added: Matching hg log output in messages example.
Bernhard Reiter <bernhard@intevation.de>
parents: 4892
diff changeset
69 quicktest("changeset: 4542:46239c21a1eb")
6281
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
70 quicktest("rev 4542:46239c21a1eb")
042c50d5e06e Make rev 2345:acbed367 use hash not revision number
John Rouillard <rouilj@ieee.org>
parents: 5341
diff changeset
71 quicktest("rev 4542:46239c21a1eb") # many spaces
5341
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
72 print()
9af22cfa3a2b local_replace: improve self-test.
Bernhard Reiter <bernhard@intevation.de>
parents: 4972
diff changeset
73 print(testcount)

Roundup Issue Tracker: http://roundup-tracker.org/