Module Expr Str ImportFrom alias Import alias identifier ImportFrom alias Import alias identifier Assign NameStore Call AttributeLoad Str attr ListLoad Str Str Str ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults NameLoad kwarg body Expr Str Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict If CompareIsNot NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Return Call AttributeLoad AttributeLoad NameLoad attr attr Str Str decorator_list NameLoad FunctionDef arguments args NameParam NameParam defaults body Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad decorator_list AttributeLoad NameLoad attr FunctionDef arguments args NameParam defaults body Expr Str Return AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return CompareIn NameLoad AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return SubscriptLoad AttributeLoad NameLoad attr Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad orelse Expr Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults kwarg body Expr Str For NameStore NameLoad body TryExcept body If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Call AttributeLoad NameLoad attr orelse Expr Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Assign TupleStore NameStore NameStore NameLoad If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad orelse Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr TryExcept body Assign NameStore Call NameLoad Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad For NameStore NameLoad body Delete SubscriptDel SubscriptLoad NameLoad Index NameLoad Index NameLoad Delete SubscriptDel NameLoad Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr For NameStore NameLoad body TryExcept body Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad For NameStore Call NameLoad Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr body Delete SubscriptDel SubscriptLoad NameLoad Index NameLoad Index NameLoad Delete SubscriptDel NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Pass decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If NameLoad body Return Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr keyword NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return CompareIn NameLoad AttributeLoad NameLoad attr handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign NameStore Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str For NameStore NameLoad body Assign NameStore Call NameLoad NameLoad If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameStore NameLoad orelse If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameLoad Assign NameStore Dict orelse Raise Call NameLoad BinOpMod Str TupleLoad NameLoad If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign NameStore Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults Str kwarg body Expr Str Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad Dict NameLoad NameLoad comprehension TupleStore NameStore NameStore NameStore NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str TryExcept body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad If CompareNotEq NameLoad NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore AttributeLoad NameLoad attr For NameStore NameLoad body Assign TupleStore NameStore NameStore SubscriptLoad NameLoad Slice Num If BoolOpAnd CompareIn NameLoad NameLoad CompareIn NameLoad SubscriptLoad NameLoad Index NameLoad body Delete SubscriptDel SubscriptLoad NameLoad Index NameLoad Index NameLoad If CompareNotEq NameLoad NameLoad body Delete SubscriptDel SubscriptLoad NameLoad Index NameLoad Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str TryExcept body Return CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Assign NameStore Dict If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If CompareNotIn NameLoad NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index NameLoad Num orelse For TupleStore NameStore NameStore NameLoad body For NameStore NameLoad body If CompareNotIn NameLoad NameLoad body Expr Yield TupleLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index NameLoad Num Delete NameDel decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str TryExcept body Return SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad Call NameLoad NameLoad Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIn NameLoad NameLoad body Return SubscriptLoad Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad Index Num orelse Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad BinOpAdd Call NameLoad NameLoad CompareIn NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad BinOpAdd Call NameLoad GeneratorExp Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr NameLoad Num comprehension NameStore NameLoad BoolOpAnd CompareIn NameLoad NameLoad Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr NameLoad Num decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str ImportFrom alias Assign NameStore Call NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr For NameStore NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr For NameStore AttributeLoad NameLoad attr body Assign NameStore Dict Assign SubscriptStore NameLoad Index NameLoad NameLoad For TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr body If CompareIn NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return ListComp NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If NameLoad body Return ListComp TupleLoad NameLoad NameLoad SubscriptLoad NameLoad Index NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad orelse Return ListComp TupleLoad NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore BinOpDiv Call NameLoad Call AttributeLoad Call AttributeLoad NameLoad attr keyword NameLoad attr Num If CompareIs NameLoad NameLoad body Return Call NameLoad NameLoad orelse Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Return Call NameLoad Call AttributeLoad NameLoad attr If CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad body Return Num orelse Return Num decorator_list FunctionDef arguments args NameParam NameParam defaults kwarg body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore SubscriptLoad NameLoad Index Num Assign NameStore GeneratorExp TupleLoad NameLoad NameLoad comprehension NameStore SubscriptLoad NameLoad Slice Num Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults kwarg body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad SubscriptLoad NameLoad Slice Num SubscriptLoad NameLoad Slice Num Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults kwarg body Expr Str Assign NameStore Call NameLoad NameLoad Assign NameStore Call NameLoad NameLoad BinOpAdd SubscriptLoad NameLoad Slice Num ListLoad SubscriptLoad NameLoad Index Num Expr Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr orelse If CompareIn NameLoad NameLoad body Assign NameStore Call NameLoad ListLoad NameLoad orelse FunctionDef arguments args NameParam NameParam defaults body TryExcept body For NameStore NameLoad body If CompareIn NameLoad NameLoad body Expr Yield NameLoad handlers ExceptHandler type NameLoad name NameStore body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index Num Import alias Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad If CompareIn Str NameLoad body Raise Call NameLoad Str orelse If CompareIn Str NameLoad body Raise Call NameLoad BinOpMod Str NameLoad orelse Raise decorator_list Assign NameStore Call NameLoad NameLoad AttributeLoad NameLoad attr Return NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults NameLoad kwarg body Expr Str Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr Dict Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr If CompareIsNot NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad keyword NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad orelse Expr Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults kwarg body Expr Str For NameStore NameLoad body TryExcept body If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Call AttributeLoad NameLoad attr orelse Expr Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Assign TupleStore NameStore NameStore NameLoad If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad NameLoad orelse Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad For NameStore NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad For NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str For NameStore NameLoad body TryExcept body Assign NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad For NameStore NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad For NameStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Pass decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign NameStore Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str For NameStore NameLoad body Assign NameStore Call NameLoad NameLoad If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameStore NameLoad Assert Call NameLoad NameLoad Str orelse If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameLoad Assign NameStore Dict orelse Raise Call NameLoad BinOpMod Str TupleLoad NameLoad If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign NameStore Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str TryExcept body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str For NameStore NameLoad body Assign TupleStore NameStore NameStore SubscriptLoad NameLoad Slice Num If BoolOpAnd CompareIn NameLoad AttributeLoad NameLoad attr CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Return BoolOpAnd CompareIn NameLoad AttributeLoad NameLoad attr CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Return BoolOpAnd CompareIn NameLoad AttributeLoad NameLoad attr CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return Call NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad decorator_list Assign NameStore NameLoad Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body For NameStore NameLoad body Expr Yield TupleLoad NameLoad NameLoad decorator_list Assign NameStore NameLoad Assign NameStore AttributeLoad NameLoad attr FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body For NameStore NameLoad body Expr Yield TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore Call NameLoad GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore TupleStore NameStore NameStore TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad BinOpAdd Call NameLoad NameLoad Call NameLoad NameLoad orelse For TupleStore TupleStore NameStore NameStore TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad BinOpAdd Call NameLoad GeneratorExp Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr NameLoad Num comprehension NameStore NameLoad Call NameLoad GeneratorExp Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr NameLoad Num comprehension NameStore NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad Call NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad Call NameLoad GeneratorExp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad Call NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad Call NameLoad GeneratorExp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIn NameLoad NameLoad body Return SubscriptLoad Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad Index Num orelse Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIn NameLoad NameLoad body Return SubscriptLoad Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad Index Num orelse Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad orelse Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr keyword BinOpMod Str AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr keyword NameLoad Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr orelse Assign TupleStore AttributeStore NameLoad attr AttributeStore NameLoad attr TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign NameStore NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr For NameStore NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr For NameStore NameLoad body Assign SubscriptStore NameLoad Index NameLoad Dict Assign SubscriptStore NameLoad Index NameLoad Dict For NameStore NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad For TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr body If CompareIn NameLoad NameLoad body Assign SubscriptStore NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad While CompareIn NameLoad NameLoad body AugAssignAdd NameStore Num Assign NameStore Call AttributeLoad NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index NameLoad NameLoad orelse If CompareIs NameLoad NameLoad body Assign NameStore Num Assign NameStore Dict Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Dict NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str For NameStore NameLoad body Assign NameStore Call NameLoad NameLoad If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameStore NameStore NameLoad orelse If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameStore NameLoad Assign NameStore NameLoad orelse If CompareEq NameLoad Num body Assign TupleStore NameStore NameStore NameLoad Assign NameStore Dict Assign NameStore NameLoad orelse Raise Call NameLoad BinOpMod Str TupleLoad NameLoad If CompareIn NameLoad AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad attr NameLoad Dict orelse Assign NameStore Dict If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad While CompareIn NameLoad NameLoad body AugAssignAdd NameStore Num Assign NameStore Call AttributeLoad NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str TryExcept body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad NameLoad If CompareIs NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr orelse TryExcept body Delete SubscriptDel NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad NameLoad NameLoad If CompareEq Call NameLoad NameLoad Num body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad If CompareNotEq NameLoad NameLoad body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str For NameStore NameLoad body TryExcept body Expr Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Slice Num handlers ExceptHandler type NameLoad body Pass decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str TryExcept body If CompareIs NameLoad NameLoad body Return CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad orelse Return CompareIn NameLoad SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str Assign NameStore Dict If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If CompareNotIn NameLoad NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad NameLoad orelse Expr Yield TupleLoad NameLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index NameLoad Num orelse For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If CompareNotIn NameLoad NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse Expr Yield TupleLoad NameLoad NameLoad Assign SubscriptStore NameLoad Index NameLoad Num Delete NameDel decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str TryExcept body If CompareIs NameLoad NameLoad body Return SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad orelse Return SubscriptLoad SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore NameStore NameStore NameLoad body Assign NameStore Call NameLoad ListComp Call NameLoad NameLoad comprehension NameStore Call AttributeLoad NameLoad attr Expr Yield TupleLoad NameLoad BinOpAdd NameLoad BoolOpAnd CompareIn NameLoad NameLoad Call NameLoad SubscriptLoad NameLoad Index NameLoad orelse For TupleStore NameStore NameStore NameLoad body Assign NameStore Call NameLoad ListComp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr If CompareIn NameLoad NameLoad body AugAssignAdd NameStore Call NameLoad ListComp Call AttributeLoad NameLoad attr NameLoad Num comprehension TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr Expr Yield TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str ImportFrom alias Assign NameStore Call NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If NameLoad body If NameLoad body Return ListComp TupleLoad NameLoad NameLoad NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr orelse Return ListComp TupleLoad NameLoad NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad comprehension NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr orelse If NameLoad body Return ListComp TupleLoad NameLoad NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad comprehension NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr orelse Return ListComp TupleLoad NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad AttributeLoad NameLoad attr attr CompareIn NameLoad NameLoad comprehension NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Return Call AttributeLoad NameLoad attr TryExcept body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Return Num Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr For NameStore NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr For NameStore NameLoad body Assign NameStore Dict Assign SubscriptStore NameLoad Index NameLoad NameLoad For TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr body If CompareIn NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return NameLoad decorator_list decorator_list ClassDef bases NameLoad NameLoad body Expr Str FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam defaults NameLoad NameLoad kwarg body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore NameLoad orelse TryExcept body Expr Call AttributeLoad NameLoad attr NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad Str If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareNotIn NameLoad AttributeLoad NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad Dict If CompareIn NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad NameLoad While CompareIn NameLoad NameLoad body AugAssignAdd NameStore Num Assign NameStore Call AttributeLoad NameLoad attr NameLoad Dict Expr Call AttributeLoad NameLoad attr NameLoad Assign SubscriptStore NameLoad Index NameLoad NameLoad orelse If CompareIs NameLoad NameLoad body Assign NameStore Num Assign NameStore Dict Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Dict NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad body Expr Str TryExcept body Assign NameStore SubscriptLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad NameLoad If CompareIs NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr orelse TryExcept body Delete SubscriptDel NameLoad Index NameLoad handlers ExceptHandler type NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad NameLoad NameLoad If CompareEq Call NameLoad NameLoad Num body Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad Delete SubscriptDel SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Index NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad NameLoad orelse Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse Expr Yield TupleLoad NameLoad NameLoad decorator_list Assign NameStore NameLoad FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If NameLoad body For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad NameLoad orelse Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse For TupleStore NameStore NameStore NameLoad body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body For TupleStore NameStore NameStore Call AttributeLoad NameLoad attr body If NameLoad body Expr Yield TupleLoad NameLoad NameLoad NameLoad orelse Expr Yield TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults NameLoad NameLoad NameLoad body Expr Str Return Call NameLoad Call AttributeLoad NameLoad attr NameLoad keyword NameLoad keyword NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call NameLoad Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore Call NameLoad GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore TupleStore NameStore NameStore TupleStore NameStore NameStore NameLoad body Assign NameStore Call NameLoad ListComp Call NameLoad NameLoad comprehension NameStore Call AttributeLoad NameLoad attr Assign NameStore Call NameLoad ListComp Call NameLoad NameLoad comprehension NameStore Call AttributeLoad NameLoad attr Expr Yield TupleLoad NameLoad BinOpAdd NameLoad NameLoad orelse For TupleStore TupleStore NameStore NameStore TupleStore NameStore NameStore NameLoad body Assign NameStore Call NameLoad ListComp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr AugAssignAdd NameStore Call NameLoad ListComp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Expr Yield TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad Call NameLoad ListComp Call NameLoad NameLoad comprehension NameStore Call AttributeLoad NameLoad attr orelse For TupleStore NameStore NameStore NameLoad body Assign NameStore Call NameLoad ListComp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Expr Yield TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults NameLoad NameLoad body Expr Str If CompareIs NameLoad NameLoad body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr orelse Assign NameStore GeneratorExp TupleLoad NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad comprehension NameStore Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body For TupleStore NameStore NameStore NameLoad body Expr Yield TupleLoad NameLoad Call NameLoad ListComp Call NameLoad NameLoad comprehension NameStore Call AttributeLoad NameLoad attr orelse For TupleStore NameStore NameStore NameLoad body Assign NameStore Call NameLoad ListComp Call AttributeLoad NameLoad attr NameLoad Num comprehension NameStore Call AttributeLoad NameLoad attr comprehension NameStore Call AttributeLoad NameLoad attr Expr Yield TupleLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Return Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str Assign NameStore Call NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad If CompareIs NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad orelse Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr comprehension TupleStore NameStore NameStore Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr For NameStore NameLoad body Assign SubscriptStore AttributeLoad NameLoad attr Index NameLoad SubscriptLoad AttributeLoad NameLoad attr Index NameLoad Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr Assign NameStore AttributeLoad NameLoad attr For NameStore NameLoad body Assign SubscriptStore NameLoad Index NameLoad Dict Assign SubscriptStore NameLoad Index NameLoad Dict For NameStore NameLoad body Assign NameStore SubscriptLoad NameLoad Index NameLoad For TupleStore NameStore NameStore Call AttributeLoad SubscriptLoad NameLoad Index NameLoad attr body If CompareIn NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr Assign SubscriptStore NameLoad Index NameLoad NameLoad Assign SubscriptStore SubscriptLoad NameLoad Index NameLoad Index NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults NameLoad body Expr Str If NameLoad body Assign NameStore Call AttributeLoad NameLoad attr keyword BinOpMod Str AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr GeneratorExp TupleLoad NameLoad NameLoad NameLoad Call NameLoad NameLoad comprehension TupleStore NameStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr keyword NameLoad keyword NameLoad Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call NameLoad AttributeLoad NameLoad attr orelse Assign TupleStore AttributeStore NameLoad attr AttributeStore NameLoad attr TupleLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign NameStore NameLoad Return NameLoad decorator_list decorator_list FunctionDef arguments args NameParam defaults body ImportFrom alias Raise Call NameLoad Str decorator_list
N/A N/A Base classes to benchmark timing of base class methods.

The idea is to use these classes to compare timing with the
current classes to see if adding features has slowed any methods.

The classes are named TimingGraph, TimingDiGraph, 
TimingMultiGraph and TimingMultiDiGraph
 copy deepcopy N/A networkx nx networkx.exception NetworkXError N/A networkx.convert convert N/A __author__ N/A N/A join N/A Aric Hagberg (hagberg@lanl.gov) Pieter Swart (swart@lanl.gov) Dan Schult(dschult@colgate.edu) TimingGraph N/A object N/A N/A 
    Base class for undirected graphs.

    A Graph stores nodes and edges with optional data, or attributes.

    Graphs hold undirected edges.  Self loops are allowed but multiple
    (parallel) edges are not.

    Nodes can be arbitrary (hashable) Python objects with optional
    key/value attributes.

    Edges are represented as links between nodes with optional
    key/value attributes.

    Parameters
    ----------
    data : input graph
        Data to initialize graph.  If data=None (default) an empty
        graph is created.  The data can be an edge list, or any
        NetworkX graph object.  If the corresponding optional Python
        packages are installed the data can also be a NumPy matrix
        or 2d ndarray, a SciPy sparse matrix, or a PyGraphviz graph.
    attr : keyword arguments, optional (default= no attributes)
        Attributes to add to graph as key=value pairs.

    See Also
    --------
    DiGraph
    MultiGraph
    MultiDiGraph

    Examples
    --------
    Create an empty graph structure (a "null graph") with no nodes and
    no edges.

    >>> G = nx.Graph()

    G can be grown in several ways.

    **Nodes:**

    Add one node at a time:

    >>> G.add_node(1)

    Add the nodes from any container (a list, dict, set or
    even the lines from a file or the nodes from another graph).

    >>> G.add_nodes_from([2,3])
    >>> G.add_nodes_from(range(100,110))
    >>> H=nx.Graph()
    >>> H.add_path([0,1,2,3,4,5,6,7,8,9])
    >>> G.add_nodes_from(H)

    In addition to strings and integers any hashable Python object
    (except None) can represent a node, e.g. a customized node object,
    or even another Graph.

    >>> G.add_node(H)

    **Edges:**

    G can also be grown by adding edges.

    Add one edge,

    >>> G.add_edge(1, 2)

    a list of edges,

    >>> G.add_edges_from([(1,2),(1,3)])

    or a collection of edges,

    >>> G.add_edges_from(H.edges())

    If some edges connect nodes not yet in the graph, the nodes
    are added automatically.  There are no errors when adding
    nodes or edges that already exist.

    **Attributes:**

    Each graph, node, and edge can hold key/value attribute pairs
    in an associated attribute dictionary (the keys must be hashable).
    By default these are empty, but can be added or changed using
    add_edge, add_node or direct manipulation of the attribute
    dictionaries named graph, node and edge respectively.

    >>> G = nx.Graph(day="Friday")
    >>> G.graph
    {'day': 'Friday'}

    Add node attributes using add_node(), add_nodes_from() or G.node

    >>> G.add_node(1, time='5pm')
    >>> G.add_nodes_from([3], time='2pm')
    >>> G.node[1]
    {'time': '5pm'}
    >>> G.node[1]['room'] = 714
    >>> del G.node[1]['room'] # remove attribute
    >>> list(G.nodes(data=True))
    [(1, {'time': '5pm'}), (3, {'time': '2pm'})]

    Warning: adding a node to G.node does not add it to the graph.

    Add edge attributes using add_edge(), add_edges_from(), subscript
    notation, or G.edge.

    >>> G.add_edge(1, 2, weight=4.7 )
    >>> G.add_edges_from([(3,4),(4,5)], color='red')
    >>> G.add_edges_from([(1,2,{'color':'blue'}), (2,3,{'weight':8})])
    >>> G[1][2]['weight'] = 4.7
    >>> G.edge[1][2]['weight'] = 4

    **Shortcuts:**

    Many common graph features allow python syntax to speed reporting.

    >>> 1 in G     # check if node in graph
    True
    >>> [n for n in G if n<3]   # iterate through nodes
    [1, 2]
    >>> len(G)  # number of nodes in graph
    5

    The fastest way to traverse all edges of a graph is via
    adjacency_iter(), but the edges() method is often more convenient.

    >>> for n,nbrsdict in G.adjacency_iter():
    ...     for nbr,eattr in nbrsdict.items():
    ...        if 'weight' in eattr:
    ...            (n,nbr,eattr['weight'])
    (1, 2, 4)
    (2, 1, 4)
    (2, 3, 8)
    (3, 2, 8)
    >>> [ (u,v,edata['weight']) for u,v,edata in G.edges(data=True) if 'weight' in edata ]
    [(1, 2, 4), (2, 3, 8)]

    **Reporting:**

    Simple graph information is obtained using methods.
    Iterator versions of many reporting methods exist for efficiency.
    Methods exist for reporting nodes(), edges(), neighbors() and degree()
    as well as the number of nodes and edges.

    For details on these and other miscellaneous methods, see below.
     __init__ N/A N/A self data N/A None attr N/A N/A Initialize a graph with edges, name, graph attributes.

        Parameters
        ----------
        data : input graph
            Data to initialize graph.  If data=None (default) an empty
            graph is created.  The data can be an edge list, or any
            NetworkX graph object.  If the corresponding optional Python
            packages are installed the data can also be a NumPy matrix
            or 2d ndarray, a SciPy sparse matrix, or a PyGraphviz graph.
        name : string, optional (default='')
            An optional name for the graph.
        attr : keyword arguments, optional (default= no attributes)
            Attributes to add to graph as key=value pairs.

        See Also
        --------
        convert

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G = nx.Graph(name='my graph')
        >>> e = [(1,2),(2,3),(3,4)] # list of edges
        >>> G = nx.Graph(e)

        Arbitrary graph attribute pairs (key=value) may be assigned

        >>> G=nx.Graph(e, day="Friday")
        >>> G.graph
        {'day': 'Friday'}

         N/A N/A self graph N/A N/A N/A self node N/A N/A N/A self adj N/A N/A N/A data None N/A N/A N/A N/A convert to_networkx_graph data create_using self N/A N/A N/A N/A self graph update attr N/A N/A self edge N/A self adj N/A name N/A N/A self N/A N/A N/A N/A N/A N/A self graph get name N/A property name N/A N/A self s N/A N/A N/A N/A N/A self graph N/A name s N/A N/A name setter __str__ N/A N/A self N/A N/A N/A Return the graph name.

        Returns
        -------
        name : string
            The name of the graph.

        Examples
        --------
        >>> G = nx.Graph(name='foo')
        >>> str(G)
        'foo'
         N/A N/A self name N/A __iter__ N/A N/A self N/A N/A N/A Iterate over the nodes. Use the expression 'for n in G'.

        Returns
        -------
        niter : iterator
            An iterator over all nodes in the graph.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
         N/A N/A iter N/A self node N/A __contains__ N/A N/A self n N/A N/A N/A Return True if n is a node, False otherwise. Use the expression
        'n in G'.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> 1 in G
        True
         N/A N/A N/A N/A n N/A self node N/A N/A N/A TypeError N/A N/A False N/A __len__ N/A N/A self N/A N/A N/A Return the number of nodes. Use the expression 'len(G)'.

        Returns
        -------
        nnodes : int
            The number of nodes in the graph.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> len(G)
        4

         N/A N/A len N/A self node N/A __getitem__ N/A N/A self n N/A N/A N/A Return a dict of neighbors of node n.  Use the expression 'G[n]'.

        Parameters
        ----------
        n : node
           A node in the graph.

        Returns
        -------
        adj_dict : dictionary
           The adjacency dictionary for nodes connected to n.

        Notes
        -----
        G[n] is similar to G.neighbors(n) but the internal data dictionary
        is returned instead of a list.

        Assigning G[n] will corrupt the internal graph data structure.
        Use G[n] for reading data only.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G[0]
        {1: {}}
         N/A N/A N/A self adj N/A n N/A add_node N/A N/A self n attr_dict N/A None attr N/A N/A Add a single node n and update node attributes.

        Parameters
        ----------
        n : node
            A node can be any hashable Python object except None.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of node attributes.  Key/value pairs will
            update existing data associated with the node.
        attr : keyword arguments, optional
            Set or change attributes using key=value.

        See Also
        --------
        add_nodes_from

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_node(1)
        >>> G.add_node('Hello')
        >>> K3 = nx.Graph([(0,1),(1,2),(2,0)])
        >>> G.add_node(K3)
        >>> G.number_of_nodes()
        3

        Use keywords set/change node attributes:

        >>> G.add_node(1,size=10)
        >>> G.add_node(3,weight=0.4,UTM=('13S',382871,3972649))

        Notes
        -----
        A hashable object is one that can be used as a key in a Python
        dictionary. This includes strings, numbers, tuples of strings
        and numbers, etc.

        On many platforms hashable items also include mutables such as
        NetworkX Graphs, though one should be careful that the hash
        doesn't change on mutables.
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A N/A n N/A self node N/A N/A N/A N/A self adj N/A n N/A N/A N/A N/A self node N/A n attr_dict N/A N/A N/A N/A N/A N/A self node N/A n update attr_dict N/A add_nodes_from N/A N/A self nodes N/A attr N/A N/A Add multiple nodes.

        Parameters
        ----------
        nodes : iterable container
            A container of nodes (list, dict, set, etc.).
            OR
            A container of (node, attribute dict) tuples.
            Node attributes are updated using the attribute dict.
        attr : keyword arguments, optional (default= no attributes)
            Update attributes for all nodes in nodes.
            Node attributes specified in nodes as a tuple
            take precedence over attributes specified generally.

        See Also
        --------
        add_node

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_nodes_from('Hello')
        >>> K3 = nx.Graph([(0,1),(1,2),(2,0)])
        >>> G.add_nodes_from(K3)
        >>> sorted(G.nodes(),key=str)
        [0, 1, 2, 'H', 'e', 'l', 'o']

        Use keywords to update specific node attributes for every node.

        >>> G.add_nodes_from([1,2], size=10)
        >>> G.add_nodes_from([3,4], weight=0.4)

        Use (node, attrdict) tuples to update attributes for specific
        nodes.

        >>> G.add_nodes_from([(1,dict(size=11)), (2,{'color':'blue'})])
        >>> G.node[1]['size']
        11
        >>> H = nx.Graph()
        >>> H.add_nodes_from(G.nodes(data=True))
        >>> H.node[1]['size']
        11

         N/A n nodes N/A N/A N/A N/A N/A n N/A self node N/A N/A N/A N/A self adj N/A n N/A N/A N/A N/A self node N/A n N/A N/A attr copy N/A N/A N/A N/A N/A N/A self node N/A n update attr N/A N/A N/A TypeError N/A N/A N/A nn ndict n N/A N/A nn N/A self node N/A N/A N/A N/A self adj N/A nn N/A N/A newdict N/A N/A attr copy N/A N/A N/A newdict update ndict N/A N/A N/A self node N/A nn newdict N/A N/A olddict N/A N/A self node N/A nn N/A N/A N/A olddict update attr N/A N/A N/A olddict update ndict N/A remove_node N/A N/A self n N/A N/A N/A Remove node n.

        Removes the node n and all adjacent edges.
        Attempting to remove a non-existent node will raise an exception.

        Parameters
        ----------
        n : node
           A node in the graph

        Raises
        -------
        NetworkXError
           If n is not in the graph.

        See Also
        --------
        remove_nodes_from

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> G.edges()
        [(0, 1), (1, 2)]
        >>> G.remove_node(1)
        >>> G.edges()
        []

         N/A adj N/A self adj N/A N/A N/A nbrs N/A list N/A N/A N/A adj N/A n keys N/A N/A N/A self node N/A n N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The node %s is not in the graph. N/A n N/A u nbrs N/A N/A N/A N/A adj N/A u N/A n N/A N/A adj N/A n N/A remove_nodes_from N/A N/A self nodes N/A N/A N/A Remove multiple nodes.

        Parameters
        ----------
        nodes : iterable container
            A container of nodes (list, dict, set, etc.).  If a node
            in the container is not in the graph it is silently
            ignored.

        See Also
        --------
        remove_node

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> e = list(G.nodes())
        >>> e
        [0, 1, 2]
        >>> G.remove_nodes_from(e)
        >>> list(G.nodes())
        []

         N/A adj N/A self adj N/A n nodes N/A N/A N/A N/A N/A N/A self node N/A n N/A u N/A list N/A N/A N/A adj N/A n keys N/A N/A N/A N/A adj N/A u N/A n N/A N/A adj N/A n N/A N/A N/A KeyError N/A N/A N/A nodes N/A N/A self data N/A False N/A N/A Return an iterator over the nodes.

        Parameters
        ----------
        data : boolean, optional (default=False)
               If False the iterator returns nodes.  If True
               return a two-tuple of node and node data dictionary

        Returns
        -------
        niter : iterator
            An iterator over nodes.  If data=True the iterator gives
            two-tuples containing (node, node data, dictionary)

        Notes
        -----
        If the node data is not required it is simpler and equivalent
        to use the expression 'for n in G'.

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])

        >>> [d for n,d in G.nodes(data=True)]
        [{}, {}, {}]
         N/A data N/A N/A N/A iter N/A N/A N/A self node items N/A N/A iter N/A self node N/A nodes N/A N/A self data N/A False N/A N/A Return a list of the nodes in the graph.

        Parameters
        ----------
        data : boolean, optional (default=False)
               If False return a list of nodes.  If True return a
               two-tuple of node and node data dictionary

        Returns
        -------
        nlist : list
            A list of nodes.  If data=True a list of two-tuples containing
            (node, node data dictionary).

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> list(G.nodes())
        [0, 1, 2]
        >>> G.add_node(1, time='5pm')
        >>> list(G.nodes(data=True))
        [(0, {}), (1, {'time': '5pm'}), (2, {})]
         N/A N/A list N/A N/A self nodes data data N/A number_of_nodes N/A N/A self N/A N/A N/A Return the number of nodes in the graph.

        Returns
        -------
        nnodes : int
            The number of nodes in the graph.

        See Also
        --------
        order, __len__  which are identical

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> len(G)
        3
         N/A N/A len N/A self node N/A order N/A N/A self N/A N/A N/A Return the number of nodes in the graph.

        Returns
        -------
        nnodes : int
            The number of nodes in the graph.

        See Also
        --------
        number_of_nodes, __len__  which are identical

         N/A N/A len N/A self node N/A has_node N/A N/A self n N/A N/A N/A Return True if the graph contains the node n.

        Parameters
        ----------
        n : node

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> G.has_node(0)
        True

        It is more readable and simpler to use

        >>> 0 in G
        True

         N/A N/A N/A N/A n N/A self node N/A N/A N/A TypeError N/A N/A False N/A add_edge N/A N/A self u v attr_dict N/A None attr N/A N/A Add an edge between u and v.

        The nodes u and v will be automatically added if they are
        not already in the graph.

        Edge attributes can be specified with keywords or by providing
        a dictionary with key/value pairs.  See examples below.

        Parameters
        ----------
        u,v : nodes
            Nodes can be, for example, strings or numbers.
            Nodes must be hashable (and not None) Python objects.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with the edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.

        See Also
        --------
        add_edges_from : add a collection of edges

        Notes
        -----
        Adding an edge that already exists updates the edge data.

        Many NetworkX algorithms designed for weighted graphs use as
        the edge weight a numerical value assigned to a keyword
        which by default is 'weight'.

        Examples
        --------
        The following all add the edge e=(1,2) to graph G:

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> e = (1,2)
        >>> G.add_edge(1, 2)           # explicit two-node form
        >>> G.add_edge(*e)             # single edge as tuple of two nodes
        >>> G.add_edges_from( [(1,2)] ) # add edges from iterable container

        Associate data to edges using keywords:

        >>> G.add_edge(1, 2, weight=3)
        >>> G.add_edge(1, 3, weight=7, capacity=15, length=342.7)
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A N/A u N/A self node N/A N/A N/A N/A self adj N/A u N/A N/A N/A N/A self node N/A u N/A N/A N/A v N/A self node N/A N/A N/A N/A self adj N/A v N/A N/A N/A N/A self node N/A v N/A N/A datadict N/A N/A N/A N/A self adj N/A u get v N/A N/A N/A N/A datadict update attr_dict N/A N/A N/A N/A self adj N/A u N/A v datadict N/A N/A N/A N/A self adj N/A v N/A u datadict N/A add_edges_from N/A N/A self ebunch attr_dict N/A None attr N/A N/A Add all the edges in ebunch.

        Parameters
        ----------
        ebunch : container of edges
            Each edge given in the container will be added to the
            graph. The edges must be given as as 2-tuples (u,v) or
            3-tuples (u,v,d) where d is a dictionary containing edge
            data.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with each edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.


        See Also
        --------
        add_edge : add a single edge
        add_weighted_edges_from : convenient way to add weighted edges

        Notes
        -----
        Adding the same edge twice has no effect but any edge data
        will be updated when each duplicate edge is added.

        Edge attributes specified in edges as a tuple take precedence
        over attributes specified generally.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edges_from([(0,1),(1,2)]) # using a list of edge tuples
        >>> e = zip(range(0,3),range(1,4))
        >>> G.add_edges_from(e) # Add the path graph 0-1-2-3

        Associate data to edges

        >>> G.add_edges_from([(1,2),(2,3)], weight=3)
        >>> G.add_edges_from([(3,4),(1,4)], label='WN2898')
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A e ebunch N/A N/A ne N/A len e N/A N/A ne 3 N/A N/A N/A u v dd e N/A N/A N/A ne 2 N/A N/A N/A u v e N/A dd N/A N/A N/A N/A NetworkXError N/A Edge tuple %s must be a 2-tuple or 3-tuple. N/A e N/A N/A u N/A self node N/A N/A N/A N/A self adj N/A u N/A N/A N/A N/A self node N/A u N/A N/A N/A v N/A self node N/A N/A N/A N/A self adj N/A v N/A N/A N/A N/A self node N/A v N/A N/A datadict N/A N/A N/A N/A self adj N/A u get v N/A N/A N/A N/A datadict update attr_dict N/A N/A N/A datadict update dd N/A N/A N/A N/A self adj N/A u N/A v datadict N/A N/A N/A N/A self adj N/A v N/A u datadict N/A add_weighted_edges_from N/A N/A self ebunch weight N/A weight attr N/A N/A Add all the edges in ebunch as weighted edges with specified
        weights.

        Parameters
        ----------
        ebunch : container of edges
            Each edge given in the list or container will be added
            to the graph. The edges must be given as 3-tuples (u,v,w)
            where w is a number.
        weight : string, optional (default= 'weight')
            The attribute name for the edge weights to be added.
        attr : keyword arguments, optional (default= no attributes)
            Edge attributes to add/update for all edges.

        See Also
        --------
        add_edge : add a single edge
        add_edges_from : add multiple edges

        Notes
        -----
        Adding the same edge twice for Graph/DiGraph simply updates
        the edge data.  For MultiGraph/MultiDiGraph, duplicate edges
        are stored.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_weighted_edges_from([(0,1,3.0),(1,2,7.5)])
         N/A N/A N/A self add_edges_from N/A N/A u v N/A weight d N/A N/A u v d ebunch attr N/A remove_edge N/A N/A self u v N/A N/A N/A Remove the edge between u and v.

        Parameters
        ----------
        u,v: nodes
            Remove the edge between nodes u and v.

        Raises
        ------
        NetworkXError
            If there is not an edge between u and v.

        See Also
        --------
        remove_edges_from : remove a collection of edges

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.remove_edge(0,1)
        >>> e = (1,2)
        >>> G.remove_edge(*e) # unpacks e from an edge tuple
        >>> e = (2,3,{'weight':7}) # an edge with attribute data
        >>> G.remove_edge(*e[:2]) # select first part of edge tuple
         N/A N/A N/A N/A N/A N/A self adj N/A u N/A v N/A N/A u v N/A N/A N/A N/A N/A self adj N/A v N/A u N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The edge %s-%s is not in the graph N/A u v N/A remove_edges_from N/A N/A self ebunch N/A N/A N/A Remove all edges specified in ebunch.

        Parameters
        ----------
        ebunch: list or container of edge tuples
            Each edge given in the list or container will be removed
            from the graph. The edges can be:

                - 2-tuples (u,v) edge between u and v.
                - 3-tuples (u,v,k) where k is ignored.

        See Also
        --------
        remove_edge : remove a single edge

        Notes
        -----
        Will fail silently if an edge in ebunch is not in the graph.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> ebunch=[(1,2),(2,3)]
        >>> G.remove_edges_from(ebunch)
         N/A adj N/A self adj N/A e ebunch N/A N/A N/A u v N/A e N/A 2 N/A N/A N/A u adj N/A v N/A adj N/A u N/A N/A N/A N/A adj N/A u N/A v N/A N/A u v N/A N/A N/A N/A adj N/A v N/A u N/A has_edge N/A N/A self u v N/A N/A N/A Return True if the edge (u,v) is in the graph.

        Parameters
        ----------
        u,v : nodes
            Nodes can be, for example, strings or numbers.
            Nodes must be hashable (and not None) Python objects.

        Returns
        -------
        edge_ind : bool
            True if edge is in the graph, False otherwise.

        Examples
        --------
        Can be called either using two nodes u,v or edge tuple (u,v)

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.has_edge(0,1)  # using two nodes
        True
        >>> e = (0,1)
        >>> G.has_edge(*e)  #  e is a 2-tuple (u,v)
        True
        >>> e = (0,1,{'weight':7})
        >>> G.has_edge(*e[:2])  # e is a 3-tuple (u,v,data_dictionary)
        True

        The following syntax are all equivalent:

        >>> G.has_edge(0,1)
        True
        >>> 1 in G[0]  # though this gives KeyError if 0 not in G
        True

         N/A N/A N/A N/A v N/A N/A self adj N/A u N/A N/A N/A KeyError N/A N/A False N/A neighbors N/A N/A self n N/A N/A N/A Return a list of the nodes connected to the node n.

        Parameters
        ----------
        n : node
           A node in the graph

        Returns
        -------
        nlist : list
            A list of nodes that are adjacent to n.

        Raises
        ------
        NetworkXError
            If the node n is not in the graph.

        Notes
        -----
        It is usually more convenient (and faster) to access the
        adjacency dictionary as G[n]:

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edge('a','b',weight=7)
        >>> G['a']
        {'b': {'weight': 7}}

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.neighbors(0)
        [1]

         N/A N/A N/A N/A list N/A N/A self adj N/A n N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The node %s is not in the graph. N/A n N/A neighbors_iter N/A N/A self n N/A N/A N/A Return an iterator over all neighbors of node n.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> [n for n in G.neighbors_iter(0)]
        [1]

        Notes
        -----
        It is faster to use the idiom "in G[0]", e.g.

        >>> G = nx.path_graph(4)
        >>> [n for n in G[0]]
        [1]
         N/A N/A N/A N/A iter N/A N/A self adj N/A n N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The node %s is not in the graph. N/A n N/A edges N/A N/A self nbunch data N/A None False N/A N/A Return a list of edges.

        Edges are returned as tuples with optional data
        in the order (node, neighbor, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            Return two tuples (u,v) (False) or three-tuples (u,v,data) (True).

        Returns
        --------
        edge_list: list of edge tuples
            Edges that are adjacent to any node in nbunch, or a list
            of all edges if nbunch is not specified.

        See Also
        --------
        edges_iter : return an iterator over the edges

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs this returns the out-edges.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.edges()
        [(0, 1), (1, 2), (2, 3)]
        >>> G.edges(data=True) # default edge data is {} (empty dictionary)
        [(0, 1, {}), (1, 2, {}), (2, 3, {})]
        >>> G.edges([0,3])
        [(0, 1), (3, 2)]
        >>> G.edges(0)
        [(0, 1)]

         N/A N/A list N/A N/A self edges_iter nbunch data N/A edges_iter N/A N/A self nbunch data N/A None False N/A N/A Return an iterator over the edges.

        Edges are returned as tuples with optional data
        in the order (node, neighbor, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict in 3-tuple (u,v,data).

        Returns
        -------
        edge_iter : iterator
            An iterator of (u,v) or (u,v,d) tuples of edges.

        See Also
        --------
        edges : return a list of edges

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs this returns the out-edges.

        Examples
        --------
        >>> G = nx.Graph()   # or MultiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> [e for e in G.edges_iter()]
        [(0, 1), (1, 2), (2, 3)]
        >>> list(G.edges_iter(data=True)) # default data is {} (empty dict)
        [(0, 1, {}), (1, 2, {}), (2, 3, {})]
        >>> list(G.edges_iter([0,3]))
        [(0, 1), (3, 2)]
        >>> list(G.edges_iter(0))
        [(0, 1)]

         N/A seen N/A N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self adj items N/A N/A nodes_nbrs N/A N/A n N/A N/A self adj N/A n N/A n N/A N/A self nbunch_iter nbunch N/A data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr data N/A N/A nbrs items N/A N/A N/A nbr seen N/A N/A N/A N/A n nbr data N/A N/A seen N/A n 1 N/A N/A N/A n nbrs nodes_nbrs N/A N/A nbr nbrs N/A N/A N/A nbr seen N/A N/A N/A N/A n nbr N/A N/A seen N/A n 1 N/A seen N/A get_edge_data N/A N/A self u v default N/A None N/A N/A Return the attribute dictionary associated with edge (u,v).

        Parameters
        ----------
        u,v : nodes
        default:  any Python object (default=None)
            Value to return if the edge (u,v) is not found.

        Returns
        -------
        edge_dict : dictionary
            The edge attribute dictionary.

        Notes
        -----
        It is faster to use G[u][v].

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G[0][1]
        {}

        Warning: Assigning G[u][v] corrupts the graph data structure.
        But it is safe to assign attributes to that dictionary,

        >>> G[0][1]['weight'] = 7
        >>> G[0][1]['weight']
        7
        >>> G[1][0]['weight']
        7

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.get_edge_data(0,1) # default edge data is {}
        {}
        >>> e = (0,1)
        >>> G.get_edge_data(*e) # tuple form
        {}
        >>> G.get_edge_data('a','b',default=0) # edge not in graph, return 0
        0
         N/A N/A N/A N/A N/A N/A self adj N/A u N/A v N/A N/A N/A KeyError N/A N/A default N/A adjacency_list N/A N/A self N/A N/A N/A Return an adjacency list representation of the graph.

        The output adjacency list is in the order of G.nodes().
        For directed graphs, only outgoing adjacencies are included.

        Returns
        -------
        adj_list : lists of lists
            The adjacency structure of the graph as a list of lists.

        See Also
        --------
        adjacency_iter

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.adjacency_list() # in order given by G.nodes()
        [[1], [0, 2], [1, 3], [2]]

         N/A N/A list N/A map list N/A iter N/A N/A N/A self adj values N/A adjacency_iter N/A N/A self N/A N/A N/A Return an iterator of (node, adjacency dict) tuples for all nodes.

        This is the fastest way to look at every edge.
        For directed graphs, only outgoing adjacencies are included.

        Returns
        -------
        adj_iter : iterator
           An iterator of (node, adjacency dictionary) for all nodes in
           the graph.

        See Also
        --------
        adjacency_list

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> [(n,nbrdict) for n,nbrdict in G.adjacency_iter()]
        [(0, {1: {}}), (1, {0: {}, 2: {}}), (2, {1: {}, 3: {}}), (3, {2: {}})]

         N/A N/A iter N/A N/A N/A self adj items N/A degree N/A N/A self nbunch weight N/A None None N/A N/A Return the degree of a node or nodes.

        The node degree is the number of edges adjacent to that node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd : dictionary, or number
            A dictionary with nodes as keys and degree as values or
            a number if a single node is specified.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.degree(0)
        1
        >>> G.degree([0,1])
        {0: 1, 1: 2}
        >>> list(G.degree([0,1]).values())
        [1, 2]

         N/A N/A nbunch self N/A N/A N/A N/A next N/A N/A self degree_iter nbunch weight N/A 1 N/A N/A N/A dict N/A N/A self degree_iter nbunch weight N/A degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, degree).

        The node degree is the number of edges adjacent to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, degree).

        See Also
        --------
        degree

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> list(G.degree_iter(0)) # node 0 with degree 1
        [(0, 1)]
        >>> list(G.degree_iter([0,1]))
        [(0, 1), (1, 2)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self adj items N/A N/A nodes_nbrs N/A N/A n N/A N/A self adj N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A N/A len nbrs N/A n nbrs N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A N/A sum N/A N/A N/A N/A nbrs N/A nbr get weight 1 N/A nbr nbrs N/A N/A n nbrs N/A N/A N/A nbrs N/A n get weight 1 N/A clear N/A N/A self N/A N/A N/A Remove all nodes and edges from the graph.

        This also removes the name, and all graph, node, and edge attributes.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.clear()
        >>> list(G.nodes())
        []
        >>> list(G.edges())
        []

         N/A N/A self name N/A N/A N/A N/A self adj clear N/A N/A N/A N/A self node clear N/A N/A N/A N/A self graph clear N/A copy N/A N/A self N/A N/A N/A Return a copy of the graph.

        Returns
        -------
        G : Graph
            A copy of the graph.

        See Also
        --------
        to_directed: return a directed copy of the graph.

        Notes
        -----
        This makes a complete copy of the graph including all of the
        node or edge attributes.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> H = G.copy()

         N/A N/A deepcopy self N/A is_multigraph N/A N/A self N/A N/A N/A Return True if graph is a multigraph, False otherwise. N/A False N/A is_directed N/A N/A self N/A N/A N/A Return True if graph is directed, False otherwise. N/A False N/A to_directed N/A N/A self N/A N/A N/A Return a directed representation of the graph.

        Returns
        -------
        G : DiGraph
            A directed graph with the same name, same nodes, and with
            each edge (u,v,data) replaced by two directed edges
            (u,v,data) and (v,u,data).

        Notes
        -----
        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar D=DiGraph(G) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.

        Examples
        --------
        >>> G = nx.Graph()   # or MultiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1), (1, 0)]

        If already directed, return a (deep) copy

        >>> G = nx.DiGraph()   # or MultiDiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1)]
         networkx DiGraph N/A G N/A DiGraph N/A N/A G name N/A self name N/A N/A N/A G add_nodes_from self N/A N/A N/A G add_edges_from N/A N/A u v N/A deepcopy data N/A N/A u nbrs N/A N/A self adjacency_iter N/A N/A v data N/A N/A nbrs items N/A N/A G graph N/A deepcopy N/A self graph N/A N/A G node N/A deepcopy N/A self node N/A G N/A to_undirected N/A N/A self N/A N/A N/A Return an undirected copy of the graph.

        Returns
        -------
        G : Graph/MultiGraph
            A deepcopy of the graph.

        See Also
        --------
        copy, add_edge, add_edges_from

        Notes
        -----
        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar G=DiGraph(D) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.

        Examples
        --------
        >>> G = nx.Graph()   # or MultiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1), (1, 0)]
        >>> G2 = H.to_undirected()
        >>> G2.edges()
        [(0, 1)]
         N/A N/A deepcopy self N/A subgraph N/A N/A self nbunch N/A N/A N/A Return the subgraph induced on nodes in nbunch.

        The induced subgraph of the graph contains the nodes in nbunch
        and the edges between those nodes.

        Parameters
        ----------
        nbunch : list, iterable
            A container of nodes which will be iterated through once.

        Returns
        -------
        G : Graph
            A subgraph of the graph with the same edge attributes.

        Notes
        -----
        The graph, edge or node attributes just point to the original graph.
        So changes to the node or edge structure will not be reflected in
        the original graph while changes to the attributes will.

        To create a subgraph with its own copy of the edge/node attributes use:
        nx.Graph(G.subgraph(nbunch))

        If edge attributes are containers, a deep copy can be obtained using:
        G.subgraph(nbunch).copy()

        For an inplace reduction of a graph to a subgraph you can remove nodes:
        G.remove_nodes_from([ n in G if n not in set(nbunch)])

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> H = G.subgraph([0,1,2])
        >>> H.edges()
        [(0, 1), (1, 2)]
         N/A bunch N/A N/A self nbunch_iter nbunch N/A H N/A N/A self __class__ N/A n bunch N/A N/A N/A N/A H node N/A n N/A N/A self node N/A n N/A H_adj N/A H adj N/A self_adj N/A self adj N/A n N/A H node N/A N/A Hnbrs N/A N/A N/A H_adj N/A n Hnbrs N/A N/A nbr d N/A N/A N/A self_adj N/A n items N/A N/A N/A nbr H_adj N/A N/A N/A Hnbrs N/A nbr d N/A N/A N/A H_adj N/A nbr N/A n d N/A N/A H graph N/A self graph N/A H N/A nodes_with_selfloops N/A N/A self N/A N/A N/A Return a list of nodes with self loops.

        A node with a self loop has an edge with both ends adjacent
        to that node.

        Returns
        -------
        nodelist : list
            A list of nodes with self loops.

        See Also
        --------
        selfloop_edges, number_of_selfloops

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edge(1,1)
        >>> G.add_edge(1,2)
        >>> list(G.nodes_with_selfloops())
        [1]
         N/A N/A n N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A selfloop_edges N/A N/A self data N/A False N/A N/A Return a list of selfloop edges.

        A selfloop edge has the same node at both ends.

        Parameters
        -----------
        data : bool, optional (default=False)
            Return selfloop edges as two tuples (u,v) (data=False)
            or three-tuples (u,v,data) (data=True)

        Returns
        -------
        edgelist : list of edge tuples
            A list of all selfloop edges.

        See Also
        --------
        nodes_with_selfloops, number_of_selfloops

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edge(1,1)
        >>> G.add_edge(1,2)
        >>> G.selfloop_edges()
        [(1, 1)]
        >>> G.selfloop_edges(data=True)
        [(1, 1, {})]
         N/A data N/A N/A N/A N/A n n N/A nbrs N/A n N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A N/A N/A N/A n n N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A number_of_selfloops N/A N/A self N/A N/A N/A Return the number of selfloop edges.

        A selfloop edge has the same node at both ends.

        Returns
        -------
        nloops : int
            The number of selfloops.

        See Also
        --------
        nodes_with_selfloops, selfloop_edges

        Examples
        --------
        >>> G=nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edge(1,1)
        >>> G.add_edge(1,2)
        >>> G.number_of_selfloops()
        1
         N/A N/A len N/A N/A self selfloop_edges N/A size N/A N/A self weight N/A None N/A N/A Return the number of edges.

        Parameters
        ----------
        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.

        Returns
        -------
        nedges : int
            The number of edges or sum of edge weights in the graph.

        See Also
        --------
        number_of_edges

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.size()
        3

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edge('a','b',weight=2)
        >>> G.add_edge('b','c',weight=4)
        >>> G.size()
        2
        >>> G.size(weight='weight')
        6.0
         N/A s N/A N/A sum N/A N/A N/A N/A self degree weight weight values 2 N/A N/A weight None N/A N/A N/A int s N/A N/A N/A float s N/A number_of_edges N/A N/A self u v N/A None None N/A N/A Return the number of edges between two nodes.

        Parameters
        ----------
        u,v : nodes, optional (default=all edges)
            If u and v are specified, return the number of edges between
            u and v. Otherwise return the total number of all edges.

        Returns
        -------
        nedges : int
            The number of edges in the graph.  If nodes u and v are specified
            return the number of edges between those nodes.

        See Also
        --------
        size

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.number_of_edges()
        3
        >>> G.number_of_edges(0,1)
        1
        >>> e = (0,1)
        >>> G.number_of_edges(*e)
        1
         N/A N/A u None N/A N/A N/A int N/A N/A self size N/A N/A v N/A N/A self adj N/A u N/A N/A 1 N/A N/A 0 N/A add_star N/A N/A self nodes N/A attr N/A N/A Add a star.

        The first node in nodes is the middle of the star.  It is connected
        to all other nodes.

        Parameters
        ----------
        nodes : iterable container
            A container of nodes.
        attr : keyword arguments, optional (default= no attributes)
            Attributes to add to every edge in star.

        See Also
        --------
        add_path, add_cycle

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_star([0,1,2,3])
        >>> G.add_star([10,11,12],weight=2)

         N/A nlist N/A list nodes N/A v N/A nlist N/A 0 N/A edges N/A N/A v n N/A n N/A nlist N/A 1 N/A N/A N/A self add_edges_from edges attr N/A add_path N/A N/A self nodes N/A attr N/A N/A Add a path.

        Parameters
        ----------
        nodes : iterable container
            A container of nodes.  A path will be constructed from
            the nodes (in order) and added to the graph.
        attr : keyword arguments, optional (default= no attributes)
            Attributes to add to every edge in path.

        See Also
        --------
        add_star, add_cycle

        Examples
        --------
        >>> G=nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.add_path([10,11,12],weight=7)

         N/A nlist N/A list nodes N/A edges N/A zip N/A nlist N/A -1 N/A nlist N/A 1 N/A N/A N/A self add_edges_from edges attr N/A add_cycle N/A N/A self nodes N/A attr N/A N/A Add a cycle.

        Parameters
        ----------
        nodes: iterable container
            A container of nodes.  A cycle will be constructed from
            the nodes (in order) and added to the graph.
        attr : keyword arguments, optional (default= no attributes)
            Attributes to add to every edge in cycle.

        See Also
        --------
        add_path, add_star

        Examples
        --------
        >>> G=nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_cycle([0,1,2,3])
        >>> G.add_cycle([10,11,12],weight=7)

         N/A nlist N/A list nodes N/A edges N/A zip nlist N/A N/A nlist N/A 1 N/A N/A nlist N/A 0 N/A N/A N/A self add_edges_from edges attr N/A nbunch_iter N/A N/A self nbunch N/A None N/A N/A Return an iterator of nodes contained in nbunch that are
        also in the graph.

        The nodes in nbunch are checked for membership in the graph
        and if not are silently ignored.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        Returns
        -------
        niter : iterator
            An iterator over nodes in nbunch that are also in the graph.
            If nbunch is None, iterate over all nodes in the graph.

        Raises
        ------
        NetworkXError
            If nbunch is not a node or or sequence of nodes.
            If a node in nbunch is not hashable.

        See Also
        --------
        Graph.__iter__

        Notes
        -----
        When nbunch is an iterator, the returned iterator yields values
        directly from nbunch, becoming exhausted when nbunch is exhausted.

        To test whether nbunch is a single node, one can use
        "if nbunch in self:", even after processing with this routine.

        If nbunch is not a node or a (possibly empty) sequence/iterator
        or None, a NetworkXError is raised.  Also, if any object in
        nbunch is not hashable, a NetworkXError is raised.
         N/A N/A nbunch None N/A N/A bunch N/A iter N/A N/A N/A self adj keys N/A N/A N/A nbunch self N/A N/A bunch N/A iter N/A nbunch N/A bunch_iter N/A N/A nlist adj N/A N/A N/A N/A N/A n nlist N/A N/A N/A n adj N/A N/A N/A n N/A N/A N/A TypeError N/A e N/A N/A message N/A N/A e args N/A 0 N/A sys N/A N/A N/A N/A sys stdout write message N/A N/A iter message N/A N/A N/A NetworkXError nbunch is not a node or a sequence of nodes. N/A N/A N/A hashable message N/A N/A N/A NetworkXError N/A Node %s in the sequence nbunch is not a valid node. n N/A N/A N/A N/A bunch N/A bunch_iter nbunch N/A self adj N/A bunch N/A N/A TimingDiGraph N/A TimingGraph N/A N/A 
    Base class for directed graphs.

    A DiGraph stores nodes and edges with optional data, or attributes.

    DiGraphs hold directed edges.  Self loops are allowed but multiple
    (parallel) edges are not.

    Nodes can be arbitrary (hashable) Python objects with optional
    key/value attributes.

    Edges are represented as links between nodes with optional
    key/value attributes.

    Parameters
    ----------
    data : input graph
        Data to initialize graph.  If data=None (default) an empty
        graph is created.  The data can be an edge list, or any
        NetworkX graph object.  If the corresponding optional Python
        packages are installed the data can also be a NumPy matrix
        or 2d ndarray, a SciPy sparse matrix, or a PyGraphviz graph.
    attr : keyword arguments, optional (default= no attributes)
        Attributes to add to graph as key=value pairs.

    See Also
    --------
    Graph
    MultiGraph
    MultiDiGraph

    Examples
    --------
    Create an empty graph structure (a "null graph") with no nodes and
    no edges.

    >>> G = nx.DiGraph()

    G can be grown in several ways.

    **Nodes:**

    Add one node at a time:

    >>> G.add_node(1)

    Add the nodes from any container (a list, dict, set or
    even the lines from a file or the nodes from another graph).

    >>> G.add_nodes_from([2,3])
    >>> G.add_nodes_from(range(100,110))
    >>> H=nx.Graph()
    >>> H.add_path([0,1,2,3,4,5,6,7,8,9])
    >>> G.add_nodes_from(H)

    In addition to strings and integers any hashable Python object
    (except None) can represent a node, e.g. a customized node object,
    or even another Graph.

    >>> G.add_node(H)

    **Edges:**

    G can also be grown by adding edges.

    Add one edge,

    >>> G.add_edge(1, 2)

    a list of edges,

    >>> G.add_edges_from([(1,2),(1,3)])

    or a collection of edges,

    >>> G.add_edges_from(H.edges())

    If some edges connect nodes not yet in the graph, the nodes
    are added automatically.  There are no errors when adding
    nodes or edges that already exist.

    **Attributes:**

    Each graph, node, and edge can hold key/value attribute pairs
    in an associated attribute dictionary (the keys must be hashable).
    By default these are empty, but can be added or changed using
    add_edge, add_node or direct manipulation of the attribute
    dictionaries named graph, node and edge respectively.

    >>> G = nx.DiGraph(day="Friday")
    >>> G.graph
    {'day': 'Friday'}

    Add node attributes using add_node(), add_nodes_from() or G.node

    >>> G.add_node(1, time='5pm')
    >>> G.add_nodes_from([3], time='2pm')
    >>> G.node[1]
    {'time': '5pm'}
    >>> G.node[1]['room'] = 714
    >>> del G.node[1]['room'] # remove attribute
    >>> list(G.nodes(data=True))
    [(1, {'time': '5pm'}), (3, {'time': '2pm'})]

    Warning: adding a node to G.node does not add it to the graph.

    Add edge attributes using add_edge(), add_edges_from(), subscript
    notation, or G.edge.

    >>> G.add_edge(1, 2, weight=4.7 )
    >>> G.add_edges_from([(3,4),(4,5)], color='red')
    >>> G.add_edges_from([(1,2,{'color':'blue'}), (2,3,{'weight':8})])
    >>> G[1][2]['weight'] = 4.7
    >>> G.edge[1][2]['weight'] = 4

    **Shortcuts:**

    Many common graph features allow python syntax to speed reporting.

    >>> 1 in G     # check if node in graph
    True
    >>> [n for n in G if n<3]   # iterate through nodes
    [1, 2]
    >>> len(G)  # number of nodes in graph
    5

    The fastest way to traverse all edges of a graph is via
    adjacency_iter(), but the edges() method is often more convenient.

    >>> for n,nbrsdict in G.adjacency_iter():
    ...     for nbr,eattr in nbrsdict.items():
    ...        if 'weight' in eattr:
    ...            (n,nbr,eattr['weight'])
    (1, 2, 4)
    (2, 3, 8)
    >>> [ (u,v,edata['weight']) for u,v,edata in G.edges(data=True) if 'weight' in edata ]
    [(1, 2, 4), (2, 3, 8)]

    **Reporting:**

    Simple graph information is obtained using methods.
    Iterator versions of many reporting methods exist for efficiency.
    Methods exist for reporting nodes(), edges(), neighbors() and degree()
    as well as the number of nodes and edges.

    For details on these and other miscellaneous methods, see below.
     __init__ N/A N/A self data N/A None attr N/A N/A Initialize a graph with edges, name, graph attributes.

        Parameters
        ----------
        data : input graph
            Data to initialize graph.  If data=None (default) an empty
            graph is created.  The data can be an edge list, or any
            NetworkX graph object.  If the corresponding optional Python
            packages are installed the data can also be a NumPy matrix
            or 2d ndarray, a SciPy sparse matrix, or a PyGraphviz graph.
        name : string, optional (default='')
            An optional name for the graph.
        attr : keyword arguments, optional (default= no attributes)
            Attributes to add to graph as key=value pairs.

        See Also
        --------
        convert

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G = nx.Graph(name='my graph')
        >>> e = [(1,2),(2,3),(3,4)] # list of edges
        >>> G = nx.Graph(e)

        Arbitrary graph attribute pairs (key=value) may be assigned

        >>> G=nx.Graph(e, day="Friday")
        >>> G.graph
        {'day': 'Friday'}

         N/A N/A self graph N/A N/A N/A self node N/A N/A N/A self adj N/A N/A N/A self pred N/A N/A N/A self succ N/A self adj N/A N/A data None N/A N/A N/A N/A convert to_networkx_graph data create_using self N/A N/A N/A N/A self graph update attr N/A N/A self edge N/A self adj N/A add_node N/A N/A self n attr_dict N/A None attr N/A N/A Add a single node n and update node attributes.

        Parameters
        ----------
        n : node
            A node can be any hashable Python object except None.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of node attributes.  Key/value pairs will
            update existing data associated with the node.
        attr : keyword arguments, optional
            Set or change attributes using key=value.

        See Also
        --------
        add_nodes_from

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_node(1)
        >>> G.add_node('Hello')
        >>> K3 = nx.Graph([(0,1),(1,2),(2,0)])
        >>> G.add_node(K3)
        >>> G.number_of_nodes()
        3

        Use keywords set/change node attributes:

        >>> G.add_node(1,size=10)
        >>> G.add_node(3,weight=0.4,UTM=('13S',382871,3972649))

        Notes
        -----
        A hashable object is one that can be used as a key in a Python
        dictionary. This includes strings, numbers, tuples of strings
        and numbers, etc.

        On many platforms hashable items also include mutables such as
        NetworkX Graphs, though one should be careful that the hash
        doesn't change on mutables.
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A N/A n N/A self succ N/A N/A N/A N/A self succ N/A n N/A N/A N/A N/A self pred N/A n N/A N/A N/A N/A self node N/A n attr_dict N/A N/A N/A N/A N/A N/A self node N/A n update attr_dict N/A add_nodes_from N/A N/A self nodes N/A attr N/A N/A Add multiple nodes.

        Parameters
        ----------
        nodes : iterable container
            A container of nodes (list, dict, set, etc.).
            OR
            A container of (node, attribute dict) tuples.
            Node attributes are updated using the attribute dict.
        attr : keyword arguments, optional (default= no attributes)
            Update attributes for all nodes in nodes.
            Node attributes specified in nodes as a tuple
            take precedence over attributes specified generally.

        See Also
        --------
        add_node

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_nodes_from('Hello')
        >>> K3 = nx.Graph([(0,1),(1,2),(2,0)])
        >>> G.add_nodes_from(K3)
        >>> sorted(G.nodes(),key=str)
        [0, 1, 2, 'H', 'e', 'l', 'o']

        Use keywords to update specific node attributes for every node.

        >>> G.add_nodes_from([1,2], size=10)
        >>> G.add_nodes_from([3,4], weight=0.4)

        Use (node, attrdict) tuples to update attributes for specific
        nodes.

        >>> G.add_nodes_from([(1,dict(size=11)), (2,{'color':'blue'})])
        >>> G.node[1]['size']
        11
        >>> H = nx.Graph()
        >>> H.add_nodes_from(G.nodes(data=True))
        >>> H.node[1]['size']
        11

         N/A n nodes N/A N/A N/A N/A N/A n N/A self succ N/A N/A N/A N/A self succ N/A n N/A N/A N/A N/A self pred N/A n N/A N/A N/A N/A self node N/A n N/A N/A attr copy N/A N/A N/A N/A N/A N/A self node N/A n update attr N/A N/A N/A TypeError N/A N/A N/A nn ndict n N/A N/A nn N/A self succ N/A N/A N/A N/A self succ N/A nn N/A N/A N/A N/A self pred N/A nn N/A N/A newdict N/A N/A attr copy N/A N/A N/A newdict update ndict N/A N/A N/A self node N/A nn newdict N/A N/A olddict N/A N/A self node N/A nn N/A N/A N/A olddict update attr N/A N/A N/A olddict update ndict N/A remove_node N/A N/A self n N/A N/A N/A Remove node n.

        Removes the node n and all adjacent edges.
        Attempting to remove a non-existent node will raise an exception.

        Parameters
        ----------
        n : node
           A node in the graph

        Raises
        -------
        NetworkXError
           If n is not in the graph.

        See Also
        --------
        remove_nodes_from

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> G.edges()
        [(0, 1), (1, 2)]
        >>> G.remove_node(1)
        >>> G.edges()
        []

         N/A N/A N/A nbrs N/A N/A self succ N/A n N/A N/A N/A self node N/A n N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The node %s is not in the digraph. N/A n N/A u nbrs N/A N/A N/A N/A N/A self pred N/A u N/A n N/A N/A N/A self succ N/A n N/A u N/A N/A self pred N/A n N/A N/A N/A N/A N/A self succ N/A u N/A n N/A N/A N/A self pred N/A n N/A remove_nodes_from N/A N/A self nbunch N/A N/A N/A Remove multiple nodes.

        Parameters
        ----------
        nodes : iterable container
            A container of nodes (list, dict, set, etc.).  If a node
            in the container is not in the graph it is silently
            ignored.

        See Also
        --------
        remove_node

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2])
        >>> e = list(G.nodes())
        >>> e
        [0, 1, 2]
        >>> G.remove_nodes_from(e)
        >>> list(G.nodes())
        []

         N/A n nbunch N/A N/A N/A N/A succs N/A N/A self succ N/A n N/A N/A N/A self node N/A n N/A u succs N/A N/A N/A N/A N/A self pred N/A u N/A n N/A N/A N/A self succ N/A n N/A u N/A N/A self pred N/A n N/A N/A N/A N/A N/A self succ N/A u N/A n N/A N/A N/A self pred N/A n N/A N/A N/A KeyError N/A N/A N/A add_edge N/A N/A self u v attr_dict N/A None attr N/A N/A Add an edge between u and v.

        The nodes u and v will be automatically added if they are
        not already in the graph.

        Edge attributes can be specified with keywords or by providing
        a dictionary with key/value pairs.  See examples below.

        Parameters
        ----------
        u,v : nodes
            Nodes can be, for example, strings or numbers.
            Nodes must be hashable (and not None) Python objects.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with the edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.

        See Also
        --------
        add_edges_from : add a collection of edges

        Notes
        -----
        Adding an edge that already exists updates the edge data.

        Many NetworkX algorithms designed for weighted graphs use as
        the edge weight a numerical value assigned to a keyword
        which by default is 'weight'.

        Examples
        --------
        The following all add the edge e=(1,2) to graph G:

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> e = (1,2)
        >>> G.add_edge(1, 2)           # explicit two-node form
        >>> G.add_edge(*e)             # single edge as tuple of two nodes
        >>> G.add_edges_from( [(1,2)] ) # add edges from iterable container

        Associate data to edges using keywords:

        >>> G.add_edge(1, 2, weight=3)
        >>> G.add_edge(1, 3, weight=7, capacity=15, length=342.7)
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A N/A u N/A self succ N/A N/A N/A N/A self succ N/A u N/A N/A N/A N/A self pred N/A u N/A N/A N/A N/A self node N/A u N/A N/A N/A v N/A self succ N/A N/A N/A N/A self succ N/A v N/A N/A N/A N/A self pred N/A v N/A N/A N/A N/A self node N/A v N/A N/A datadict N/A N/A N/A N/A self adj N/A u get v N/A N/A N/A N/A datadict update attr_dict N/A N/A N/A N/A self succ N/A u N/A v datadict N/A N/A N/A N/A self pred N/A v N/A u datadict N/A add_edges_from N/A N/A self ebunch attr_dict N/A None attr N/A N/A Add all the edges in ebunch.

        Parameters
        ----------
        ebunch : container of edges
            Each edge given in the container will be added to the
            graph. The edges must be given as as 2-tuples (u,v) or
            3-tuples (u,v,d) where d is a dictionary containing edge
            data.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with each edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.


        See Also
        --------
        add_edge : add a single edge
        add_weighted_edges_from : convenient way to add weighted edges

        Notes
        -----
        Adding the same edge twice has no effect but any edge data
        will be updated when each duplicate edge is added.

        Edge attributes specified in edges as a tuple take precedence
        over attributes specified generally.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edges_from([(0,1),(1,2)]) # using a list of edge tuples
        >>> e = zip(range(0,3),range(1,4))
        >>> G.add_edges_from(e) # Add the path graph 0-1-2-3

        Associate data to edges

        >>> G.add_edges_from([(1,2),(2,3)], weight=3)
        >>> G.add_edges_from([(3,4),(1,4)], label='WN2898')
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dict. N/A e ebunch N/A N/A ne N/A len e N/A N/A ne 3 N/A N/A N/A u v dd e N/A N/A hasattr dd update N/A N/A N/A ne 2 N/A N/A N/A u v e N/A dd N/A N/A N/A N/A NetworkXError N/A Edge tuple %s must be a 2-tuple or 3-tuple. N/A e N/A N/A u N/A self succ N/A N/A N/A N/A self succ N/A u N/A N/A N/A N/A self pred N/A u N/A N/A N/A N/A self node N/A u N/A N/A N/A v N/A self succ N/A N/A N/A N/A self succ N/A v N/A N/A N/A N/A self pred N/A v N/A N/A N/A N/A self node N/A v N/A N/A datadict N/A N/A N/A N/A self adj N/A u get v N/A N/A N/A N/A datadict update attr_dict N/A N/A N/A datadict update dd N/A N/A N/A N/A self succ N/A u N/A v datadict N/A N/A N/A N/A self pred N/A v N/A u datadict N/A remove_edge N/A N/A self u v N/A N/A N/A Remove the edge between u and v.

        Parameters
        ----------
        u,v: nodes
            Remove the edge between nodes u and v.

        Raises
        ------
        NetworkXError
            If there is not an edge between u and v.

        See Also
        --------
        remove_edges_from : remove a collection of edges

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.remove_edge(0,1)
        >>> e = (1,2)
        >>> G.remove_edge(*e) # unpacks e from an edge tuple
        >>> e = (2,3,{'weight':7}) # an edge with attribute data
        >>> G.remove_edge(*e[:2]) # select first part of edge tuple
         N/A N/A N/A N/A N/A N/A self succ N/A u N/A v N/A N/A N/A N/A self pred N/A v N/A u N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The edge %s-%s not in graph. N/A u v N/A remove_edges_from N/A N/A self ebunch N/A N/A N/A Remove all edges specified in ebunch.

        Parameters
        ----------
        ebunch: list or container of edge tuples
            Each edge given in the list or container will be removed
            from the graph. The edges can be:

                - 2-tuples (u,v) edge between u and v.
                - 3-tuples (u,v,k) where k is ignored.

        See Also
        --------
        remove_edge : remove a single edge

        Notes
        -----
        Will fail silently if an edge in ebunch is not in the graph.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> ebunch=[(1,2),(2,3)]
        >>> G.remove_edges_from(ebunch)
         N/A e ebunch N/A N/A N/A u v N/A e N/A 2 N/A N/A N/A u N/A self succ N/A v N/A N/A self succ N/A u N/A N/A N/A N/A N/A self succ N/A u N/A v N/A N/A N/A N/A self pred N/A v N/A u N/A has_successor N/A N/A self u v N/A N/A N/A Return True if node u has successor v.

        This is true if graph has the edge u->v.
         N/A N/A N/A u N/A self succ N/A v N/A N/A self succ N/A u N/A has_predecessor N/A N/A self u v N/A N/A N/A Return True if node u has predecessor v.

        This is true if graph has the edge u<-v.
         N/A N/A N/A u N/A self pred N/A v N/A N/A self pred N/A u N/A successors_iter N/A N/A self n N/A N/A N/A Return an iterator over successor nodes of n.

        neighbors_iter() and successors_iter() are the same.
         N/A N/A N/A N/A iter N/A N/A self succ N/A n N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The node %s is not in the digraph. N/A n N/A predecessors_iter N/A N/A self n N/A N/A N/A Return an iterator over predecessor nodes of n. N/A N/A N/A N/A iter N/A N/A self pred N/A n N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The node %s is not in the digraph. N/A n N/A successors N/A N/A self n N/A N/A N/A Return a list of successor nodes of n.

        neighbors() and successors() are the same function.
         N/A N/A list N/A N/A self successors_iter n N/A predecessors N/A N/A self n N/A N/A N/A Return a list of predecessor nodes of n. N/A N/A list N/A N/A self predecessors_iter n N/A N/A neighbors successors N/A neighbors_iter successors_iter edges_iter N/A N/A self nbunch data N/A None False N/A N/A Return an iterator over the edges.

        Edges are returned as tuples with optional data
        in the order (node, neighbor, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict in 3-tuple (u,v,data).

        Returns
        -------
        edge_iter : iterator
            An iterator of (u,v) or (u,v,d) tuples of edges.

        See Also
        --------
        edges : return a list of edges

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs this returns the out-edges.

        Examples
        --------
        >>> G = nx.DiGraph()   # or MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> [e for e in G.edges_iter()]
        [(0, 1), (1, 2), (2, 3)]
        >>> list(G.edges_iter(data=True)) # default data is {} (empty dict)
        [(0, 1, {}), (1, 2, {}), (2, 3, {})]
        >>> list(G.edges_iter([0,2]))
        [(0, 1), (2, 3)]
        >>> list(G.edges_iter(0))
        [(0, 1)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self adj items N/A N/A nodes_nbrs N/A N/A n N/A N/A self adj N/A n N/A n N/A N/A self nbunch_iter nbunch N/A data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr data N/A N/A nbrs items N/A N/A N/A N/A n nbr data N/A N/A N/A n nbrs nodes_nbrs N/A N/A nbr nbrs N/A N/A N/A N/A n nbr N/A N/A out_edges_iter edges_iter N/A out_edges N/A TimingGraph edges in_edges_iter N/A N/A self nbunch data N/A None False N/A N/A Return an iterator over the incoming edges.

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict in 3-tuple (u,v,data).

        Returns
        -------
        in_edge_iter : iterator
            An iterator of (u,v) or (u,v,d) tuples of incoming edges.

        See Also
        --------
        edges_iter : return an iterator of edges
         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self pred items N/A N/A nodes_nbrs N/A N/A n N/A N/A self pred N/A n N/A n N/A N/A self nbunch_iter nbunch N/A data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr data N/A N/A nbrs items N/A N/A N/A N/A nbr n data N/A N/A N/A n nbrs nodes_nbrs N/A N/A nbr nbrs N/A N/A N/A N/A nbr n N/A in_edges N/A N/A self nbunch data N/A None False N/A N/A Return a list of the incoming edges.

        See Also
        --------
        edges : return a list of edges
         N/A N/A list N/A N/A self in_edges_iter nbunch data N/A degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, degree).

        The node degree is the number of edges adjacent to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, degree).

        See Also
        --------
        degree, in_degree, out_degree, in_degree_iter, out_degree_iter

        Examples
        --------
        >>> G = nx.DiGraph()   # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> list(G.degree_iter(0)) # node 0 with degree 1
        [(0, 1)]
        >>> list(G.degree_iter([0,1]))
        [(0, 1), (1, 2)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A zip N/A iter N/A N/A N/A self succ items N/A iter N/A N/A N/A self pred items N/A N/A nodes_nbrs N/A zip N/A N/A n N/A N/A self succ N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A n N/A N/A self pred N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A N/A n succ N/A n2 pred nodes_nbrs N/A N/A N/A N/A n N/A N/A len succ N/A len pred N/A N/A N/A N/A n succ N/A n2 pred nodes_nbrs N/A N/A N/A N/A n N/A N/A sum N/A N/A N/A N/A succ N/A nbr get weight 1 N/A nbr succ N/A sum N/A N/A N/A N/A pred N/A nbr get weight 1 N/A nbr pred N/A in_degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, in-degree).

        The node in-degree is the number of edges pointing in to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, in-degree).

        See Also
        --------
        degree, in_degree, out_degree, out_degree_iter

        Examples
        --------
        >>> G = nx.DiGraph()
        >>> G.add_path([0,1,2,3])
        >>> list(G.in_degree_iter(0)) # node 0 with degree 0
        [(0, 0)]
        >>> list(G.in_degree_iter([0,1]))
        [(0, 0), (1, 1)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self pred items N/A N/A nodes_nbrs N/A N/A n N/A N/A self pred N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A len nbrs N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A sum N/A N/A N/A data get weight 1 N/A data N/A N/A nbrs values N/A out_degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, out-degree).

        The node out-degree is the number of edges pointing out of the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, out-degree).

        See Also
        --------
        degree, in_degree, out_degree, in_degree_iter

        Examples
        --------
        >>> G = nx.DiGraph()
        >>> G.add_path([0,1,2,3])
        >>> list(G.out_degree_iter(0)) # node 0 with degree 1
        [(0, 1)]
        >>> list(G.out_degree_iter([0,1]))
        [(0, 1), (1, 1)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self succ items N/A N/A nodes_nbrs N/A N/A n N/A N/A self succ N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A len nbrs N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A sum N/A N/A N/A data get weight 1 N/A data N/A N/A nbrs values N/A in_degree N/A N/A self nbunch weight N/A None None N/A N/A Return the in-degree of a node or nodes.

        The node in-degree is the number of edges pointing in to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd : dictionary, or number
            A dictionary with nodes as keys and in-degree as values or
            a number if a single node is specified.

        See Also
        --------
        degree, out_degree, in_degree_iter

        Examples
        --------
        >>> G = nx.DiGraph()   # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> G.in_degree(0)
        0
        >>> G.in_degree([0,1])
        {0: 0, 1: 1}
        >>> list(G.in_degree([0,1]).values())
        [0, 1]
         N/A N/A nbunch self N/A N/A N/A N/A next N/A N/A self in_degree_iter nbunch weight N/A 1 N/A N/A N/A dict N/A N/A self in_degree_iter nbunch weight N/A out_degree N/A N/A self nbunch weight N/A None None N/A N/A Return the out-degree of a node or nodes.

        The node out-degree is the number of edges pointing out of the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd : dictionary, or number
            A dictionary with nodes as keys and out-degree as values or
            a number if a single node is specified.

        Examples
        --------
        >>> G = nx.DiGraph()   # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> G.out_degree(0)
        1
        >>> G.out_degree([0,1])
        {0: 1, 1: 1}
        >>> list(G.out_degree([0,1]).values())
        [1, 1]


         N/A N/A nbunch self N/A N/A N/A N/A next N/A N/A self out_degree_iter nbunch weight N/A 1 N/A N/A N/A dict N/A N/A self out_degree_iter nbunch weight N/A clear N/A N/A self N/A N/A N/A Remove all nodes and edges from the graph.

        This also removes the name, and all graph, node, and edge attributes.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.clear()
        >>> list(G.nodes())
        []
        >>> G.edges()
        []

         N/A N/A N/A N/A self succ clear N/A N/A N/A N/A self pred clear N/A N/A N/A N/A self node clear N/A N/A N/A N/A self graph clear N/A is_multigraph N/A N/A self N/A N/A N/A Return True if graph is a multigraph, False otherwise. N/A False N/A is_directed N/A N/A self N/A N/A N/A Return True if graph is directed, False otherwise. N/A True N/A to_directed N/A N/A self N/A N/A N/A Return a directed copy of the graph.

        Returns
        -------
        G : DiGraph
            A deepcopy of the graph.

        Notes
        -----
        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar D=DiGraph(G) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.

        Examples
        --------
        >>> G = nx.Graph()   # or MultiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1), (1, 0)]

        If already directed, return a (deep) copy

        >>> G = nx.DiGraph()   # or MultiDiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1)]
         N/A N/A deepcopy self N/A to_undirected N/A N/A self reciprocal N/A False N/A N/A Return an undirected representation of the digraph.

        Parameters
        ----------
        reciprocal : bool (optional)
          If True only keep edges that appear in both directions
          in the original digraph.

        Returns
        -------
        G : Graph
            An undirected graph with the same name and nodes and
            with edge (u,v,data) if either (u,v,data) or (v,u,data)
            is in the digraph.  If both edges exist in digraph and
            their edge data is different, only one edge is created
            with an arbitrary choice of which edge data to use.
            You must check and correct for this manually if desired.

        Notes
        -----
        If edges in both directions (u,v) and (v,u) exist in the
        graph, attributes for the new undirected edge will be a combination of
        the attributes of the directed edges.  The edge data is updated
        in the (arbitrary) order that the edges are encountered.  For
        more customized control of the edge attributes use add_edge().

        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar G=DiGraph(D) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.
         N/A H N/A TimingGraph N/A N/A H name N/A self name N/A N/A N/A H add_nodes_from self N/A N/A reciprocal True N/A N/A N/A N/A H add_edges_from N/A N/A u v N/A deepcopy d N/A N/A u nbrs N/A N/A self adjacency_iter N/A N/A v d N/A N/A nbrs items N/A v N/A N/A self pred N/A u N/A N/A N/A N/A H add_edges_from N/A N/A u v N/A deepcopy d N/A N/A u nbrs N/A N/A self adjacency_iter N/A N/A v d N/A N/A nbrs items N/A N/A H graph N/A deepcopy N/A self graph N/A N/A H node N/A deepcopy N/A self node N/A H N/A reverse N/A N/A self copy N/A True N/A N/A Return the reverse of the graph.

        The reverse is a graph with the same nodes and edges
        but with the directions of the edges reversed.

        Parameters
        ----------
        copy : bool optional (default=True)
            If True, return a new DiGraph holding the reversed edges.
            If False, reverse the reverse graph is created using
            the original graph (this changes the original graph).
         N/A copy N/A N/A H N/A N/A self __class__ name N/A Reverse of (%s) N/A self name N/A N/A N/A H add_nodes_from self N/A N/A N/A H add_edges_from N/A N/A v u N/A deepcopy d N/A N/A u v d N/A N/A self edges data True N/A N/A H graph N/A deepcopy N/A self graph N/A N/A H node N/A deepcopy N/A self node N/A N/A N/A N/A self pred N/A self succ N/A N/A self succ N/A self pred N/A N/A self adj N/A self succ N/A H self N/A H N/A subgraph N/A N/A self nbunch N/A N/A N/A Return the subgraph induced on nodes in nbunch.

        The induced subgraph of the graph contains the nodes in nbunch
        and the edges between those nodes.

        Parameters
        ----------
        nbunch : list, iterable
            A container of nodes which will be iterated through once.

        Returns
        -------
        G : Graph
            A subgraph of the graph with the same edge attributes.

        Notes
        -----
        The graph, edge or node attributes just point to the original graph.
        So changes to the node or edge structure will not be reflected in
        the original graph while changes to the attributes will.

        To create a subgraph with its own copy of the edge/node attributes use:
        nx.Graph(G.subgraph(nbunch))

        If edge attributes are containers, a deep copy can be obtained using:
        G.subgraph(nbunch).copy()

        For an inplace reduction of a graph to a subgraph you can remove nodes:
        G.remove_nodes_from([ n in G if n not in set(nbunch)])

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> H = G.subgraph([0,1,2])
        >>> H.edges()
        [(0, 1), (1, 2)]
         N/A bunch N/A N/A self nbunch_iter nbunch N/A H N/A N/A self __class__ N/A n bunch N/A N/A N/A N/A H node N/A n N/A N/A self node N/A n N/A H_succ N/A H succ N/A H_pred N/A H pred N/A self_succ N/A self succ N/A n H N/A N/A N/A H_succ N/A n N/A N/A N/A H_pred N/A n N/A N/A u H_succ N/A N/A Hnbrs N/A H_succ N/A u N/A N/A v datadict N/A N/A N/A self_succ N/A u items N/A N/A N/A v H_succ N/A N/A N/A Hnbrs N/A v datadict N/A N/A N/A H_pred N/A v N/A u datadict N/A N/A H graph N/A self graph N/A H N/A N/A TimingMultiGraph N/A TimingGraph N/A N/A 
    An undirected graph class that can store multiedges.

    Multiedges are multiple edges between two nodes.  Each edge
    can hold optional data or attributes.

    A MultiGraph holds undirected edges.  Self loops are allowed.

    Nodes can be arbitrary (hashable) Python objects with optional
    key/value attributes.

    Edges are represented as links between nodes with optional
    key/value attributes.

    Parameters
    ----------
    data : input graph
        Data to initialize graph.  If data=None (default) an empty
        graph is created.  The data can be an edge list, or any
        NetworkX graph object.  If the corresponding optional Python
        packages are installed the data can also be a NumPy matrix
        or 2d ndarray, a SciPy sparse matrix, or a PyGraphviz graph.
    attr : keyword arguments, optional (default= no attributes)
        Attributes to add to graph as key=value pairs.

    See Also
    --------
    Graph
    DiGraph
    MultiDiGraph

    Examples
    --------
    Create an empty graph structure (a "null graph") with no nodes and
    no edges.

    >>> G = nx.MultiGraph()

    G can be grown in several ways.

    **Nodes:**

    Add one node at a time:

    >>> G.add_node(1)

    Add the nodes from any container (a list, dict, set or
    even the lines from a file or the nodes from another graph).

    >>> G.add_nodes_from([2,3])
    >>> G.add_nodes_from(range(100,110))
    >>> H=nx.Graph()
    >>> H.add_path([0,1,2,3,4,5,6,7,8,9])
    >>> G.add_nodes_from(H)

    In addition to strings and integers any hashable Python object
    (except None) can represent a node, e.g. a customized node object,
    or even another Graph.

    >>> G.add_node(H)

    **Edges:**

    G can also be grown by adding edges.

    Add one edge,

    >>> G.add_edge(1, 2)

    a list of edges,

    >>> G.add_edges_from([(1,2),(1,3)])

    or a collection of edges,

    >>> G.add_edges_from(H.edges())

    If some edges connect nodes not yet in the graph, the nodes
    are added automatically.  If an edge already exists, an additional
    edge is created and stored using a key to identify the edge.
    By default the key is the lowest unused integer.

    >>> G.add_edges_from([(4,5,dict(route=282)), (4,5,dict(route=37))])
    >>> G[4]
    {3: {0: {}}, 5: {0: {}, 1: {'route': 282}, 2: {'route': 37}}}

    **Attributes:**

    Each graph, node, and edge can hold key/value attribute pairs
    in an associated attribute dictionary (the keys must be hashable).
    By default these are empty, but can be added or changed using
    add_edge, add_node or direct manipulation of the attribute
    dictionaries named graph, node and edge respectively.

    >>> G = nx.MultiGraph(day="Friday")
    >>> G.graph
    {'day': 'Friday'}

    Add node attributes using add_node(), add_nodes_from() or G.node

    >>> G.add_node(1, time='5pm')
    >>> G.add_nodes_from([3], time='2pm')
    >>> G.node[1]
    {'time': '5pm'}
    >>> G.node[1]['room'] = 714
    >>> del G.node[1]['room'] # remove attribute
    >>> list(G.nodes(data=True))
    [(1, {'time': '5pm'}), (3, {'time': '2pm'})]

    Warning: adding a node to G.node does not add it to the graph.

    Add edge attributes using add_edge(), add_edges_from(), subscript
    notation, or G.edge.

    >>> G.add_edge(1, 2, weight=4.7 )
    >>> G.add_edges_from([(3,4),(4,5)], color='red')
    >>> G.add_edges_from([(1,2,{'color':'blue'}), (2,3,{'weight':8})])
    >>> G[1][2][0]['weight'] = 4.7
    >>> G.edge[1][2][0]['weight'] = 4

    **Shortcuts:**

    Many common graph features allow python syntax to speed reporting.

    >>> 1 in G     # check if node in graph
    True
    >>> [n for n in G if n<3]   # iterate through nodes
    [1, 2]
    >>> len(G)  # number of nodes in graph
    5
    >>> G[1] # adjacency dict keyed by neighbor to edge attributes
    ...            # Note: you should not change this dict manually!
    {2: {0: {'weight': 4}, 1: {'color': 'blue'}}}

    The fastest way to traverse all edges of a graph is via
    adjacency_iter(), but the edges() method is often more convenient.

    >>> for n,nbrsdict in G.adjacency_iter():
    ...     for nbr,keydict in nbrsdict.items():
    ...        for key,eattr in keydict.items():
    ...            if 'weight' in eattr:
    ...                (n,nbr,eattr['weight'])
    (1, 2, 4)
    (2, 1, 4)
    (2, 3, 8)
    (3, 2, 8)
    >>> [ (u,v,edata['weight']) for u,v,edata in G.edges(data=True) if 'weight' in edata ]
    [(1, 2, 4), (2, 3, 8)]

    **Reporting:**

    Simple graph information is obtained using methods.
    Iterator versions of many reporting methods exist for efficiency.
    Methods exist for reporting nodes(), edges(), neighbors() and degree()
    as well as the number of nodes and edges.

    For details on these and other miscellaneous methods, see below.
     add_edge N/A N/A self u v key attr_dict N/A None None attr N/A N/A Add an edge between u and v.

        The nodes u and v will be automatically added if they are
        not already in the graph.

        Edge attributes can be specified with keywords or by providing
        a dictionary with key/value pairs.  See examples below.

        Parameters
        ----------
        u,v : nodes
            Nodes can be, for example, strings or numbers.
            Nodes must be hashable (and not None) Python objects.
        key : hashable identifier, optional (default=lowest unused integer)
            Used to distinguish multiedges between a pair of nodes.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with the edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.

        See Also
        --------
        add_edges_from : add a collection of edges

        Notes
        -----
        To replace/update edge data, use the optional key argument
        to identify a unique edge.  Otherwise a new edge will be created.

        NetworkX algorithms designed for weighted graphs cannot use
        multigraphs directly because it is not clear how to handle
        multiedge weights.  Convert to Graph using edge attribute
        'weight' to enable weighted graph algorithms.

        Examples
        --------
        The following all add the edge e=(1,2) to graph G:

        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> e = (1,2)
        >>> G.add_edge(1, 2)           # explicit two-node form
        >>> G.add_edge(*e)             # single edge as tuple of two nodes
        >>> G.add_edges_from( [(1,2)] ) # add edges from iterable container

        Associate data to edges using keywords:

        >>> G.add_edge(1, 2, weight=3)
        >>> G.add_edge(1, 2, key=0, weight=4)   # update data for key=0
        >>> G.add_edge(1, 3, weight=7, capacity=15, length=342.7)
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A N/A u N/A self adj N/A N/A N/A N/A self adj N/A u N/A N/A N/A N/A self node N/A u N/A N/A N/A v N/A self adj N/A N/A N/A N/A self adj N/A v N/A N/A N/A N/A self node N/A v N/A N/A N/A v N/A N/A self adj N/A u N/A N/A keydict N/A N/A N/A self adj N/A u N/A v N/A N/A key None N/A N/A key N/A len keydict N/A N/A key keydict N/A N/A key 1 N/A datadict N/A N/A keydict get key N/A N/A N/A N/A datadict update attr_dict N/A N/A keydict N/A key datadict N/A N/A N/A key None N/A N/A key 0 N/A datadict N/A N/A N/A N/A datadict update attr_dict N/A keydict N/A key datadict N/A N/A N/A N/A self adj N/A u N/A v keydict N/A N/A N/A N/A self adj N/A v N/A u keydict N/A add_edges_from N/A N/A self ebunch attr_dict N/A None attr N/A N/A Add all the edges in ebunch.

        Parameters
        ----------
        ebunch : container of edges
            Each edge given in the container will be added to the
            graph. The edges can be:

                - 2-tuples (u,v) or
                - 3-tuples (u,v,d) for an edge attribute dict d, or
                - 4-tuples (u,v,k,d) for an edge identified by key k

        attr_dict : dictionary, optional  (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with each edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.


        See Also
        --------
        add_edge : add a single edge
        add_weighted_edges_from : convenient way to add weighted edges

        Notes
        -----
        Adding the same edge twice has no effect but any edge data
        will be updated when each duplicate edge is added.

        Edge attributes specified in edges as a tuple take precedence
        over attributes specified generally.

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_edges_from([(0,1),(1,2)]) # using a list of edge tuples
        >>> e = zip(range(0,3),range(1,4))
        >>> G.add_edges_from(e) # Add the path graph 0-1-2-3

        Associate data to edges

        >>> G.add_edges_from([(1,2),(2,3)], weight=3)
        >>> G.add_edges_from([(3,4),(1,4)], label='WN2898')
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A e ebunch N/A N/A ne N/A len e N/A N/A ne 4 N/A N/A N/A u v key dd e N/A N/A N/A ne 3 N/A N/A N/A u v dd e N/A key None N/A N/A N/A ne 2 N/A N/A N/A u v e N/A dd N/A N/A key None N/A N/A N/A NetworkXError N/A Edge tuple %s must be a 2-tuple, 3-tuple or 4-tuple. N/A e N/A N/A u N/A self adj N/A N/A keydict N/A N/A N/A N/A self adj N/A u get v N/A N/A N/A keydict N/A N/A N/A key None N/A N/A key N/A len keydict N/A N/A key keydict N/A N/A key 1 N/A datadict N/A N/A keydict get key N/A N/A N/A N/A datadict update attr_dict N/A N/A N/A datadict update dd N/A N/A N/A self add_edge u v key key attr_dict datadict N/A remove_edge N/A N/A self u v key N/A None N/A N/A Remove an edge between u and v.

        Parameters
        ----------
        u,v: nodes
            Remove an edge between nodes u and v.
        key : hashable identifier, optional (default=None)
            Used to distinguish multiple edges between a pair of nodes.
            If None remove a single (arbitrary) edge between u and v.

        Raises
        ------
        NetworkXError
            If there is not an edge between u and v, or
            if there is no edge with the specified key.

        See Also
        --------
        remove_edges_from : remove a collection of edges

        Examples
        --------
        >>> G = nx.MultiGraph()
        >>> G.add_path([0,1,2,3])
        >>> G.remove_edge(0,1)
        >>> e = (1,2)
        >>> G.remove_edge(*e) # unpacks e from an edge tuple

        For multiple edges

        >>> G = nx.MultiGraph()   # or MultiDiGraph, etc
        >>> G.add_edges_from([(1,2),(1,2),(1,2)])
        >>> G.remove_edge(1,2) # remove a single (arbitrary) edge

        For edges with keys

        >>> G = nx.MultiGraph()   # or MultiDiGraph, etc
        >>> G.add_edge(1,2,key='first')
        >>> G.add_edge(1,2,key='second')
        >>> G.remove_edge(1,2,key='second')

         N/A N/A N/A d N/A N/A N/A self adj N/A u N/A v N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The edge %s-%s is not in the graph. N/A u v N/A N/A key None N/A N/A N/A N/A d popitem N/A N/A N/A N/A N/A d N/A key N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The edge %s-%s with key %s is not in the graph. N/A u v key N/A N/A N/A len d 0 N/A N/A N/A N/A N/A self adj N/A u N/A v N/A N/A u v N/A N/A N/A N/A N/A self adj N/A v N/A u N/A remove_edges_from N/A N/A self ebunch N/A N/A N/A Remove all edges specified in ebunch.

        Parameters
        ----------
        ebunch: list or container of edge tuples
            Each edge given in the list or container will be removed
            from the graph. The edges can be:

                - 2-tuples (u,v) All edges between u and v are removed.
                - 3-tuples (u,v,key) The edge identified by key is removed.
                - 4-tuples (u,v,key,data) where data is ignored.

        See Also
        --------
        remove_edge : remove a single edge

        Notes
        -----
        Will fail silently if an edge in ebunch is not in the graph.

        Examples
        --------
        >>> G = nx.MultiGraph() # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> ebunch=[(1,2),(2,3)]
        >>> G.remove_edges_from(ebunch)

        Removing multiple copies of edges

        >>> G = nx.MultiGraph()
        >>> G.add_edges_from([(1,2),(1,2),(1,2)])
        >>> G.remove_edges_from([(1,2),(1,2)])
        >>> G.edges()
        [(1, 2)]
        >>> G.remove_edges_from([(1,2),(1,2)]) # silently ignore extra copy
        >>> G.edges() # now empty graph
        []
         N/A e ebunch N/A N/A N/A N/A N/A N/A self remove_edge N/A e N/A 3 N/A N/A N/A NetworkXError N/A N/A N/A has_edge N/A N/A self u v key N/A None N/A N/A Return True if the graph has an edge between nodes u and v.

        Parameters
        ----------
        u,v : nodes
            Nodes can be, for example, strings or numbers.

        key : hashable identifier, optional (default=None)
            If specified return True only if the edge with
            key is found.

        Returns
        -------
        edge_ind : bool
            True if edge is in the graph, False otherwise.

        Examples
        --------
        Can be called either using two nodes u,v, an edge tuple (u,v),
        or an edge tuple (u,v,key).

        >>> G = nx.MultiGraph()   # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> G.has_edge(0,1)  # using two nodes
        True
        >>> e = (0,1)
        >>> G.has_edge(*e)  #  e is a 2-tuple (u,v)
        True
        >>> G.add_edge(0,1,key='a')
        >>> G.has_edge(0,1,key='a')  # specify key
        True
        >>> e=(0,1,'a')
        >>> G.has_edge(*e) # e is a 3-tuple (u,v,'a')
        True

        The following syntax are equivalent:

        >>> G.has_edge(0,1)
        True
        >>> 1 in G[0]  # though this gives KeyError if 0 not in G
        True



         N/A N/A N/A N/A key None N/A N/A N/A v N/A N/A self adj N/A u N/A N/A N/A key N/A N/A N/A self adj N/A u N/A v N/A N/A N/A KeyError N/A N/A False N/A edges N/A N/A self nbunch data keys N/A None False False N/A N/A Return a list of edges.

        Edges are returned as tuples with optional data and keys
        in the order (node, neighbor, key, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            Return two tuples (u,v) (False) or three-tuples (u,v,data) (True).
        keys : bool, optional (default=False)
            Return two tuples (u,v) (False) or three-tuples (u,v,key) (True).

        Returns
        --------
        edge_list: list of edge tuples
            Edges that are adjacent to any node in nbunch, or a list
            of all edges if nbunch is not specified.

        See Also
        --------
        edges_iter : return an iterator over the edges

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs this returns the out-edges.

        Examples
        --------
        >>> G = nx.MultiGraph()  # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> G.edges()
        [(0, 1), (1, 2), (2, 3)]
        >>> G.edges(data=True) # default edge data is {} (empty dictionary)
        [(0, 1, {}), (1, 2, {}), (2, 3, {})]
        >>> G.edges(keys=True) # default keys are integers
        [(0, 1, 0), (1, 2, 0), (2, 3, 0)]
        >>> G.edges(data=True,keys=True) # default keys are integers
        [(0, 1, 0, {}), (1, 2, 0, {}), (2, 3, 0, {})]
        >>> G.edges([0,3])
        [(0, 1), (3, 2)]
        >>> G.edges(0)
        [(0, 1)]

         N/A N/A list N/A N/A self edges_iter nbunch data data keys keys N/A edges_iter N/A N/A self nbunch data keys N/A None False False N/A N/A Return an iterator over the edges.

        Edges are returned as tuples with optional data and keys
        in the order (node, neighbor, key, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict with each edge.
        keys : bool, optional (default=False)
            If True, return edge keys with each edge.

        Returns
        -------
        edge_iter : iterator
            An iterator of (u,v), (u,v,d) or (u,v,key,d) tuples of edges.

        See Also
        --------
        edges : return a list of edges

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs this returns the out-edges.

        Examples
        --------
        >>> G = nx.MultiGraph()   # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> [e for e in G.edges_iter()]
        [(0, 1), (1, 2), (2, 3)]
        >>> list(G.edges_iter(data=True)) # default data is {} (empty dict)
        [(0, 1, {}), (1, 2, {}), (2, 3, {})]
        >>> list(G.edges(keys=True)) # default keys are integers
        [(0, 1, 0), (1, 2, 0), (2, 3, 0)]
        >>> list(G.edges(data=True,keys=True)) # default keys are integers
        [(0, 1, 0, {}), (1, 2, 0, {}), (2, 3, 0, {})]
        >>> list(G.edges_iter([0,3]))
        [(0, 1), (3, 2)]
        >>> list(G.edges_iter(0))
        [(0, 1)]

         N/A seen N/A N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self adj items N/A N/A nodes_nbrs N/A N/A n N/A N/A self adj N/A n N/A n N/A N/A self nbunch_iter nbunch N/A data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr keydict N/A N/A nbrs items N/A N/A N/A nbr seen N/A N/A N/A key data N/A N/A keydict items N/A N/A keys N/A N/A N/A N/A n nbr key data N/A N/A N/A N/A n nbr data N/A N/A seen N/A n 1 N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr keydict N/A N/A nbrs items N/A N/A N/A nbr seen N/A N/A N/A key data N/A N/A keydict items N/A N/A keys N/A N/A N/A N/A n nbr key N/A N/A N/A N/A n nbr N/A N/A seen N/A n 1 N/A seen N/A get_edge_data N/A N/A self u v key default N/A None None N/A N/A Return the attribute dictionary associated with edge (u,v).

        Parameters
        ----------
        u,v : nodes
        default:  any Python object (default=None)
            Value to return if the edge (u,v) is not found.
        key : hashable identifier, optional (default=None)
            Return data only for the edge with specified key.

        Returns
        -------
        edge_dict : dictionary
            The edge attribute dictionary.

        Notes
        -----
        It is faster to use G[u][v][key].

        >>> G = nx.MultiGraph() # or MultiDiGraph
        >>> G.add_edge(0,1,key='a',weight=7)
        >>> G[0][1]['a']  # key='a'
        {'weight': 7}

        Warning: Assigning G[u][v][key] corrupts the graph data structure.
        But it is safe to assign attributes to that dictionary,

        >>> G[0][1]['a']['weight'] = 10
        >>> G[0][1]['a']['weight']
        10
        >>> G[1][0]['a']['weight']
        10

        Examples
        --------
        >>> G = nx.MultiGraph() # or MultiDiGraph
        >>> G.add_path([0,1,2,3])
        >>> G.get_edge_data(0,1)
        {0: {}}
        >>> e = (0,1)
        >>> G.get_edge_data(*e) # tuple form
        {0: {}}
        >>> G.get_edge_data('a','b',default=0) # edge not in graph, return 0
        0
         N/A N/A N/A N/A key None N/A N/A N/A N/A N/A self adj N/A u N/A v N/A N/A N/A N/A N/A N/A self adj N/A u N/A v N/A key N/A N/A N/A KeyError N/A N/A default N/A degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, degree).

        The node degree is the number of edges adjacent to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used 
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, degree).

        See Also
        --------
        degree

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> list(G.degree_iter(0)) # node 0 with degree 1
        [(0, 1)]
        >>> list(G.degree_iter([0,1]))
        [(0, 1), (1, 2)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self adj items N/A N/A nodes_nbrs N/A N/A n N/A N/A self adj N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A n nbrs nodes_nbrs N/A N/A deg N/A sum N/A N/A len data N/A data N/A N/A nbrs values N/A N/A N/A n N/A deg N/A N/A n nbrs N/A len N/A nbrs N/A n N/A N/A N/A n nbrs nodes_nbrs N/A N/A deg N/A sum N/A N/A N/A d get weight 1 N/A data N/A N/A nbrs values N/A d N/A N/A data values N/A N/A n nbrs N/A N/A deg N/A sum N/A N/A N/A d get weight 1 N/A N/A key d N/A N/A N/A nbrs N/A n items N/A N/A N/A n deg N/A is_multigraph N/A N/A self N/A N/A N/A Return True if graph is a multigraph, False otherwise. N/A True N/A is_directed N/A N/A self N/A N/A N/A Return True if graph is directed, False otherwise. N/A False N/A to_directed N/A N/A self N/A N/A N/A Return a directed representation of the graph.

        Returns
        -------
        G : MultiDiGraph
            A directed graph with the same name, same nodes, and with
            each edge (u,v,data) replaced by two directed edges
            (u,v,data) and (v,u,data).

        Notes
        -----
        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar D=DiGraph(G) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.


        Examples
        --------
        >>> G = nx.Graph()   # or MultiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1), (1, 0)]

        If already directed, return a (deep) copy

        >>> G = nx.DiGraph()   # or MultiDiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1)]
         networkx.classes.multidigraph MultiDiGraph N/A G N/A MultiDiGraph N/A N/A N/A G add_nodes_from self N/A N/A N/A G add_edges_from N/A N/A u v key N/A deepcopy datadict N/A N/A u nbrs N/A N/A self adjacency_iter N/A N/A v keydict N/A N/A nbrs items N/A N/A key datadict N/A N/A keydict items N/A N/A G graph N/A deepcopy N/A self graph N/A N/A G node N/A deepcopy N/A self node N/A G N/A selfloop_edges N/A N/A self data keys N/A False False N/A N/A Return a list of selfloop edges.

        A selfloop edge has the same node at both ends.

        Parameters
        -----------
        data : bool, optional (default=False)
            Return selfloop edges as two tuples (u,v) (data=False)
            or three-tuples (u,v,data) (data=True)
        keys : bool, optional (default=False)
            If True, return edge keys with each edge.

        Returns
        -------
        edgelist : list of edge tuples
            A list of all selfloop edges.

        See Also
        --------
        nodes_with_selfloops, number_of_selfloops

        Examples
        --------
        >>> G = nx.MultiGraph()   # or MultiDiGraph
        >>> G.add_edge(1,1)
        >>> G.add_edge(1,2)
        >>> G.selfloop_edges()
        [(1, 1)]
        >>> G.selfloop_edges(data=True)
        [(1, 1, {})]
        >>> G.selfloop_edges(keys=True)
        [(1, 1, 0)]
        >>> G.selfloop_edges(keys=True, data=True)
        [(1, 1, 0, {})]
         N/A data N/A N/A keys N/A N/A N/A N/A n n k d N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A N/A k d N/A N/A N/A nbrs N/A n items N/A N/A N/A N/A n n d N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A d N/A N/A N/A nbrs N/A n values N/A N/A keys N/A N/A N/A N/A n n k N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A k N/A N/A N/A nbrs N/A n keys N/A N/A N/A N/A n n N/A N/A n nbrs N/A N/A N/A self adj items N/A n nbrs N/A d N/A N/A N/A nbrs N/A n values N/A number_of_edges N/A N/A self u v N/A None None N/A N/A Return the number of edges between two nodes.

        Parameters
        ----------
        u,v : nodes, optional (default=all edges)
            If u and v are specified, return the number of edges between
            u and v. Otherwise return the total number of all edges.

        Returns
        -------
        nedges : int
            The number of edges in the graph.  If nodes u and v are specified
            return the number of edges between those nodes.

        See Also
        --------
        size

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> G.number_of_edges()
        3
        >>> G.number_of_edges(0,1)
        1
        >>> e = (0,1)
        >>> G.number_of_edges(*e)
        1
         N/A N/A u None N/A N/A N/A N/A self size N/A N/A N/A edgedata N/A N/A N/A self adj N/A u N/A v N/A N/A N/A KeyError N/A N/A 0 N/A N/A len edgedata N/A subgraph N/A N/A self nbunch N/A N/A N/A Return the subgraph induced on nodes in nbunch.

        The induced subgraph of the graph contains the nodes in nbunch
        and the edges between those nodes.

        Parameters
        ----------
        nbunch : list, iterable
            A container of nodes which will be iterated through once.

        Returns
        -------
        G : Graph
            A subgraph of the graph with the same edge attributes.

        Notes
        -----
        The graph, edge or node attributes just point to the original graph.
        So changes to the node or edge structure will not be reflected in
        the original graph while changes to the attributes will.

        To create a subgraph with its own copy of the edge/node attributes use:
        nx.Graph(G.subgraph(nbunch))

        If edge attributes are containers, a deep copy can be obtained using:
        G.subgraph(nbunch).copy()

        For an inplace reduction of a graph to a subgraph you can remove nodes:
        G.remove_nodes_from([ n in G if n not in set(nbunch)])

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> H = G.subgraph([0,1,2])
        >>> H.edges()
        [(0, 1), (1, 2)]
         N/A bunch N/A N/A self nbunch_iter nbunch N/A H N/A N/A self __class__ N/A n bunch N/A N/A N/A N/A H node N/A n N/A N/A self node N/A n N/A H_adj N/A H adj N/A self_adj N/A self adj N/A n H N/A N/A Hnbrs N/A N/A N/A H_adj N/A n Hnbrs N/A N/A nbr edgedict N/A N/A N/A self_adj N/A n items N/A N/A N/A nbr H_adj N/A N/A ed N/A N/A edgedict copy N/A N/A Hnbrs N/A nbr ed N/A N/A N/A H_adj N/A nbr N/A n ed N/A N/A H graph N/A self graph N/A H N/A N/A TimingMultiDiGraph N/A TimingMultiGraph TimingDiGraph N/A N/A A directed graph class that can store multiedges.

    Multiedges are multiple edges between two nodes.  Each edge
    can hold optional data or attributes.

    A MultiDiGraph holds directed edges.  Self loops are allowed.

    Nodes can be arbitrary (hashable) Python objects with optional
    key/value attributes.

    Edges are represented as links between nodes with optional
    key/value attributes.

    Parameters
    ----------
    data : input graph
        Data to initialize graph.  If data=None (default) an empty
        graph is created.  The data can be an edge list, or any
        NetworkX graph object.  If the corresponding optional Python
        packages are installed the data can also be a NumPy matrix
        or 2d ndarray, a SciPy sparse matrix, or a PyGraphviz graph.
    attr : keyword arguments, optional (default= no attributes)
        Attributes to add to graph as key=value pairs.

    See Also
    --------
    Graph
    DiGraph
    MultiGraph

    Examples
    --------
    Create an empty graph structure (a "null graph") with no nodes and
    no edges.

    >>> G = nx.MultiDiGraph()

    G can be grown in several ways.

    **Nodes:**

    Add one node at a time:

    >>> G.add_node(1)

    Add the nodes from any container (a list, dict, set or
    even the lines from a file or the nodes from another graph).

    >>> G.add_nodes_from([2,3])
    >>> G.add_nodes_from(range(100,110))
    >>> H=nx.Graph()
    >>> H.add_path([0,1,2,3,4,5,6,7,8,9])
    >>> G.add_nodes_from(H)

    In addition to strings and integers any hashable Python object
    (except None) can represent a node, e.g. a customized node object,
    or even another Graph.

    >>> G.add_node(H)

    **Edges:**

    G can also be grown by adding edges.

    Add one edge,

    >>> G.add_edge(1, 2)

    a list of edges,

    >>> G.add_edges_from([(1,2),(1,3)])

    or a collection of edges,

    >>> G.add_edges_from(H.edges())

    If some edges connect nodes not yet in the graph, the nodes
    are added automatically.  If an edge already exists, an additional
    edge is created and stored using a key to identify the edge.
    By default the key is the lowest unused integer.

    >>> G.add_edges_from([(4,5,dict(route=282)), (4,5,dict(route=37))])
    >>> G[4]
    {5: {0: {}, 1: {'route': 282}, 2: {'route': 37}}}

    **Attributes:**

    Each graph, node, and edge can hold key/value attribute pairs
    in an associated attribute dictionary (the keys must be hashable).
    By default these are empty, but can be added or changed using
    add_edge, add_node or direct manipulation of the attribute
    dictionaries named graph, node and edge respectively.

    >>> G = nx.MultiDiGraph(day="Friday")
    >>> G.graph
    {'day': 'Friday'}

    Add node attributes using add_node(), add_nodes_from() or G.node

    >>> G.add_node(1, time='5pm')
    >>> G.add_nodes_from([3], time='2pm')
    >>> G.node[1]
    {'time': '5pm'}
    >>> G.node[1]['room'] = 714
    >>> del G.node[1]['room'] # remove attribute
    >>> list(G.nodes(data=True))
    [(1, {'time': '5pm'}), (3, {'time': '2pm'})]

    Warning: adding a node to G.node does not add it to the graph.

    Add edge attributes using add_edge(), add_edges_from(), subscript
    notation, or G.edge.

    >>> G.add_edge(1, 2, weight=4.7 )
    >>> G.add_edges_from([(3,4),(4,5)], color='red')
    >>> G.add_edges_from([(1,2,{'color':'blue'}), (2,3,{'weight':8})])
    >>> G[1][2][0]['weight'] = 4.7
    >>> G.edge[1][2][0]['weight'] = 4

    **Shortcuts:**

    Many common graph features allow python syntax to speed reporting.

    >>> 1 in G     # check if node in graph
    True
    >>> [n for n in G if n<3]   # iterate through nodes
    [1, 2]
    >>> len(G)  # number of nodes in graph
    5
    >>> G[1] # adjacency dict keyed by neighbor to edge attributes
    ...            # Note: you should not change this dict manually!
    {2: {0: {'weight': 4}, 1: {'color': 'blue'}}}

    The fastest way to traverse all edges of a graph is via
    adjacency_iter(), but the edges() method is often more convenient.

    >>> for n,nbrsdict in G.adjacency_iter():
    ...     for nbr,keydict in nbrsdict.items():
    ...        for key,eattr in keydict.items():
    ...            if 'weight' in eattr:
    ...                (n,nbr,eattr['weight'])
    (1, 2, 4)
    (2, 3, 8)
    >>> [ (u,v,edata['weight']) for u,v,edata in G.edges(data=True) if 'weight' in edata ]
    [(1, 2, 4), (2, 3, 8)]

    **Reporting:**

    Simple graph information is obtained using methods.
    Iterator versions of many reporting methods exist for efficiency.
    Methods exist for reporting nodes(), edges(), neighbors() and degree()
    as well as the number of nodes and edges.

    For details on these and other miscellaneous methods, see below.
     add_edge N/A N/A self u v key attr_dict N/A None None attr N/A N/A Add an edge between u and v.

        The nodes u and v will be automatically added if they are
        not already in the graph.

        Edge attributes can be specified with keywords or by providing
        a dictionary with key/value pairs.  See examples below.

        Parameters
        ----------
        u,v : nodes
            Nodes can be, for example, strings or numbers.
            Nodes must be hashable (and not None) Python objects.
        key : hashable identifier, optional (default=lowest unused integer)
            Used to distinguish multiedges between a pair of nodes.
        attr_dict : dictionary, optional (default= no attributes)
            Dictionary of edge attributes.  Key/value pairs will
            update existing data associated with the edge.
        attr : keyword arguments, optional
            Edge data (or labels or objects) can be assigned using
            keyword arguments.

        See Also
        --------
        add_edges_from : add a collection of edges

        Notes
        -----
        To replace/update edge data, use the optional key argument
        to identify a unique edge.  Otherwise a new edge will be created.

        NetworkX algorithms designed for weighted graphs cannot use
        multigraphs directly because it is not clear how to handle
        multiedge weights.  Convert to Graph using edge attribute
        'weight' to enable weighted graph algorithms.

        Examples
        --------
        The following all add the edge e=(1,2) to graph G:

        >>> G = nx.MultiDiGraph()
        >>> e = (1,2)
        >>> G.add_edge(1, 2)           # explicit two-node form
        >>> G.add_edge(*e)             # single edge as tuple of two nodes
        >>> G.add_edges_from( [(1,2)] ) # add edges from iterable container

        Associate data to edges using keywords:

        >>> G.add_edge(1, 2, weight=3)
        >>> G.add_edge(1, 2, key=0, weight=4)   # update data for key=0
        >>> G.add_edge(1, 3, weight=7, capacity=15, length=342.7)
         N/A N/A attr_dict None N/A N/A attr_dict attr N/A N/A N/A N/A N/A N/A attr_dict update attr N/A N/A N/A AttributeError N/A N/A N/A NetworkXError The attr_dict argument must be a dictionary. N/A N/A u N/A self succ N/A N/A N/A N/A self succ N/A u N/A N/A N/A N/A self pred N/A u N/A N/A N/A N/A self node N/A u N/A N/A N/A v N/A self succ N/A N/A N/A N/A self succ N/A v N/A N/A N/A N/A self pred N/A v N/A N/A N/A N/A self node N/A v N/A N/A N/A v N/A N/A self succ N/A u N/A N/A keydict N/A N/A N/A self adj N/A u N/A v N/A N/A key None N/A N/A key N/A len keydict N/A N/A key keydict N/A N/A key 1 N/A datadict N/A N/A keydict get key N/A N/A N/A N/A datadict update attr_dict N/A N/A keydict N/A key datadict N/A N/A N/A key None N/A N/A key 0 N/A datadict N/A N/A N/A N/A datadict update attr_dict N/A keydict N/A key datadict N/A N/A N/A N/A self succ N/A u N/A v keydict N/A N/A N/A N/A self pred N/A v N/A u keydict N/A remove_edge N/A N/A self u v key N/A None N/A N/A Remove an edge between u and v.

        Parameters
        ----------
        u,v: nodes
            Remove an edge between nodes u and v.
        key : hashable identifier, optional (default=None)
            Used to distinguish multiple edges between a pair of nodes.
            If None remove a single (arbitrary) edge between u and v.

        Raises
        ------
        NetworkXError
            If there is not an edge between u and v, or
            if there is no edge with the specified key.

        See Also
        --------
        remove_edges_from : remove a collection of edges

        Examples
        --------
        >>> G = nx.MultiDiGraph()
        >>> G.add_path([0,1,2,3])
        >>> G.remove_edge(0,1)
        >>> e = (1,2)
        >>> G.remove_edge(*e) # unpacks e from an edge tuple

        For multiple edges

        >>> G = nx.MultiDiGraph()
        >>> G.add_edges_from([(1,2),(1,2),(1,2)])
        >>> G.remove_edge(1,2) # remove a single (arbitrary) edge

        For edges with keys

        >>> G = nx.MultiDiGraph()
        >>> G.add_edge(1,2,key='first')
        >>> G.add_edge(1,2,key='second')
        >>> G.remove_edge(1,2,key='second')

         N/A N/A N/A d N/A N/A N/A self adj N/A u N/A v N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The edge %s-%s is not in the graph. N/A u v N/A N/A key None N/A N/A N/A N/A d popitem N/A N/A N/A N/A N/A d N/A key N/A N/A N/A KeyError N/A N/A N/A NetworkXError N/A The edge %s-%s with key %s is not in the graph. N/A u v key N/A N/A N/A len d 0 N/A N/A N/A N/A N/A self succ N/A u N/A v N/A N/A N/A N/A self pred N/A v N/A u N/A edges_iter N/A N/A self nbunch data keys N/A None False False N/A N/A Return an iterator over the edges.

        Edges are returned as tuples with optional data and keys
        in the order (node, neighbor, key, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict with each edge.
        keys : bool, optional (default=False)
            If True, return edge keys with each edge.

        Returns
        -------
        edge_iter : iterator
            An iterator of (u,v), (u,v,d) or (u,v,key,d) tuples of edges.

        See Also
        --------
        edges : return a list of edges

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs this returns the out-edges.

        Examples
        --------
        >>> G = nx.MultiDiGraph()
        >>> G.add_path([0,1,2,3])
        >>> [e for e in G.edges_iter()]
        [(0, 1), (1, 2), (2, 3)]
        >>> list(G.edges_iter(data=True)) # default data is {} (empty dict)
        [(0, 1, {}), (1, 2, {}), (2, 3, {})]
        >>> list(G.edges_iter([0,2]))
        [(0, 1), (2, 3)]
        >>> list(G.edges_iter(0))
        [(0, 1)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self adj items N/A N/A nodes_nbrs N/A N/A n N/A N/A self adj N/A n N/A n N/A N/A self nbunch_iter nbunch N/A data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr keydict N/A N/A nbrs items N/A N/A N/A key data N/A N/A keydict items N/A N/A keys N/A N/A N/A N/A n nbr key data N/A N/A N/A N/A n nbr data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr keydict N/A N/A nbrs items N/A N/A N/A key data N/A N/A keydict items N/A N/A keys N/A N/A N/A N/A n nbr key N/A N/A N/A N/A n nbr N/A N/A out_edges_iter edges_iter out_edges N/A N/A self nbunch keys data N/A None False False N/A N/A Return a list of the outgoing edges.

        Edges are returned as tuples with optional data and keys
        in the order (node, neighbor, key, data).

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict with each edge.
        keys : bool, optional (default=False)
            If True, return edge keys with each edge.

        Returns
        -------
        out_edges : list
            An listr of (u,v), (u,v,d) or (u,v,key,d) tuples of edges.

        Notes
        -----
        Nodes in nbunch that are not in the graph will be (quietly) ignored.
        For directed graphs edges() is the same as out_edges().

        See Also
        --------
        in_edges: return a list of incoming edges
         N/A N/A list N/A N/A self out_edges_iter nbunch keys keys data data N/A in_edges_iter N/A N/A self nbunch data keys N/A None False False N/A N/A Return an iterator over the incoming edges.

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict with each edge.
        keys : bool, optional (default=False)
            If True, return edge keys with each edge.

        Returns
        -------
        in_edge_iter : iterator
            An iterator of (u,v), (u,v,d) or (u,v,key,d) tuples of edges.

        See Also
        --------
        edges_iter : return an iterator of edges
         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self pred items N/A N/A nodes_nbrs N/A N/A n N/A N/A self pred N/A n N/A n N/A N/A self nbunch_iter nbunch N/A data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr keydict N/A N/A nbrs items N/A N/A N/A key data N/A N/A keydict items N/A N/A keys N/A N/A N/A N/A nbr n key data N/A N/A N/A N/A nbr n data N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A nbr keydict N/A N/A nbrs items N/A N/A N/A key data N/A N/A keydict items N/A N/A keys N/A N/A N/A N/A nbr n key N/A N/A N/A N/A nbr n N/A in_edges N/A N/A self nbunch keys data N/A None False False N/A N/A Return a list of the incoming edges.

        Parameters
        ----------
        nbunch : iterable container, optional (default= all nodes)
            A container of nodes.  The container will be iterated
            through once.
        data : bool, optional (default=False)
            If True, return edge attribute dict with each edge.
        keys : bool, optional (default=False)
            If True, return edge keys with each edge.

        Returns
        -------
        in_edges : list
            A list  of (u,v), (u,v,d) or (u,v,key,d) tuples of edges.

        See Also
        --------
        out_edges: return a list of outgoing edges
         N/A N/A list N/A N/A self in_edges_iter nbunch keys keys data data N/A degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, degree).

        The node degree is the number of edges adjacent to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used 
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, degree).

        See Also
        --------
        degree

        Examples
        --------
        >>> G = nx.MultiDiGraph()
        >>> G.add_path([0,1,2,3])
        >>> list(G.degree_iter(0)) # node 0 with degree 1
        [(0, 1)]
        >>> list(G.degree_iter([0,1]))
        [(0, 1), (1, 2)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A zip N/A iter N/A N/A N/A self succ items N/A iter N/A N/A N/A self pred items N/A N/A nodes_nbrs N/A zip N/A N/A n N/A N/A self succ N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A n N/A N/A self pred N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A N/A n succ N/A n2 pred nodes_nbrs N/A N/A indeg N/A sum N/A N/A len data N/A data N/A N/A pred values N/A outdeg N/A sum N/A N/A len data N/A data N/A N/A succ values N/A N/A N/A n N/A indeg outdeg N/A N/A N/A N/A n succ N/A n2 pred nodes_nbrs N/A N/A deg N/A sum N/A N/A N/A d get weight 1 N/A data N/A N/A pred values N/A d N/A N/A data values N/A deg N/A sum N/A N/A N/A d get weight 1 N/A data N/A N/A succ values N/A d N/A N/A data values N/A N/A N/A n deg N/A in_degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, in-degree).

        The node in-degree is the number of edges pointing in to the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used 
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights adjacent to the node.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, in-degree).

        See Also
        --------
        degree, in_degree, out_degree, out_degree_iter

        Examples
        --------
        >>> G = nx.MultiDiGraph()
        >>> G.add_path([0,1,2,3])
        >>> list(G.in_degree_iter(0)) # node 0 with degree 0
        [(0, 0)]
        >>> list(G.in_degree_iter([0,1]))
        [(0, 0), (1, 1)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self pred items N/A N/A nodes_nbrs N/A N/A n N/A N/A self pred N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A sum N/A N/A len data N/A data N/A N/A nbrs values N/A N/A N/A n pred nodes_nbrs N/A N/A deg N/A sum N/A N/A N/A d get weight 1 N/A data N/A N/A pred values N/A d N/A N/A data values N/A N/A N/A n deg N/A out_degree_iter N/A N/A self nbunch weight N/A None None N/A N/A Return an iterator for (node, out-degree).

        The node out-degree is the number of edges pointing out of the node.

        Parameters
        ----------
        nbunch : iterable container, optional (default=all nodes)
            A container of nodes.  The container will be iterated
            through once.

        weight : string or None, optional (default=None)
           The edge attribute that holds the numerical value used 
           as a weight.  If None, then each edge has weight 1.
           The degree is the sum of the edge weights.

        Returns
        -------
        nd_iter : an iterator
            The iterator returns two-tuples of (node, out-degree).

        See Also
        --------
        degree, in_degree, out_degree, in_degree_iter

        Examples
        --------
        >>> G = nx.MultiDiGraph()
        >>> G.add_path([0,1,2,3])
        >>> list(G.out_degree_iter(0)) # node 0 with degree 1
        [(0, 1)]
        >>> list(G.out_degree_iter([0,1]))
        [(0, 1), (1, 1)]

         N/A N/A nbunch None N/A N/A nodes_nbrs N/A N/A N/A self succ items N/A N/A nodes_nbrs N/A N/A n N/A N/A self succ N/A n N/A n N/A N/A self nbunch_iter nbunch N/A N/A weight None N/A N/A N/A n nbrs nodes_nbrs N/A N/A N/A N/A n N/A sum N/A N/A len data N/A data N/A N/A nbrs values N/A N/A N/A n succ nodes_nbrs N/A N/A deg N/A sum N/A N/A N/A d get weight 1 N/A data N/A N/A succ values N/A d N/A N/A data values N/A N/A N/A n deg N/A is_multigraph N/A N/A self N/A N/A N/A Return True if graph is a multigraph, False otherwise. N/A True N/A is_directed N/A N/A self N/A N/A N/A Return True if graph is directed, False otherwise. N/A True N/A to_directed N/A N/A self N/A N/A N/A Return a directed copy of the graph.

        Returns
        -------
        G : MultiDiGraph
            A deepcopy of the graph.

        Notes
        -----
        If edges in both directions (u,v) and (v,u) exist in the
        graph, attributes for the new undirected edge will be a combination of
        the attributes of the directed edges.  The edge data is updated
        in the (arbitrary) order that the edges are encountered.  For
        more customized control of the edge attributes use add_edge().

        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar G=DiGraph(D) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.

        Examples
        --------
        >>> G = nx.Graph()   # or MultiGraph, etc
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1), (1, 0)]

        If already directed, return a (deep) copy

        >>> G = nx.MultiDiGraph()
        >>> G.add_path([0,1])
        >>> H = G.to_directed()
        >>> H.edges()
        [(0, 1)]
         N/A N/A deepcopy self N/A to_undirected N/A N/A self reciprocal N/A False N/A N/A Return an undirected representation of the digraph.

        Parameters
        ----------
        reciprocal : bool (optional)
          If True only keep edges that appear in both directions 
          in the original digraph. 

        Returns
        -------
        G : MultiGraph
            An undirected graph with the same name and nodes and
            with edge (u,v,data) if either (u,v,data) or (v,u,data)
            is in the digraph.  If both edges exist in digraph and
            their edge data is different, only one edge is created
            with an arbitrary choice of which edge data to use.
            You must check and correct for this manually if desired.

        Notes
        -----
        This returns a "deepcopy" of the edge, node, and
        graph attributes which attempts to completely copy
        all of the data and references.

        This is in contrast to the similar D=DiGraph(G) which returns a
        shallow copy of the data.

        See the Python copy module for more information on shallow
        and deep copies, http://docs.python.org/library/copy.html.
         N/A H N/A MultiGraph N/A N/A H name N/A self name N/A N/A N/A H add_nodes_from self N/A N/A reciprocal True N/A N/A N/A N/A H add_edges_from N/A N/A u v key N/A deepcopy data N/A N/A u nbrs N/A N/A self adjacency_iter N/A N/A v keydict N/A N/A nbrs items N/A N/A key data N/A N/A keydict items N/A N/A self has_edge v u key N/A N/A N/A N/A H add_edges_from N/A N/A u v key N/A deepcopy data N/A N/A u nbrs N/A N/A self adjacency_iter N/A N/A v keydict N/A N/A nbrs items N/A N/A key data N/A N/A keydict items N/A N/A H graph N/A deepcopy N/A self graph N/A N/A H node N/A deepcopy N/A self node N/A H N/A subgraph N/A N/A self nbunch N/A N/A N/A Return the subgraph induced on nodes in nbunch.

        The induced subgraph of the graph contains the nodes in nbunch
        and the edges between those nodes.

        Parameters
        ----------
        nbunch : list, iterable
            A container of nodes which will be iterated through once.

        Returns
        -------
        G : Graph
            A subgraph of the graph with the same edge attributes.

        Notes
        -----
        The graph, edge or node attributes just point to the original graph.
        So changes to the node or edge structure will not be reflected in
        the original graph while changes to the attributes will.

        To create a subgraph with its own copy of the edge/node attributes use:
        nx.Graph(G.subgraph(nbunch))

        If edge attributes are containers, a deep copy can be obtained using:
        G.subgraph(nbunch).copy()

        For an inplace reduction of a graph to a subgraph you can remove nodes:
        G.remove_nodes_from([ n in G if n not in set(nbunch)])

        Examples
        --------
        >>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
        >>> G.add_path([0,1,2,3])
        >>> H = G.subgraph([0,1,2])
        >>> H.edges()
        [(0, 1), (1, 2)]
         N/A bunch N/A N/A self nbunch_iter nbunch N/A H N/A N/A self __class__ N/A n bunch N/A N/A N/A N/A H node N/A n N/A N/A self node N/A n N/A H_succ N/A H succ N/A H_pred N/A H pred N/A self_succ N/A self succ N/A self_pred N/A self pred N/A n H N/A N/A N/A H_succ N/A n N/A N/A N/A H_pred N/A n N/A N/A u H_succ N/A N/A Hnbrs N/A H_succ N/A u N/A N/A v edgedict N/A N/A N/A self_succ N/A u items N/A N/A N/A v H_succ N/A N/A ed N/A N/A edgedict copy N/A N/A Hnbrs N/A v ed N/A N/A N/A H_pred N/A v N/A u ed N/A N/A H graph N/A self graph N/A H N/A reverse N/A N/A self copy N/A True N/A N/A Return the reverse of the graph.

        The reverse is a graph with the same nodes and edges
        but with the directions of the edges reversed.

        Parameters
        ----------
        copy : bool optional (default=True)
            If True, return a new DiGraph holding the reversed edges.
            If False, reverse the reverse graph is created using
            the original graph (this changes the original graph).
         N/A copy N/A N/A H N/A N/A self __class__ name N/A Reverse of (%s) N/A self name N/A N/A N/A H add_nodes_from self N/A N/A N/A H add_edges_from N/A N/A v u k N/A deepcopy d N/A N/A u v k d N/A N/A self edges keys True data True N/A N/A H graph N/A deepcopy N/A self graph N/A N/A H node N/A deepcopy N/A self node N/A N/A N/A N/A self pred N/A self succ N/A N/A self succ N/A self pred N/A N/A self adj N/A self succ N/A H self N/A H N/A N/A setup_module N/A N/A module N/A N/A nose SkipTest N/A N/A SkipTest Skip nose doctests for timingclasses module N/A