18 from .output
import get_generation_time
23 def write(self, libdoc, outfile):
24 writer = XmlWriter(outfile, usage=
'Libdoc spec')
26 self.
_write_keywords_write_keywords(
'inits',
'init', libdoc.inits, libdoc.source, writer)
27 self.
_write_keywords_write_keywords(
'keywords',
'kw', libdoc.keywords, libdoc.source, writer)
35 attrs = {
'name': libdoc.name,
37 'format': libdoc.doc_format,
38 'scope': libdoc.scope,
42 writer.start(
'keywordspec', attrs)
43 writer.element(
'version', libdoc.version)
44 writer.element(
'doc', libdoc.doc)
45 self.
_write_tags_write_tags(libdoc.all_tags, writer)
48 if item.source
and item.source != lib_source:
49 attrs[
'source'] = item.source
50 if item.lineno
and item.lineno > 0:
51 attrs[
'lineno'] = str(item.lineno)
54 writer.start(list_name)
57 writer.start(kw_type, attrs)
59 writer.element(
'doc', kw.doc)
60 writer.element(
'shortdoc', kw.shortdoc)
61 if kw_type ==
'kw' and kw.tags:
69 writer.element(
'tag', tag)
73 writer.start(
'arguments', {
'repr': str(kw.args)})
75 writer.start(
'arg', {
'kind': arg.kind,
76 'required':
'true' if arg.required
else 'false',
79 writer.element(
'name', arg.name)
80 type_docs = kw.type_docs[arg.name]
81 for type_repr
in arg.types_reprs:
82 if type_repr
in type_docs:
83 attrs = {
'typedoc': type_docs[type_repr]}
86 writer.element(
'type', type_repr, attrs)
87 if arg.default
is not arg.NOTSET:
88 writer.element(
'default', arg.default_repr)
90 writer.end(
'arguments')
93 attrs = {
'name': kw.name}
95 attrs[
'private'] =
'true'
97 attrs[
'deprecated'] =
'true'
102 enums = sorted(t
for t
in types
if t.type ==
'Enum')
103 typed_dicts = sorted(t
for t
in types
if t.type ==
'TypedDict')
104 writer.start(
'datatypes')
106 writer.start(
'enums')
108 writer.start(
'enum', {
'name': enum.name})
109 writer.element(
'doc', enum.doc)
114 writer.start(
'typeddicts')
115 for typ_dict
in typed_dicts:
116 writer.start(
'typeddict', {
'name': typ_dict.name})
117 writer.element(
'doc', typ_dict.doc)
119 writer.end(
'typeddict')
120 writer.end(
'typeddicts')
121 writer.end(
'datatypes')
124 writer.start(
'typedocs')
125 for doc
in sorted(type_docs):
126 writer.start(
'type', {
'name': doc.name,
'type': doc.type})
127 writer.element(
'doc', doc.doc)
128 writer.start(
'accepts')
129 for typ
in doc.accepts:
130 writer.element(
'type', typ)
131 writer.end(
'accepts')
132 writer.start(
'usages')
133 for usage
in doc.usages:
134 writer.element(
'usage', usage)
136 if doc.type ==
'Enum':
138 if doc.type ==
'TypedDict':
141 writer.end(
'typedocs')
144 writer.start(
'members')
145 for member
in enum.members:
146 writer.element(
'member', attrs={
'name': member.name,
147 'value': member.value})
148 writer.end(
'members')
151 writer.start(
'items')
152 for item
in typed_dict.items:
153 attrs = {
'key': item.key,
'type': item.type}
154 if item.required
is not None:
155 attrs[
'required'] =
'true' if item.required
else 'false'
156 writer.element(
'item', attrs=attrs)
160 writer.end(
'keywordspec')
def _write_data_types(self, types, writer)
def _add_source_info(self, attrs, item, lib_source=None)
def _write_typed_dict_items(self, typed_dict, writer)
def _write_arguments(self, kw, writer)
def _write_type_docs(self, type_docs, writer)
def _write_start(self, libdoc, writer)
def _write_keywords(self, list_name, kw_type, keywords, lib_source, writer)
def _write_enum_members(self, enum, writer)
def _write_tags(self, tags, writer)
def write(self, libdoc, outfile)
def _get_start_attrs(self, kw, lib_source)
def _write_end(self, writer)
def get_generation_time()
Return a timestamp that honors SOURCE_DATE_EPOCH.