Revision: 6652 Author: cosoleto Date: 2009-04-21 22:04:22 +0000 (Tue, 21 Apr 2009)
Log Message: ----------- Use iter methods where possible in 'for'. They are faster because don't have to create a new list object (see PEP 290). Converted more remaining has_key() cases, as already done in r6630.
Modified Paths: -------------- trunk/pywikipedia/copyright.py trunk/pywikipedia/family.py trunk/pywikipedia/gui.py trunk/pywikipedia/interwiki.py trunk/pywikipedia/wikipedia.py trunk/pywikipedia/wiktionary.py
Modified: trunk/pywikipedia/copyright.py =================================================================== --- trunk/pywikipedia/copyright.py 2009-04-21 18:45:28 UTC (rev 6651) +++ trunk/pywikipedia/copyright.py 2009-04-21 22:04:22 UTC (rev 6652) @@ -271,7 +271,7 @@
def skip_section(text): l = list() - for s in sections_to_skip.values(): + for s in sections_to_skip.itervalues(): l.extend(s) sect_titles = '|'.join(l)
Modified: trunk/pywikipedia/family.py =================================================================== --- trunk/pywikipedia/family.py 2009-04-21 18:45:28 UTC (rev 6651) +++ trunk/pywikipedia/family.py 2009-04-21 22:04:22 UTC (rev 6652) @@ -3087,7 +3087,7 @@ This is supposed to be called in the constructor of the family.""" self.langs[code] = location
- for num, val in namespaces.items(): + for num, val in namespaces.iteritems(): self.namespaces[num][code]=val
def get_known_families(self, site):
Modified: trunk/pywikipedia/gui.py =================================================================== --- trunk/pywikipedia/gui.py 2009-04-21 18:45:28 UTC (rev 6651) +++ trunk/pywikipedia/gui.py 2009-04-21 22:04:22 UTC (rev 6652) @@ -87,7 +87,7 @@ '<<select-all>>': ['<Control-Key-a>'], '<<undo>>': ['<Control-Key-z>', '<Control-Key-Z>'], } - for event, keylist in keydefs.items(): + for event, keylist in keydefs.iteritems(): if keylist: self.event_add(event, *keylist)
Modified: trunk/pywikipedia/interwiki.py =================================================================== --- trunk/pywikipedia/interwiki.py 2009-04-21 18:45:28 UTC (rev 6651) +++ trunk/pywikipedia/interwiki.py 2009-04-21 22:04:22 UTC (rev 6652) @@ -652,7 +652,7 @@ wikipedia.output("%s has a backlink from %s."%(page,linkingPage)) self.makeForcedStop(counter) return False - if self.foundIn.has_key(page): + if page in self.foundIn: # not new self.foundIn[page].append(linkingPage) return False @@ -670,7 +670,7 @@ Returns True if the namespaces are different and the user has selected not to follow the linked page. """ - if self.foundIn.has_key(linkedPage): + if linkedPage in self.foundIn: # We have seen this page before, don't ask again. return False elif self.originPage.namespace() != linkedPage.namespace(): @@ -985,7 +985,7 @@ new[site] = [page] # See if new{} contains any problematic values result = {} - for site, pages in new.items(): + for site, pages in new.iteritems(): if len(pages) > 1: errorCount += 1 self.problem("Found more than one link for %s" % site) @@ -1003,7 +1003,7 @@ return None
# First loop over the ones that have more solutions - for site, pages in new.items(): + for site, pages in new.iteritems(): if len(pages) > 1: wikipedia.output(u"=" * 30) wikipedia.output(u"Links to %s" % site) @@ -1032,7 +1032,7 @@ # Loop over the ones that have one solution, so are in principle # not a problem. acceptall = False - for site, pages in new.items(): + for site, pages in new.iteritems(): if len(pages) == 1: if not acceptall: wikipedia.output(u"=" * 30) @@ -1056,7 +1056,7 @@ # None acceptable break else: # errorCount <= 0, hence there are no lists longer than one. - for site, pages in new.items(): + for site, pages in new.iteritems(): result[site] = pages[0] return result
@@ -1092,7 +1092,7 @@
# Make sure new contains every page link, including the page we are processing # replaceLinks will skip the site it's working on. - if not new.has_key(self.originPage.site()): + if self.originPage.site() not in new: new[self.originPage.site()] = self.originPage
#self.replaceLinks(self.originPage, new, True, bot) @@ -1106,10 +1106,10 @@ frgnSiteDone = False for siteCode in lclSite.family.languages_by_size + [s for s in lclSite.family.langs.keys() if (not s in lclSite.family.languages_by_size and not s in lclSite.family.obsolete)]: site = wikipedia.getSite(code = siteCode) - if (not lclSiteDone and site == lclSite) or (not frgnSiteDone and site != lclSite and new.has_key(site)): + if (not lclSiteDone and site == lclSite) or (not frgnSiteDone and site != lclSite and site in new): if site == lclSite: lclSiteDone = True # even if we fail the update - if config.usernames.has_key(site.family.name) and config.usernames[site.family.name].has_key(site.lang): + if site.family.name in config.usernames and site.lang in config.usernames[site.family.name]: try: if self.replaceLinks(new[site], new, bot): updatedSites.append(site) @@ -1119,7 +1119,7 @@ notUpdatedSites.append(site) except GiveUpOnPage: break - elif not globalvar.strictlimittwo and new.has_key(site) and site != lclSite: + elif not globalvar.strictlimittwo and site in new and site != lclSite: old={} try: for page in new[site].interwiki(): @@ -1141,7 +1141,7 @@ else: for (site, page) in new.iteritems(): # if we have an account for this site - if config.usernames.has_key(site.family.name) and config.usernames[site.family.name].has_key(site.lang): + if site.family.name in config.usernames and site.lang in config.usernames[site.family.name]: # Try to do the changes try: if self.replaceLinks(page, new, bot):
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2009-04-21 18:45:28 UTC (rev 6651) +++ trunk/pywikipedia/wikipedia.py 2009-04-21 22:04:22 UTC (rev 6652) @@ -2529,7 +2529,7 @@ }
if self._deletedRevs != None and self._deletedRevsModified: - for ts in self._deletedRevs.keys(): + for ts in self._deletedRevs: if self._deletedRevs[ts][4]: formdata['ts'+ts] = '1'
@@ -3089,7 +3089,7 @@ else: output(u"WARNING: Missing namespace in family file %s: namespace['%s'][%i] (it is set to '%s')" % (self.site.family.name, lang, id, nshdr)) for id in self.site.family.namespaces: - if self.site.family.isDefinedNSLanguage(id, lang) and not header.namespaces.has_key(id): + if self.site.family.isDefinedNSLanguage(id, lang) and id not in header.namespaces: output(u"WARNING: Family file %s includes namespace['%s'][%i], but it should be removed (namespace doesn't exist in the site)" % (self.site.family.name, lang, id))
def getData(self): @@ -3236,7 +3236,7 @@ self.checktime = time.time() processes[self.pid] = self.checktime f = open(self.logfn(), 'w') - for p in processes.keys(): + for p in processes: f.write(str(p)+' '+str(processes[p])+'\n') f.close() self.process_multiplicity = count @@ -3303,7 +3303,7 @@ except (IndexError,ValueError): pass # Sometimes the file gets corrupted - ignore that line f = open(self.logfn(), 'w') - for p in processes.keys(): + for p in processes: f.write(str(p)+' '+str(processes[p])+'\n') f.close()
@@ -6969,7 +6969,7 @@ if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE) passman = urllib2.HTTPPasswordMgrWithDefaultRealm() - for site in config.authenticate.keys(): + for site in config.authenticate: passman.add_password(None, site, config.authenticate[site][0], config.authenticate[site][1]) authhandler = urllib2.HTTPBasicAuthHandler(passman) authenticateURLopener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj),authhandler)
Modified: trunk/pywikipedia/wiktionary.py =================================================================== --- trunk/pywikipedia/wiktionary.py 2009-04-21 18:45:28 UTC (rev 6651) +++ trunk/pywikipedia/wiktionary.py 2009-04-21 22:04:22 UTC (rev 6652) @@ -372,7 +372,7 @@ if header.type==u'lang': context['lang']=header.contents if header.type==u'pos': - if not(context.has_key('lang')): + if 'lang' not in context: # This entry lacks a language indicator, # so we assume it is the same language as the Wiktionary we're working on context['lang']=self.wikilang @@ -498,7 +498,7 @@ sample = plural = diminutive = label = definition = '' examples = []
- if not(self.entries.has_key(contentblock['context']['lang'])): + if contentblock['context']['lang'] not in self.entries: # If no entry for this language has been foreseen yet # let's create one anentry = Entry(contentblock['context']['lang']) @@ -525,7 +525,7 @@ # Make sure we store the last definition if definition: ameaning = Meaning(term=theterm, definition=definition, label=label, examples=examples) - if not(self.entries.has_key(contentblock['context']['lang'])): + if contentblock['context']['lang'] not in self.entries: # If no entry for this language has been foreseen yet # let's create one anentry = Entry(contentblock['context']['lang']) @@ -1016,16 +1016,16 @@ self.header = self.header.replace('{{','').replace('}}','').strip().lower()
# Now we know the content of the header, let's try to find out what it means: - if pos.has_key(self.header): + if self.header in pos: self.type=u'pos' self.contents=pos[self.header] - if langnames.has_key(self.header): + if self.header in langnames: self.type=u'lang' self.contents=self.header - if invertedlangnames.has_key(self.header): + if self.header in invertedlangnames: self.type=u'lang' self.contents=invertedlangnames[self.header] - if otherheaders.has_key(self.header): + if self.header in otherheaders: self.type=u'other' self.contents=otherheaders[self.header]