def process_service(self, filename):
data = self.get_json_from_file(os.path.join(self.dir, filename))
request_filename = self.write_tmp(data['request'] or '')
response_filename = self.write_tmp(data['response'] or '')
example = HTTPExample(
'http:example',
arguments=['curl', 'httpie', 'python-requests'],
options={
'request': request_filename,
'response': response_filename
},
content=self.content,
lineno=self.lineno,
content_offset=self.content_offset,
block_text='.. http:example::',
state=self.state,
state_machine=self.state_machine
)
method = data['method'].upper()
service = data['service']
name = service.get('name') or ''
path_scheme = data.get('path_scheme') or name
summary = service.get('summary') or ''
permission = service.get('permission') or ''
container = nodes.container('')
container.append(addnodes.desc_name('', method + ' '))
container.append(addnodes.desc_name('', path_scheme))
inner_container = nodes.definition('')
container.append(inner_container)
inner_container.append(nodes.paragraph(summary, summary))
inner_container.append(addnodes.desc_name('permission', 'permission'))
perm_label = ': ' + permission
inner_container.append(addnodes.desc_annotation(perm_label, perm_label))
inner_container.append(example.run()[0])
# extra = nodes.paragraph('', '')
# inner_container.append(extra)
# if service.get('responses'):
# extra.append(nodes.strong('', 'Responses'))
# blist = nodes.bullet_list('')
# extra.append(blist)
# for code, config in service['responses'].items():
# blist.append(render_response(code, 'Hello'))
# cleanup
os.remove(request_filename)
os.remove(response_filename)
return container
python类definition()的实例源码
def _parse_definition_list(
def_list_node: nodes.definition_list) -> ExtraContentDict:
"""Parse a definition list inside the directive.
Args:
def_list_node: A definition list node containing definitions for
extending the Sphinx output.
Raises:
ValueError: The given classifier was unrecognized.
Returns:
A dict where keys are item IDs and values contain the classifiers
and the content as lists of docutils nodes.
"""
definitions = collections.defaultdict(lambda: None)
for node in def_list_node:
if not isinstance(node, nodes.definition_list_item):
continue
term = _get_matching_child(node, nodes.term, last=False).astext()
classifiers = set()
for child_node in node.children:
if not isinstance(child_node, nodes.classifier):
continue
classifier = child_node.astext()
if classifier not in ALL_CLASSIFIERS:
raise ValueError("unknown classifier '{0}'".format(classifier))
classifiers.add(classifier)
if not classifiers & CONTENT_CLASSIFIERS:
classifiers.add("@after")
if not classifiers & MARKUP_CLASSIFIERS:
classifiers.add("@auto")
content = _get_matching_child(
node, nodes.definition, last=False).children
if not definitions[term]:
definitions[term] = []
definitions[term].append(ExtraContent(classifiers, content))
return definitions