mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
wrap iterator with list() to avoid 'dictionary changed size during iteration' on py3. refs #1350.
This commit is contained in:
parent
ce4d342e20
commit
49944cfa52
@ -235,7 +235,7 @@ class CDomain(Domain):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def clear_doc(self, docname):
|
def clear_doc(self, docname):
|
||||||
for fullname, (fn, _) in self.data['objects'].items():
|
for fullname, (fn, _) in list(self.data['objects'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['objects'][fullname]
|
del self.data['objects'][fullname]
|
||||||
|
|
||||||
@ -250,5 +250,5 @@ class CDomain(Domain):
|
|||||||
contnode, target)
|
contnode, target)
|
||||||
|
|
||||||
def get_objects(self):
|
def get_objects(self):
|
||||||
for refname, (docname, type) in iteritems(self.data['objects']):
|
for refname, (docname, type) in list(self.data['objects'].items()):
|
||||||
yield (refname, refname, type, docname, 'c.' + refname, 1)
|
yield (refname, refname, type, docname, 'c.' + refname, 1)
|
||||||
|
@ -185,7 +185,7 @@ class JavaScriptDomain(Domain):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def clear_doc(self, docname):
|
def clear_doc(self, docname):
|
||||||
for fullname, (fn, _) in self.data['objects'].items():
|
for fullname, (fn, _) in list(self.data['objects'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['objects'][fullname]
|
del self.data['objects'][fullname]
|
||||||
|
|
||||||
@ -217,6 +217,6 @@ class JavaScriptDomain(Domain):
|
|||||||
name.replace('$', '_S_'), contnode, name)
|
name.replace('$', '_S_'), contnode, name)
|
||||||
|
|
||||||
def get_objects(self):
|
def get_objects(self):
|
||||||
for refname, (docname, type) in iteritems(self.data['objects']):
|
for refname, (docname, type) in list(self.data['objects'].items()):
|
||||||
yield refname, refname, type, docname, \
|
yield refname, refname, type, docname, \
|
||||||
refname.replace('$', '_S_'), 1
|
refname.replace('$', '_S_'), 1
|
||||||
|
@ -620,10 +620,10 @@ class PythonDomain(Domain):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def clear_doc(self, docname):
|
def clear_doc(self, docname):
|
||||||
for fullname, (fn, _) in self.data['objects'].items():
|
for fullname, (fn, _) in list(self.data['objects'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['objects'][fullname]
|
del self.data['objects'][fullname]
|
||||||
for modname, (fn, _, _, _) in self.data['modules'].items():
|
for modname, (fn, _, _, _) in list(self.data['modules'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['modules'][modname]
|
del self.data['modules'][modname]
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ class ReSTDomain(Domain):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def clear_doc(self, docname):
|
def clear_doc(self, docname):
|
||||||
for (typ, name), doc in self.data['objects'].items():
|
for (typ, name), doc in list(self.data['objects'].items()):
|
||||||
if doc == docname:
|
if doc == docname:
|
||||||
del self.data['objects'][typ, name]
|
del self.data['objects'][typ, name]
|
||||||
|
|
||||||
|
@ -509,16 +509,16 @@ class StandardDomain(Domain):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def clear_doc(self, docname):
|
def clear_doc(self, docname):
|
||||||
for key, (fn, _) in self.data['progoptions'].items():
|
for key, (fn, _) in list(self.data['progoptions'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['progoptions'][key]
|
del self.data['progoptions'][key]
|
||||||
for key, (fn, _) in self.data['objects'].items():
|
for key, (fn, _) in list(self.data['objects'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['objects'][key]
|
del self.data['objects'][key]
|
||||||
for key, (fn, _, _) in self.data['labels'].items():
|
for key, (fn, _, _) in list(self.data['labels'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['labels'][key]
|
del self.data['labels'][key]
|
||||||
for key, (fn, _) in self.data['anonlabels'].items():
|
for key, (fn, _) in list(self.data['anonlabels'].items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.data['anonlabels'][key]
|
del self.data['anonlabels'][key]
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ class BuildEnvironment:
|
|||||||
del self.domains
|
del self.domains
|
||||||
picklefile = open(filename, 'wb')
|
picklefile = open(filename, 'wb')
|
||||||
# remove potentially pickling-problematic values from config
|
# remove potentially pickling-problematic values from config
|
||||||
for key, val in vars(self.config).items():
|
for key, val in list(vars(self.config).items()):
|
||||||
if key.startswith('_') or \
|
if key.startswith('_') or \
|
||||||
isinstance(val, types.ModuleType) or \
|
isinstance(val, types.ModuleType) or \
|
||||||
isinstance(val, types.FunctionType) or \
|
isinstance(val, types.FunctionType) or \
|
||||||
@ -279,11 +279,11 @@ class BuildEnvironment:
|
|||||||
self.images.purge_doc(docname)
|
self.images.purge_doc(docname)
|
||||||
self.dlfiles.purge_doc(docname)
|
self.dlfiles.purge_doc(docname)
|
||||||
|
|
||||||
for subfn, fnset in self.files_to_rebuild.items():
|
for subfn, fnset in list(self.files_to_rebuild.items()):
|
||||||
fnset.discard(docname)
|
fnset.discard(docname)
|
||||||
if not fnset:
|
if not fnset:
|
||||||
del self.files_to_rebuild[subfn]
|
del self.files_to_rebuild[subfn]
|
||||||
for key, (fn, _) in self.citations.items():
|
for key, (fn, _) in list(self.citations.items()):
|
||||||
if fn == docname:
|
if fn == docname:
|
||||||
del self.citations[key]
|
del self.citations[key]
|
||||||
for version, changes in self.versionchanges.items():
|
for version, changes in self.versionchanges.items():
|
||||||
|
@ -31,7 +31,7 @@ class ParserGenerator(object):
|
|||||||
|
|
||||||
def make_grammar(self):
|
def make_grammar(self):
|
||||||
c = PgenGrammar()
|
c = PgenGrammar()
|
||||||
names = self.dfas.keys()
|
names = list(self.dfas.keys())
|
||||||
names.sort()
|
names.sort()
|
||||||
names.remove(self.startsymbol)
|
names.remove(self.startsymbol)
|
||||||
names.insert(0, self.startsymbol)
|
names.insert(0, self.startsymbol)
|
||||||
@ -110,7 +110,7 @@ class ParserGenerator(object):
|
|||||||
return ilabel
|
return ilabel
|
||||||
|
|
||||||
def addfirstsets(self):
|
def addfirstsets(self):
|
||||||
names = self.dfas.keys()
|
names = list(self.dfas.keys())
|
||||||
names.sort()
|
names.sort()
|
||||||
for name in names:
|
for name in names:
|
||||||
if name not in self.first:
|
if name not in self.first:
|
||||||
|
@ -68,7 +68,7 @@ NT_OFFSET = 256
|
|||||||
#--end constants--
|
#--end constants--
|
||||||
|
|
||||||
tok_name = {}
|
tok_name = {}
|
||||||
for _name, _value in globals().items():
|
for _name, _value in list(globals().items()):
|
||||||
if type(_value) is type(0):
|
if type(_value) is type(0):
|
||||||
tok_name[_value] = _name
|
tok_name[_value] = _name
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ class FilenameUniqDict(dict):
|
|||||||
return uniquename
|
return uniquename
|
||||||
|
|
||||||
def purge_doc(self, docname):
|
def purge_doc(self, docname):
|
||||||
for filename, (docs, unique) in self.items():
|
for filename, (docs, unique) in list(self.items()):
|
||||||
docs.discard(docname)
|
docs.discard(docname)
|
||||||
if not docs:
|
if not docs:
|
||||||
del self[filename]
|
del self[filename]
|
||||||
|
Loading…
Reference in New Issue
Block a user