• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python family.Family类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中pywikibot.family.Family的典型用法代码示例。如果您正苦于以下问题:Python Family类的具体用法?Python Family怎么用?Python Family使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Family类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_eq_different_families_by_name

 def test_eq_different_families_by_name(self):
     """Test that two Family with same name are equal."""
     family_1 = Family()
     family_2 = Family()
     family_1.name = 'a'
     family_2.name = 'a'
     self.assertNotEqual(id(family_1), id(family_2))
     self.assertEqual(family_1, family_2)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:8,代码来源:family_tests.py


示例2: test_eq_different_families_by_id

 def test_eq_different_families_by_id(self):
     """Test that two Family with no name attribute are not equal."""
     family_1 = Family()
     family_2 = Family()
     family_1.name = 'a'
     del family_2.name
     self.assertNotEqual(id(family_1), id(family_2))
     self.assertNotEqual(family_1, family_2)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:8,代码来源:family_tests.py


示例3: update_family

def update_family(families):
    """Update family files."""
    for family in families or familiesDict.keys():
        pywikibot.output('\nChecking family %s:' % family)

        original = Family.load(family).languages_by_size
        obsolete = Family.load(family).obsolete

        feed = urlopen(URL % familiesDict[family])
        tree = cElementTree.parse(feed)

        new = []
        for field in tree.findall('row/field'):
            if field.get('name') == 'prefix':
                code = field.text
                if not (code in obsolete or code in exceptions):
                    new.append(code)
                continue

        # put the missing languages to the right place
        missing = original != new and set(original) - set(new)
        if missing:
            pywikibot.output(u"WARNING: ['%s'] not listed at wikistats."
                             % "', '".join(missing))
            index = {}
            for code in missing:
                index[original.index(code)] = code
            i = len(index) - 1
            for key in sorted(index.keys(), reverse=True):
                new.insert(key - i, index[key])
                i -= 1

        if original == new:
            pywikibot.output(u'The lists match!')
        else:
            pywikibot.output(u"The lists don't match, the new list is:")
            text = u'        self.languages_by_size = [\r\n'
            line = ' ' * 11
            for code in new:
                if len(line) + len(code) <= 76:
                    line += u" '%s'," % code
                else:
                    text += u'%s\r\n' % line
                    line = ' ' * 11
                    line += u" '%s'," % code
            text += u'%s\r\n' % line
            text += u'        ]'
            pywikibot.output(text)
            family_file_name = 'pywikibot/families/%s_family.py' % family
            family_file = codecs.open(family_file_name, 'r', 'utf8')
            family_text = family_file.read()
            old = re.findall(r'(?msu)^ {8}self.languages_by_size.+?\]',
                             family_text)[0]
            family_text = family_text.replace(old, text)
            family_file = codecs.open(family_file_name, 'w', 'utf8')
            family_file.write(family_text)
            family_file.close()
开发者ID:AbdealiJK,项目名称:pywikibot-core,代码行数:57,代码来源:wikimedia_sites.py


示例4: update_family

def update_family(families):
    """Update family files."""
    ws = wikistats.WikiStats()
    for family in families or families_list:
        pywikibot.output('\nChecking family %s:' % family)

        original = Family.load(family).languages_by_size
        for code in exceptions:
            if code in original:
                original.remove(code)
        obsolete = Family.load(family).obsolete

        new = []
        table = ws.languages_by_size(family)
        for code in table:
            if not (code in obsolete or code in exceptions):
                new.append(code)

        # put the missing languages to the right place
        missing = original != new and set(original) - set(new)
        if missing:
            pywikibot.warning("['%s'] not listed at wikistats."
                              % "', '".join(missing))
            index = {}
            for code in missing:
                index[original.index(code)] = code
            i = len(index) - 1
            for key in sorted(index.keys(), reverse=True):
                new.insert(key - i, index[key])
                i -= 1

        if original == new:
            pywikibot.output(u'The lists match!')
        else:
            pywikibot.output(u"The lists don't match, the new list is:")
            text = u'        self.languages_by_size = [\r\n'
            line = ' ' * 11
            for code in new:
                if len(line) + len(code) <= 76:
                    line += u" '%s'," % code
                else:
                    text += u'%s\r\n' % line
                    line = ' ' * 11
                    line += u" '%s'," % code
            text += u'%s\r\n' % line
            text += u'        ]'
            pywikibot.output(text)
            family_file_name = 'pywikibot/families/%s_family.py' % family
            family_file = codecs.open(family_file_name, 'r', 'utf8')
            family_text = family_file.read()
            old = re.findall(r'(?msu)^ {8}self.languages_by_size.+?\]',
                             family_text)[0]
            family_text = family_text.replace(old, text)
            family_file = codecs.open(family_file_name, 'w', 'utf8')
            family_file.write(family_text)
            family_file.close()
开发者ID:PersianWikipedia,项目名称:pywikibot-core,代码行数:56,代码来源:wikimedia_sites.py


示例5: test_set_obsolete

    def test_set_obsolete(self):
        """Test obsolete can be set."""
        family = Family()
        self.assertEqual(family.obsolete, {})
        self.assertEqual(family.interwiki_replacements, {})
        self.assertEqual(family.interwiki_removals, [])

        family.obsolete = {'a': 'b', 'c': None}
        self.assertEqual(family.obsolete, {'a': 'b', 'c': None})
        self.assertEqual(family.interwiki_replacements, {'a': 'b'})
        self.assertEqual(family.interwiki_removals, ['c'])
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:11,代码来源:family_tests.py


示例6: test_from_url_wikipedia_extra

    def test_from_url_wikipedia_extra(self):
        """Test various URLs against wikipedia regex."""
        f = Family.load('wikipedia')

        prefix = 'https://vo.wikipedia.org'

        self.assertEqual(f.from_url(prefix + '/wiki/'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php/'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php?title=$1'), 'vo')

        self.assertEqual(f.from_url(prefix + '/wiki/$1'), 'vo')
        self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1'), 'vo')
        self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1/foo'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php/$1'), 'vo')
        self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1'), 'vo')
        self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1/foo'), 'vo')

        # wrong protocol
        self.assertIsNone(f.from_url('http://vo.wikipedia.org/wiki/$1'))
        self.assertIsNone(f.from_url('ftp://vo.wikipedia.org/wiki/$1'))
        # wrong code
        self.assertIsNone(f.from_url('https://foobar.wikipedia.org/wiki/$1'))
        # wrong family
        self.assertIsNone(f.from_url('https://vo.wikibooks.org/wiki/$1'))
        self.assertIsNone(f.from_url('http://vo.wikibooks.org/wiki/$1'))
        # invalid path
        self.assertIsNone(f.from_url('https://vo.wikipedia.org/wik/$1'))
        self.assertIsNone(f.from_url('https://vo.wikipedia.org/index.php/$1'))
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:29,代码来源:family_tests.py


示例7: test_get_obsolete_test

 def test_get_obsolete_test(self):
     """Test WikimediaFamily default obsolete."""
     family = Family.load('test')
     self.assertIn('dk', family.obsolete)
     self.assertIn('dk', family.interwiki_replacements)
     self.assertEqual(family.obsolete, family.interwiki_replacements)
     self.assertEqual(family.interwiki_removals, set())
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:7,代码来源:family_tests.py


示例8: test_family_load_valid

 def test_family_load_valid(self):
     """Test that a family can be loaded via Family.load."""
     for name in pywikibot.config.family_files:
         f = Family.load(name)
         self.assertIsInstance(f.langs, dict)
         self.assertTrue(f.langs)
         self.assertTrue(f.codes)
         self.assertTrue(iter(f.codes))
         self.assertIsInstance(next(iter(f.codes)), basestring)
         self.assertTrue(f.domains)
         self.assertTrue(iter(f.domains))
         for domain in f.domains:
             self.assertIsInstance(domain, basestring)
             if domain != 'localhost':
                 self.assertIn('.', domain)
         self.assertEqual(f.name, name)
         self.assertIsInstance(f.languages_by_size, list)
         self.assertGreaterEqual(set(f.langs), set(f.languages_by_size))
         if len(f.langs) > 6 and f.name != 'wikimediachapter':
             self.assertNotEqual(f.languages_by_size, [])
         if isinstance(f, SingleSiteFamily):
             self.assertIsNotNone(f.code)
             self.assertIsNotNone(f.domain)
             self.assertEqual(set(f.langs), set([f.code]))
             self.assertEqual(set(f.codes), set([f.code]))
开发者ID:metakgp,项目名称:batman,代码行数:25,代码来源:family_tests.py


示例9: test_get_regex_wikipedia_precise

    def test_get_regex_wikipedia_precise(self):
        """Test the family regex is optimal."""
        f = Family.load('wikipedia')
        regex = f._get_regex_all()

        self.assertTrue(regex.startswith('(?:\/\/|https\:\/\/)('))
        self.assertIn('vo\.wikipedia\.org', regex)
        self.assertTrue(regex.endswith(')(?:\/w\/index\.php\/?|\/wiki\/)'))
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:8,代码来源:family_tests.py


示例10: test_eq_family_with_string_repr_not_existing_family

 def test_eq_family_with_string_repr_not_existing_family(self):
     """Test that Family and string with different name are not equal."""
     family = Family.load('wikipedia')
     other = 'unknown'
     self.assertRaisesRegex(
         UnknownFamily,
         self.UNKNOWNFAMILY_RE,
         family.__eq__,
         other)
开发者ID:hasteur,项目名称:g13bot_tools_new,代码行数:9,代码来源:family_tests.py


示例11: test_WikimediaFamily_obsolete_readonly

 def test_WikimediaFamily_obsolete_readonly(self):
     """Test WikimediaFamily obsolete is readonly."""
     family = Family.load('test')
     self.assertRaisesRegex(
         TypeError,
         self.FROZENSET_TYPEERROR_RE,
         family.__setattr__,
         'obsolete',
         {'a': 'b', 'c': None})
开发者ID:hasteur,项目名称:g13bot_tools_new,代码行数:9,代码来源:family_tests.py


示例12: test_get_obsolete_wp

 def test_get_obsolete_wp(self):
     """Test three types of obsolete codes."""
     family = Family.load('wikipedia')
     self.assertIsInstance(family.obsolete, dict)
     # redirected code (see site tests test_alias_code_site)
     self.assertEqual(family.obsolete['dk'], 'da')
     # closed/locked site (see site tests test_locked_site)
     self.assertEqual(family.obsolete['mh'], None)
     # offline site (see site tests test_removed_site)
     self.assertEqual(family.obsolete['ru-sib'], None)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:10,代码来源:family_tests.py


示例13: test_family_load_valid

 def test_family_load_valid(self):
     """Test that a family can be loaded via Family.load."""
     for name in pywikibot.config.family_files:
         f = Family.load(name)
         self.assertIsInstance(f.langs, dict)
         self.assertNotEqual(f.langs, {})
         # There is one inconsistency
         if f.name == 'wikimediachapter' and name == 'wikimedia':
             continue
         self.assertEqual(f.name, name)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:10,代码来源:family_tests.py


示例14: test_each_family

 def test_each_family(self):
     """Test each family builds a working regex."""
     for family in pywikibot.config.family_files:
         family = Family.load(family)
         # Test family does not respond to from_url due to overlap
         # with Wikipedia family.
         if family.name == 'test':
             continue
         for code in family.langs:
             url = ('%s://%s%s$1' % (family.protocol(code),
                                     family.hostname(code),
                                     family.path(code)))
             self.assertEqual(family.from_url(url), code)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:13,代码来源:family_tests.py


示例15: test_obsolete_readonly

 def test_obsolete_readonly(self):
     """Test obsolete result not updatable."""
     family = Family.load('test')
     self.assertRaisesRegex(
         TypeError,
         self.FAMILY_TYPEERROR_RE,
         family.obsolete.update,
         {})
     self.assertRaisesRegex(
         TypeError,
         self.FAMILY_TYPEERROR_RE,
         family.obsolete.__setitem__,
         'a',
         'b')
开发者ID:hasteur,项目名称:g13bot_tools_new,代码行数:14,代码来源:family_tests.py


示例16: test_each_family

 def test_each_family(self):
     """Test each family builds a working regex."""
     for family in pywikibot.config.family_files:
         self.current_family = family
         family = Family.load(family)
         for code in family.codes:
             self.current_code = code
             url = ('%s://%s%s/$1' % (family.protocol(code),
                                      family.hostname(code),
                                      family.path(code)))
             # Families can switch off if they want to be detected using URL
             # this applies for test:test (there is test:wikipedia)
             if family._ignore_from_url or code in family._ignore_from_url:
                 self.assertIsNone(family.from_url(url))
             else:
                 self.assertEqual(family.from_url(url), code)
开发者ID:metakgp,项目名称:batman,代码行数:16,代码来源:family_tests.py


示例17: test_from_url_wikipedia_extra

    def test_from_url_wikipedia_extra(self):
        """Test various URLs against wikipedia regex."""
        self.current_code = 'vo'
        self.current_family = 'wikipedia'

        f = Family.load('wikipedia')

        prefix = 'https://vo.wikipedia.org'

        self.assertEqual(f.from_url(prefix + '/wiki/'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php/'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php?title=$1'), 'vo')

        self.assertEqual(f.from_url(prefix + '/wiki/$1'), 'vo')
        self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php/$1'), 'vo')
        self.assertEqual(f.from_url('//vo.wikipedia.org/wiki/$1'), 'vo')
        # including title
        self.assertEqual(f.from_url(prefix + '/wiki/Main_page'), 'vo')
        self.assertEqual(f.from_url(prefix + '/w/index.php?title=Foo'), 'vo')

        # Text after $1 is not allowed
        self.assertRaisesRegex(
            ValueError,
            r'Text after the \$1 placeholder is not supported \(T111513\)',
            f.from_url,
            '//vo.wikipedia.org/wiki/$1/foo')

        # the IWM may contain the wrong protocol, but it's only used to
        # determine a site so using HTTP or HTTPS is not an issue
        self.assertEqual(f.from_url('http://vo.wikipedia.org/wiki/$1'), 'vo')

        # wrong protocol
        self.assertIsNone(f.from_url('ftp://vo.wikipedia.org/wiki/$1'))
        # wrong code
        self.assertIsNone(f.from_url('https://foobar.wikipedia.org/wiki/$1'))
        # wrong family
        self.assertIsNone(f.from_url('https://vo.wikibooks.org/wiki/$1'))
        self.assertIsNone(f.from_url('http://vo.wikibooks.org/wiki/$1'))
        # invalid path
        self.assertIsNone(f.from_url('https://vo.wikipedia.org/wik/$1'))
        self.assertIsNone(f.from_url('https://vo.wikipedia.org/index.php/$1'))
开发者ID:magul,项目名称:pywikibot-core,代码行数:43,代码来源:family_tests.py


示例18: test_ne_family_with_string_repr_different_family

 def test_ne_family_with_string_repr_different_family(self):
     """Test that Family and string with different name are not equal."""
     family = Family.load('wikipedia')
     other = 'wikisource'
     self.assertNotEqual(family, other)
     self.assertFalse(family == other)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:6,代码来源:family_tests.py


示例19: test_eq_family_with_string_repr_same_family

 def test_eq_family_with_string_repr_same_family(self):
     """Test that Family and string with same name are equal."""
     family = Family.load('wikipedia')
     other = 'wikipedia'
     self.assertEqual(family, other)
     self.assertFalse(family != other)
开发者ID:happy5214,项目名称:pywikibot-core,代码行数:6,代码来源:family_tests.py


示例20: Site

def Site(code=None, fam=None, user=None, sysop=None, interface=None, url=None):
    """A factory method to obtain a Site object.

    Site objects are cached and reused by this method.

    By default rely on config settings. These defaults may all be overridden
    using the method parameters.

    @param code: language code (override config.mylang)
    @type code: string
    @param fam: family name or object (override config.family)
    @type fam: string or Family
    @param user: bot user name to use on this site (override config.usernames)
    @type user: unicode
    @param sysop: sysop user to use on this site (override config.sysopnames)
    @type sysop: unicode
    @param interface: site class or name of class in pywikibot.site
        (override config.site_interface)
    @type interface: subclass of L{pywikibot.site.BaseSite} or string
    @param url: Instead of code and fam, does try to get a Site based on the
        URL. Still requires that the family supporting that URL exists.
    @type url: string
    @rtype: pywikibot.site.APISite

    """
    # Either code and fam or only url
    if url and (code or fam):
        raise ValueError('URL to the wiki OR a pair of code and family name '
                         'should be provided')
    _logger = "wiki"

    if url:
        if url not in _url_cache:
            matched_sites = []
            # Iterate through all families and look, which does apply to
            # the given URL
            for fam in config.family_files:
                family = Family.load(fam)
                code = family.from_url(url)
                if code is not None:
                    matched_sites += [(code, family)]

            if matched_sites:
                if len(matched_sites) > 1:
                    warning(
                        'Found multiple matches for URL "{0}": {1} (use first)'
                        .format(url, ', '.join(str(s) for s in matched_sites)))
                _url_cache[url] = matched_sites[0]
            else:
                # TODO: As soon as AutoFamily is ready, try and use an
                #       AutoFamily
                _url_cache[url] = None

        cached = _url_cache[url]
        if cached:
            code = cached[0]
            fam = cached[1]
        else:
            raise SiteDefinitionError("Unknown URL '{0}'.".format(url))
    else:
        # Fallback to config defaults
        code = code or config.mylang
        fam = fam or config.family

        if not isinstance(fam, Family):
            fam = Family.load(fam)

    interface = interface or fam.interface(code)

    # config.usernames is initialised with a defaultdict for each family name
    family_name = str(fam)

    code_to_user = config.usernames['*'].copy()
    code_to_user.update(config.usernames[family_name])
    user = user or code_to_user.get(code) or code_to_user.get('*')

    code_to_sysop = config.sysopnames['*'].copy()
    code_to_sysop.update(config.sysopnames[family_name])
    sysop = sysop or code_to_sysop.get(code) or code_to_sysop.get('*')

    if not isinstance(interface, type):
        # If it isnt a class, assume it is a string
        try:
            tmp = __import__('pywikibot.site', fromlist=[interface])
            interface = getattr(tmp, interface)
        except ImportError:
            raise ValueError('Invalid interface name: {0}'.format(interface))

    if not issubclass(interface, BaseSite):
        warning('Site called with interface=%s' % interface.__name__)

    user = normalize_username(user)
    key = '%s:%s:%s:%s' % (interface.__name__, fam, code, user)
    if key not in _sites or not isinstance(_sites[key], interface):
        _sites[key] = interface(code=code, fam=fam, user=user, sysop=sysop)
        debug(u"Instantiated %s object '%s'"
              % (interface.__name__, _sites[key]), _logger)

        if _sites[key].code != code:
            warn('Site %s instantiated using different code "%s"'
#.........这里部分代码省略.........
开发者ID:Darkdadaah,项目名称:pywikibot-core,代码行数:101,代码来源:__init__.py



注:本文中的pywikibot.family.Family类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python i18n.input函数代码示例发布时间:2022-05-26
下一篇:
Python api.Request类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap