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

from collections import Mapping, Set
from typing import Any, Optional

class NodeView(Mapping, Set):
    def __init__(self, graph) -> None: ...
    def __len__(self): ...
    def __iter__(self): ...
    def __getitem__(self, n): ...
    def __contains__(self, n): ...
    def __call__(self, data: bool = ..., default: Optional[Any] = ...): ...
    def data(self, data: bool = ..., default: Optional[Any] = ...): ...

class NodeDataView(Set):
    def __init__(self, nodedict, data: bool = ..., default: Optional[Any] = ...) -> None: ...
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, n): ...
    def __getitem__(self, n): ...

class DiDegreeView:
    def __init__(self, G, nbunch: Optional[Any] = ..., weight: Optional[Any] = ...) -> None: ...
    def __call__(self, nbunch: Optional[Any] = ..., weight: Optional[Any] = ...): ...
    def __getitem__(self, n): ...
    def __iter__(self): ...
    def __len__(self): ...

class DegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class OutDegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class InDegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class MultiDegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class DiMultiDegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class InMultiDegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class OutMultiDegreeView(DiDegreeView):
    def __getitem__(self, n): ...
    def __iter__(self): ...

class OutEdgeDataView:
    def __init__(
        self,
        viewer,
        nbunch: Optional[Any] = ...,
        data: bool = ...,
        default: Optional[Any] = ...,
    ) -> None: ...
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, e): ...

class EdgeDataView(OutEdgeDataView):
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, e): ...

class InEdgeDataView(OutEdgeDataView):
    def __iter__(self): ...
    def __contains__(self, e): ...

class OutMultiEdgeDataView(OutEdgeDataView):
    keys: Any = ...
    def __init__(
        self,
        viewer,
        nbunch: Optional[Any] = ...,
        data: bool = ...,
        keys: bool = ...,
        default: Optional[Any] = ...,
    ) -> None: ...
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, e): ...

class MultiEdgeDataView(OutMultiEdgeDataView):
    def __iter__(self): ...
    def __contains__(self, e): ...

class InMultiEdgeDataView(OutMultiEdgeDataView):
    def __iter__(self): ...
    def __contains__(self, e): ...

class OutEdgeView(Set, Mapping):
    dataview: Any = ...
    def __init__(self, G) -> None: ...
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, e): ...
    def __getitem__(self, e): ...
    def __call__(
        self,
        nbunch: Optional[Any] = ...,
        data: bool = ...,
        default: Optional[Any] = ...,
    ): ...
    def data(
        self,
        data: bool = ...,
        default: Optional[Any] = ...,
        nbunch: Optional[Any] = ...,
    ): ...

class EdgeView(OutEdgeView):
    dataview: Any = ...
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, e): ...

class InEdgeView(OutEdgeView):
    dataview: Any = ...
    def __init__(self, G) -> None: ...
    def __iter__(self): ...
    def __contains__(self, e): ...
    def __getitem__(self, e): ...

class OutMultiEdgeView(OutEdgeView):
    dataview: Any = ...
    def __len__(self): ...
    def __iter__(self): ...
    def __contains__(self, e): ...
    def __getitem__(self, e): ...
    def __call__(
        self,
        nbunch: Optional[Any] = ...,
        data: bool = ...,
        keys: bool = ...,
        default: Optional[Any] = ...,
    ): ...
    def data(
        self,
        data: bool = ...,
        keys: bool = ...,
        default: Optional[Any] = ...,
        nbunch: Optional[Any] = ...,
    ): ...

class MultiEdgeView(OutMultiEdgeView):
    dataview: Any = ...
    def __len__(self): ...
    def __iter__(self): ...

class InMultiEdgeView(OutMultiEdgeView):
    dataview: Any = ...
    def __init__(self, G) -> None: ...
    def __iter__(self): ...
    def __contains__(self, e): ...
    def __getitem__(self, e): ...
