# Stubs for networkx.classes.graph (Python 3.5)
#
# NOTE: This dynamically typed stub was automatically generated by stubgen.

from typing import Any, Optional

class Graph:
    node_dict_factory: Any = ...
    adjlist_outer_dict_factory: Any = ...
    adjlist_inner_dict_factory: Any = ...
    edge_attr_dict_factory: Any = ...
    root_graph: Any = ...
    graph: Any = ...
    def __init__(self, incoming_graph_data: Optional[Any] = ..., **attr) -> None: ...
    @property
    def adj(self): ...
    @property
    def name(self): ...
    @name.setter
    def name(self, s): ...
    def __iter__(self): ...
    def __contains__(self, n): ...
    def __len__(self): ...
    def __getitem__(self, n): ...
    def add_node(self, node_for_adding, **attr): ...
    def add_nodes_from(self, nodes_for_adding, **attr): ...
    def remove_node(self, n): ...
    def remove_nodes_from(self, nodes): ...
    @property
    def nodes(self): ...
    node: Any = ...
    def add_path(self, nodes, **attr): ...
    def add_cycle(self, nodes, **attr): ...
    def add_star(self, nodes, **attr): ...
    def nodes_with_selfloops(self): ...
    def number_of_selfloops(self): ...
    def selfloop_edges(self, data: bool = ..., keys: bool = ..., default: Optional[Any] = ...): ...
    def number_of_nodes(self): ...
    def order(self): ...
    def has_node(self, n): ...
    def add_edge(self, u_of_edge, v_of_edge, **attr): ...
    def add_edges_from(self, ebunch_to_add, **attr): ...
    def add_weighted_edges_from(self, ebunch_to_add, weight: str = ..., **attr): ...
    def remove_edge(self, u, v): ...
    def remove_edges_from(self, ebunch): ...
    def has_edge(self, u, v): ...
    def neighbors(self, n): ...
    @property
    def edges(self): ...
    def get_edge_data(self, u, v, default: Optional[Any] = ...): ...
    def adjacency(self): ...
    @property
    def degree(self): ...
    def clear(self): ...
    def is_multigraph(self): ...
    def is_directed(self): ...
    def fresh_copy(self): ...
    def copy(self, as_view: bool = ...): ...
    def to_directed(self, as_view: bool = ...): ...
    def to_undirected(self, as_view: bool = ...): ...
    def subgraph(self, nodes): ...
    def edge_subgraph(self, edges): ...
    def size(self, weight: Optional[Any] = ...): ...
    def number_of_edges(self, u: Optional[Any] = ..., v: Optional[Any] = ...): ...
    def nbunch_iter(self, nbunch: Optional[Any] = ...): ...
