+
    �°³jÊÑ  ã                   óL  € R t ^ RIt^ RIHt ^ RIHtHt ^ RIt. R4Ot	R t
R5R lt ! R R]]4      t ! R R]4      t ! R R4      t ! R R]4      t ! R  R]4      t ! R! R]4      t ! R" R]4      t ! R# R]4      t ! R$ R]4      t ! R% R]4      t ! R& R']4      t ! R( R
]4      t ! R) R	]4      t ! R* R]4      t ! R+ R]4      t ! R, R]4      t ! R- R]4      t ! R. R]]]4      t ! R/ R]4      t ! R0 R]4      t ! R1 R]4      t  ! R2 R] 4      t! ! R3 R] 4      t"R# )6uÞ  
View Classes provide node, edge and degree "views" of a graph.

As with dicts, the graph should not be updated while
iterating through the view. Views can be iterated multiple times.

Views are quick-to-create, read-only iterable containers,
live (they reflect changes to the graph), and provide
Pythonic access patterns for all base graph classes:

- set-like membership and set operations for nodes and edges (``n in G.nodes``,
  ``G.nodes & H.nodes``, ``(u, v) in G.edges``),
- iteration (``for n in G.nodes``, ``for u, v in G.edges``),
- mapping-style lookups (``G.nodes[n]`` returns the node attribute dict;
  ``G.edges[u, v]`` returns the edge attribute dict),
- data-filtered iteration via ``.data(...)`` and conversion to concrete
  containers via ``list(...)`` or ``dict(...)``.

The resulting attribute dict is writable as ``G.edges[3, 4]['color'] = 'red'``
Degree views allow lookup of degree values for single nodes.
Weighted degree is supported with the ``weight`` argument.

NodeView
========

``V = G.nodes`` (or ``V = G.nodes()``) allows ``len(V)``, ``n in V``, set
operations e.g. ``G.nodes & H.nodes``, and ``dd = G.nodes[n]``, where
``dd`` is the node data dict. Iteration is over the nodes by default.

NodeDataView
============

To iterate over ``(node, data)`` pairs, use arguments to ``G.nodes()``
to create a DataView e.g. ``DV = G.nodes(data='color', default='red')``.
The DataView iterates as ``for n, color in DV`` and allows
``(n, 'red') in DV``. Using ``DV = G.nodes(data=True)``, the DataViews
use the full datadict in writeable form also allowing contain testing as
``(n, {'color': 'red'}) in VD``. DataViews allow set operations when
data attributes are hashable.

DegreeView
==========

``V = G.degree`` allows iteration over ``(node, degree)`` pairs as well
as lookup: ``deg = V[n]``. There are many flavors of DegreeView
for In/Out/Directed/Multi. For Directed Graphs, ``G.degree``
counts both in and out going edges. ``G.out_degree`` and
``G.in_degree`` count only specific directions.
Weighted degree using edge data attributes is provide via
``V = G.degree(weight='attr_name')`` where any string with the
attribute name can be used. ``weight=None`` is the default.
No set operations are implemented for degrees, use NodeView.

The argument ``nbunch`` restricts iteration to nodes in nbunch.
The DegreeView can still lookup any node even if nbunch is specified.

EdgeView
========

``V = G.edges`` or ``V = G.edges()`` allows iteration over edges as well as
``e in V``, set operations and edge data lookup ``dd = G.edges[2, 3]``.
Iteration is over 2-tuples ``(u, v)`` for Graph/DiGraph. For multigraphs
edges 3-tuples ``(u, v, key)`` are the default but 2-tuples can be obtained
via ``V = G.edges(keys=False)``.

Set operations for directed graphs treat the edges as a set of 2-tuples.
For undirected graphs, 2-tuples are not a unique representation of edges.
So long as the set being compared to contains unique representations
of its edges, the set operations will act as expected. If the other
set contains both ``(0, 1)`` and ``(1, 0)`` however, the result of set
operations may contain both representations of the same edge.

EdgeDataView
============

Edge data can be reported using an EdgeDataView typically created
by calling an EdgeView: ``DV = G.edges(data='weight', default=1)``.
The EdgeDataView allows iteration over edge tuples, membership checking
but no set operations.

Iteration depends on ``data`` and ``default`` and for multigraph ``keys``
If ``data is False`` (the default) then iterate over 2-tuples ``(u, v)``.
If ``data is True`` iterate over 3-tuples ``(u, v, datadict)``.
Otherwise iterate over ``(u, v, datadict.get(data, default))``.
For Multigraphs, if ``keys is True``, replace ``u, v`` with `u, v, key`
to create 3-tuples and 4-tuples.

The argument ``nbunch`` restricts edges to those incident to nodes in nbunch.

Common usage patterns
=====================

NodeView / NodeDataView
-----------------------

- Use ``G.nodes`` when you need membership tests, set-like operations, or to
  look up a node's attribute dict with ``G.nodes[n]``.
- Use ``G.nodes(data=...)`` or ``G.nodes.data(attr_name, default=...)`` to
  iterate node/data pairs or to extract a single attribute for all nodes.
- Use ``list(G)`` or ``for node in G:`` to iterate over nodes.

Example:

.. code-block:: python

    >>> G = nx.path_graph(3)
    >>> list(G.nodes)
    [0, 1, 2]
    >>> G.add_node(3, color="red")
    >>> list(G.nodes.data("color", default=None))
    [(0, None), (1, None), (2, None), (3, 'red')]

EdgeView / EdgeDataView
-----------------------

- Use ``G.edges`` to iterate or test membership for edges.
- Call ``G.edges(data=...)`` or ``G.edges(nbunch=..., data=..., keys=...)`` to
  iterate edges with data, restrict to edges incident to a set of nodes, or
  include multigraph keys.

.. note::
   Iteration of ``G.edges()`` yields node pairs as 2-tuples even for multigraphs.
   Iteration of `G.edges` yields 3-tuples for multigraphs and 2-tuples otherwise.
   You can also use ``G.edges(keys=True, data=True)`` to receive 4-tuples
   ``(u, v, key, data)`` for multigraphs.

Example:

.. code-block:: python

    >>> G = nx.Graph()
    >>> G.add_edge(0, 1, weight=3)
    >>> list(G.edges(data="weight", default=1))
    [(0, 1, 3)]

DegreeView
----------

- Use ``G.degree`` to iterate ``(node, degree)`` pairs or query a single node
  with ``G.degree[n]``.
- The function interface ``G.degree(nbunch=..., weight=...)`` allows:
  * ``weight="attr"`` to compute weighted degree using the named edge attribute, and
  * ``nbunch`` to restrict iteration to a subset of nodes while still allowing direct lookups.

Example:

.. code-block:: python

    >>> G = nx.cycle_graph(4)
    >>> dict(G.degree())
    {0: 2, 1: 2, 2: 2, 3: 2}
    >>> G.degree[0]
    2
    >>> # Add an edge with a weight attribute and compute weighted degrees:
    >>> G.add_edge(0, 1, weight=5)
    >>> dict(G.degree(weight="weight"))
    {0: 6, 1: 6, 2: 2, 3: 2}

Degree Computation
==================

NetworkX does not store a persistent degree value for each node. Instead, the
degree is computed when requested by examining the neighbor dictionary for a
node and counting or summing edge attributes as needed. For multigraphs the key
dict for each neighbor is scanned; for weighted degree the requested edge
attribute values are summed.

Because computing degree accesses the adjacency structures, some applications
cache degree values in a separate dictionary to avoid repeated recomputation:

.. code-block:: python

    >>> G_degree = dict(G.degree)   # make a cached snapshot of degrees

If degrees are cached, update the cached dictionary when edges are modified.

Performance & pitfalls
======================

- Views are **read-only** wrappers â€” they do not copy graph data. If you need a stable snapshot
  (for example when you will modify the graph while iterating), materialize the view using
  ``list(view)`` or ``dict(view)``.
- Avoid modifying the graph while iterating over a view (same rule as iterating a dict).
- DataViews that return full attribute dicts expose writable dicts (modifying those dicts
  modifies the underlying graph attributes). Use this intentionally.
- Edge set operations on undirected graphs use 2-tuple representations; be careful when
  comparing sets that may contain both ``(u, v)`` and ``(v, u)``.
- DegreeView with ``weight`` performs a sum over edge attributes and can be more expensive
  than unweighted degree calculations.
- When ``G`` will not change and you need many degree lookups, store
  the precomputed degrees using ``degrees = dict(G.degree)``.
N)ÚABC)ÚMappingÚSetÚNodeViewÚNodeDataViewÚEdgeViewÚOutEdgeViewÚ
InEdgeViewÚEdgeDataViewÚOutEdgeDataViewÚInEdgeDataViewÚMultiEdgeViewÚOutMultiEdgeViewÚInMultiEdgeViewÚMultiEdgeDataViewÚOutMultiEdgeDataViewÚInMultiEdgeDataViewÚ
DegreeViewÚDiDegreeViewÚInDegreeViewÚOutDegreeViewÚMultiDegreeViewÚDiMultiDegreeViewÚInMultiDegreeViewÚOutMultiDegreeViewc                  ó   € R # ©N© r   ó    Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/networkx/classes/reportviews.pyÚ	_dead_refr    â   s   € Ùr   c                óš   a€ Sf   \        V 4      #  SV 9   pV'       d   \        S.4      # V3R lpV! SV 4      #   \         d    Rp L2i ; i)z³The body of ``Graph.nbunch_iter`` on an adjacency dict.

Views call this with the dict they hold so they never need the graph
object itself; ``Graph.nbunch_iter`` delegates here.
Fc              3   óJ  <"  €  V  F  pW!9   g   K  Vx € K  	  R#   \          dz   pY3P                  ^ ,          rTRT9   d   \        P                  ! R4      pRT9   d   \        P                  ! RS R24      pRT9   d   \        P                  ! RX R24      pThRp?ii ; i5i)	é    Úiterz,nbunch is not a node or a sequence of nodes.zobject is not iterablezNode z is not in the graph.Úhashablez( in sequence nbunch is not a valid node.N)Ú	TypeErrorÚargsÚnxÚNetworkXError)ÚnlistÚadjÚnÚerrÚexcÚmessageÚnbunchs   &&    €r   Ú
bunch_iterÚ _nbunch_iter.<locals>.bunch_iterõ   s¤   øé € ð	Û�Ø–8Ø”Gó øô ô 	Ø§¡¨¥�à˜Ô Ü×&Ò&Ð'UÓV�à'¨7Ô2Ü×&Ò&¨¨v¨hÐ6KÐ'LÓM�à˜WÔ$Ü×&Ò&Ø˜A˜3ÐFÐGó�ð ˆIûð	üs)   ƒB#… ’ šB#œB §A4BÂB Â B#)r$   r&   )r+   r0   Úsingler1   s   &f  r   Ú_nbunch_iterr4   æ   s]   ø€ ð ‚~Ü�C‹yÐðØ˜3‘ˆ÷ Ü�V�H‹~Ðõñ( �f˜cÓ"Ð"øô3 ô ØŠðús   ’: ºA
Á	A
c                   ó‚   a € ] tR tRt o RtRtR tR tR tR t	R t
R tR	 t]R
 4       tRR ltRR ltR tR tRtV tR# )r   i  a)  A NodeView class to act as G.nodes for a NetworkX Graph

Set operations act on the nodes without considering data.
Iteration is over nodes. Node data can be looked up like a dict.
Use NodeDataView to iterate over node data or to specify a data
attribute for lookup. NodeDataView is created by calling the NodeView.

Parameters
----------
graph : NetworkX graph-like class

Examples
--------
>>> G = nx.path_graph(3)
>>> NV = G.nodes()
>>> 2 in NV
True
>>> for n in NV:
...     print(n)
0
1
2
>>> assert NV & {1, 2, 3} == {1, 2}

>>> G.add_node(2, color="blue")
>>> NV[2]
{'color': 'blue'}
>>> G.add_node(8, color="red")
>>> NDV = G.nodes(data=True)
>>> (2, NV[2]) in NDV
True
>>> for n, dd in NDV:
...     print((n, dd.get("color", "aqua")))
(0, 'aqua')
(1, 'aqua')
(2, 'blue')
(8, 'red')
>>> NDV[2] == NV[2]
True

>>> NVdata = G.nodes(data="color", default="aqua")
>>> (2, NVdata[2]) in NVdata
True
>>> for n, dd in NVdata:
...     print((n, dd))
(0, 'aqua')
(1, 'aqua')
(2, 'blue')
(8, 'red')
>>> NVdata[2] == NV[2]  # NVdata gets 'color', NV gets datadict
False
c                ó   € R V P                   /# ©Ú_nodesr7   ©Úselfs   &r   Ú__getstate__ÚNodeView.__getstate__E  s   € Ø˜$Ÿ+™+Ð&Ð&r   c                ó"   € VR ,          V n         R# )r8   Nr7   ©r:   Ústates   &&r   Ú__setstate__ÚNodeView.__setstate__H  s   € Ø˜H•oˆŽr   c                ó(   € VP                   V n        R # r   )Ú_noder8   )r:   Úgraphs   &&r   Ú__init__ÚNodeView.__init__K  s   € Ø—k‘kˆŽr   c                ó,   € \        V P                  4      # r   ©Úlenr8   r9   s   &r   Ú__len__ÚNodeView.__len__O  ó   € Ü�4—;‘;ÓÐr   c                ó,   € \        V P                  4      # r   )r$   r8   r9   s   &r   Ú__iter__ÚNodeView.__iter__R  s   € Ü�D—K‘KÓ Ð r   c           
     óú   € \        V\        4      '       dT   \        P                  ! \	        V 4      P
                   R VP                   RVP                   RVP                   R24      hV P                  V,          # )z- does not support slicing, try list(G.nodes)[Ú:Ú])
Ú
isinstanceÚslicer(   r)   ÚtypeÚ__name__ÚstartÚstopÚstepr8   ©r:   r,   s   &&r   Ú__getitem__ÚNodeView.__getitem__U  sl   € Ü�aœ×ÒÜ×"Ò"Ü˜“:×&Ñ&Ð'ð (%Ø%&§W¡W I¨Q¨q¯v©v¨h°a¸¿¹°x¸qðBóð ð �{‰{˜1�~Ðr   c                ó   € WP                   9   # r   r7   rZ   s   &&r   Ú__contains__ÚNodeView.__contains__^  s   € Ø—K‘KÑÐr   c                ó   € \        V4      # r   ©Úset©ÚclsÚits   &&r   Ú_from_iterableÚNodeView._from_iterablea  ó   € ä�2‹wˆr   Nc                ó>   € VR J d   V # \        V P                  W4      # ©F©r   r8   ©r:   ÚdataÚdefaults   &&&r   Ú__call__ÚNodeView.__call__f  s   € Ø�5‹=ØˆKÜ˜DŸK™K¨Ó7Ð7r   c                ó>   € VRJ d   V # \        V P                  W4      # )a:  
Return a read-only view of node data.

Parameters
----------
data : bool or node data key, default=True
    If ``data=True`` (the default), return a `NodeDataView` object that
    maps each node to *all* of its attributes. `data` may also be an
    arbitrary key, in which case the `NodeDataView` maps each node to
    the value for the keyed attribute. In this case, if a node does
    not have the `data` attribute, the `default` value is used.
default : object, default=None
    The value used when a node does not have a specific attribute.

Returns
-------
NodeDataView
    The layout of the returned NodeDataView depends on the value of the
    `data` parameter.

Notes
-----
If ``data=False``, returns a `NodeView` object without data.

See Also
--------
NodeDataView

Examples
--------
>>> G = nx.Graph()
>>> G.add_nodes_from(
...     [
...         (0, {"color": "red", "weight": 10}),
...         (1, {"color": "blue"}),
...         (2, {"color": "yellow", "weight": 2}),
...     ]
... )

Accessing node data with ``data=True`` (the default) returns a
NodeDataView mapping each node to all of its attributes:

>>> G.nodes.data()
NodeDataView({0: {'color': 'red', 'weight': 10}, 1: {'color': 'blue'}, 2: {'color': 'yellow', 'weight': 2}})

If `data` represents  a key in the node attribute dict, a NodeDataView mapping
the nodes to the value for that specific key is returned:

>>> G.nodes.data("color")
NodeDataView({0: 'red', 1: 'blue', 2: 'yellow'}, data='color')

If a specific key is not found in an attribute dict, the value specified
by `default` is returned:

>>> G.nodes.data("weight", default=-999)
NodeDataView({0: 10, 1: -999, 2: 2}, data='weight')

Note that there is no check that the `data` key is in any of the
node attribute dictionaries:

>>> G.nodes.data("height")
NodeDataView({0: None, 1: None, 2: None}, data='height')
Frk   rl   s   &&&r   rm   ÚNodeView.datak  s"   € ð@ �5‹=ØˆKÜ˜DŸK™K¨Ó7Ð7r   c                ó*   € \        \        V 4      4      # r   ©ÚstrÚlistr9   s   &r   Ú__str__ÚNodeView.__str__¯  ó   € Ü”4˜“:‹Ðr   c                óL   € V P                   P                   R \        V 4       R2# ©Ú(Ú))Ú	__class__rV   Útupler9   s   &r   Ú__repr__ÚNodeView.__repr__²  s$   € Ø—.‘.×)Ñ)Ð*¨!¬E°$«K¨=¸Ð:Ð:r   r7   ©FN)TN)rV   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r;   r@   rE   rJ   rN   r[   r^   Úclassmethodrf   ro   rm   rw   r€   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r     sd   ø‡ € ñ3ðj €Iò'ò&ò"ò ò!òò ð ñó ðô8ô
B8òH÷;ð ;r   c                   ór   a € ] tR tRt o RtRtR tR tRR lt]	R 4       t
R tR	 tR
 tR tR tR tRtV tR# )r   i¶  ae  A DataView class for nodes of a NetworkX Graph

The main use for this class is to iterate through node-data pairs.
The data can be the entire data-dictionary for each node, or it
can be a specific attribute (with default) for each node.
Set operations are enabled with NodeDataView, but don't work in
cases where the data is not hashable. Use with caution.
Typically, set operations on nodes use NodeView, not NodeDataView.
That is, they use `G.nodes` instead of `G.nodes(data='foo')`.

Parameters
==========
graph : NetworkX graph-like class
data : bool or string (default=False)
default : object (default=None)
c                óN   € R V P                   RV P                  RV P                  /# ©r8   Ú_dataÚ_defaultr�   r9   s   &r   r;   ÚNodeDataView.__getstate__Ê  s!   € Ø˜$Ÿ+™+ w°·
±
¸JÈÏÉÐVÐVr   c                óZ   € VR ,          V n         VR,          V n        VR,          V n        R# )r8   r�   r‘   Nr�   r>   s   &&r   r@   ÚNodeDataView.__setstate__Í  s$   € Ø˜H•oˆŒØ˜7•^ˆŒ
Ø˜jÕ)ˆŽr   Nc                ó*   € Wn         W n        W0n        R # r   r�   )r:   Únodedictrm   rn   s   &&&&r   rE   ÚNodeDataView.__init__Ò  s   € ØŒØŒ
ØŽr   c                óž   €  \        V4      #   \         d5   pR \        T4      9   d   Rp\        \        T4      T,           4      Thh Rp?ii ; i)Ú
unhashablez7 : Could be b/c data=True or your values are unhashableN)rb   r&   ru   )rd   re   r-   Úmsgs   &&  r   rf   ÚNodeDataView._from_iterable×  sI   € ð	Ü�r“7ˆNøÜô 	Øœs 3›xÔ'ØO�Ü¤ C£¨3¥Ó/°SÐ8Øûð		ús   ‚
 �A˜/AÁAc                ó,   € \        V P                  4      # r   rH   r9   s   &r   rJ   ÚNodeDataView.__len__á  rL   r   c                óð   a a€ S P                   oSR J d   \        S P                  4      # SRJ d$   \        S P                  P                  4       4      # VV 3R lS P                  P                  4        4       # )FTc              3   ód   <"  € T F%  w  rTSV9   d
   VS,          MSP                   3x € K'  	  R # 5ir   )r‘   )Ú.0r,   Úddrm   r:   s   &  €€r   Ú	<genexpr>Ú(NodeDataView.__iter__.<locals>.<genexpr>ê  s/   øé € ð 
á,‘�ð ˜D BœJ��4–¨D¯M©MÕ:Û,ùs   ƒ-0)r�   r$   r8   Úitems)r:   rm   s   f@r   rN   ÚNodeDataView.__iter__ä  s`   ù€ Ø�z‰zˆØ�5‹=Ü˜Ÿ™Ó$Ð$Ø�4‹<Ü˜Ÿ™×)Ñ)Ó+Ó,Ð,õ
àŸ™×*Ñ*Ô,ó
ð 	
r   c                ó  €  WP                   9   pTR J d   T#  Tw  rYP                   9   ;'       d    Y,          T8H  #   \         d)    Tw  rYP                   9   ;'       d    Y,          T8H  u # i ; i  \        \        3 d     R# i ; i)TF)r8   r&   Ú
ValueError)r:   r,   Únode_inÚds   &&  r   r^   ÚNodeDataView.__contains__ï  s•   € ð	5ØŸ;™;Ñ&ˆGð �d‹?ØˆNð	Ø‰DˆAð —K‘KÑ×0Ð0 D¥G¨q¡LÐ0øô ô 	5Ø‰DˆAØŸ™Ñ#×4Ð4¨­°1©Ò4ð	5ûô œ:Ð&ô 	Úð	ús&   ‚> ™A4 ¾#A1Á"A1Á0A1Á4B	ÂB	c           
     ób  € \        V\        4      '       dT   \        P                  ! \	        V 4      P
                   R VP                   RVP                   RVP                   R24      hV P                  V,          pV P                  pVRJ g   VRJ d   V# W29   d	   W#,          # V P                  # )z4 does not support slicing, try list(G.nodes.data())[rQ   rR   FT)rS   rT   r(   r)   rU   rV   rW   rX   rY   r8   r�   r‘   )r:   r,   Úddictrm   s   &&  r   r[   ÚNodeDataView.__getitem__ý  s›   € Ü�aœ×ÒÜ×"Ò"Ü˜“:×&Ñ&Ð'ð (,Ø,-¯G©G¨9°A°a·f±f°X¸Q¸q¿v¹v¸hÀaðIóð ð —‘˜A•ˆØ�z‰zˆØ�5‹=˜D D›LØˆLØ"œmˆu�{Ð>°·±Ð>r   c                ó*   € \        \        V 4      4      # r   rt   r9   s   &r   rw   ÚNodeDataView.__str__	  ry   r   c                óð   € V P                   P                  pV P                  R J d   V R\        V 4       R2# V P                  RJ d   V R\	        V 4       R2# V R\	        V 4       RV P                  : R2# )Fr|   r}   Tz, data=)r~   rV   r�   r   Údict)r:   Únames   & r   r€   ÚNodeDataView.__repr__  sx   € Ø�~‰~×&Ñ&ˆØ�:‰:˜ÓØ�V˜1œU 4›[˜M¨Ð+Ð+Ø�:‰:˜ÓØ�V˜1œT $›Z˜L¨Ð*Ð*Ø��qœ˜d›˜ G¨D¯J©J©>¸Ð;Ð;r   )r�   r‘   r8   r�   r‚   )rV   rƒ   r„   r…   r†   r‡   r;   r@   rE   rˆ   rf   rJ   rN   r^   r[   rw   r€   r‰   rŠ   r‹   s   @r   r   r   ¶  sX   ø‡ € ñð" 0€IòWò*ô
 ð
 ñó ðò ò	
ò1ò
?ò÷<ð <r   c                   ó¦   a € ] tR tRt o Rt]R 4       t]P                  R 4       tR tR t	RR lt
]R	 4       tRR
 ltR tR tR tR tR tRtV tR# )r   i  aá  A View class for degree of nodes in a NetworkX Graph

The functionality is like dict.items() with (node, degree) pairs.
Additional functionality includes read-only lookup of node degree,
and calling with optional features nbunch (for only a subset of nodes)
and weight (use edge weights to compute degree).

Parameters
==========
graph : NetworkX graph-like class
nbunch : node, container of nodes, or None meaning all nodes (default=None)
weight : bool or string (default=None)

Notes
-----
DegreeView can still lookup any node even if nbunch is specified.

Examples
--------
>>> G = nx.path_graph(3)
>>> DV = G.degree()
>>> assert DV[2] == 1
>>> assert sum(deg for n, deg in DV) == 4

>>> DVweight = G.degree(weight="span")
>>> G.add_edge(1, 2, span=34)
>>> DVweight[2]
34
>>> DVweight[0]  #  default edge weight is 1
1
>>> sum(span for n, span in DVweight)  # sum weighted degrees
70

>>> DVnbunch = G.degree(nbunch=(1, 2))
>>> assert len(list(DVnbunch)) == 2  # iteration over nbunch only
c                óD   € V P                  4       pVf   \        R4      hV# ©Nz5the graph this view was created from no longer exists©Ú
_graph_refÚReferenceError©r:   ÚGs   & r   Ú_graphÚDiDegreeView._graph>  ó*   € à�O‰OÓˆØŠ9Ü ØGóð ð ˆr   c                ó^   € Ve   \         P                  ! V4      V n        R # \        V n        R # r   ©ÚweakrefÚrefr    r¸   rº   s   &&r   r¼   r½   G  ó   € à,-ªMœ'Ÿ+š+ a›.ˆŽ¼yˆŽr   c                óf   € V P                   P                  4       pVR  V P                  4       VR&   V# )r¸   r¼   )Ú__dict__Úcopyr¸   r>   s   & r   r;   ÚDiDegreeView.__getstate__K  s1   € Ø—‘×"Ñ"Ó$ˆØ�,ÐØŸ/™/Ó+ˆˆh‰Øˆr   c                óh   € VP                  R 4      V n        V P                  P                  V4       R# )r¼   N)Úpopr¼   rÅ   Úupdater>   s   &&r   r@   ÚDiDegreeView.__setstate__Q  s$   € Ø—i‘i Ó)ˆŒØ�‰×Ñ˜UÖ#r   Nc                óB  € Wn         \        VR 4      '       d   VP                  MVP                  V n        \        VR4      '       d   VP                  MVP                  V n        Vf   V P                  M\        \        V P                  V4      4      V n        W0n        R# )Ú_succÚ_predN)	r¼   ÚhasattrrÍ   Ú_adjrÎ   rv   r4   r8   Ú_weight)r:   r»   r0   Úweights   &&&&r   rE   ÚDiDegreeView.__init__U  sl   € ØŒÜ '¨¨7× 3Ò 3�Q—W’W¸¿¹ˆŒ
Ü '¨¨7× 3Ò 3�Q—W’W¸¿¹ˆŒ
à š.ˆD�JŠJ¬d´<ÀÇ
Á
ÈFÓ3SÓ.Tð 	Œð Žr   c                ó  € V P                  V 4      pVP                  Vn        VP                  Vn        VP                  Vn        Vf   VP                  M\	        \        VP                  V4      4      Vn        W4n        V# )z?A sibling view sharing ``view``'s dicts; needs no graph object.)Ú__new__r¸   rÍ   rÎ   rv   r4   r8   rÑ   )rd   Úviewr0   rÒ   Únews   &&&& r   Ú
_from_viewÚDiDegreeView._from_view^  sc   € ð �k‰k˜#ÓˆØŸ™ˆŒØ—J‘JˆŒ	Ø—J‘JˆŒ	àšˆC�IŠI¬T´,¸s¿y¹yÈ&Ó2QÓ-Rð 	Œ
ð ŒØˆ
r   c                ó"  € Vf&   W P                   8X  d   V # V P                  V R V4      #  WP                  9   d3   W P                   8X  d	   W,          # V P                  V R V4      V,          #  V P                  WV4      #   \         d     Li ; ir   )rÑ   rØ   r8   r&   )r:   r0   rÒ   s   &&&r   ro   ÚDiDegreeView.__call__k  sŽ   € ØŠ>ØŸ™Ô%Ø�Ø—?‘? 4¨¨vÓ6Ð6ð	ØŸ™Ô$ØŸ\™\Ô)Ø�<Ð'Ø—‘ t¨T°6Ó:¸6ÕBÐBð %ð �‰˜t¨VÓ4Ð4øô ô 	Ùð	ús   «'B  ÁB  Â BÂBc                ó<  a€ V P                   oV P                  V,          pV P                  V,          pSf   \        V4      \        V4      ,           # \	        V3R lVP                  4        4       4      \	        V3R lVP                  4        4       4      ,           # )Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5i©é   N©Úget©r    r¡   rÒ   s   & €r   r¢   Ú+DiDegreeView.__getitem__.<locals>.<genexpr>  s   øé € Ð>©~¨—6‘6˜& !×$Ð$«~ùó   ƒ!c              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   rã     s!   øé € ð E
Ù(6 "�F‰F�6˜1×Ð«ùrä   )rÑ   rÍ   rÎ   rI   ÚsumÚvalues)r:   r,   ÚsuccsÚpredsrÒ   s   &&  @r   r[   ÚDiDegreeView.__getitem__y  sy   ø€ Ø—‘ˆØ—
‘
˜1•ˆØ—
‘
˜1•ˆØŠ>Ü�u“:¤ E£
Õ*Ð*ÜÔ>¨u¯|©|¬~Ó>Ó>Äô E
Ø(-¯©¬óE
ó B
õ 
ð 	
r   c              #  óö  a"  € V P                   oSf[   V P                   FH  pV P                  V,          pV P                  V,          pV\	        V4      \	        V4      ,           3x € KJ  	  R # V P                   Fy  pV P                  V,          pV P                  V,          p\        V3R lVP                  4        4       4      \        V3R lVP                  4        4       4      ,           pW3x € K{  	  R # 5i)Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   Ú(DiDegreeView.__iter__.<locals>.<genexpr>Ž  ó   øé € ÐE±n°Ÿ&™& ¨×+Ð+³nùrä   c              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   rí   Ž  s!   øé € ð LÙ0>¨"—F‘F˜6 1×%Ð%³ùrä   )rÑ   r8   rÍ   rÎ   rI   ræ   rç   ©r:   r,   rè   ré   ÚdegrÒ   s   &    @r   rN   ÚDiDegreeView.__iter__ƒ  s¿   øé € Ø—‘ˆØŠ>Ø—[”[�ØŸ
™
 1��ØŸ
™
 1��Øœ#˜e›*¤s¨5£zÕ1Ð2Ô2ó !ð
 —[”[�ØŸ
™
 1��ØŸ
™
 1��ÜÔE°e·l±l´nÓEÓEÌô LØ05·±´óLó Iõ �ð �h”ó !ùs   ƒC6C9c                ó,   € \        V P                  4      # r   rH   r9   s   &r   rJ   ÚDiDegreeView.__len__“  rL   r   c                ó*   € \        \        V 4      4      # r   rt   r9   s   &r   rw   ÚDiDegreeView.__str__–  ry   r   c                óL   € V P                   P                   R \        V 4       R2# r{   )r~   rV   r±   r9   s   &r   r€   ÚDiDegreeView.__repr__™  ó$   € Ø—.‘.×)Ñ)Ð*¨!¬D°«J¨<°qÐ9Ð9r   )r¼   r¸   r8   rÎ   rÍ   rÑ   )NN)rV   rƒ   r„   r…   r†   Úpropertyr¼   Úsetterr;   r@   rE   rˆ   rØ   ro   r[   rN   rJ   rw   r€   r‰   rŠ   r‹   s   @r   r   r     s   ø‡ € ñ#ðN ñó ðð ‡]�]ñIó ðIòò$ôð ñ
ó ð
ô5ò
òò  ò÷:ð :r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   i�  a  A DegreeView class to act as G.degree for a NetworkX Graph

Typical usage focuses on iteration over `(node, degree)` pairs.
The degree is by default the number of edges incident to the node.
Optional argument `weight` enables weighted degree using the edge
attribute named in the `weight` argument.  Reporting and iteration
can also be restricted to a subset of nodes using `nbunch`.

Additional functionality include node lookup so that `G.degree[n]`
reported the (possibly weighted) degree of node `n`. Calling the
view creates a view with different arguments `nbunch` or `weight`.

Parameters
==========
graph : NetworkX graph-like class
nbunch : node, container of nodes, or None meaning all nodes (default=None)
weight : string or None (default=None)

Notes
-----
DegreeView can still lookup any node even if nbunch is specified.

Examples
--------
>>> G = nx.path_graph(3)
>>> DV = G.degree()
>>> assert DV[2] == 1
>>> assert G.degree[2] == 1
>>> assert sum(deg for n, deg in DV) == 4

>>> DVweight = G.degree(weight="span")
>>> G.add_edge(1, 2, span=34)
>>> DVweight[2]
34
>>> DVweight[0]  #  default edge weight is 1
1
>>> sum(span for n, span in DVweight)  # sum weighted degrees
70

>>> DVnbunch = G.degree(nbunch=(1, 2))
>>> assert len(list(DVnbunch)) == 2  # iteration over nbunch only
c                ó
  a€ V P                   oV P                  V,          pSf   \        V4      W9   ,           # \        V3R lVP	                  4        4       4      W9   ;'       d    W!,          P                  S^4      ,           # )Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   Ú)DegreeView.__getitem__.<locals>.<genexpr>Î  ó   øé € Ð=©}¨—6‘6˜& !×$Ð$«}ùrä   )rÑ   rÍ   rI   ræ   rç   rá   ©r:   r,   ÚnbrsrÒ   s   && @r   r[   ÚDegreeView.__getitem__É  sg   ø€ Ø—‘ˆØ�z‰z˜!�}ˆØŠ>Ü�t“9 ¡	Õ*Ð*ÜÔ=¨t¯{©{¬}Ó=Ó=Ø‰I×0Ð0˜$�'Ÿ+™+ f¨aÓ0õ
ð 	
r   c              #  óž  a"  € V P                   oSfA   V P                   F.  pV P                  V,          pV\        V4      W9   ,           3x € K0  	  R # V P                   Fg  pV P                  V,          p\	        V3R lVP                  4        4       4      W9   ;'       d    W!,          P                  S^4      ,           pW3x € Ki  	  R # 5i)Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   Ú&DegreeView.__iter__.<locals>.<genexpr>Û  s   øé € ÐD±m°Ÿ&™& ¨×+Ð+³mùrä   )rÑ   r8   rÍ   rI   ræ   rç   rá   ©r:   r,   r  rñ   rÒ   s   &   @r   rN   ÚDegreeView.__iter__Ò  s    øé € Ø—‘ˆØŠ>Ø—[”[�Ø—z‘z !•}�Øœ#˜d›) q¡yÕ1Ð2Ô2ó !ð —[”[�Ø—z‘z !•}�ÜÔD°d·k±k´mÓDÓDØ‘I×8Ð8 $¥'§+¡+¨f°aÓ"8õ�ð �h”ó !ùs   ƒC
Cr   N©	rV   rƒ   r„   r…   r†   r[   rN   r‰   rŠ   r‹   s   @r   r   r   �  s   ø‡ € ñ)òV
÷ð r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   iá  zEA DegreeView class to report out_degree for a DiGraph; See DegreeViewc                ó¢   a € S P                   V,          pS P                  f   \        V4      # \        V 3R lVP	                  4        4       4      # )Nc              3   óZ   <"  € T F   qP                  SP                  ^4      x € K"  	  R# 5irÞ   )rá   rÑ   )r    r¡   r:   s   & €r   r¢   Ú,OutDegreeView.__getitem__.<locals>.<genexpr>è  s!   øé € ÐC±]¨r—6‘6˜$Ÿ,™,¨×*Ð*³]ùs   ƒ(+)rÍ   rÑ   rI   ræ   rç   )r:   r,   r  s   f& r   r[   ÚOutDegreeView.__getitem__ä  s;   ø€ Ø�z‰z˜!�}ˆØ�<‰<ÒÜ�t“9ÐÜÔC°T·[±[´]ÓCÓCÐCr   c              #  ó:  a"  € V P                   oSf8   V P                   F%  pV P                  V,          pV\        V4      3x € K'  	  R # V P                   F>  pV P                  V,          p\	        V3R lVP                  4        4       4      pW3x € K@  	  R # 5i)Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   Ú)OutDegreeView.__iter__.<locals>.<genexpr>ó  rî   rä   )rÑ   r8   rÍ   rI   ræ   rç   )r:   r,   rè   rñ   rÒ   s   &   @r   rN   ÚOutDegreeView.__iter__ê  ów   øé € Ø—‘ˆØŠ>Ø—[”[�ØŸ
™
 1��Øœ#˜e›*�oÔ%ó !ð —[”[�ØŸ
™
 1��ÜÔE°e·l±l´nÓEÓE�Ø�h”ó !ùó   ƒBBr   Nr	  r‹   s   @r   r   r   á  s   ø‡ € ÙOòD÷
ð 
r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   i÷  zDA DegreeView class to report in_degree for a DiGraph; See DegreeViewc                ó¦   a€ V P                   oV P                  V,          pSf   \        V4      # \        V3R lVP	                  4        4       4      # )Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   Ú+InDegreeView.__getitem__.<locals>.<genexpr>ÿ  r   rä   )rÑ   rÎ   rI   ræ   rç   r  s   && @r   r[   ÚInDegreeView.__getitem__ú  s?   ø€ Ø—‘ˆØ�z‰z˜!�}ˆØŠ>Ü�t“9ÐÜÔ=¨t¯{©{¬}Ó=Ó=Ð=r   c              #  ó:  a"  € V P                   oSf8   V P                   F%  pV P                  V,          pV\        V4      3x € K'  	  R # V P                   F>  pV P                  V,          p\	        V3R lVP                  4        4       4      pW3x € K@  	  R # 5i)Nc              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   râ   s   & €r   r¢   Ú(InDegreeView.__iter__.<locals>.<genexpr>
  rî   rä   )rÑ   r8   rÎ   rI   ræ   rç   )r:   r,   ré   rñ   rÒ   s   &   @r   rN   ÚInDegreeView.__iter__  r  r  r   Nr	  r‹   s   @r   r   r   ÷  s   ø‡ € ÙNò>÷
ð 
r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   i  z=A DegreeView class for undirected multigraphs; See DegreeViewc                ó„  a€ V P                   oV P                  V,          pSfC   \        R VP                  4        4       4      W9   ;'       d    \	        W!,          4      ,           # \        V3R lVP                  4        4       4      pW9   d1   V\        V3R lW!,          P                  4        4       4      ,          pV# )Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   ©rI   ©r    Úkeyss   & r   r¢   Ú.MultiDegreeView.__getitem__.<locals>.<genexpr>  ó   é € Ð;©] T”s˜4—y�y«]ùó   ‚c              3   ór   <"  € T F,  qP                  4        F  q"P                  S^4      x € K  	  K.  	  R# 5irÞ   ©rç   rá   ©r    Úkey_dictr©   rÒ   s   &  €r   r¢   r$    s/   øé € ð 
Ù-: ÇOÁOÖDU¸q�E‰E�&˜!×ÐÑDUÑ«]ùó   ƒ47c              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   ©r    r©   rÒ   s   & €r   r¢   r$    s   øé € ÐBÑ1A¨A—u‘u˜V Q×'Ð'Ó1Aùrä   )rÑ   rÍ   ræ   rç   rI   r  s   &&  @r   r[   ÚMultiDegreeView.__getitem__  s˜   ø€ Ø—‘ˆØ�z‰z˜!�}ˆØŠ>ÜÑ;¨T¯[©[¬]Ó;Ó;Ø‘	×*Ð*œc $¥'›lõð ô ô 
Ø-1¯[©[¬]ó
ó 
ˆð Œ9Ø”3ÔB°µ·±Ô1AÓBÓBÕBˆCØˆ
r   c              #  ó  a"  € V P                   oSfp   V P                   F]  pV P                  V,          p\        R VP	                  4        4       4      W9   ;'       d    \        W!,          4      ,           pW3x € K_  	  R # V P                   Ft  pV P                  V,          p\        V3R lVP	                  4        4       4      pW9   d1   V\        V3R lW!,          P	                  4        4       4      ,          pW3x € Kv  	  R # 5i)Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  r"  s   & r   r¢   Ú+MultiDegreeView.__iter__.<locals>.<genexpr>%  ó   é € Ð>±¨œ#˜dŸ)˜)³ùr&  c              3   óv   <"  € T F.  pVP                  4        F  pVP                  S^4      x € K  	  K0  	  R# 5irÞ   r(  r)  s   &  €r   r¢   r1  ,  ó:   øé € ð á$1˜Ø%Ÿ_™_Ö.˜ð —E‘E˜& !×$Ð$á.ñ %Û$1ùó   ƒ69c              3   óF   <"  € T F  qP                  S^4      x € K  	  R# 5irÞ   rà   r-  s   & €r   r¢   r1  2  s   øé € ÐJÑ9I°AŸu™u V¨Q×/Ð/Ó9Iùrä   )rÑ   r8   rÍ   ræ   rç   rI   r  s   &   @r   rN   ÚMultiDegreeView.__iter__   sÌ   øé € Ø—‘ˆØŠ>Ø—[”[�Ø—z‘z !•}�ÜÑ>°·±´Ó>Ó>Ø‘I×.Ð.¤# d¥g£,õ�ð �h”ó !ð —[”[�Ø—z‘z !•}�Üô à$(§K¡K¤Móó �ð
 ”9Øœ3ÔJ¸½¿¹Ô9IÓJÓJÕJ�CØ�h”ó !ùs   ƒDD	r   Nr	  r‹   s   @r   r   r     s   ø‡ € ÙGò÷ð r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   i6  z3A DegreeView class for MultiDiGraph; See DegreeViewc                ó”  a€ V P                   oV P                  V,          pV P                  V,          pSfF   \        R VP	                  4        4       4      \        R VP	                  4        4       4      ,           # \        V3R lVP	                  4        4       4      \        V3R lVP	                  4        4       4      ,           pV# )Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  r"  s   & r   r¢   Ú0DiMultiDegreeView.__getitem__.<locals>.<genexpr>>  s   é € Ð<©^ T”s˜4—y�y«^ùr&  c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  r"  s   & r   r¢   r;  >  s   é € ð CÙ&4˜d”�D—	�	£nùr&  c              3   ór   <"  € T F,  qP                  4        F  q"P                  S^4      x € K  	  K.  	  R# 5irÞ   r(  r)  s   &  €r   r¢   r;  B  s/   øé € ð 
Ù-; Ç_Á_ÖEVÀ�E‰E�&˜!×ÐÑEVÑ«^ùr+  c              3   ór   <"  € T F,  qP                  4        F  q"P                  S^4      x € K  	  K.  	  R# 5irÞ   r(  r)  s   &  €r   r¢   r;  D  s/   øé € ð 
Ù-; Ç_Á_ÖEVÀ�E‰E�&˜!×ÐÑEVÑ«^ùr+  )rÑ   rÍ   rÎ   ræ   rç   rð   s   &&   @r   r[   ÚDiMultiDegreeView.__getitem__9  s¬   ø€ Ø—‘ˆØ—
‘
˜1•ˆØ—
‘
˜1•ˆØŠ>ÜÑ<¨U¯\©\¬^Ó<Ó<¼sñ CØ&+§l¡l¤nóCó @õ ð ô ô 
Ø-2¯\©\¬^ó
ó 
äô 
Ø-2¯\©\¬^ó
ó 
õ
ˆð
 ˆ
r   c              #  óL  a"  € V P                   oSf†   V P                   Fs  pV P                  V,          pV P                  V,          p\	        R VP                  4        4       4      \	        R VP                  4        4       4      ,           pW3x € Ku  	  R # V P                   Fy  pV P                  V,          pV P                  V,          p\	        V3R lVP                  4        4       4      \	        V3R lVP                  4        4       4      ,           pW3x € K{  	  R # 5i)Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  r"  s   & r   r¢   Ú-DiMultiDegreeView.__iter__.<locals>.<genexpr>O  s   é € Ð?±¨œ#˜dŸ)˜)³ùr&  c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  r"  s   & r   r¢   rB  O  s   é € ð FÙ*8 $”C˜—I�I«.ùr&  c              3   óv   <"  € T F.  pVP                  4        F  pVP                  S^4      x € K  	  K0  	  R# 5irÞ   r(  r)  s   &  €r   r¢   rB  W  s:   øé € ð á$2˜Ø%Ÿ_™_Ö.˜ð —E‘E˜& !×$Ð$á.ñ %Û$2ùr5  c              3   óv   <"  € T F.  pVP                  4        F  pVP                  S^4      x € K  	  K0  	  R# 5irÞ   r(  r)  s   &  €r   r¢   rB  [  s:   øé € ð á$2˜Ø%Ÿ_™_Ö.˜ð —E‘E˜& !×$Ð$á.ñ %Û$2ùr5  )rÑ   r8   rÍ   rÎ   ræ   rç   rð   s   &    @r   rN   ÚDiMultiDegreeView.__iter__I  sï   øé € Ø—‘ˆØŠ>Ø—[”[�ØŸ
™
 1��ØŸ
™
 1��ÜÑ?°·±´Ó?Ó?Ä#ñ FØ*/¯,©,¬.óFó Cõ �ð �h”ó !ð —[”[�ØŸ
™
 1��ØŸ
™
 1��Üô à$)§L¡L¤Nóó ô ô à$)§L¡L¤Nóó õ	�ð �h”ó !ùs   ƒD!D$r   Nr	  r‹   s   @r   r   r   6  s   ø‡ € Ù=ò÷ ð r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   ic  zDA DegreeView class for inward degree of MultiDiGraph; See DegreeViewc                óÐ   a€ V P                   oV P                  V,          pSf!   \        R VP                  4        4       4      # \        V3R lVP                  4        4       4      # )Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  ©r    rm   s   & r   r¢   Ú0InMultiDegreeView.__getitem__.<locals>.<genexpr>j  r%  r&  c              3   ór   <"  € T F,  qP                  4        F  q"P                  S^4      x € K  	  K.  	  R# 5irÞ   r(  r)  s   &  €r   r¢   rK  l  ó/   øé € ð 
Ù-: ÇOÁOÖDU¸q�E‰E�&˜!×ÐÑDUÑ«]ùr+  )rÑ   rÎ   ræ   rç   r  s   && @r   r[   ÚInMultiDegreeView.__getitem__f  óU   ø€ Ø—‘ˆØ�z‰z˜!�}ˆØŠ>ÜÑ;¨T¯[©[¬]Ó;Ó;Ð;äô 
Ø-1¯[©[¬]ó
ó 
ð 	
r   c              #  óf  a"  € V P                   oSfN   V P                   F;  pV P                  V,          p\        R VP	                  4        4       4      pW3x € K=  	  R # V P                   F>  pV P                  V,          p\        V3R lVP	                  4        4       4      pW3x € K@  	  R # 5i)Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  rJ  s   & r   r¢   Ú-InMultiDegreeView.__iter__.<locals>.<genexpr>u  r2  r&  c              3   óv   <"  € T F.  pVP                  4        F  pVP                  S^4      x € K  	  K0  	  R# 5irÞ   r(  r)  s   &  €r   r¢   rR  z  r4  r5  )rÑ   r8   rÎ   ræ   rç   r  s   &   @r   rN   ÚInMultiDegreeView.__iter__p  ó�   øé € Ø—‘ˆØŠ>Ø—[”[�Ø—z‘z !•}�ÜÑ>°·±´Ó>Ó>�Ø�h”ó !ð
 —[”[�Ø—z‘z !•}�Üô à$(§K¡K¤Móó �ð
 �h”ó !ùó   ƒB.B1r   Nr	  r‹   s   @r   r   r   c  s   ø‡ € ÙNò
÷ð r   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )r   i‚  zEA DegreeView class for outward degree of MultiDiGraph; See DegreeViewc                óÐ   a€ V P                   oV P                  V,          pSf!   \        R VP                  4        4       4      # \        V3R lVP                  4        4       4      # )Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  rJ  s   & r   r¢   Ú1OutMultiDegreeView.__getitem__.<locals>.<genexpr>‰  r%  r&  c              3   ór   <"  € T F,  qP                  4        F  q"P                  S^4      x € K  	  K.  	  R# 5irÞ   r(  r)  s   &  €r   r¢   rZ  ‹  rM  r+  )rÑ   rÍ   ræ   rç   r  s   && @r   r[   ÚOutMultiDegreeView.__getitem__…  rO  r   c              #  óf  a"  € V P                   oSfN   V P                   F;  pV P                  V,          p\        R VP	                  4        4       4      pW3x € K=  	  R # V P                   F>  pV P                  V,          p\        V3R lVP	                  4        4       4      pW3x € K@  	  R # 5i)Nc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r!  rJ  s   & r   r¢   Ú.OutMultiDegreeView.__iter__.<locals>.<genexpr>”  r2  r&  c              3   óv   <"  € T F.  pVP                  4        F  pVP                  S^4      x € K  	  K0  	  R# 5irÞ   r(  r)  s   &  €r   r¢   r_  ™  r4  r5  )rÑ   r8   rÍ   ræ   rç   r  s   &   @r   rN   ÚOutMultiDegreeView.__iter__�  rU  rV  r   Nr	  r‹   s   @r   r   r   ‚  s   ø‡ € ÙOò
÷ð r   c                   ó   € ] tR tRtRtR# )ÚEdgeViewABCi¤  r   N)rV   rƒ   r„   r…   r‰   r   r   r   rc  rc  ¤  s   † Ûr   rc  c                   ód   a € ] tR tRt o RtRtR tR tRRR/R lltR t	R	 t
R
 tR tR tRtV tR# )r   i©  z;EdgeDataView for outward edges of DiGraph; See EdgeDataViewc                óf   € R V P                   RV P                  RV P                  RV P                  /# )Úviewerr0   rm   rn   )Ú_viewerÚ_nbunchr�   r‘   r9   s   &r   r;   ÚOutEdgeDataView.__getstate__¶  s0   € à�d—l‘lØ�d—l‘lØ�D—J‘JØ�t—}‘}ð	
ð 	
r   c                ó*   € V P                   ! R/ VB  R # ©Nr   ©rE   r>   s   &&r   r@   ÚOutEdgeDataView.__setstate__¾  ó   € Ø�ŠÑ˜Ôr   Nrn   c               óD  aaaa€ Wn         VP                  ;oV n        Sf   SP                  V n        M+\        P                  \        SS4      4      oVV3R lV n        SV n        SV n        SV n	        SRJ d   R V n
        R # SRJ d   R V n
        R # VV3R lV n
        R # )Nc                  óB   <€ S U u. uF  q SV ,          3NK  	  up # u up i r   r   ©r,   Úadjdictr0   s    €€r   Ú<lambda>Ú*OutEdgeDataView.__init__.<locals>.<lambda>É  ó   ø€ ÁÓ'HÁ¸A¨G°A­J«ÁÒ'HùÒ'Hó   †Tc                 ó
   € WV3# r   r   ©r,   Únbrr¡   s   &&&r   rs  rt  Ï  s   € ¨q°r©lr   Fc                 ó   € W3# r   r   rx  s   &&&r   rs  rt  Ñ  s   € ¨q©hr   c                 ó0   <€ SV9   d   WVS,          3# WS3# r   r   )r,   ry  r¡   rm   rn   s   &&&€€r   rs  rt  Ó  s"   ø€ Ø&*¨b¤j�˜˜D�Ð"ÐG°q¸wÐ6GÐGr   )rg  Ú_adjdictr¤   Ú_nodes_nbrsr±   Úfromkeysr4   rh  r�   r‘   Ú_report)r:   rf  r0   rm   rn   rr  s   &&ffd@r   rE   ÚOutEdgeDataView.__init__Á  s‚   û€ ØŒØ"(§/¡/Ð1ˆ�$”-ØŠ>Ø&Ÿ}™}ˆDÕô —]‘]¤<°¸Ó#@ÓAˆFÝHˆDÔØˆŒØˆŒ
ØˆŒà�4‹<Ù:ˆDŽLØ�U‹]Ù6ˆDŽLõˆDŽLr   c                óB   € \        R  V P                  4        4       4      # )c              3   ó<   "  € T F  w  r\        V4      x € K  	  R # 5ir   r!  ©r    r,   r  s   &  r   r¢   Ú*OutEdgeDataView.__len__.<locals>.<genexpr>Ø  ó   é € Ð?Ñ,>¡ ”3�t—9�9Ó,>ùó   ‚©ræ   r}  r9   s   &r   rJ   ÚOutEdgeDataView.__len__×  ó   € ÜÑ?¨D×,<Ñ,<Ô,>Ó?Ó?Ð?r   c                ó8   a € V 3R  lS P                  4        4       # )c              3   ó~   <"  € T F2  w  rVP                  4        F  w  r4SP                  WV4      x € K  	  K4  	  R # 5ir   ©r¤   r  ©r    r,   r  ry  r¡   r:   s   &    €r   r¢   Ú+OutEdgeDataView.__iter__.<locals>.<genexpr>Û  s=   øé € ð 
á-‘�ØŸ:™:ž<‘�ð �L‰L˜ ×$Ð$á'ñ %Û-ùó   ƒ:=©r}  r9   s   fr   rN   ÚOutEdgeDataView.__iter__Ú  ó   ø€ ô
à×+Ñ+Ô-ó
ð 	
r   c                óÚ   € VR ,          w  r#V P                   e   W P                   9  d   R#  V P                  V,          V,          pYP                  Y#T4      8H  #   \         d     R# i ; i©ºNé   NF©rh  r|  ÚKeyErrorr  ©r:   ÚeÚuÚvr¬   s   &&   r   r^   ÚOutEdgeDataView.__contains__á  óe   € Ø��u‰ˆØ�<‰<Ò#¨·±Ô(=Ùð	Ø—M‘M !Õ$ QÕ'ˆEð —L‘L  uÓ-Ñ-Ð-øô ô 	Úð	úó   ­A ÁA*Á)A*c                ó*   € \        \        V 4      4      # r   rt   r9   s   &r   rw   ÚOutEdgeDataView.__str__ë  ry   r   c                óL   € V P                   P                   R \        V 4       R2# r{   ©r~   rV   rv   r9   s   &r   r€   ÚOutEdgeDataView.__repr__î  rù   r   )r|  r�   r‘   rh  r}  r  rg  )rg  rh  r�   r‘   r|  r}  r  ©NF)rV   rƒ   r„   r…   r†   r‡   r;   r@   rE   rJ   rN   r^   rw   r€   r‰   rŠ   r‹   s   @r   r   r   ©  sD   ø‡ € ÙEð€Iò
òñÀ4õ ò,@ò
ò.ò÷:ð :r   c                   ó:   a € ] tR tRt o RtRtR tR tR tRt	V t
R# )r
   iò  aû  A EdgeDataView class for edges of Graph

This view is primarily used to iterate over the edges reporting
edges as node-tuples with edge data optionally reported. The
argument `nbunch` allows restriction to edges incident to nodes
in that container/singleton. The default (nbunch=None)
reports all edges. The arguments `data` and `default` control
what edge data is reported. The default `data is False` reports
only node-tuples for each edge. If `data is True` the entire edge
data dict is returned. Otherwise `data` is assumed to hold the name
of the edge attribute to report with default `default` if  that
edge attribute is not present.

Parameters
----------
nbunch : container of nodes, node or None (default None)
data : False, True or string (default False)
default : default value (default None)

Examples
--------
>>> G = nx.path_graph(3)
>>> G.add_edge(1, 2, foo="bar")
>>> list(G.edges(data="foo", default="biz"))
[(0, 1, 'biz'), (1, 2, 'bar')]
>>> assert (0, 1, "biz") in G.edges(data="foo", default="biz")
c                ó&   € \        R  V  4       4      # )c              3   ó&   "  € T F  p^x € K	  	  R# 5irÞ   r   ©r    rš  s   & r   r¢   Ú'EdgeDataView.__len__.<locals>.<genexpr>  ó   é € Ð#™d˜•1›dùó   ‚©ræ   r9   s   &r   rJ   ÚEdgeDataView.__len__  ó   € ÜÑ#™dÓ#Ó#Ð#r   c              #  ó¸   "  € / pV P                  4        F>  w  r#VP                  4        F!  w  rEWA9  g   K  V P                  W$V4      x € K#  	  ^W&   K@  	  ?R# 5irÞ   ©r}  r¤   r  )r:   Úseenr,   r  ry  r¡   s   &     r   rN   ÚEdgeDataView.__iter__  sU   é € ØˆØ×'Ñ'Ö)‰GˆAØŸ:™:ž<‘�Ø–?ØŸ,™, q¨rÓ2Ô2ñ (ð ˆD‹Gñ	 *ò
 ùs
   ‚0A·#Ac                óú   € VR ,          w  r#V P                   e#   W P                   9  d   W0P                   9  d   R#  V P                  V,          V,          pYP                  Y#T4      8H  #   \         d     R# i ; ir”  r—  r™  s   &&   r   r^   ÚEdgeDataView.__contains__  sn   € Ø��u‰ˆØ�<‰<Ò#¨·±Ô(=À!Ï<É<ÔBWÙð	Ø—M‘M !Õ$ QÕ'ˆEð —L‘L  uÓ-Ñ-Ð-øô ô 	Úð	ús   ½A+ Á+A:Á9A:r   N)rV   rƒ   r„   r…   r†   r‡   rJ   rN   r^   r‰   rŠ   r‹   s   @r   r
   r
   ò  s%   ø‡ € ñð8 €Iò$ò÷.ð .r   c                   ó4   a € ] tR tRt o RtRtR tR tRtV t	R# )r   i(  zDAn EdgeDataView class for outward edges of DiGraph; See EdgeDataViewc                ó8   a € V 3R  lS P                  4        4       # )c              3   ó~   <"  € T F2  w  rVP                  4        F  w  r4SP                  W1V4      x € K  	  K4  	  R # 5ir   rŒ  r�  s   &    €r   r¢   Ú*InEdgeDataView.__iter__.<locals>.<genexpr>.  s=   øé € ð 
á-‘�ØŸ:™:ž<‘�ð �L‰L˜ ×$Ð$á'ñ %Û-ùr�  r�  r9   s   fr   rN   ÚInEdgeDataView.__iter__-  r’  r   c                óÚ   € VR ,          w  r#V P                   e   W0P                   9  d   R#  V P                  V,          V,          pYP                  Y#T4      8H  #   \         d     R# i ; ir”  r—  r™  s   &&   r   r^   ÚInEdgeDataView.__contains__4  rž  rŸ  r   N©
rV   rƒ   r„   r…   r†   r‡   rN   r^   r‰   rŠ   r‹   s   @r   r   r   (  s   ø‡ € ÙNà€Iò
÷.ð .r   c                   ó\   a € ] tR tRt o RtRtR tR tRRRRR/R	 lltR
 t	R t
R tRtV tR# )r   i?  zCAn EdgeDataView for outward edges of MultiDiGraph; See EdgeDataViewr#  c           
     ó~   € R V P                   RV P                  RV P                  RV P                  RV P                  /# )rf  r0   r#  rm   rn   )rg  rh  r#  r�   r‘   r9   s   &r   r;   Ú!OutMultiEdgeDataView.__getstate__D  s9   € à�d—l‘lØ�d—l‘lØ�D—I‘IØ�D—J‘JØ�t—}‘}ð
ð 	
r   c                ó*   € V P                   ! R/ VB  R # rk  rl  r>   s   &&r   r@   Ú!OutMultiEdgeDataView.__setstate__M  rn  r   NFrn   c               ó¸  aaaa€ Wn         VP                  ;oV n        WPn        Sf   SP                  V n        M+\
        P                  \        SS4      4      oVV3R lV n        SV n        SV n	        SV n
        SRJ d   VRJ d   R V n        R # R V n        R # SRJ d   VRJ d   R V n        R # R V n        R # VRJ d   VV3R lV n        R # VV3R	 lV n        R # )
Nc                  óB   <€ S U u. uF  q SV ,          3NK  	  up # u up i r   r   rq  s    €€r   rs  Ú/OutMultiEdgeDataView.__init__.<locals>.<lambda>Y  ru  rv  Tc                 ó
   € WW#3# r   r   ©r,   ry  Úkr¡   s   &&&&r   rs  rÅ  `  s   € °a¸a±_r   c                 ó
   € WV3# r   r   rÇ  s   &&&&r   rs  rÅ  b  s   € °a¸b±\r   Fc                 ó
   € WV3# r   r   rÇ  s   &&&&r   rs  rÅ  e  s   € °a¸a±[r   c                 ó   € W3# r   r   rÇ  s   &&&&r   rs  rÅ  g  s   € °a±Xr   c                 ó2   <€ SV9   d   WW#S,          3# WVS3# r   r   ©r,   ry  rÈ  r¡   rm   rn   s   &&&&€€r   rs  rÅ  j  s$   ø€ Ø-1°R¬Z�Q˜Q 4¥Ð)ÐQ¸aÀaÈÐ=QÐQr   c                 ó0   <€ SV9   d   WVS,          3# WS3# r   r   rÍ  s   &&&&€€r   rs  rÅ  n  s"   ø€ Ø*.°"¬*�Q˜R �XÐ&ÐK¸1À7Ð:KÐKr   )rg  r|  r#  r¤   r}  r±   r~  r4   rh  r�   r‘   r  )r:   rf  r0   rm   rn   r#  rr  s   &&ffd$@r   rE   ÚOutMultiEdgeDataView.__init__P  s³   û€ ØŒØ"(§/¡/Ð1ˆ�$”-ØŒ	ØŠ>Ø&Ÿ}™}ˆDÕô —]‘]¤<°¸Ó#@ÓAˆFÝHˆDÔØˆŒØˆŒ
ØˆŒà�4‹<Ø�t‹|ÙD�–áA�–Ø�U‹]Ø�t‹|Ù@�–á=�–à�t‹|õ �–õ �–r   c                ó&   € \        R  V  4       4      # )c              3   ó&   "  € T F  p^x € K	  	  R# 5irÞ   r   r©  s   & r   r¢   Ú/OutMultiEdgeDataView.__len__.<locals>.<genexpr>s  r«  r¬  r­  r9   s   &r   rJ   ÚOutMultiEdgeDataView.__len__r  r¯  r   c                ó8   a € V 3R  lS P                  4        4       # )c           	   3   ó°   <"  € T FK  w  rVP                  4        F2  w  r4VP                  4        F  w  rVSP                  WWV4      x € K  	  K4  	  KM  	  R # 5ir   rŒ  ©r    r,   r  ry  ÚkdrÈ  r¡   r:   s   &      €r   r¢   Ú0OutMultiEdgeDataView.__iter__.<locals>.<genexpr>v  sT   øé € ð 
á-‘�ØŸ:™:ž<‘�ØŸ™ž‘�ð �L‰L˜ ×'Ð'ñ $ñ (á'ñ (Û-ùó   ƒAAr�  r9   s   fr   rN   ÚOutMultiEdgeDataView.__iter__u  ó   ø€ ô
à×+Ñ+Ô-ó
ð 	
r   c                ó
  a aaa€ SR ,          w  ooS P                   e   SS P                   9  d   R#  S P                  S,          S,          pS P                  RJ d)   S^,          p Y#,          pSS P	                  SSY44      8H  # \
        ;QJ d0    TT TT3R lTP                  4        4       F  '       g   K   R# 	  R# ! TT TT3R lTP                  4        4       4      #   \         d     R# i ; i  \         d     R# i ; i)r•  FTc              3   óT   <"  € T F  w  rSSP                  SSW4      8H  x € K  	  R # 5ir   ©r  ©r    rÈ  r¡   rš  r:   r›  rœ  s   &  €€€€r   r¢   Ú4OutMultiEdgeDataView.__contains__.<locals>.<genexpr>Œ  ó%   øé € ÐM¹}±e°a�1˜Ÿ™ Q¨¨1Ó1Ö1»}ùó   ƒ%(©rh  r|  r˜  r#  r  Úanyr¤   ©r:   rš  ÚkdictrÈ  r¡   r›  rœ  s   ff   @@r   r^   Ú!OutMultiEdgeDataView.__contains__}  sÙ   û€ Ø��u‰ˆˆ1Ø�<‰<Ò#¨°·±Ô(=Ùð	Ø—M‘M !Õ$ QÕ'ˆEð �9‰9˜ÓØ�!•ˆAðØ•X�ð ˜Ÿ™ Q¨¨1Ó1Ñ1Ð1ß‹s×M¸u¿{¹{¼}ÓM�sŒsÐMŠsÐMˆs×M¸u¿{¹{¼}ÓMÓMÐMøô ô 	Úð	ûô ô Úðús#   ³C! Á'C3 Ã!C0Ã/C0Ã3DÄD)r|  r�   r‘   rh  r}  r  rg  r#  )r#  r¥  )rV   rƒ   r„   r…   r†   r‡   r;   r@   rE   rJ   rN   r^   r‰   rŠ   r‹   s   @r   r   r   ?  sA   ø‡ € ÙMà€Iò
òñ À4ð  Èeõ  òD$ò
÷Nð Nr   c                   ó4   a € ] tR tRt o RtRtR tR tRtV t	R# )r   i�  z?An EdgeDataView class for edges of MultiGraph; See EdgeDataViewc           	   #  óê   "  € / pV P                  4        FW  w  r#VP                  4        F:  w  rEWA9  g   K  VP                  4        F  w  rgV P                  W$Wg4      x € K  	  K<  	  ^W&   KY  	  ?R# 5irÞ   r±  ©r:   r²  r,   r  ry  r×  rÈ  r¡   s   &       r   rN   ÚMultiEdgeDataView.__iter__”  sg   é € ØˆØ×'Ñ'Ö)‰GˆAØŸ:™:ž<‘�Ø–?Ø!#§¡¦™˜Ø"Ÿl™l¨1°1Ó9Ô9ó ",ñ (ð ˆD‹Gñ *ò ùs
   ‚0A3·<A3c                ó†  a aaa€ SR ,          w  ooS P                   e%   SS P                   9  d   SS P                   9  d   R#  S P                  S,          S,          pS P                  RJ d)   S^,          p Y#,          pSS P	                  SSY44      8H  # \
        ;QJ d0    TT TT3R lTP                  4        4       F  '       g   K   R# 	  R# ! TT TT3R lTP                  4        4       4      #   \         d2     S P                  S,          S,          p L¼  \         d      R# i ; ii ; i  \         d     R# i ; i)r•  FTc              3   óT   <"  € T F  w  rSSP                  SSW4      8H  x € K  	  R # 5ir   rÞ  rß  s   &  €€€€r   r¢   Ú1MultiEdgeDataView.__contains__.<locals>.<genexpr>°  rá  râ  rã  rå  s   ff   @@r   r^   ÚMultiEdgeDataView.__contains__ž  s  û€ Ø��u‰ˆˆ1Ø�<‰<Ò#¨°·±Ô(=À!È4Ï<É<ÔBWÙð	Ø—M‘M !Õ$ QÕ'ˆEð �9‰9˜ÓØ�!•ˆAðØ•X�ð ˜Ÿ™ Q¨¨1Ó1Ñ1Ð1ß‹s×M¸u¿{¹{¼}ÓM�sŒsÐMŠsÐMˆs×M¸u¿{¹{¼}ÓMÓMÐMøô ô 	ðØŸ™ aÕ(¨Õ+’øÜô Ûðúð	ûô ô Úðús<   ÁC2 Á8D1 Ã2D.Ã>DÄD*Ä%D.Ä)D*Ä*D.Ä1E Ä?E r   Nr½  r‹   s   @r   r   r   �  s   ø‡ € ÙIà€Iò÷Nð Nr   c                   ó4   a € ] tR tRt o RtRtR tR tRtV t	R# )r   i³  zBAn EdgeDataView for inward edges of MultiDiGraph; See EdgeDataViewc                ó8   a € V 3R  lS P                  4        4       # )c           	   3   ó°   <"  € T FK  w  rVP                  4        F2  w  r4VP                  4        F  w  rVSP                  W1WV4      x € K  	  K4  	  KM  	  R # 5ir   rŒ  rÖ  s   &      €r   r¢   Ú/InMultiEdgeDataView.__iter__.<locals>.<genexpr>¹  sT   øé € ð 
á-‘�ØŸ:™:ž<‘�ØŸ™ž‘�ð �L‰L˜ ×'Ð'ñ $ñ (á'ñ (Û-ùrÙ  r�  r9   s   fr   rN   ÚInMultiEdgeDataView.__iter__¸  rÛ  r   c                óä  a aaa€ SR ,          w  ooS P                   e   SS P                   9  d   R#  S P                  S,          S,          pS P                  RJ d(   S^,          pY#,          pSS P	                  SSY44      8H  # \
        ;QJ d0    TT TT3R lTP                  4        4       F  '       g   K   R# 	  R# ! TT TT3R lTP                  4        4       4      #   \         d     R# i ; i)r•  FTc              3   óT   <"  € T F  w  rSSP                  SSW4      8H  x € K  	  R # 5ir   rÞ  rß  s   &  €€€€r   r¢   Ú3InMultiEdgeDataView.__contains__.<locals>.<genexpr>Ì  rá  râ  rã  rå  s   ff   @@r   r^   Ú InMultiEdgeDataView.__contains__À  s¿   û€ Ø��u‰ˆˆ1Ø�<‰<Ò#¨°·±Ô(=Ùð	Ø—M‘M !Õ$ QÕ'ˆEð �9‰9˜ÓØ�!•ˆAØ•ˆBØ˜Ÿ™ Q¨¨1Ó1Ñ1Ð1ß‹s×M¸u¿{¹{¼}ÓM�sŒsÐMŠsÐMˆs×M¸u¿{¹{¼}ÓMÓMÐMøô ô 	Úð	ús   ³C  Ã C/Ã.C/r   Nr½  r‹   s   @r   r   r   ³  s   ø‡ € ÙLà€Iò
÷Nð Nr   c                   óÂ   a € ] tR tRt o RtRt]R 4       t]P                  R 4       tR t	R t
]R 4       t]tR tR	 tR
 tR tR tRRR/R lltRR ltR tR tRtV tR# )r   iÐ  z/A EdgeView class for outward edges of a DiGraphc                óD   € V P                  4       pVf   \        R4      hV# r¶   r·   rº   s   & r   r¼   ÚOutEdgeView._graphÛ  r¾   r   c                ó^   € Ve   \         P                  ! V4      V n        R # \        V n        R # r   rÀ   rº   s   &&r   r¼   rû  ä  rÃ   r   c                ó>   € R V P                  4       RV P                  /# )r¼   r|  )r¸   r|  r9   s   &r   r;   ÚOutEdgeView.__getstate__è  s   € Ø˜$Ÿ/™/Ó+¨Z¸¿¹ÐGÐGr   c                ót   € VR ,          V n         VR,          V n        V P                  P                  V n        R# ©r¼   r|  N©r¼   r|  r¤   r}  r>   s   &&r   r@   ÚOutEdgeView.__setstate__ë  ó+   € Ø˜H•oˆŒØ˜jÕ)ˆŒØŸ=™=×.Ñ.ˆÖr   c                ó   € \        V4      # r   ra   rc   s   &&r   rf   ÚOutEdgeView._from_iterableð  rh   r   c                ó¦   € Wn         \        VR 4      '       d   VP                  MVP                  V n        V P                  P
                  V n        R# )ÚsuccN)r¼   rÏ   rÍ   rÐ   r|  r¤   r}  rº   s   &&r   rE   ÚOutEdgeView.__init__ö  ó6   € ØŒÜ#*¨1¨f×#5Ò#5˜Ÿš¸1¿6¹6ˆŒØŸ=™=×.Ñ.ˆÖr   c                óB   € \        R  V P                  4        4       4      # )c              3   ó<   "  € T F  w  r\        V4      x € K  	  R # 5ir   r!  rƒ  s   &  r   r¢   Ú&OutEdgeView.__len__.<locals>.<genexpr>ý  r…  r†  r‡  r9   s   &r   rJ   ÚOutEdgeView.__len__ü  r‰  r   c              #  ó\   "  € V P                  4        F  w  rV F  pW3x € K
  	  K  	  R # 5ir   r�  ©r:   r,   r  ry  s   &   r   rN   ÚOutEdgeView.__iter__ÿ  s+   é € Ø×'Ñ'Ö)‰GˆAÛ�Ø�h”ó ó *ùó   ‚*,c                óZ   €  Vw  r#W0P                   V,          9   #   \         d     R # i ; irj   ©r|  r˜  ©r:   rš  r›  rœ  s   &&  r   r^   ÚOutEdgeView.__contains__  ó2   € ð	Ø‰DˆAØŸ™ aÕ(Ñ(Ð(øÜô 	Úð	úó   ‚ ›*©*c           
     ód  € \        V\        4      '       dT   \        P                  ! \	        V 4      P
                   R VP                   RVP                   RVP                   R24      hVw  r# V P                  V,          V,          #   \         d   pTP                  RT R24       h Rp?ii ; i©z- does not support slicing, try list(G.edges)[rQ   rR   ú	The edge ú is not in the graphN©rS   rT   r(   r)   rU   rV   rW   rX   rY   r|  r˜  Úadd_note©r:   rš  r›  rœ  r-   s   &&   r   r[   ÚOutEdgeView.__getitem__  s§   € Ü�aœ×ÒÜ×"Ò"Ü˜“:×&Ñ&Ð'ð (%Ø%&§W¡W I¨Q¨q¯v©v¨h°a¸¿¹°x¸qðBóð ð ‰ˆð	Ø—=‘= Õ# AÕ&Ð&øÜô 	Ø�L‰L˜9 Q CÐ';Ð<Ô=Øûð	úó   Á/B	 Â	B/ÂB*Â*B/Nrn   c               ó@   € Vf	   VRJ d   V # V P                  WW#R7      # )NF©rn   ©Údataview)r:   r0   rm   rn   s   &&&$r   ro   ÚOutEdgeView.__call__  s%   € ØŠ>˜d e›mØˆKØ�}‰}˜T¨4ˆ}ÓAÐAr   c                ó@   € Vf	   VRJ d   V # V P                  WWR7      # )aŠ  
Return a read-only view of edge data.

Parameters
----------
data : bool or edge attribute key
    If ``data=True``, then the data view maps each edge to a dictionary
    containing all of its attributes. If `data` is a key in the edge
    dictionary, then the data view maps each edge to its value for
    the keyed attribute. In this case, if the edge doesn't have the
    attribute, the `default` value is returned.
default : object, default=None
    The value used when an edge does not have a specific attribute
nbunch : container of nodes, optional (default=None)
    Allows restriction to edges only involving certain nodes. All edges
    are considered by default.

Returns
-------
dataview
    Returns an `EdgeDataView` for undirected Graphs, `OutEdgeDataView`
    for DiGraphs, `MultiEdgeDataView` for MultiGraphs and
    `OutMultiEdgeDataView` for MultiDiGraphs.

Notes
-----
If ``data=False``, returns an `EdgeView` without any edge data.

See Also
--------
EdgeDataView
OutEdgeDataView
MultiEdgeDataView
OutMultiEdgeDataView

Examples
--------
>>> G = nx.Graph()
>>> G.add_edges_from(
...     [
...         (0, 1, {"dist": 3, "capacity": 20}),
...         (1, 2, {"dist": 4}),
...         (2, 0, {"dist": 5}),
...     ]
... )

Accessing edge data with ``data=True`` (the default) returns an
edge data view object listing each edge with all of its attributes:

>>> G.edges.data()
EdgeDataView([(0, 1, {'dist': 3, 'capacity': 20}), (0, 2, {'dist': 5}), (1, 2, {'dist': 4})])

If `data` represents a key in the edge attribute dict, a dataview listing
each edge with its value for that specific key is returned:

>>> G.edges.data("dist")
EdgeDataView([(0, 1, 3), (0, 2, 5), (1, 2, 4)])

`nbunch` can be used to limit the edges:

>>> G.edges.data("dist", nbunch=[0])
EdgeDataView([(0, 1, 3), (0, 2, 5)])

If a specific key is not found in an edge attribute dict, the value
specified by `default` is used:

>>> G.edges.data("capacity")
EdgeDataView([(0, 1, 20), (0, 2, None), (1, 2, None)])

Note that there is no check that the `data` key is present in any of
the edge attribute dictionaries:

>>> G.edges.data("speed")
EdgeDataView([(0, 1, None), (0, 2, None), (1, 2, None)])
Fr"  r#  )r:   rm   rn   r0   s   &&&&r   rm   ÚOutEdgeView.data  s(   € ðX Š>˜d e›mØˆKØ�}‰}˜T¨4ˆ}ÓAÐAr   c                ó*   € \        \        V 4      4      # r   rt   r9   s   &r   rw   ÚOutEdgeView.__str__p  ry   r   c                óL   € V P                   P                   R \        V 4       R2# r{   r£  r9   s   &r   r€   ÚOutEdgeView.__repr__s  rù   r   )r|  r¼   r¸   r}  )r|  r¸   r}  r¥  )TNN)rV   rƒ   r„   r…   r†   r‡   rú   r¼   rû   r;   r@   rˆ   rf   r   r$  rE   rJ   rN   r^   r[   ro   rm   rw   r€   r‰   rŠ   r‹   s   @r   r   r   Ð  s    ø‡ € Ù9à9€Ið ñó ðð ‡]�]ñIó ðIòHò/ð
 ñó ðð €Hò/ò@òò
òñB¸4õ Bô
NBòb÷:ð :r   c                   ó>   a € ] tR tRt o RtRt]tR tR t	R t
RtV tR# )r   iw  aº  A EdgeView class for edges of a Graph

This densely packed View allows iteration over edges, data lookup
like a dict and set operations on edges represented by node-tuples.
In addition, edge data can be controlled by calling this object
possibly creating an EdgeDataView. Typically edges are iterated over
and reported as `(u, v)` node tuples or `(u, v, key)` node/key tuples
for multigraphs. Those edge representations can also be using to
lookup the data dict for any edge. Set operations also are available
where those tuples are the elements of the set.
Calling this object with optional arguments `data`, `default` and `keys`
controls the form of the tuple (see EdgeDataView). Optional argument
`nbunch` allows restriction to edges only involving certain nodes.

If `data is False` (the default) then iterate over 2-tuples `(u, v)`.
If `data is True` iterate over 3-tuples `(u, v, datadict)`.
Otherwise iterate over `(u, v, datadict.get(data, default))`.
For Multigraphs, if `keys is True`, replace `u, v` with `u, v, key` above.

Parameters
==========
graph : NetworkX graph-like class
nbunch : (default= all nodes in graph) only report edges with these nodes
keys : (only for MultiGraph. default=False) report edge key in tuple
data : bool or string (default=False) see above
default : object (default=None)

Examples
========
>>> G = nx.path_graph(4)
>>> EV = G.edges()
>>> (2, 3) in EV
True
>>> for u, v in EV:
...     print((u, v))
(0, 1)
(1, 2)
(2, 3)
>>> assert EV & {(1, 2), (3, 4)} == {(1, 2)}

>>> EVdata = G.edges(data="color", default="aqua")
>>> G.add_edge(2, 3, color="blue")
>>> assert (2, 3, "blue") in EVdata
>>> for u, v, c in EVdata:
...     print(f"({u}, {v}) has color: {c}")
(0, 1) has color: aqua
(1, 2) has color: aqua
(2, 3) has color: blue

>>> EVnbunch = G.edges(nbunch=2)
>>> assert (2, 3) in EVnbunch
>>> assert (0, 1) not in EVnbunch
>>> for u, v in EVnbunch:
...     assert u == 2 or v == 2

>>> MG = nx.path_graph(4, create_using=nx.MultiGraph)
>>> EVmulti = MG.edges(keys=True)
>>> (2, 3, 0) in EVmulti
True
>>> (2, 3) in EVmulti  # 2-tuples work even when keys is True
True
>>> key = MG.add_edge(2, 3)
>>> for u, v, k in EVmulti:
...     print((u, v, k))
(0, 1, 0)
(1, 2, 0)
(2, 3, 0)
(2, 3, 1)
c                óT   € R  V P                  4        4       p\        V4      ^,          # )c              3   óN   "  € T F  w  r\        V4      W9   ,           x € K  	  R # 5ir   r!  rƒ  s   &  r   r¢   Ú#EdgeView.__len__.<locals>.<genexpr>Ã  s"   é € ÐNÑ;M±°”C˜“I ¡×+Ò+Ó;Mùs   ‚#%)r}  ræ   )r:   Únum_nbrss   & r   rJ   ÚEdgeView.__len__Â  s$   € ÙN¸4×;KÑ;KÔ;MÓNˆÜ�8‹} Õ!Ð!r   c              #  óŒ   "  € / pV P                  4        F(  w  r#\        V4       F  pWA9  g   K  W$3x € K  	  ^W&   K*  	  ?R# 5irÞ   )r}  rv   )r:   r²  r,   r  ry  s   &    r   rN   ÚEdgeView.__iter__Æ  sG   é € ØˆØ×'Ñ'Ö)‰GˆAÜ˜D–z�Ø–?Ø˜(”Nñ "ð ˆD‹Gñ	 *ò
 ùs
   ‚)A°Ac                ó®   €  VR ,          w  r#W0P                   V,          9   ;'       g    W P                   V,          9   #   \        \        3 d     R# i ; ir”  )r|  r˜  r§   r  s   &&  r   r^   ÚEdgeView.__contains__Ï  sO   € ð	Ø�R•5‰DˆAØŸ™ aÕ(Ñ(×AÐA¨A·±¸qÕ1AÑ,AÐAøÜœ*Ð%ô 	Úð	ús   ‚&? ©? ¿AÁAr   N)rV   rƒ   r„   r…   r†   r‡   r
   r$  rJ   rN   r^   r‰   rŠ   r‹   s   @r   r   r   w  s,   ø‡ € ñDðL €Ià€Hò"ò÷ð r   c                   óJ   a € ] tR tRt o RtR
tR t]tR t	R t
R tR tRtV tR	# )r	   i×  z.A EdgeView class for inward edges of a DiGraphc                ót   € VR ,          V n         VR,          V n        V P                  P                  V n        R# r   r  r>   s   &&r   r@   ÚInEdgeView.__setstate__Ü  r  r   c                ó¦   € Wn         \        VR 4      '       d   VP                  MVP                  V n        V P                  P
                  V n        R# ©ÚpredN©r¼   rÏ   rÎ   rÐ   r|  r¤   r}  rº   s   &&r   rE   ÚInEdgeView.__init__ã  r	  r   c              #  ó\   "  € V P                  4        F  w  rV F  pW13x € K
  	  K  	  R # 5ir   r�  r  s   &   r   rN   ÚInEdgeView.__iter__è  s+   é € Ø×'Ñ'Ö)‰GˆAÛ�Ø�h”ó ó *ùr  c                óZ   €  Vw  r#W P                   V,          9   #   \         d     R # i ; irj   r  r  s   &&  r   r^   ÚInEdgeView.__contains__í  r  r  c           
     ód  € \        V\        4      '       dT   \        P                  ! \	        V 4      P
                   R VP                   RVP                   RVP                   R24      hVw  r# V P                  V,          V,          #   \         d   pTP                  RT R24       h Rp?ii ; i©z0 does not support slicing, try list(G.in_edges)[rQ   rR   r  r  Nr  r  s   &&   r   r[   ÚInEdgeView.__getitem__ô  s§   € Ü�aœ×ÒÜ×"Ò"Ü˜“:×&Ñ&Ð'ð ((Ø()¯© y°°!·&±&°¸¸1¿6¹6¸(À!ðEóð ð ‰ˆð	Ø—=‘= Õ# AÕ&Ð&øÜô 	Ø�L‰L˜9 Q CÐ';Ð<Ô=Øûð	úr   ©r|  r¼   r}  Nr   )rV   rƒ   r„   r…   r†   r‡   r@   r   r$  rE   rN   r^   r[   r‰   rŠ   r‹   s   @r   r	   r	   ×  s2   ø‡ € Ù8à€Iò/ð
 €Hò/ò
ò
÷ð r   c                   ód   a € ] tR tRt o RtRt]tR tR t	R t
R tRR	RR
R/R lltRR ltRtV tR# )r   i  z4A EdgeView class for outward edges of a MultiDiGraphc                óB   € \        R  V P                  4        4       4      # )c              3   ón   "  € T F+  w  rVP                  4        F  w  r4\        V4      x € K  	  K-  	  R # 5ir   )r¤   rI   )r    r,   r  ry  ræ  s   &    r   r¢   Ú+OutMultiEdgeView.__len__.<locals>.<genexpr>
  s,   é € ð 
Ù&8™7˜1È4Ï:É:Î<¹Z¸SŒC��JˆJÉ<‰JÓ&8ùs   ‚35r‡  r9   s   &r   rJ   ÚOutMultiEdgeView.__len__	  s%   € Üñ 
Ø&*×&6Ñ&6Ô&8ó
ó 
ð 	
r   c              #  ó�   "  € V P                  4        F-  w  rVP                  4        F  w  r4V F	  pWV3x € K  	  K  	  K/  	  R # 5ir   ©r}  r¤   ©r:   r,   r  ry  ræ  Úkeys   &     r   rN   ÚOutMultiEdgeView.__iter__  s@   é € Ø×'Ñ'Ö)‰GˆAØ"Ÿj™jžl‘
�Û �CØ 3˜-Ô'ó !ó +ó *ùó   ‚AAc                óÂ   € \        V4      pV^8X  d   Vw  r4pMV^8X  d   Vw  r4^ pM\        R4      h WPP                  V,          V,          9   #   \         d     R# i ; i©é   z!MultiEdge must have length 2 or 3F©rI   r§   r|  r˜  ©r:   rš  ÚNr›  rœ  rÈ  s   &&    r   r^   ÚOutMultiEdgeView.__contains__  óh   € Ü�‹FˆØ�Œ6Ø‰GˆA‘!Ø�!ŒVØ‰DˆAØ‰AäÐ@ÓAÐAð	ØŸ™ aÕ(¨Õ+Ñ+Ð+øÜô 	Úð	úó   ³A ÁAÁAc           
     ót  € \        V\        4      '       dT   \        P                  ! \	        V 4      P
                   R VP                   RVP                   RVP                   R24      hVw  r#p V P                  V,          V,          V,          #   \         d   pTP                  RT R24       h Rp?ii ; ir  r  ©r:   rš  r›  rœ  rÈ  r-   s   &&    r   r[   ÚOutMultiEdgeView.__getitem__"  s®   € Ü�aœ×ÒÜ×"Ò"Ü˜“:×&Ñ&Ð'ð (%Ø%&§W¡W I¨Q¨q¯v©v¨h°a¸¿¹°x¸qðBóð ð ‰ˆˆað	Ø—=‘= Õ# AÕ& qÕ)Ð)øÜô 	Ø�L‰L˜9 Q CÐ';Ð<Ô=Øûð	úó   Á0 B ÂB7ÂB2Â2B7NFrn   r#  c               óN   € Vf   VRJ d	   VRJ d   V # V P                  WW#VR7      # ©NFT)rn   r#  r#  )r:   r0   rm   rn   r#  s   &&&$$r   ro   ÚOutMultiEdgeView.__call__/  ó-   € ØŠ>˜d e›m°¸³ØˆKØ�}‰}˜T¨4Àtˆ}ÓLÐLr   c                óN   € Vf   VRJ d	   VRJ d   V # V P                  WWVR7      # r_  r#  )r:   rm   rn   r0   r#  s   &&&&&r   rm   ÚOutMultiEdgeView.data4  ra  r   r   r¥  )TNNF)rV   rƒ   r„   r…   r†   r‡   r   r$  rJ   rN   r^   r[   ro   rm   r‰   rŠ   r‹   s   @r   r   r     sH   ø‡ € Ù>à€Ià#€Hò
ò
(òòñM¸4ð MÀeõ M÷
Mò Mr   c                   ó8   a € ] tR tRt o RtRt]tR tR t	Rt
V tR# )r   i:  z*A EdgeView class for edges of a MultiGraphc                ó&   € \        R  V  4       4      # )c              3   ó&   "  € T F  p^x € K	  	  R# 5irÞ   r   r©  s   & r   r¢   Ú(MultiEdgeView.__len__.<locals>.<genexpr>B  r«  r¬  r­  r9   s   &r   rJ   ÚMultiEdgeView.__len__A  r¯  r   c              #  óÎ   "  € / pV P                  4        FI  w  r#VP                  4        F,  w  rEWA9  g   K  VP                  4        F  w  rgW$V3x € K  	  K.  	  ^W&   KK  	  ?R# 5irÞ   rL  rê  s   &       r   rN   ÚMultiEdgeView.__iter__D  s`   é € ØˆØ×'Ñ'Ö)‰GˆAØŸ:™:ž<‘�Ø–?Ø!#§¡¦™˜Ø  q˜kÔ)ó ",ñ (ð ˆD‹Gñ *ò ùs
   ‚0A%·.A%r   N)rV   rƒ   r„   r…   r†   r‡   r   r$  rJ   rN   r‰   rŠ   r‹   s   @r   r   r   :  s!   ø‡ € Ù4à€Ià €Hò$÷ð r   c                   óJ   a € ] tR tRt o RtR
tR t]tR t	R t
R tR tRtV tR	# )r   iO  z3A EdgeView class for inward edges of a MultiDiGraphc                ót   € VR ,          V n         VR,          V n        V P                  P                  V n        R# r   r  r>   s   &&r   r@   ÚInMultiEdgeView.__setstate__T  r  r   c                ó¦   € Wn         \        VR 4      '       d   VP                  MVP                  V n        V P                  P
                  V n        R# r:  r<  rº   s   &&r   rE   ÚInMultiEdgeView.__init__[  r	  r   c              #  ó�   "  € V P                  4        F-  w  rVP                  4        F  w  r4V F	  pW1V3x € K  	  K  	  K/  	  R # 5ir   rL  rM  s   &     r   rN   ÚInMultiEdgeView.__iter__`  s@   é € Ø×'Ñ'Ö)‰GˆAØ"Ÿj™jžl‘
�Û �CØ 3˜-Ô'ó !ó +ó *ùrP  c                óÂ   € \        V4      pV^8X  d   Vw  r4pMV^8X  d   Vw  r4^ pM\        R4      h WPP                  V,          V,          9   #   \         d     R# i ; irR  rT  rU  s   &&    r   r^   ÚInMultiEdgeView.__contains__f  rX  rY  c           
     ót  € \        V\        4      '       dT   \        P                  ! \	        V 4      P
                   R VP                   RVP                   RVP                   R24      hVw  r#p V P                  V,          V,          V,          #   \         d   pTP                  RT R24       h Rp?ii ; irC  r  r[  s   &&    r   r[   ÚInMultiEdgeView.__getitem__t  s®   € Ü�aœ×ÒÜ×"Ò"Ü˜“:×&Ñ&Ð'ð ((Ø()¯© y°°!·&±&°¸¸1¿6¹6¸(À!ðEóð ð ‰ˆˆað	Ø—=‘= Õ# AÕ& qÕ)Ð)øÜô 	Ø�L‰L˜9 Q CÐ';Ð<Ô=Øûð	úr]  rE  Nr   )rV   rƒ   r„   r…   r†   r‡   r@   r   r$  rE   rN   r^   r[   r‰   rŠ   r‹   s   @r   r   r   O  s2   ø‡ € Ù=à€Iò/ð
 #€Hò/ò
(ò÷ð r   )r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )#r†   rÁ   Úabcr   Úcollections.abcr   r   Únetworkxr(   Ú__all__r    r4   r   r   r   r   r   r   r   r   r   r   rc  r   r
   r   r   r   r   r   r   r	   r   r   r   r   r   r   Ú<module>rz     so  ðñóB Ý ß (ã ò€ò4ô##ôNf;ˆw˜ô f;ôR\<�3ô \<÷@D:ñ D:ôNA�ô AôH�Lô ô,�<ô ô.%�lô %ôP*˜ô *ôZ˜ô ô>˜ô ôD	�#ô 	ô
F:�kô F:ôR3.�?ô 3.ôl.�_ô .ô.MN˜?ô MNô`!NÐ,ô !NôHNÐ.ô Nô:d:�#�w ô d:ôN]ˆ{ô ]ô@(�ô (ôV5M�{ô 5MôpÐ$ô ô*0Ð&ö 0r   