Merge pull request #1699 from lamby/deterministic-genindex

Ensure genindex output is deterministic.
This commit is contained in:
Georg Brandl committed 2015-02-02 07:50:42 +01:00
commit bd5ac0eacc
1 file changed
+7 -3
+7 -3
View File
@@ -14,6 +14,7 @@ import os
import sys
import time
import types
import bisect
import codecs
import imghdr
import string
@@ -1800,7 +1801,8 @@ class BuildEnvironment:
except NoUri:
pass
else:
entry[0].append((main, uri))
# maintain links in sorted/deterministic order
bisect.insort(entry[0], (main, uri))
for fn, entries in iteritems(self.indexentries):
# new entry types must be listed in directives/other.py!
@@ -1838,8 +1840,10 @@ class BuildEnvironment:
def keyfunc(entry, lcletters=string.ascii_lowercase + '_'):
lckey = unicodedata.normalize('NFD', entry[0].lower())
if lckey[0:1] in lcletters:
return chr(127) + lckey
return lckey
lckey = chr(127) + lckey
# ensure a determinstic order *within* letters by also sorting on
# the entry itself
return (lckey, entry[0])
newlist = sorted(new.items(), key=keyfunc)
if group_entries: