Revision: 6719
Author: nicdumz
Date: 2009-04-25 15:47:36 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Fixing NameError from r6711
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-04-25 15:11:30 UTC (rev 6718)
+++ trunk/pywikipedia/interwiki.py 2009-04-25 15:47:36 UTC (rev 6719)
@@ -1323,6 +1323,7 @@
if globalvar.autonomous and not globalvar.force and len(removing) > 0:
for rmsite in removing:
if rmsite != page.site(): # Sometimes sites have an erroneous link to itself as an interwiki
+ rmPage = old[rmsite]
##########
# temporary hard-coded special case to get rid of thousands of broken links to the Lombard Wikipedia,
# where useless bot-created articles were mass-deleted. See for example:
Revision: 6718
Author: nicdumz
Date: 2009-04-25 15:11:30 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Using sets instead of lists to do a set union and then a set difference
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-04-25 15:00:56 UTC (rev 6717)
+++ trunk/pywikipedia/interwiki.py 2009-04-25 15:11:30 UTC (rev 6718)
@@ -1186,7 +1186,15 @@
lclSite = self.originPage.site()
lclSiteDone = False
frgnSiteDone = False
- for siteCode in lclSite.family.languages_by_size + [s for s in lclSite.family.langs if (not s in lclSite.family.languages_by_size and not s in lclSite.family.obsolete)]:
+
+ # XXX Do we really need to make an union here?
+ # we should have sorted(languages_by_size) = sorted(langs) ?!
+ langBySize = set(lclSite.family.languages_by_size)
+ allLangs = set(lcl.family.langs)
+
+ langToCheck = (langBySize + allLangs).difference(lclSite.family.obsolete)
+
+ for siteCode in langToCheck:
site = wikipedia.getSite(code = siteCode)
if (not lclSiteDone and site == lclSite) or (not frgnSiteDone and site != lclSite and site in new):
if site == lclSite:
Revision: 6717
Author: nicdumz
Date: 2009-04-25 15:00:56 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
updatedSites is a list. It needs to be converted explicitely to a set
before using set differences
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-04-25 14:55:09 UTC (rev 6716)
+++ trunk/pywikipedia/interwiki.py 2009-04-25 15:00:56 UTC (rev 6717)
@@ -1426,7 +1426,7 @@
expectedPages = set(new.itervalues())
expectedSites = set(new)
try:
- for site in expectedSites - updatedSites:
+ for site in expectedSites - set(updatedSites):
page = new[site]
if not page.section():
try:
Revision: 6715
Author: nicdumz
Date: 2009-04-25 14:51:44 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Using set difference instead of a for + inner test on each element
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-04-25 14:43:14 UTC (rev 6714)
+++ trunk/pywikipedia/interwiki.py 2009-04-25 14:51:44 UTC (rev 6715)
@@ -1426,8 +1426,9 @@
expectedPages = set(new.itervalues())
expectedSites = set(new)
try:
- for site, page in new.iteritems():
- if site not in updatedSites and not page.section():
+ for site in expectedSites - updatedSites:
+ page = new[site]
+ if not page.section():
try:
linkedPages = set(page.interwiki())
except wikipedia.NoPage:
@@ -1438,8 +1439,8 @@
linkedPagesDict = {}
for linkedPage in linkedPages:
linkedPagesDict[linkedPage.site()] = linkedPage
- for expectedPage in expectedPages:
- if expectedPage != page and expectedPage not in linkedPages:
+ for expectedPage in expectedPages - linkedPages:
+ if expectedPage != page:
try:
linkedPage = linkedPagesDict[expectedPage.site()]
wikipedia.output(u"WARNING: %s: %s does not link to %s but to %s" % (page.site().family.name, page.aslink(True), expectedPage.aslink(True), linkedPage.aslink(True)))
Revision: 6714
Author: nicdumz
Date: 2009-04-25 14:43:14 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
new already is a Site->Page dict. No need to iterate on its values to
get the Page's sites...
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-04-25 14:34:52 UTC (rev 6713)
+++ trunk/pywikipedia/interwiki.py 2009-04-25 14:43:14 UTC (rev 6714)
@@ -1423,8 +1423,8 @@
"""
# use sets because searching an element is faster than in lists
- expectedPages = set(new.values())
- expectedSites = set([page.site() for page in expectedPages])
+ expectedPages = set(new.itervalues())
+ expectedSites = set(new)
try:
for site, page in new.iteritems():
if site not in updatedSites and not page.section():
Revision: 6711
Author: nicdumz
Date: 2009-04-25 11:42:04 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
* Translating message only once and store the 3 different messages
instead of translating 3 times the message.
* Correcting usage of return values of compareLang since 'removing'
is now a Site dictionary, and not a Page dictionary.
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-04-25 11:30:32 UTC (rev 6710)
+++ trunk/pywikipedia/interwiki.py 2009-04-25 11:42:04 UTC (rev 6711)
@@ -1313,17 +1313,17 @@
# When running in autonomous mode without -force switch, make sure we don't remove any items, but allow addition of the new ones
if globalvar.autonomous and not globalvar.force and len(removing) > 0:
- for rmPage in removing:
- if rmPage.site() != page.site(): # Sometimes sites have an erroneous link to itself as an interwiki
+ for rmsite in removing:
+ if rmsite != page.site(): # Sometimes sites have an erroneous link to itself as an interwiki
##########
# temporary hard-coded special case to get rid of thousands of broken links to the Lombard Wikipedia,
# where useless bot-created articles were mass-deleted. See for example:
# http://meta.wikimedia.org/wiki/Proposals_for_closing_projects/Closure_of_Lo…
- if rmPage.site() == wikipedia.getSite('lmo', 'wikipedia'):
+ if rmsite == wikipedia.getSite('lmo', 'wikipedia'):
wikipedia.output('Found bad link to %s. As many lmo pages were deleted, it is assumed that it can be safely removed.' % rmPage.aslink())
else:
##########
- new[rmPage.site()] = old[rmPage.site()]
+ new[rmsite] = old[rmsite]
wikipedia.output(u"WARNING: %s is either deleted or has a mismatching disambiguation state." % rmPage.aslink(True))
# Re-Check what needs to get done
mods, adding, removing, modifying = compareLanguages(old, new, insite = page.site())
@@ -1341,8 +1341,8 @@
# wikipedia.output(u"NOTE: Replace %s" % page.aslink())
# Determine whether we need permission to submit
ask = False
- if removing and removing != [page]: # Allow for special case of a self-pointing interwiki link
- self.problem('Found incorrect link to %s in %s'% (",".join([x.site().lang for x in removing]), page.aslink(True)), createneed = False)
+ if removing and removing != [page.site()]: # Allow for special case of a self-pointing interwiki link
+ self.problem('Found incorrect link to %s in %s'% (",".join([x.lang for x in removing]), page.aslink(True)), createneed = False)
ask = True
if globalvar.force:
ask = False
@@ -1409,7 +1409,7 @@
elif answer == 'g':
raise GiveUpOnPage
else:
- raise LinkMustBeRemoved('Found incorrect link to %s in %s'% (",".join([x.site().lang for x in removing]), page.aslink(True)))
+ raise LinkMustBeRemoved('Found incorrect link to %s in %s'% (",".join([x.lang for x in removing]), page.aslink(True)))
return False
def reportBacklinks(self, new, updatedSites):
@@ -1682,12 +1682,14 @@
# Use short format, just the language code
fmt = lambda d, site: site.lang
+ _, add, rem, mod = wikipedia.translate(insite.lang, msg)
+
if adding:
- mods += " %s: %s" % (wikipedia.translate(insite.lang, msg)[1], ", ".join([fmt(new, x) for x in adding]))
+ mods += " %s: %s" % (add, ", ".join([fmt(new, x) for x in adding]))
if removing:
- mods += " %s: %s" % (wikipedia.translate(insite.lang, msg)[2], ", ".join([fmt(old, x) for x in removing]))
+ mods += " %s: %s" % (rem, ", ".join([fmt(old, x) for x in removing]))
if modifying:
- mods += " %s: %s" % (wikipedia.translate(insite.lang, msg)[3], ", ".join([fmt(new, x) for x in modifying]))
+ mods += " %s: %s" % (mod, ", ".join([fmt(new, x) for x in modifying]))
return mods, adding, removing, modifying
def readWarnfile(filename, bot):