in tools/tensorflow_docs/api_generator/parser.py [0:0]
def generate_global_index(library_name, index, reference_resolver):
"""Given a dict of full names to python objects, generate an index page.
The index page generated contains a list of links for all symbols in `index`
that have their own documentation page.
Args:
library_name: The name for the documented library to use in the title.
index: A dict mapping full names to python objects.
reference_resolver: An instance of ReferenceResolver.
Returns:
A string containing an index page as Markdown.
"""
symbol_links = []
for full_name, py_object in index.items():
obj_type = obj_type_lib.ObjType.get(py_object)
if obj_type in (obj_type_lib.ObjType.OTHER, obj_type_lib.ObjType.PROPERTY):
continue
# In Python 3, unbound methods are functions, so eliminate those.
if obj_type is obj_type_lib.ObjType.CALLABLE:
if is_class_attr(full_name, index):
continue
with reference_resolver.temp_prefix('..'):
symbol_links.append(
(full_name, reference_resolver.python_link(full_name, full_name)))
lines = [f'# All symbols in {library_name}', '']
lines.append('<!-- Insert buttons and diff -->\n')
# Sort all the symbols once, so that the ordering is preserved when its broken
# up into main symbols and compat symbols and sorting the sublists is not
# required.
symbol_links = sorted(symbol_links, key=lambda x: x[0])
compat_v1_symbol_links = []
compat_v2_symbol_links = []
primary_symbol_links = []
for symbol, link in symbol_links:
if symbol.startswith('tf.compat.v1'):
if 'raw_ops' not in symbol:
compat_v1_symbol_links.append(link)
elif symbol.startswith('tf.compat.v2'):
compat_v2_symbol_links.append(link)
else:
primary_symbol_links.append(link)
lines.append('## Primary symbols')
for link in primary_symbol_links:
lines.append(f'* {link}')
if compat_v2_symbol_links:
lines.append('\n## Compat v2 symbols\n')
for link in compat_v2_symbol_links:
lines.append(f'* {link}')
if compat_v1_symbol_links:
lines.append('\n## Compat v1 symbols\n')
for link in compat_v1_symbol_links:
lines.append(f'* {link}')
# TODO(markdaoust): use a _ModulePageInfo -> prety_docs.build_md_page()
return '\n'.join(lines)