def main(): di = DoxyIndex(xml_location) blocks = di.in_category(Block) block_blocks = [] for block in blocks: if block.name().startswith("gr::blocks::"): block_blocks.append(block) all_grouped_blocks = [] groups = di.in_category(Group) groupinfo = [] for group in groups: contains_block_blocks = False block_list = [] members = group.members() for member in members: if member.name().startswith("gr::blocks"): all_grouped_blocks.append(member) if not contains_block_blocks: contains_block_blocks = True groupinfo.append((group.name(), group.title, block_list)) block_list.append(member) for block in block_blocks: if block not in all_grouped_blocks: print("Didn't find block {0}".format(block.name())) blockindex = ["""gnuradio.blocks =============== .. automodule:: gnuradio.blocks"""] for groupname, grouptitle, blocks in groupinfo: blockindex.append("") blockindex.append(grouptitle) blockindex.append('-'*len(grouptitle)) blockindex.append(""" .. autosummary:: :nosignatures: """) for block in blocks: blockindex.append(" gnuradio.blocks.{0}".format( block.name()[len("gr::blocks::"):])) grouppage = [] title = "gnuradio.blocks: {0}".format(grouptitle) grouppage.append(title) grouppage.append('='*len(title)) grouppage.append('') for block in blocks: shortname = block.name()[len("gr::blocks::"):] grouppage.append(".. autoblock:: gnuradio.blocks.{0}".format(shortname)) text = '\n'.join(grouppage) f = open("{0}.rst".format(groupname), 'w') f.write(text) f.close() text = "\n".join(blockindex) f = open("index.rst", 'w') f.write(text) f.close()
# If this excludes anything important please add it here. output = "\n\n".join(output) swig_doc = open(swigdocfilename, 'w') swig_doc.write(output) swig_doc.close() if __name__ == "__main__": # Parse command line options and set up doxyxml. err_msg = "Execute using: python swig_doc.py xml_path outputfilename" if len(sys.argv) != 3: raise Exception(err_msg) xml_path = sys.argv[1] swigdocfilename = sys.argv[2] di = DoxyIndex(xml_path) # gnuradio.gr.msq_queue.insert_tail and delete_head create errors unless docstrings are defined! # This is presumably a bug in SWIG. #msg_q = di.get_member(u'gr_msg_queue', DoxyClass) #insert_tail = msg_q.get_member(u'insert_tail', DoxyFunction) #delete_head = msg_q.get_member(u'delete_head', DoxyFunction) output = [] #output.append(make_func_entry(insert_tail, name='gr_py_msg_queue__insert_tail')) #output.append(make_func_entry(delete_head, name='gr_py_msg_queue__delete_head')) custom_output = "\n\n".join(output) # Generate the docstrings interface file. make_swig_interface_file(di, swigdocfilename, custom_output=custom_output)
choices=["scrape", "sub", "copy"]) parser.add_argument("--xml_path") parser.add_argument("--bindings_dir") parser.add_argument("--output_dir") parser.add_argument("--json_path") parser.add_argument("--filter", default=None) return parser.parse_args() if __name__ == "__main__": # Parse command line options and set up doxyxml. args = argParse() if args.function.lower() == 'scrape': di = DoxyIndex(args.xml_path) docstrings_dict = get_docstrings_dict(di) with open(args.json_path, 'w') as fp: json.dump(docstrings_dict, fp) elif args.function.lower() == 'sub': with open(args.json_path, 'r') as fp: docstrings_dict = json.load(fp) pydoc_files = glob.glob( os.path.join(args.bindings_dir, '*_pydoc_template.h')) sub_docstring_in_pydoc_h(pydoc_files, docstrings_dict, args.output_dir, args.filter) elif args.function.lower() == 'copy': pydoc_files = glob.glob( os.path.join(args.bindings_dir, '*_pydoc_template.h')) copy_docstring_templates(pydoc_files, args.output_dir)
def main(): di = DoxyIndex(xml_location) blocks = di.in_category(Block) analog_blocks = [] for block in blocks: if block.name().startswith("gr::analog::"): analog_blocks.append(block) all_grouped_blocks = [] groups = di.in_category(Group) groupinfo = [] for group in groups: contains_analog_blocks = False block_list = [] members = group.members() for member in members: if member.name().startswith("gr::analog"): all_grouped_blocks.append(member) if not contains_analog_blocks: contains_analog_blocks = True groupinfo.append((group.name(), group.title, block_list)) block_list.append(member) for block in analog_blocks: if block not in all_grouped_blocks: print("Didn't find block {0}".format(block.name())) blockindex = [ """gnuradio.analog =============== .. automodule:: gnuradio.analog""" ] for groupname, grouptitle, blocks in groupinfo: blockindex.append("") blockindex.append(grouptitle) blockindex.append('-' * len(grouptitle)) blockindex.append(""" .. autosummary:: :nosignatures: """) for block in blocks: blockindex.append(" gnuradio.analog.{0}".format( block.name()[len("gr::analog::"):])) grouppage = [] title = "gnuradio.analog: {0}".format(grouptitle) grouppage.append(title) grouppage.append('=' * len(title)) grouppage.append('') for block in blocks: shortname = block.name()[len("gr::analog::"):] grouppage.append( ".. autoblock:: gnuradio.analog.{0}".format(shortname)) text = '\n'.join(grouppage) f = open("{0}.rst".format(groupname), 'w') f.write(text) f.close() text = "\n".join(blockindex) f = open("index.rst", 'w') f.write(text) f.close()