mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Ensure genindex output is deterministic.
See also <https://github.com/sphinx-doc/sphinx/pull/1694> Signed-off-by: Chris Lamb <chris@chris-lamb.co.uk>
This commit is contained in:
parent
018c3b6532
commit
20546b17c0
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user