wrap iterator with list() to avoid 'dictionary changed size during iteration' on py3. refs #1350.

This commit is contained in:
Takayuki Shimizukawa 2014-04-29 22:43:58 +09:00
parent ce4d342e20
commit 49944cfa52
9 changed files with 18 additions and 18 deletions

View File

@ -235,7 +235,7 @@ class CDomain(Domain):
}
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:
del self.data['objects'][fullname]
@ -250,5 +250,5 @@ class CDomain(Domain):
contnode, target)
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)

View File

@ -185,7 +185,7 @@ class JavaScriptDomain(Domain):
}
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:
del self.data['objects'][fullname]
@ -217,6 +217,6 @@ class JavaScriptDomain(Domain):
name.replace('$', '_S_'), contnode, name)
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, \
refname.replace('$', '_S_'), 1

View File

@ -620,10 +620,10 @@ class PythonDomain(Domain):
]
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:
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:
del self.data['modules'][modname]

View File

@ -119,7 +119,7 @@ class ReSTDomain(Domain):
}
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:
del self.data['objects'][typ, name]

View File

@ -509,16 +509,16 @@ class StandardDomain(Domain):
}
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:
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:
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:
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:
del self.data['anonlabels'][key]

View File

@ -137,7 +137,7 @@ class BuildEnvironment:
del self.domains
picklefile = open(filename, 'wb')
# 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 \
isinstance(val, types.ModuleType) or \
isinstance(val, types.FunctionType) or \
@ -279,11 +279,11 @@ class BuildEnvironment:
self.images.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)
if not fnset:
del self.files_to_rebuild[subfn]
for key, (fn, _) in self.citations.items():
for key, (fn, _) in list(self.citations.items()):
if fn == docname:
del self.citations[key]
for version, changes in self.versionchanges.items():

View File

@ -31,7 +31,7 @@ class ParserGenerator(object):
def make_grammar(self):
c = PgenGrammar()
names = self.dfas.keys()
names = list(self.dfas.keys())
names.sort()
names.remove(self.startsymbol)
names.insert(0, self.startsymbol)
@ -110,7 +110,7 @@ class ParserGenerator(object):
return ilabel
def addfirstsets(self):
names = self.dfas.keys()
names = list(self.dfas.keys())
names.sort()
for name in names:
if name not in self.first:

View File

@ -68,7 +68,7 @@ NT_OFFSET = 256
#--end constants--
tok_name = {}
for _name, _value in globals().items():
for _name, _value in list(globals().items()):
if type(_value) is type(0):
tok_name[_value] = _name

View File

@ -123,7 +123,7 @@ class FilenameUniqDict(dict):
return uniquename
def purge_doc(self, docname):
for filename, (docs, unique) in self.items():
for filename, (docs, unique) in list(self.items()):
docs.discard(docname)
if not docs:
del self[filename]