http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11276

Revision: 11276
Author:   xqt
Date:     2013-03-25 23:55:40 +0000 (Mon, 25 Mar 2013)
Log Message:
-----------
Override _sites cache if instance does not match. This will solve the following:
>>> import pwb
>>> import pywikibot as wp
>>> s = wp.Site('wikidata', 'wikidata')
>>> s
Site("wikidata", "wikidata")
>>> s = wp.Site('wikidata', 'wikidata', interface='DataSite')
>>> s
DataSite("wikidata", "wikidata")
>>> 
here the second instantation returns the right class whereas the previous 
cached object would be Site("wikidata", "wikidata")

Modified Paths:
--------------
    branches/rewrite/pywikibot/__init__.py

Modified: branches/rewrite/pywikibot/__init__.py
===================================================================
--- branches/rewrite/pywikibot/__init__.py      2013-03-25 19:09:07 UTC (rev 
11275)
+++ branches/rewrite/pywikibot/__init__.py      2013-03-25 23:55:40 UTC (rev 
11276)
@@ -168,7 +168,7 @@
     except ImportError:
         raise ValueError("Invalid interface name '%(interface)s'" % locals())
     key = '%s:%s:%s' % (fam, code, user)
-    if not key in _sites:
+    if not key in _sites or not isinstance(_sites[key], __Site):
         _sites[key] = __Site(code=code, fam=fam, user=user, sysop=sysop)
         pywikibot.debug(u"Instantiating Site object '%(site)s'"
                         % {'site': _sites[key]}, _logger)


_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to