1 from . import serializable
2 from ..util import none_or
5 class Namespace(serializable.Type):
10 __slots__ = ('id', 'name', 'aliases', 'case', 'canonical')
12 def __init__(self, id, name, canonical=None, aliases=None, case=None,
20 self.name = none_or(name, str)
22 Namespace name : `str`
25 self.aliases = serializable.Set.deserialize(aliases or [], str)
27 Alias names : set( `str` )
30 self.case = none_or(case, str)
32 Case sensitivity : `str` | `None`
35 self.canonical = none_or(canonical, str)
37 Canonical name : `str` | `None`
40 self.content = bool(content)
42 Is considered a content namespace : `bool`
49 def from_doc(cls, doc, aliases={}):
51 Constructs a namespace object from a namespace doc returned by the API
57 canonical=doc.get('canonical'),
58 aliases=set(aliases.get(doc['id'], [])),
60 content='content' in doc