]> code.communitydata.science - rises_declines_wikia_code.git/blob - mediawiki_dump_tools/Mediawiki-Utilities/mw/types/namespace.py
Initial commit
[rises_declines_wikia_code.git] / mediawiki_dump_tools / Mediawiki-Utilities / mw / types / namespace.py
1 from . import serializable
2 from ..util import none_or
3
4
5 class Namespace(serializable.Type):
6     """
7     Namespace meta data.
8     """
9
10     __slots__ = ('id', 'name', 'aliases', 'case', 'canonical')
11
12     def __init__(self, id, name, canonical=None, aliases=None, case=None,
13                        content=False):
14         
15         self.id = int(id)
16         """
17         Namespace ID : `int`
18         """
19
20         self.name = none_or(name, str)
21         """
22         Namespace name : `str`
23         """
24
25         self.aliases = serializable.Set.deserialize(aliases or [], str)
26         """
27         Alias names : set( `str` )
28         """
29
30         self.case = none_or(case, str)
31         """
32         Case sensitivity : `str` | `None`
33         """
34
35         self.canonical = none_or(canonical, str)
36         """
37         Canonical name : `str` | `None`
38         """
39         
40         self.content = bool(content)
41         """
42         Is considered a content namespace : `bool`
43         """
44
45     def __hash__(self):
46         return self.id
47     
48     @classmethod
49     def from_doc(cls, doc, aliases={}):
50         """
51         Constructs a namespace object from a namespace doc returned by the API
52         site_info call.
53         """
54         return cls(
55             doc['id'],
56             doc['*'],
57             canonical=doc.get('canonical'),
58             aliases=set(aliases.get(doc['id'], [])),
59             case=doc['case'],
60             content='content' in doc
61         )

Community Data Science Collective || Want to submit a patch?