Source code for mwxml.iteration.site_info

import jsonable
from mwtypes.util import none_or

from .namespace import Namespace


[docs]class SiteInfo(jsonable.Type): """ Represents the data from the <siteinfo> in a MediaWiki XML dump. .. autoattribute:: mwxml.iteration.site_info.SiteInfo.name :annotation: = The name of the site. : str | None .. autoattribute:: mwxml.iteration.site_info.SiteInfo.dbname :annotation: = The database name of the site. : str | None .. autoattribute:: mwxml.iteration.site_info.SiteInfo.base :annotation: = TODO: ??? : str | None .. autoattribute:: mwxml.iteration.site_info.SiteInfo.generator :annotation: = TODO: ??? : str | None .. autoattribute:: mwxml.iteration.site_info.SiteInfo.case :annotation: = TODO: ??? : str | None .. autoattribute:: mwxml.iteration.site_info.SiteInfo.namespaces :annotation: = list(mwxml.Namespace) | None """ __slots__ = ('name', 'dbname', 'base', 'generator', 'case', 'namespaces') def initialize(self, name=None, dbname=None, base=None, generator=None, case=None, namespaces=None): self.name = none_or(name, str) """ The name of the site. : str | `None` """ self.dbname = none_or(dbname, str) """ The dbname of the site. : str | `None` """ self.base = none_or(base, str) """ TODO: ??? : str | `None` """ self.generator = none_or(generator, str) """ TODO: ??? : str | `None` """ self.case = none_or(case, str) """ TODO: ??? : str | `None` """ self.namespaces = none_or(namespaces, list) """ A list of :class:`mwtypes.Namespace` | `None` """ @classmethod def load_namespaces(cls, element): namespaces = [] for sub_element in element: tag = sub_element.tag if tag == "namespace": namespace = Namespace.from_element(sub_element) namespaces.append(namespace) else: assert False, "This should never happen" return namespaces @classmethod def from_element(cls, element): assert element.tag == "siteinfo", element.tag name = None dbname = None base = None generator = None case = None namespaces = None for sub_element in element: if sub_element.tag == 'sitename': name = sub_element.text elif sub_element.tag == 'dbname': dbname = sub_element.text elif sub_element.tag == 'base': base = sub_element.text elif sub_element.tag == 'base': base = sub_element.text elif sub_element.tag == 'generator': generator = sub_element.text elif sub_element.tag == 'case': case = sub_element.text elif sub_element.tag == 'namespaces': namespaces = cls.load_namespaces(sub_element) return cls(name=name, dbname=dbname, base=base, generator=generator, case=case, namespaces=namespaces)