[Pywikipedia-l] SVN: [5452] branches/rewrite/pywikibot

russblau at svn.wikimedia.org russblau at svn.wikimedia.org
Wed May 28 12:28:34 UTC 2008


Revision: 5452
Author:   russblau
Date:     2008-05-28 12:28:34 +0000 (Wed, 28 May 2008)

Log Message:
-----------
make Site.family a property instead of a method

Modified Paths:
--------------
    branches/rewrite/pywikibot/login.py
    branches/rewrite/pywikibot/page.py
    branches/rewrite/pywikibot/site.py
    branches/rewrite/pywikibot/tests/site_tests.py

Modified: branches/rewrite/pywikibot/login.py
===================================================================
--- branches/rewrite/pywikibot/login.py	2008-05-28 11:29:11 UTC (rev 5451)
+++ branches/rewrite/pywikibot/login.py	2008-05-28 12:28:34 UTC (rev 5452)
@@ -71,22 +71,25 @@
         self.site = site or pywikibot.Site()
         if sysop:
             try:
-                self.username = config.sysopnames[self.site.family().name][self.site.language()]
+                self.username = config.sysopnames\
+                                [self.site.family.name][self.site.language()]
             except:
-                raise NoUsername(u'ERROR: Sysop username for %s:%s is undefined.\nIf you have a sysop account for that site, please add such a line to user-config.py:\n\nsysopnames[\'%s\'][\'%s\'] = \'myUsername\'' % (self.site.family().name, self.site.language(), self.site.family().name, self.site.language()))
+                raise NoUsername(
+u'ERROR: Sysop username for %s:%s is undefined.\nIf you have a sysop account for that site, please add such a line to user-config.py:\n\nsysopnames[\'%s\'][\'%s\'] = \'myUsername\''
+                      % (self.site.family.name, self.site.language(),
+                         self.site.family.name, self.site.language()))
         else:
             try:
-                self.username = config.usernames[self.site.family().name][self.site.language()]
+                self.username = config.usernames\
+                                [self.site.family.name][self.site.language()]
             except:
                 raise NoUsername(
 u"""ERROR: Username for %s:%s is undefined.
 If you have an account for that site, please add a line to user-config.py:
 
 usernames['%s']['%s'] = 'myUsername'"""
-                        % (self.site.family().name,
-                           self.site.language(),
-                           self.site.family().name,
-                           self.site.language()))
+                        % (self.site.family.name, self.site.language(),
+                           self.site.family.name, self.site.language()))
         self.password = password
         if getattr(config, 'password_file', ''):
             self.readPassword()
@@ -185,7 +188,7 @@
 
         """
         filename = config.datafilepath('%s-%s-%s-login.data'
-                                       % (self.site.family().name,
+                                       % (self.site.family.name,
                                           self.site.language(),
                                           self.username))
         f = open(filename, 'w')

Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py	2008-05-28 11:29:11 UTC (rev 5451)
+++ branches/rewrite/pywikibot/page.py	2008-05-28 12:28:34 UTC (rev 5452)
@@ -154,9 +154,9 @@
         if asLink:
             if forceInterwiki or (
                     allowInterwiki and self.site() != pywikibot.Site()):
-                if self.site().family() != pywikibot.Site().family() \
-                        and self.site().family().name != self.site().language():
-                    return u'[[%s:%s:%s]]' % (self.site().family().name,
+                if self.site().family != pywikibot.Site().family \
+                        and self.site().family.name != self.site().language():
+                    return u'[[%s:%s:%s]]' % (self.site().family.name,
                                               self.site().language(),
                                               self._title)
                 else:
@@ -1373,7 +1373,7 @@
                 t = t.lstrip(u":").lstrip(u" ")
                 continue
 
-            fam = self.site.family()
+            fam = self.site.family
             prefix = t[ :t.index(u":")].lower()
             ns = self.site.getNamespaceIndex(prefix)
             if ns:

Modified: branches/rewrite/pywikibot/site.py
===================================================================
--- branches/rewrite/pywikibot/site.py	2008-05-28 11:29:11 UTC (rev 5451)
+++ branches/rewrite/pywikibot/site.py	2008-05-28 12:28:34 UTC (rev 5452)
@@ -76,18 +76,18 @@
         """
         self._lang = code.lower()
         if isinstance(fam, basestring) or fam is None:
-            self._family = Family(fam, fatal=False)
+            self.__family = Family(fam, fatal=False)
         else:
-            self._family = fam
+            self.__family = fam
 
         # if we got an outdated language code, use the new one instead.
-        if self._family.obsolete.has_key(self._lang):
-            if self._family.obsolete[self._lang] is not None:
-                self._lang = self._family.obsolete[self._lang]
+        if self.__family.obsolete.has_key(self._lang):
+            if self.__family.obsolete[self._lang] is not None:
+                self._lang = self.__family.obsolete[self._lang]
             else:
                 # no such language anymore
                 raise NoSuchSite("Language %s in family %s is obsolete"
-                                 % (self._lang, self._family.name))
+                                 % (self._lang, self.__family.name))
         if self._lang not in self.languages():
             if self._lang == 'zh-classic' and 'zh-classical' in self.languages():
                 self._lang = 'zh-classical'
@@ -95,7 +95,7 @@
                 # is cut to zh-classic.
             else:
                 raise NoSuchSite("Language %s does not exist in family %s"
-                                 % (self._lang, self._family.name))
+                                 % (self._lang, self.__family.name))
 
         self._username = user
 
@@ -115,9 +115,10 @@
                 pass
         return self._throttle
 
+    @property
     def family(self):
         """Return the associated Family object."""
-        return self._family
+        return self.__family
 
     def language(self):
         """Return the site's language code."""
@@ -137,7 +138,7 @@
         if hasattr(self.__class__, attr):
             return self.__class__.attr
         try:
-            method = getattr(self.family(), attr)
+            method = getattr(self.family, attr)
             f = lambda *args, **kwargs: \
                        method(self.language(), *args, **kwargs)
             if hasattr(method, "__doc__"):
@@ -149,23 +150,23 @@
 
     def sitename(self):
         """Return string representing this Site's name and language."""
-        return self.family().name+':'+self.language()
+        return self.family.name+':'+self.language()
 
     __str__ = sitename
 
     def __repr__(self):
-        return 'Site("%s", "%s")' % (self.language(), self.family().name)
+        return 'Site("%s", "%s")' % (self.language(), self.family.name)
 
     def __hash__(self):
         return hash(repr(self))
 
     def linktrail(self):
         """Return regex for trailing chars displayed as part of a link."""
-        return self.family().linktrail(self.language())
+        return self.family.linktrail(self.language())
 
     def languages(self):
         """Return list of all valid language codes for this site's Family."""
-        return self.family().langs.keys()
+        return self.family.langs.keys()
 
     def ns_index(self, namespace):
         """Given a namespace name, return its int index, or None if invalid."""
@@ -204,11 +205,11 @@
             if self.language() == 'ar':
                 # It won't work with REDIRECT[[]] but it work with the local,
                 # if problems, try to find a work around. FixMe!
-                return self.family().redirect.get(self.language(), [u"تحويل"])[0]
+                return self.family.redirect.get(self.language(), [u"تحويل"])[0]
             else:
-                return self.family().redirect.get(self.language(), [u"REDIRECT"])[0]
+                return self.family.redirect.get(self.language(), [u"REDIRECT"])[0]
         else:
-            return self.family().redirect.get(self.language(), None)
+            return self.family.redirect.get(self.language(), None)
 
     def lock_page(self, page, block=True):
         """Lock page for writing.  Must be called before writing any page.
@@ -349,7 +350,7 @@
 
 # ANYTHING BELOW THIS POINT IS NOT YET IMPLEMENTED IN __init__()
         self._mediawiki_messages = {}
-        self.nocapitalize = self._lang in self.family().nocapitalize
+        self.nocapitalize = self._lang in self.family.nocapitalize
         self._userData = [False, False]
         self._userName = [None, None]
         self._isLoggedIn = [None, None]
@@ -1650,21 +1651,21 @@
         try:
             if sysop:
                 try:
-                    username = config.sysopnames[self.family().name][self.language()]
+                    username = config.sysopnames[self.family.name][self.language()]
                 except KeyError:
                     raise NoUsername("""\
 You tried to perform an action that requires admin privileges, but you haven't
 entered your sysop name in your user-config.py. Please add
 sysopnames['%s']['%s']='name' to your user-config.py"""
-                                     % (self.family().name, self.language()))
+                                     % (self.family.name, self.language()))
             else:
-                username = config.usernames[self.family().name][self.language()]
+                username = config.usernames[self.family.name][self.language()]
         except KeyError:
             self._cookies[index] = None
             self._isLoggedIn[index] = False
         else:
             tmp = '%s-%s-%s-login.data' % (
-                    self.family().name, self.language(), username)
+                    self.family.name, self.language(), username)
             fn = config.datafilepath('login-data', tmp)
             if not os.path.exists(fn):
                 self._cookies[index] = None
@@ -2510,10 +2511,10 @@
         # interwiki codes are case-insensitive
         first = first.lower().strip()
         # commons: forwards interlanguage links to wikipedia:, etc.
-        if self.family().interwiki_forward:
-            interlangTargetFamily = Family(self.family().interwiki_forward)
+        if self.family.interwiki_forward:
+            interlangTargetFamily = Family(self.family.interwiki_forward)
         else:
-            interlangTargetFamily = self.family()
+            interlangTargetFamily = self.family
         if self.ns_index(first):
             return False
         if first in interlangTargetFamily.langs:
@@ -2521,8 +2522,8 @@
                 return self.isInterwikiLink(rest)
             else:
                 return True
-        if first in self.family().get_known_families(site = self):
-            if first == self.family().name:
+        if first in self.family.get_known_families(site = self):
+            if first == self.family.name:
                 return self.isInterwikiLink(rest)
             else:
                 return True
@@ -2540,10 +2541,10 @@
             red = u"تحويل"
         try:
             if redDefault == red:
-                redirKeywords = [red] + self.family().redirect[self.language()]
+                redirKeywords = [red] + self.family.redirect[self.language()]
                 redirKeywordsR = r'(?:' + '|'.join(redirKeywords) + ')'
             else:
-                redirKeywords = [red] + self.family().redirect[self.language()]
+                redirKeywords = [red] + self.family.redirect[self.language()]
                 redirKeywordsR = r'(?:' + redDefault + '|'.join(redirKeywords) + ')'
         except KeyError:
             # no localized keyword for redirects
@@ -2560,7 +2561,7 @@
 
     def version(self):
         """Return MediaWiki version number as a string."""
-        return self.family().version(self.language())
+        return self.family.version(self.language())
 
     def versionnumber(self):
         """Return an int identifying MediaWiki version.
@@ -2569,7 +2570,7 @@
         number; i.e., 'X' in version '1.X.Y'
 
         """
-        return self.family().versionnumber(self.language())
+        return self.family.versionnumber(self.language())
 
     def live_version(self):
         """Return the 'real' version number found on [[Special:Version]]
@@ -2589,7 +2590,7 @@
                 self._mw_version = (int(m.group(1)), int(m.group(2)),
                                         m.group(3))
             else:
-                self._mw_version = self.family().version(self.language()).split(".")
+                self._mw_version = self.family.version(self.language()).split(".")
         return self._mw_version
 
     def checkCharset(self, charset):
@@ -2606,34 +2607,34 @@
 
     def shared_image_repository(self):
         """Return a tuple of image repositories used by this site."""
-        return self.family().shared_image_repository(self.language())
+        return self.family.shared_image_repository(self.language())
 
     def __cmp__(self, other):
         """Perform equality and inequality tests on Site objects."""
         if not isinstance(other, Site):
             return 1
-        if self.family() == other.family:
-            return cmp(self.language() ,other.lang)
-        return cmp(self.family().name, other.family.name)
+        if self.family == other.family:
+            return cmp(self.language(), other.lang)
+        return cmp(self.family.name, other.family.name)
 
     def category_on_one_line(self):
         """Return True if this site wants all category links on one line."""
-        return self.language() in self.family().category_on_one_line
+        return self.language() in self.family.category_on_one_line
 
     def interwiki_putfirst(self):
         """Return list of language codes for ordering of interwiki links."""
-        return self.family().interwiki_putfirst.get(self.language(), None)
+        return self.family.interwiki_putfirst.get(self.language(), None)
 
     def interwiki_putfirst_doubled(self, list_of_links):
         # TODO: is this even needed?  No family in the framework has this
         # dictionary defined!
-        if self.family().interwiki_putfirst_doubled.has_key(self.language()):
-            if len(list_of_links) >= self.family().interwiki_putfirst_doubled[self.language()][0]:
+        if self.family.interwiki_putfirst_doubled.has_key(self.language()):
+            if len(list_of_links) >= self.family.interwiki_putfirst_doubled[self.language()][0]:
                 list_of_links2 = []
                 for lang in list_of_links:
                     list_of_links2.append(lang.language())
                 list = []
-                for lang in self.family().interwiki_putfirst_doubled[self.language()][1]:
+                for lang in self.family.interwiki_putfirst_doubled[self.language()][1]:
                     try:
                         list.append(list_of_links[list_of_links2.index(lang)])
                     except ValueError:
@@ -2646,7 +2647,7 @@
 
     def getSite(self, code):
         """Return Site object for language 'code' in this Family."""
-        return getSite(code = code, fam = self.family(), user=self.user)
+        return getSite(code = code, fam = self.family, user=self.user)
 
     def validLanguageLinks(self):
         """Return list of language codes that can be used in interwiki links."""
@@ -2657,7 +2658,7 @@
         import catlib
         try:
             return catlib.Category(self,
-                    self.namespace(14)+':'+self.family().disambcatname[self.language()])
+                    self.namespace(14)+':'+self.family.disambcatname[self.language()])
         except KeyError:
             raise NoPage(u'No page %s.' % page)
 

Modified: branches/rewrite/pywikibot/tests/site_tests.py
===================================================================
--- branches/rewrite/pywikibot/tests/site_tests.py	2008-05-28 11:29:11 UTC (rev 5451)
+++ branches/rewrite/pywikibot/tests/site_tests.py	2008-05-28 12:28:34 UTC (rev 5452)
@@ -20,7 +20,7 @@
     """Test cases for Site methods."""
     def testBaseMethods(self):
         """Test cases for BaseSite methods"""
-        self.assertEqual(mysite.family(), pywikibot.site.Family("wikipedia"))
+        self.assertEqual(mysite.family, pywikibot.site.Family("wikipedia"))
         self.assertEqual(mysite.language(), "en")
         self.assert_(isinstance(mysite.user(), (basestring, type(None))))
         self.assertEqual(mysite.sitename(), "wikipedia:en")





More information about the Pywikipedia-l mailing list