This file is indexed.

/usr/lib/python2.7/dist-packages/networkx/readwrite/json_graph/tree.py is in python-networkx 1.8.1-0ubuntu3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#    Copyright (C) 2011 by 
#    Aric Hagberg <hagberg@lanl.gov>
#    Dan Schult <dschult@colgate.edu>
#    Pieter Swart <swart@lanl.gov>
#    All rights reserved.
#    BSD license.
from itertools import count,repeat
import json
import networkx as nx
__author__ = """Aric Hagberg (hagberg@lanl.gov))"""
__all__ = ['tree_data',
           'tree_graph']

def tree_data(G, root):
    """Return data in tree format that is suitable for JSON serialization
    and use in Javascript documents.

    Parameters
    ----------
    G : NetworkX graph
       G must be an oriented tree

    root : node
       The root of the tree

    Returns
    -------
    data : dict
       A dictionary with node-link formatted data.

    Examples
    --------
    >>> from networkx.readwrite import json_graph
    >>> G = nx.DiGraph([(1,2)])
    >>> data = json_graph.tree_data(G,root=1)

    To serialize with json

    >>> import json
    >>> s = json.dumps(data)
    
    Notes
    -----
    Node attributes are stored in this format but keys 
    for attributes must be strings if you want to serialize with JSON.
    
    Graph and edge attributes are not stored.

    See Also
    --------
    tree_graph, node_link_data, node_link_data
    """
    if not G.number_of_nodes()==G.number_of_edges()+1:
        raise TypeError("G is not a tree.")
    if not G.is_directed():
        raise TypeError("G is not directed")
    def add_children(n, G):
        nbrs = G[n]
        if len(nbrs) == 0:
            return []
        children = []
        for child in nbrs:
            d = dict(id=child, **G.node[child])
            c = add_children(child,G)
            if c:
                d['children'] = c
            children.append(d)
        return children
    data = dict(id=root, **G.node[root])
    data['children'] = add_children(root,G)
    return data

def tree_graph(data):
    """Return graph from tree data format. 

    Parameters
    ----------
    data : dict
        Tree formatted graph data
    
    Returns
    -------
    G : NetworkX DiGraph

    Examples
    --------
    >>> from networkx.readwrite import json_graph
    >>> G = nx.DiGraph([(1,2)])
    >>> data = json_graph.tree_data(G,root=1)
    >>> H = json_graph.tree_graph(data)

    See Also
    --------
    tree_graph, node_link_data, adjacency_data
    """
    graph = nx.DiGraph()
    def add_children(parent, children):
        for data in children:
            child = data['id']
            graph.add_edge(parent, child)
            grandchildren = data.get('children',[])
            if grandchildren:
                add_children(child,grandchildren)
            nodedata = dict((str(k),v) for k,v in data.items() 
                            if k!='id' and k!='children')
            graph.add_node(child,attr_dict=nodedata)
    root = data['id']
    children = data.get('children',[])
    nodedata = dict((k,v) for k,v in data.items() 
                    if k!='id' and k!='children')
    graph.add_node(root, attr_dict=nodedata)
    add_children(root, children)
    return graph