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:
|
frozen.get('envversion') != self.env.version:
|
||||||
raise ValueError('old format')
|
raise ValueError('old format')
|
||||||
index2fn = frozen['docnames']
|
index2fn = frozen['docnames']
|
||||||
|
self._filenames = dict(zip(index2fn, frozen['filenames']))
|
||||||
self._titles = dict(zip(index2fn, frozen['titles']))
|
self._titles = dict(zip(index2fn, frozen['titles']))
|
||||||
|
|
||||||
def load_terms(mapping):
|
def load_terms(mapping):
|
||||||
@ -361,10 +362,13 @@ class IndexBuilder(object):
|
|||||||
def prune(self, docnames):
|
def prune(self, docnames):
|
||||||
"""Remove data for all docnames not in the list."""
|
"""Remove data for all docnames not in the list."""
|
||||||
new_titles = {}
|
new_titles = {}
|
||||||
|
new_filenames = {}
|
||||||
for docname in docnames:
|
for docname in docnames:
|
||||||
if docname in self._titles:
|
if docname in self._titles:
|
||||||
new_titles[docname] = self._titles[docname]
|
new_titles[docname] = self._titles[docname]
|
||||||
|
new_filenames[docname] = self._filenames[docname]
|
||||||
self._titles = new_titles
|
self._titles = new_titles
|
||||||
|
self._filenames = new_filenames
|
||||||
for wordnames in itervalues(self._mapping):
|
for wordnames in itervalues(self._mapping):
|
||||||
wordnames.intersection_update(docnames)
|
wordnames.intersection_update(docnames)
|
||||||
for wordnames in itervalues(self._title_mapping):
|
for wordnames in itervalues(self._title_mapping):
|
||||||
|
@ -184,16 +184,21 @@ def test_IndexBuilder():
|
|||||||
index2.load(stream, 'pickle')
|
index2.load(stream, 'pickle')
|
||||||
|
|
||||||
assert index2._titles == index._titles
|
assert index2._titles == index._titles
|
||||||
assert index2._filenames == {}
|
assert index2._filenames == index._filenames
|
||||||
assert index2._mapping == index._mapping
|
assert index2._mapping == index._mapping
|
||||||
assert index2._title_mapping == index._title_mapping
|
assert index2._title_mapping == index._title_mapping
|
||||||
assert index2._objtypes == {}
|
assert index2._objtypes == {}
|
||||||
assert index2._objnames == {}
|
assert index2._objnames == {}
|
||||||
|
|
||||||
|
# freeze after load
|
||||||
|
assert index2.freeze() == index.freeze()
|
||||||
|
assert index2._objtypes == index._objtypes
|
||||||
|
assert index2._objnames == index._objnames
|
||||||
|
|
||||||
# prune
|
# prune
|
||||||
index.prune(['docname2'])
|
index.prune(['docname2'])
|
||||||
assert index._titles == {'docname2': 'title2'}
|
assert index._titles == {'docname2': 'title2'}
|
||||||
assert index._filenames == {'docname': 'filename', 'docname2': 'filename2'}
|
assert index._filenames == {'docname2': 'filename2'}
|
||||||
assert index._mapping == {
|
assert index._mapping == {
|
||||||
'fermion': {'docname2'},
|
'fermion': {'docname2'},
|
||||||
'comment': {'docname2'},
|
'comment': {'docname2'},
|
||||||
@ -204,3 +209,22 @@ def test_IndexBuilder():
|
|||||||
assert index._title_mapping == {'section_titl': {'docname2'}}
|
assert index._title_mapping == {'section_titl': {'docname2'}}
|
||||||
assert index._objtypes == {('dummy', 'objtype'): 0}
|
assert index._objtypes == {('dummy', 'objtype'): 0}
|
||||||
assert index._objnames == {0: ('dummy', 'objtype', 'objtype')}
|
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