mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix IndexBuilder.prune() and load() supports _filenames field
This commit is contained in:
parent
8c3ceec294
commit
19d2d56e36
@ -271,6 +271,7 @@ class IndexBuilder(object):
|
||||
frozen.get('envversion') != self.env.version:
|
||||
raise ValueError('old format')
|
||||
index2fn = frozen['docnames']
|
||||
self._filenames = dict(zip(index2fn, frozen['filenames']))
|
||||
self._titles = dict(zip(index2fn, frozen['titles']))
|
||||
|
||||
def load_terms(mapping):
|
||||
@ -361,10 +362,13 @@ class IndexBuilder(object):
|
||||
def prune(self, docnames):
|
||||
"""Remove data for all docnames not in the list."""
|
||||
new_titles = {}
|
||||
new_filenames = {}
|
||||
for docname in docnames:
|
||||
if docname in self._titles:
|
||||
new_titles[docname] = self._titles[docname]
|
||||
new_filenames[docname] = self._filenames[docname]
|
||||
self._titles = new_titles
|
||||
self._filenames = new_filenames
|
||||
for wordnames in itervalues(self._mapping):
|
||||
wordnames.intersection_update(docnames)
|
||||
for wordnames in itervalues(self._title_mapping):
|
||||
|
@ -184,16 +184,21 @@ def test_IndexBuilder():
|
||||
index2.load(stream, 'pickle')
|
||||
|
||||
assert index2._titles == index._titles
|
||||
assert index2._filenames == {}
|
||||
assert index2._filenames == index._filenames
|
||||
assert index2._mapping == index._mapping
|
||||
assert index2._title_mapping == index._title_mapping
|
||||
assert index2._objtypes == {}
|
||||
assert index2._objnames == {}
|
||||
|
||||
# freeze after load
|
||||
assert index2.freeze() == index.freeze()
|
||||
assert index2._objtypes == index._objtypes
|
||||
assert index2._objnames == index._objnames
|
||||
|
||||
# prune
|
||||
index.prune(['docname2'])
|
||||
assert index._titles == {'docname2': 'title2'}
|
||||
assert index._filenames == {'docname': 'filename', 'docname2': 'filename2'}
|
||||
assert index._filenames == {'docname2': 'filename2'}
|
||||
assert index._mapping == {
|
||||
'fermion': {'docname2'},
|
||||
'comment': {'docname2'},
|
||||
@ -204,3 +209,22 @@ def test_IndexBuilder():
|
||||
assert index._title_mapping == {'section_titl': {'docname2'}}
|
||||
assert index._objtypes == {('dummy', 'objtype'): 0}
|
||||
assert index._objnames == {0: ('dummy', 'objtype', 'objtype')}
|
||||
|
||||
# freeze after prune
|
||||
assert index.freeze() == {
|
||||
'docnames': ('docname2',),
|
||||
'envversion': '1.0',
|
||||
'filenames': ['filename2'],
|
||||
'objects': {},
|
||||
'objnames': {0: ('dummy', 'objtype', 'objtype')},
|
||||
'objtypes': {0: 'dummy:objtype'},
|
||||
'terms': {'comment': 0,
|
||||
'fermion': 0,
|
||||
'index': 0,
|
||||
'non': 0,
|
||||
'test': 0},
|
||||
'titles': ('title2',),
|
||||
'titleterms': {'section_titl': 0}
|
||||
}
|
||||
assert index._objtypes == {('dummy', 'objtype'): 0}
|
||||
assert index._objnames == {0: ('dummy', 'objtype', 'objtype')}
|
||||
|
Loading…
Reference in New Issue
Block a user