ó
    †~i^z ã                   ó˜  • S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
rSSKJrJrJr  SSKJr  S/r\R&                  " \5      rSrS	S
.S jr\" S5      r0 r0 r0 rS rS rS rS rS r  " S S5      r!S r"S r#SSS.S jr$SS.S jr% " S S5      r&\RN                  RQ                  S5      (       aˆ  \!r)SS jr!\)RT                  RV                  \!l+        \ RX                  " \)RT                  5      r-\-R]                  \-R^                  Ra                  5        V Vs/ s H  u  pU S:w  d  M  UPM     snn S9\!l1        ggs  snn f ) é    N)Úpartial)Úentry_pointsé   )ÚBackendPrioritiesÚConfigÚNetworkXConfig)ÚargmapÚ_dispatchableÚFAILED_TO_CONVERTF©Úload_and_callc                óP  • [        U S9n0 nU H¿  nUR                  R                  5       (       d+  [        R                  " SUR                  < S3[
        SS9  MM  UR                  U;   a)  [        R                  " SUR                   3[
        SS9  M†  U(       a$   UR                  5       " 5       X4R                  '   M±  XCUR                  '   MÁ     UR                  S
S	5        U$ ! [         a6  n[        R                  " SUR                   SU 3[
        SS9   S	nAGM  S	nAff = f)aŸ  
Retrieve NetworkX ``backends`` and ``backend_info`` from the entry points.

Parameters
-----------
group : str
    The entry_point to be retrieved.
load_and_call : bool, optional
    If True, load and call the backend. Defaults to False.

Returns
--------
dict
    A dictionary mapping backend names to their respective backend objects.

Notes
------
If a backend is defined more than once, a warning is issued.
If a backend name is not a valid Python identifier, the backend is
ignored and a warning is issued.
The "nx_loopback" backend is removed if it exists, as it is only available during testing.
A warning is displayed if an error occurs while loading a backend.
)Úgroupz1networkx backend name is not a valid identifier: z. Ignoring.é   )Ú
stacklevelz)networkx backend defined more than once: z0Error encountered when loading info for backend z: NÚnx_loopback)	r   ÚnameÚisidentifierÚwarningsÚwarnÚRuntimeWarningÚloadÚ	ExceptionÚpop)r   r   ÚitemsÚrvÚepÚexcs         ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/utils/backends.pyÚ_get_backendsr    -   sý   € ô0 ˜uÑ%€EØ	€BÛˆØ�w‰w×#Ñ#×%Ñ%Ü�MŠMØCÀBÇGÁGÁ;ÈkÐZÜØôð
 �W‰W˜‹]Ü�MŠMØ;¸B¿G¹G¸9ÐEÜØôö
 ðØ Ÿg™gœi›k�—7‘7“ð ˆr�w‰w‹Kñ/ ð0 ‡F�Fˆ=˜$ÔØ€Iøô ó Ü—’ØFÀrÇwÁwÀiÈrÐRUÐQVÐWÜ"Ø ÷ñ ûðús   Â!C%Ã%
D%Ã/*D Ä D%znetworkx.backendsc                 óœ   • U R                  5       R                  S5       Vs/ s H  oR                  5       =n(       d  M  UPM     sn$ s  snf )NÚ,)ÚstripÚsplit)ÚstringÚxÚx_strips      r   Ú_comma_sep_to_listr(   r   s;   € Ø#Ÿ\™\›^×1Ñ1°#Ô6ÓQÒ6˜ÇgÁgÃiÐ;O¸7Ó;O�GÑ6ÑQÐQùÒQs   ¢A	Á A	c                  ó"  • [         R                  [        SSS95        [         R                  S [        R	                  5       [         R	                  5       -
   5       5        0 n [         R                  5        H?  u  pSU;  a  [        5       nO%US   n[        U[        5      (       d  [        S0 UD6nX0U'   MA     [        S0 U D6n S[        U 5      l	        [        / / / S9n[        UU [        [        R                  R                  SS5      5      [        [        R                  R                  S	S
5      5      [!        [#        [        R                  R                  SS5      5      5      S9n0 [         S'   [        R                  R                  5        VVs0 s H1  u  pgUR%                  S5      (       d  M  USS R'                  5       U_M3     nnnUR(                  nSU;   a  [#        UR+                  S5      5      OF[#        [        R                  R                  S[        R                  R                  SS5      5      5      Ul        [#        UR+                  SS5      5      Ul        [1        U5       H  n[#        X†   5      XF'   M     U$ s  snnf )a�  Initialize ``config.backend_priority``, load backend_info and config.

This gets default values from environment variables (see ``nx.config`` for details).
This function is run at the very end of importing networkx. It is run at this time
to avoid loading backend_info before the rest of networkx is imported in case a
backend uses networkx for its backend_info (e.g. subclassing the Config class.)
znetworkx.backend_infoTr   c              3   ó(   #   • U  H  o0 4v •  M
     g 7f©N© )Ú.0Úbackends     r   Ú	<genexpr>Ú0_set_configs_from_environment.<locals>.<genexpr>€   s   é € ð Ú%J˜'�"�Ò%Jùó   ‚Údefault_configz2All installed NetworkX backends and their configs.)ÚalgosÚ
generatorsÚclassesÚNETWORKX_CACHE_CONVERTED_GRAPHSÚNETWORKX_FALLBACK_TO_NXFÚNETWORKX_WARNINGS_TO_IGNOREÚ )Úbackend_priorityÚbackendsÚcache_converted_graphsÚfallback_to_nxÚwarnings_to_ignoreÚnetworkxÚNETWORKX_BACKEND_PRIORITY_é   Nr3   ÚNETWORKX_BACKEND_PRIORITYÚNETWORKX_AUTOMATIC_BACKENDSr4   r,   )Úbackend_infoÚupdater    r;   Úkeysr   r   Ú
isinstanceÚtypeÚ__doc__r   r   ÚboolÚosÚenvironÚgetÚsetr(   Ú
startswithÚlowerr:   r   r3   r4   Úsorted)	Úbackend_configr.   ÚinfoÚcfgr:   ÚconfigÚkeyÚvalÚ
prioritiess	            r   Ú_set_configs_from_environmentrY   v   s8  € ô ×ÑœÐ&=ÈTÑRÔSÜ×Ññ Ü%-§]¡]£_´|×7HÑ7HÓ7JÒ%Jóô ð
 €NÜ%×+Ñ+Ö-‰ˆØ 4Ó'Ü“(‰CàÐ'Ñ(ˆCÜ˜c¤6×*Ñ*Ü‘m˜s‘m�Ø"%�wÓñ .ô Ñ-˜nÑ-€Nð $X„DˆÓÔ ä(¨r¸bÈ"ÑMÐäØ)ØÜ#Ü�J‰J�N‰NÐ<¸dÓCó 
ô œBŸJ™JŸN™NÐ+DÀeÓLÓMÜÜœrŸz™zŸ~™~Ð.KÈRÓPÓQó
ñ
€Fð  "„L�Ñô
 Ÿ
™
×(Ñ(Ô*ôâ*‰HˆCØ�>‰>Ð6×7ó 	ˆˆBˆCˆ�‰Ó˜#ÒÙ*ð ñ ð
 ×.Ñ.Ðð �jÓ ô 	˜:Ÿ>™>¨'Ó2Ô3äÜ�J‰J�N‰NØ+Ü—
‘
—‘Ð<¸bÓAóó
ð Ôô #5°Z·^±^ÀLÐRTÓ5UÓ"VÐÔÜ�jÖ!ˆÜ 2°:±?Ó CÐÓñ "ð €Mùó)s   ÆJÆ5Jc                  ó   • g)aŒ  This does nothing at all, yet it helps turn ``_dispatchable`` into functions.

Use this with the ``argmap`` decorator to turn ``self`` into a function. It results
in some small additional overhead compared to calling ``_dispatchable`` directly,
but ``argmap`` has the property that it can stack with other ``argmap``
decorators "for free". Being a function is better for REPRs and type-checkers.
Nr,   r,   ó    r   Ú_do_nothingr\   ¼   s   � r[   c                 ó   • g)NTr,   )r   ÚargsÚkwargss      r   Ú_always_runr`   Æ   s   € Ør[   c                 ó  • U [         ;   a	  [         U    $ U [        ;  a  [        SU  S35      e[        U    R                  5       =n[         U '   [	        US5      (       d  [
        Ul        [	        US5      (       d  [
        Ul        U$ )NÚ'ú' backend is not installedÚcan_runÚ
should_run)Ú_loaded_backendsr;   ÚImportErrorr   Úhasattrr`   rd   re   )Úbackend_namer   s     r   Ú_load_backendrj   Ê   s~   € ØÔ'Ó'Ü Ñ-Ð-Øœ8Ó#Ü˜A˜l˜^Ð+EÐFÓGÐGÜ*2°<Ñ*@×*EÑ*EÓ*GÐG€BÔ	˜,Ñ	'Ü�2�y×!Ñ!Ü ˆŒ
Ü�2�|×$Ñ$Ü#ˆŒØ€Ir[   c                   ó8  • \ rS rSr% Sr SSSSSSSSSSSSS.S jjr\S 5       r\R                  S	 5       r\S
 5       r	SS.S jr
SS.S jr\(       a  \O\
r\R                  \S'   S rS rS rS rS rS rS rSS.S jrSSS.S jrSS.S jrS rS rSrg) r
   é×   FNÚGT©r   ÚgraphsÚ
edge_attrsÚ
node_attrsÚpreserve_edge_attrsÚpreserve_node_attrsÚpreserve_graph_attrsÚpreserve_all_attrsÚmutates_inputÚreturns_graphÚimplemented_by_nxc                óB
  • Uc  [        [        UUUUUUUU	U
UUS9$ [        U[        5      (       a  [	        S5      SeUc  UR
                  n[        R                  U 5      nUR
                  Ul        UR                  Ul        UR                  (       a  0 UR                  ESS0EUl	        O	SS0Ul	        UR                  Ul
        UR                  Ul        UR                  R                  UR                  5        Xl        UR                  Ul        SUl        Xl        X-l        XMl        X]l        U=(       d    U	Ul        U=(       d    U	Ul        U=(       d    U	Ul        X­l        X½l        Ub5  [        U[        [6        -  5      (       d  [	        S[9        U5       S35      SeUb5  [        U[        [6        -  5      (       d  [	        S[9        U5       S35      Se[        UR,                  [:        [        -  [6        -  5      (       d#  [	        S[9        UR,                  5       S	35      Se[        UR.                  [:        [        -  [6        -  5      (       d#  [	        S
[9        UR.                  5       S	35      Se[        UR0                  [:        [<        -  5      (       d#  [	        S[9        UR0                  5       S35      Se[        UR2                  [:        [6        -  5      (       d#  [	        S[9        UR2                  5       S35      Se[        UR4                  [:        5      (       d#  [	        S[9        UR4                  5       S35      Se[        U[        5      (       a  US0nOMUc  OI[        U[6        5      (       d  [	        S[9        U5       S35      Se[?        U5      S:X  a  [A        S5      Se[=        5       Ul!        [=        5       Ul"        Uc  0 Ul#        OŽURI                  5        VVs0 s Hk  u  pïUS   =nS:X  a)  URB                  RK                  USS =n5      =(       d    UO0US:X  a)  URD                  RK                  USS =n5      =(       d    UOUU_Mm     snnUl#        SUl&        [N        RI                  5        VVs1 s H  u  nnSU;   d  M  UUS   ;   d  M  UiM     snnUl(        U(       a  URP                  RK                  S5        U[R        ;   a  [A        SU S35      Se[U        [V        5      " U5      nU[R        U'   U$ s  snnf s  snnf )a2  A decorator function that is used to redirect the execution of ``func``
function to its backend implementation.

This decorator allows the function to dispatch to different backend
implementations based on the input graph types, and also manages the
extra keywords ``backend`` and ``**backend_kwargs``.
Usage can be any of the following decorator forms:

- ``@_dispatchable``
- ``@_dispatchable()``
- ``@_dispatchable(name="override_name")``
- ``@_dispatchable(graphs="graph_var_name")``
- ``@_dispatchable(edge_attrs="weight")``
- ``@_dispatchable(graphs={"G": 0, "H": 1}, edge_attrs={"weight": "default"})``
    with 0 and 1 giving the position in the signature function for graph
    objects. When ``edge_attrs`` is a dict, keys are keyword names and values
    are defaults.

Parameters
----------
func : callable, optional (default: None)
    The function to be decorated. If None, ``_dispatchable`` returns a
    partial object that can be used to decorate a function later. If ``func``
    is a callable, returns a new callable object that dispatches to a backend
    function based on input graph types.

name : str, optional (default: name of `func`)
    The dispatch name for the function. It defaults to the name of `func`,
    but can be set manually to avoid conflicts in the global dispatch
    namespace. A common pattern is to prefix the function name with its
    module or submodule to make it unique. For example:

        - ``@_dispatchable(name="tournament_is_strongly_connected")``
          resolves conflict between ``nx.tournament.is_strongly_connected``
          and ``nx.is_strongly_connected``.
        - ``@_dispatchable(name="approximate_node_connectivity")``
          resolves conflict between ``nx.approximation.node_connectivity``
          and ``nx.connectivity.node_connectivity``.

graphs : str or dict or None, optional (default: "G")
    If a string, the parameter name of the graph, which must be the first
    argument of the wrapped function. If more than one graph is required
    for the function (or if the graph is not the first argument), provide
    a dict keyed by graph parameter name to the value parameter position.
    A question mark in the name indicates an optional argument.
    For example, ``@_dispatchable(graphs={"G": 0, "auxiliary?": 4})``
    indicates the 0th parameter ``G`` of the function is a required graph,
    and the 4th parameter ``auxiliary?`` is an optional graph.
    To indicate that an argument is a list of graphs, do ``"[graphs]"``.
    Use ``graphs=None``, if *no* arguments are NetworkX graphs such as for
    graph generators, readers, and conversion functions.

edge_attrs : str or dict, optional (default: None)
    ``edge_attrs`` holds information about edge attribute arguments
    and default values for those edge attributes.
    If a string, ``edge_attrs`` holds the function argument name that
    indicates a single edge attribute to include in the converted graph.
    The default value for this attribute is 1. To indicate that an argument
    is a list of attributes (all with default value 1), use e.g. ``"[attrs]"``.
    If a dict, ``edge_attrs`` holds a dict keyed by argument names, with
    values that are either the default value or, if a string, the argument
    name that indicates the default value.
    If None, function does not use edge attributes.

node_attrs : str or dict, optional
    Like ``edge_attrs``, but for node attributes.

preserve_edge_attrs : bool or str or dict, optional (default: False)
    If bool, whether to preserve all edge attributes.
    If a string, the parameter name that may indicate (with ``True`` or a
    callable argument) whether all edge attributes should be preserved
    when converting graphs to a backend graph type.
    If a dict of form ``{graph_name: {attr: default}}``, indicate
    pre-determined edge attributes (and defaults) to preserve for the
    indicated input graph.

preserve_node_attrs : bool or str or dict, optional (default: False)
    Like ``preserve_edge_attrs``, but for node attributes.

preserve_graph_attrs : bool or set, optional (default: False)
    If bool, whether to preserve all graph attributes.
    If set, which input graph arguments to preserve graph attributes.

preserve_all_attrs : bool, optional (default: False)
    Whether to preserve all edge, node and graph attributes.
    If True, this overrides all the other preserve_*_attrs.

mutates_input : bool or dict, optional (default: False)
    If bool, whether the function mutates an input graph argument.
    If dict of ``{arg_name: arg_pos}``, name and position of bool arguments
    that indicate whether an input graph will be mutated, and ``arg_name``
    may begin with ``"not "`` to negate the logic (for example, ``"not copy"``
    means we mutate the input graph when the ``copy`` argument is False).
    By default, dispatching doesn't convert input graphs to a different
    backend for functions that mutate input graphs.

returns_graph : bool, optional (default: False)
    Whether the function can return or yield a graph object. By default,
    dispatching doesn't convert input graphs to a different backend for
    functions that return graphs.

implemented_by_nx : bool, optional (default: True)
    Whether the function is implemented by NetworkX. If it is not, then the
    function is included in NetworkX only as an API to dispatch to backends.
    Default is True.
Nrn   z-'name' and 'graphs' must be passed by keywordr.   zBad type for edge_attrs: z. Expected str or dict.zBad type for node_attrs: z"Bad type for preserve_edge_attrs: z. Expected bool, str, or dict.z"Bad type for preserve_node_attrs: z#Bad type for preserve_graph_attrs: z. Expected bool or set.zBad type for mutates_input: z. Expected bool or dict.zBad type for returns_graph: z. Expected bool.r   zBad type for graphs: z0'graphs' must contain at least one variable nameéÿÿÿÿÚ?Ú]r   Ú	functionsr?   z0Algorithm already exists in dispatch namespace: zF. Fix by assigning a unique `name=` in the `@_dispatchable` decorator.),r   r
   rG   ÚstrÚ	TypeErrorÚ__name__ÚobjectÚ__new__Ú__defaults__Ú__kwdefaults__Ú
__module__Ú__qualname__Ú__dict__rE   Ú__wrapped__rI   Ú	_orig_docÚ_cached_docÚ	orig_funcr   rp   rq   rr   rs   rt   rv   Ú_returns_graphÚdictrH   rJ   rN   ÚlenÚKeyErrorÚoptional_graphsÚlist_graphsro   r   ÚaddÚ_sigrD   r;   Ú_registered_algorithmsr	   r\   )ÚclsÚfuncr   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ÚselfÚkÚvÚlastrW   r.   rS   s                       r   r‚   Ú_dispatchable.__new__Ú   s$  € ðt ‰<ÜÜØØØ%Ø%Ø$7Ø$7Ø%9Ø#5Ø+Ø+Ø"3ñð ô �dœC× Ñ ÜÐKÓLÐRVÐVà‰<Ø—=‘=ˆDä�~‰~˜cÓ"ˆð Ÿ™ˆŒà ×-Ñ-ˆÔà××Ø"J T×%8Ñ%8Ð"J¸)ÀTÑ"JˆDÕà#,¨dÐ"3ˆDÔØŸ/™/ˆŒØ ×-Ñ-ˆÔØ�‰×Ñ˜TŸ]™]Ô+ØÔð Ÿ™ˆŒØˆÔàŒØŒ	Ø$ŒØ$ŒØ#6×#LÐ:LˆÔ Ø#6×#LÐ:LˆÔ Ø$8×$NÐ<NˆÔ!Ø*Ôà+ÔàÑ!¬*°ZÄÄtÁ×*LÑ*LÜØ+¬D°Ó,<Ð+=Ð=TÐUóàðð Ñ!¬*°ZÄÄtÁ×*LÑ*LÜØ+¬D°Ó,<Ð+=Ð=TÐUóàðô ˜$×2Ñ2´D¼3±JÄÑ4E×FÑFÜØ4´T¸$×:RÑ:RÓ5SÐ4Tð U0ð 0óð ðô ˜$×2Ñ2´D¼3±JÄÑ4E×FÑFÜØ4´T¸$×:RÑ:RÓ5SÐ4Tð U0ð 0óð ðô ˜$×3Ñ3´T¼C±Z×@Ñ@ÜØ5´d¸4×;TÑ;TÓ6UÐ5Vð W)ð )óð ðô ˜$×,Ñ,¬d´T©k×:Ñ:ÜØ.¬t°D×4FÑ4FÓ/GÐ.Hð I*ð *óð ðô ˜$×-Ñ-¬t×4Ñ4ÜØ.¬t°D×4GÑ4GÓ/HÐ.Ið J"ð "óð ðô
 �fœc×"Ñ"Ø˜a�[‰FØ‰^ØÜ˜F¤D×)Ñ)ÜØ'¬¨V« ~Ð5LÐMóàðô �‹[˜AÓÜÐMÓNÐTXÐXô  #›uˆÔÜ›5ˆÔØ‰>ØˆD�Kð #ŸL™LœNôò +‘D�Að	 ˜b™E�M�D cÓ)ð ×$Ñ$×(Ñ(°°#°2°¨¨Ó7×>¸3øð ˜3“;ð ×%Ñ%×)Ñ)°°1°R°¨.¨#Ó9×@¸Søà˜ò	ñ
 +òˆDŒKð ˆŒ	ô
 ".×!3Ñ!3Ô!5ô
â!5‘�˜Ø˜dÑ"ó à'+¨t°KÑ/@Ñ'@÷ Ù!5ò
ˆŒö
 Ø�M‰M×Ñ˜jÔ)àÔ)Ó)ÜØBÀ4À&ð IWð Wóð ðô ”kÔ" 4Ó(ˆØ'+Ô˜tÑ$ØˆùóMùó"
s   Ï5A2TÒTÒTÒ*Tc                 óP   • U R                   nUc  U R                  5       =ol         U$ )z’If the cached documentation exists, it is returned.
Otherwise, the documentation is generated using _make_doc() method,
cached, and then returned.)rŠ   Ú	_make_doc)r—   r   s     r   rI   Ú_dispatchable.__doc__ä  s+   € ð ×ÑˆØ‰:Ø$(§N¡NÓ$4Ð4ˆBÔ!Øˆ	r[   c                 ó   • Xl         SU l        g)zWSets the original documentation to the given value and resets the
cached documentation.N)r‰   rŠ   )r—   rW   s     r   rI   rž   ï  s   € ð
 ŒØˆÕr[   c           	      ó¨  • U R                   Gc9  [        R                  " U R                  5      n[	        S UR
                  R                  5        5       5      (       d‡  UR                  / UR
                  R                  5       Q[        R                  " S[        R                  R                  SS9P[        R                  " S[        R                  R                  5      PS9nO]UR
                  R                  5       Gt p#UR                  / UQ[        R                  " S[        R                  R                  SS9PUPS9nXl         U R                   $ )zrReturn the signature of the original function, with the addition of
the `backend` and `backend_kwargs` parameters.Nc              3   ón   #   • U  H+  oR                   [        R                  R                  :H  v •  M-     g 7fr+   )ÚkindÚinspectÚ	ParameterÚVAR_KEYWORD)r-   Úps     r   r/   Ú._dispatchable.__signature__.<locals>.<genexpr>   s'   é € ð ÚAX¸A—‘œ'×+Ñ+×7Ñ7Ö7ÒAXùs   ‚35r.   )ÚdefaultÚbackend_kwargs©Ú
parameters)r“   r£   Ú	signaturer‹   Úanyr«   ÚvaluesÚreplacer¤   ÚKEYWORD_ONLYr¥   )r—   Úsigr«   Úvar_keywords       r   Ú__signature__Ú_dispatchable.__signature__÷  s>  € ð
 �9‰9ÒÜ×#Ò# D§N¡NÓ3ˆCô ñ ØADÇÁ×AVÑAVÔAXó÷ ñ ð —k‘kð ØŸ™×.Ñ.Ó0ð ä×)Ò)Ø%¤w×'8Ñ'8×'EÑ'EÈtñð ô
  ×)Ò)Ø,¬g×.?Ñ.?×.KÑ.Kóð ð "ð 
‘ð ,/¯>©>×+@Ñ+@Ó+BÑ(�Ø—k‘kð Ø#ð ä×)Ò)Ø%¤w×'8Ñ'8×'EÑ'EÈtñð ð
 $ð ð "ð �ð ŒIØ�y‰yÐr[   )r.   c               ó¨   • Ub  US:w  a  [        SU S35      eSU R                  ;  a  [        SU R                   S35      eU R                  " U0 UD6$ )zDReturns the result of the original function (no backends installed).r?   rb   rc   zz' is not implemented by 'networkx' backend. This function is included in NetworkX as an API to dispatch to other backends.)rg   r;   ÚNotImplementedErrorr   r‹   )r—   r.   r^   r_   s       r   Ú_call_if_no_backends_installedÚ,_dispatchable._call_if_no_backends_installed  sh   € àÑ 7¨jÓ#8Ü  ' Ð*DÐEÓFÐFØ˜TŸ]™]Ó*Ü%Ø�D—I‘I�;ð "ð "óð ð
 �~Š~˜tÐ. vÑ.Ð.r[   c               ó*  • UnUb  U[         ;  a  [        SU S35      e0 nU R                  R                  5        H¢  u  pgU[	        U5      :  a%  Xc;   a  [        U R                   SU< 35      eX'   nO5Xc;   a  X6   nO+X`R                  ;  a  [        U R                   SU 35      eMn  Uc-  X`R                  ;  a  [        U R                   SU< S35      eMž  X…U'   M¤     U R                  (       aÛ  [        U5      nU R                  UR                  5       -   H0  n[        XV   5      n	X•U'   Xc;   a  X“U'   M  X’U R                  U   '   M2     UR                  5        VV
s1 s H#  u  pjX`R                  ;  d  M  [        U
SS5      iM%     nnn
U R                  UR                  5       -   H  nUR                  S	 XV    5       5        M     O+UR                  5        V
s1 s H  n
[        U
SS5      iM     nn
[        R                  R                   R#                  U R                  U R                  R%                  S
5      (       a$  [        R                  R                   R&                  OXU R(                  (       a$  [        R                  R                   R*                  O#[        R                  R                   R,                  5      n[        R                  R.                  =(       a    SU R0                  ;   nU R2                  (       a  U(       a  Uc  U R5                  US   UUUS9$ UR7                  S5        UGb¾  SU S3nSU SU R                   SU 3nU(       a  X´1:X  ac  U R9                  XBU5      (       a  U R;                  XBX?S9$ U R=                  U5      (       a  SnOSn[?        SU R                   SU SU SU 35      eU RA                  XK5      (       aÊ  U R9                  XBU5      (       aw  U RC                  X#5      (       a$  [D        RG                  SU R                  U5        / nOSnU RI                  UUUUUUS9nU(       a  U H  u  nnURK                  US5        M     U$ U R=                  U5      (       a  SnOSn[?        SU R                   SU SU SU 35      e[	        U5      S:X  a  SnS[M        [O        U5      5       S3nOSn[        SU R                   SU SU SU SU S U 35      eU RC                  X#5      (       GaQ  S!nS"n[	        U5      S:X  a¿  Uu  nS#U S$U R                   S%U 3n U R9                  XBU5      (       a  U R;                  UUUUS&-  S9$  U(       aH  [Q        S' UR                  5        5       5      (       a#  [D        RG                  S(UU R                  U5        O–U R=                  U5      (       a  S&nOSn[?        UU-  5      eU(       aH  [Q        S+ UR                  5        5       5      (       a#  [D        RG                  S,U R                  UU5        O[S        SU R                   S-U S.U 35      eU RT                  " U0 UD6$ U(       d  U(       d  S/nO/ n[W        5       n/ n/ nU HF  nUU;   a  M  URY                  U5        UU;   a  UR[                  U5        M5  UR[                  U5        MH     / n/ n U HF  nUU;   a  M  URY                  U5        UU;   a  UR[                  U5        M5  U R[                  U5        MH     UU-
  n![	        U!5      S:”  a#  [D        RG                  S/U R                  U!5        S0n![        [\        R^                  " UUU!UU 5      5      n"[	        U"5      S:”  a+  [D        RG                  S1U R                  U=(       d    S2U"5        / n#[a        U"5       GH  u  n$nU$(       a  [D        RG                  S3U5         U(       a  X´1:X  a-  U R9                  XBU5      (       a  U R;                  XBU5      s  $ M_  U RA                  XK5      (       a›  U R9                  XBU5      (       a�  U Rc                  XBU5      (       aV  U RI                  XKX#5      nU R(                  (       a/  U(       a(  XK;  a#  [D        RG                  S4U R                  UUU5        Us  $ U#R[                  U5        GM  GM  GM     U# Hn  n[D        RG                  S6U5         U RI                  XKX#5      nU R(                  (       a/  U(       a(  XK;  a#  [D        RG                  S4U R                  UUU5        Us  $    [	        UU-
  =n%5      S:”  a"  [        S7U S8U R                   S9U" S:U% S;3	5      eSU R0                  ;  a  S<nOSn[?        SU R                   S=U" S>U 35      es  sn
nf s  sn
f ! [>         aT  n[Q        S) UR                  5        5       5      (       a)  [D        RG                  S*UU R                  UU5         SnAGNÆe SnAff = f! [>         a.  n[D        RG                  S5UU R                  U5         SnAGM‘  SnAff = f! [>         a.  n[D        RG                  S5UU R                  U5         SnAGMµ  SnAff = f)?z„Returns the result of the original function, or the backend function if
the backend is specified and that backend implements `func`.Nrb   rc   z() got multiple values for z$() missing required graph argument: z() required graph argument z is None; must be a graphÚ__networkx_backend__c              3   ó<   #   • U  H  n[        US S5      v •  M     g7f©rº   N)Úgetattr©r-   Úgs     r   r/   Ú@_dispatchable._call_if_any_backends_installed.<locals>.<genexpr>c  s$   é € ð +â3˜ô ˜AÐ5°t×<Ð<Ú3ùó   ‚r‚   r?   r   ©r=   zZNo other backends will be attempted, because the backend was specified with the `backend='z'` keyword argument.z3' backend raised NotImplementedError when calling 'z'. ©Úextra_messagez for the given argumentsr9   z' is not implemented by 'z	' backendz. zõ'%s' will mutate an input graph. This prevents automatic conversion to, and use of, backends listed in `nx.config.backend_priority`. Using backend specified by the `backend='%s'` keyword argument. This may change behavior by not mutating inputs.©rÄ   Ú	mutationsr   Úsz)' is unable to convert graph from backendÚ z to 'z2' backend, which was specified with the `backend='z'` keyword argument. zñconversions between backends (if configured) will not be attempted because the original input graph would not be mutated. Using the backend keyword e.g. `backend='some_backend'` will force conversions and not mutate the original input graph.z¤This call will mutate inputs, so fall back to 'networkx' backend (without converting) since all input graphs are instances of nx.Graph and are hopefully compatible.z	Backend 'z' does not implement 'z2'%s. This call will mutate an input, so automatic z with these argumentsc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7fr+   ©rG   ÚnxÚGraphr¾   s     r   r/   rÀ     s'   é € ð .ò ":˜Aô # 1¤b§h¡h×/Ð/Ú!9ùó   ‚')zBackend '%s' can't run '%s'. %sc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7fr+   rÊ   r¾   s     r   r/   rÀ   ö  s    é € ÐUÒ<T°qœ: a¬¯©×2Ð2Ò<TùrÍ   z-Backend '%s' raised when calling '%s': %s. %sc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7fr+   rÊ   r¾   s     r   r/   rÀ     s'   é € ð (ò 2�Aô ˜1œbŸh™h×'Ð'Ú1ùrÍ   z:'%s' was called with inputs from multiple backends: %s. %szN' will mutate an input, but it was called with inputs from multiple backends: z. Automatic z°Call to '%s' has inputs from multiple backends, %s, that have no priority set in `nx.config.backend_priority`, so automatic conversions to these backends will not be attempted.r,   zaCall to '%s' has inputs from %s backends, and will try to use backends in the following order: %sÚnozTrying next backend: '%s'zžCall to '%s' is returning a graph from a different backend! It has inputs from %s backends, but ran with '%s' backend and is returning graph from '%s' backendú)Backend '%s' raised when calling '%s': %sz2Trying backend: '%s' (ignoring `should_run=False`)zUnable to convert inputs from z backends and run 'z6'. NetworkX is configured to automatically convert to zB backends. To remedy this, you may enable automatic conversion to zƒ backends by adding them to `nx.config.backend_priority`, or you may specify a backend to use with the `backend=` keyword argument.zO This function is included in NetworkX as an API to dispatch to other backends.z' is not implemented by zà backends. To remedy this, you may enable automatic conversion to more backends (including 'networkx') by adding them to `nx.config.backend_priority`, or you may specify a backend to use with the `backend=` keyword argument.)2rD   rg   ro   r   rŽ   r   r   r�   r‘   ÚlistrF   r½   rE   r®   rË   rU   r:   rM   Úendswithr5   rŒ   r4   r3   r=   r;   Ú_is_testingÚ_convert_and_call_for_testsÚdiscardÚ_can_backend_runÚ_call_with_backendÚ_does_backend_haver¶   Ú_can_convertÚ_will_call_mutate_inputÚ_loggerÚdebugÚ_convert_and_callr   ÚnextÚiterÚallÚRuntimeErrorr‹   rN   r’   ÚappendÚ	itertoolsÚchainÚ	enumerateÚ_should_backend_run)&r—   r.   r^   r_   ri   Úgraphs_resolvedÚgnameÚposÚgraphÚlist_of_graphsr¿   Úgraph_backend_namesr:   r=   Úbackend_kwarg_msgrÄ   ÚextrarÆ   r   ÚcacherV   Úmaybe_sÚ
mutate_msgÚfallback_msgÚmsg_templater   Úbackend_fallbackÚseenÚgroup1Úgroup2r   Úgroup4Úgroup5Úgroup3Ú	try_orderÚbackends_to_try_againÚis_not_firstÚunspecified_backendss&                                         r   Ú_call_if_any_backends_installedÚ-_dispatchable._call_if_any_backends_installed*  sM  € ð ˆØÑ#¨¼LÓ(HÜ  , Ð/IÐJÓKÐKàˆØŸ+™+×+Ñ+Ö-‰JˆEØ”S˜“Y‹Ø“?Ü# t§y¡y kÐ1LÈUÉIÐ$VÓWÐWØ™	‘Ø“Ø™‘Ø×2Ñ2Ó2ÜØ—y‘y�kÐ!EÀeÀWÐMóð ñ Ø‰}Ø× 4Ñ 4Ó4Ü#ØŸ9™9˜+Ð%@ÀÁ	ÐIbÐcóð ñ 5ð
 */ Ó&ñ' .ð: ××ä˜“:ˆDØ×)Ñ)¨O×,@Ñ,@Ó,BÔB�Ü!% oÑ&<Ó!=�Ø)7 Ñ&Ø“?Ø$2˜5“Mà/=˜Ÿ™ UÑ+Ó,ñ Cð !0× 5Ñ 5Ô 7ô#â 7‘H�EØ× 0Ñ 0Ñ0ó 9”˜Ð1°4Ö8Ù 7ð  ñ #ð
 ×)Ñ)¨O×,@Ñ,@Ó,BÔB�Ø#×*Ñ*ñ +à,Ò3ó+ö ò Cð )×/Ñ/Ô1ó#â1�Aô ˜Ð1°4Ö8Ù1ð  ð #ô
 Ÿ9™9×5Ñ5×9Ñ9Ø�I‰Ià�y‰y×!Ñ! )×,Ñ,ô �I‰I×&Ñ&×.Ò.ð ×"×"ô —‘×+Ñ+×6Ò6ä—‘×+Ñ+×1Ñ1ó
Ðô Ÿ™×1Ñ1×Q°jÀDÇMÁMÑ6QˆØ××Ö 0°\Ñ5Ið ×3Ñ3Ø  Ñ#ØØØ-ð	 4ð ð ð 	×#Ñ# DÔ)ØÒ#ð
0Ø0<¨~Ð=QðSð ð
 �L�>ð "Ø—I‘I�;˜cÐ"3Ð!4ð6ð ö 'Ð*=ÀÓ*Oà×(Ñ(¨¸V×DÑDØ×2Ñ2Ø$¨Fð 3ð ð ð ×*Ñ*¨<×8Ñ8Ø6‘Eà�EÜ)Ø˜Ÿ	™	�{Ð";¸L¸>ÈØ�g˜RÐ 1Ð2ð4óð ð × Ñ  ×CÑCØ×(Ñ(¨¸V×DÑDØ×3Ñ3°D×AÑAÜŸ™ð/ð
 !ŸI™IØ(ôð %'™	à$(˜	Ø×/Ñ/Ø$Ø+ØØØ&3Ø"+ð 0ð �Bö !Û*3™J˜E 3ð "ŸI™I c¨4Ö0ñ	 +4ð
 �IØ×*Ñ*¨<×8Ñ8Ø6‘Eà�EÜ)Ø˜Ÿ	™	�{Ð";¸L¸>ÈØ�g˜RÐ 1Ð2ð4óð ô Ð&Ó'¨1Ó,Ø�Ø()¬$¬tÐ4GÓ/HÓ*IÐ)JÈ!Ð&LÑ#à�ÜØ�D—I‘I�;ÐGÈÀyÐPQØ&Ð' u¨\¨Nð ;0Ø0<¨~Ð=RØ$Ð%ð'óð ð ×'Ñ'¨×5Ò5ð;ð ðFð ô
 Ð&Ó'¨1Ó,Ø!4‘�à ˜~Ð-CÀDÇIÁIÀ;ð ODØDNÀ<ðQð ð
&HØ×,Ñ,¨\À×HÑHØ#×6Ñ6Ø(Ø Ø"Ø*6Ð9PÑ*Pð	  7ð  ð ð Iö& &¬#ñ .ð "1×!7Ñ!7Ô!9ó	.÷ +ñ +ô  Ÿ™Ø=Ø(Ø ŸI™IØ(õ	ð  ×2Ñ2°<×@Ñ@Ø$;™Eà$&˜EÜ1°,ÀÑ2FÓGÐGÞ¤Cñ (ð )×/Ñ/Ô1ó	(÷ %ñ %ô —‘ØPØ—I‘IØ'Ø õ	ô #Ø˜Ÿ	™	�{ð #6Ø6IÐ5Jð K!Ø!+ ð.óð ð —>’> 4Ð2¨6Ñ2Ð2ö Ö!4ð !+˜|Ñà!Ðôx ‹uˆØˆØˆÛ$ˆDØ�t‹|ÙØ�H‰H�TŒNØÐ*Ó*Ø—‘˜dÖ#à—‘˜dÖ#ñ %ð ˆØˆÛ$ˆDØ�t‹|ÙØ�H‰H�TŒNØÐ*Ó*Ø—‘˜dÖ#à—‘˜dÖ#ñ %ð % tÑ+ˆÜˆv‹;˜‹?ô" �M‰Mð8ð —	‘	Øôð ˆFäœŸš¨°¸ÀÈÓPÓQˆ	Üˆy‹>˜AÓô �M‰Mð6à—	‘	Ø#×+ tØôð !#ÐÜ*3°I×*>Ñ&ˆL˜,ÞÜ—‘Ð9¸<ÔHð)Þ*Ð.AÀ^Ó.SØ×,Ñ,¨\À×HÑHØ#×6Ñ6°|È6ÓRÒRñ Ià×&Ñ&Ø ÷ñ à×+Ñ+¨LÀ×GÑGØ×/Ñ/°ÀF×KÑKØ!×3Ñ3Ø(¸tó˜ð !×/×/Þ 3Ø ,Ó Gô $ŸM™Mð!Xð !%§	¡	Ø 3Ø ,Ø ,ôð  "š	à)×0Ñ0°×>ò9 Hòñ +?ó` 2ˆLÜ�M‰MØDÀlôðØ×+Ñ+Ø °tó�ð ×'×'Þ+Ø$Ó?ä—M‘MðPð Ÿ	™	Ø+Ø$Ø$ôð ’	ñ- 2ôD Ð':¸TÑ'AÐAÐ#ÓBÀQÓFÜØ0Ð1DÐ0Eð FØŸ	™	�{ð #Ø�[ð !!Ø!5Ð 6ð 7UðUóð ð ˜TŸ]™]Ó*ð"ñ ð
 ˆEÜ!Ø�—	‘	ˆ{Ð2°9°+ð >/ð 05¨gð	7ó
ð 	
ùóe#ùò#øôZ +ó 
ÜÑU¸O×<RÑ<RÔ<TÓU×UÑUÜŸ™ØKØ(Ø ŸI™IØØ(÷ò ð ûð
ûô| 'ó Ü—‘Ø?Ø Ø—I‘IØ÷	ó ûðûôB 'ó Ü—‘Ø?Ø Ø—I‘IØ÷	ó ûðúso   Å!f3Å:f3Çf9Ô>+f> ß&5hà Bhâ:hã2Aiæ>
hçAhèhèhè
iè)"iéié
jé$"jêjÚ__call__c                 ó®   ^^^• [        U R                  =n[        5      (       a  U$ [        T5      m[	        UUU4S jUR                  5        5       5      $ )Nc              3   óÚ   >#   • U  H`  u  pUR                  S 5      (       d  TU:”  a  TU   OTR                  U5      SLO$TU:”  a  TU   OTR                  USS S5      (       + v •  Mb     g7f)znot Né   T)rO   rM   )r-   Úarg_nameÚarg_posr^   r_   Úns      €€€r   r/   Ú8_dispatchable._will_call_mutate_input.<locals>.<genexpr>-  sx   øé € ð 
ò
 &;Ñ!�ð ×&Ñ& v×.Ñ.ð   '›kˆT�'Š]¨v¯z©z¸(Ó/CÈDÑPð ()¨7£{�d˜7’m¸¿
¹
À8ÈAÈBÀ<ÐQUÓ8VÔWôXò &;ùs   ƒA(A+)rG   rv   rJ   rŽ   r­   r   )r—   r^   r_   rv   r  s    `` @r   rÛ   Ú%_dispatchable._will_call_mutate_input  sS   ú€ ô ¨×(:Ñ(:Ð:�}¼T×BÑBØ Ð ô �‹IˆÜö 
ð
 &3×%8Ñ%8Ô%:ó
ó 
ð 	
r[   c                 ó€   • US:H  =(       d    UR                  SU15      nU(       d  [        R                  SUU5        U$ )Nr?   z2Unable to convert from %s backends to '%s' backend)ÚissubsetrÜ   rÝ   )r—   ri   rí   r   s       r   rÚ   Ú_dispatchable._can_convert5  sJ   € ð ˜ZÑ'÷ 
Ð+>×+GÑ+GØ˜Ð&ó,
ˆö Ü�M‰MØDØ#Øôð
 ˆ	r[   c                 ól   • US:X  a  SU R                   ;   $ [        U5      n[        X R                  5      $ )z/Does the specified backend have this algorithm?r?   )r;   rj   rh   r   )r—   ri   r.   s      r   rÙ   Ú _dispatchable._does_backend_haveC  s2   € à˜:Ó%Ø §¡Ñ.Ð.ä Ó-ˆÜ�w§	¡	Ó*Ð*r[   c           
      ó¾  • US:X  a  SU R                   ;   $ [        U5      n[        X@R                  5      (       d!  [        R                  SXR                  5        gUR                  U R                  X#5      n[        U[        5      (       d  U(       dJ  [        U[        5      (       a  SU 3OSn[        R                  SUU R                  [        XU5      U5        gg)zBCan the specified backend run this algorithm with these arguments?r?   z$Backend '%s' does not implement '%s'Fú, because: r9   z0Backend '%s' can't run `%s` with arguments: %s%sT)
r;   rj   rh   r   rÜ   rÝ   rd   rG   r~   Ú_LazyArgsRepr)r—   ri   r^   r_   r.   rd   Úreasons          r   r×   Ú_dispatchable._can_backend_runK  s¹   € à˜:Ó%Ø §¡Ñ.Ð.Ü Ó-ˆô �w§	¡	×*Ñ*Ü�M‰MØ6¸ÇiÁiôð Ø—/‘/ $§)¡)¨TÓ:ˆÜ�gœs×#Ñ#®7Ü0:¸7ÄC×0HÑ0H�{ 7 )Ñ,ÈbˆFÜ�M‰MØBØØ—	‘	Ü˜d¨&Ó1Øôð Ør[   c           
      ó,  • US:X  a  g[        U5      nUR                  U R                  X#5      n[        U[        5      (       d  U(       dJ  [        U[        5      (       a  SU 3OSn[
        R                  SUU R                  [        XU5      U5        gg)zzShould the specified backend run this algorithm with these arguments?

Note that this does not check ``backend.can_run``.
r?   Tr  r9   z4Backend '%s' shouldn't run `%s` with arguments: %s%sF)rj   re   r   rG   r~   rÜ   rÝ   r  )r—   ri   r^   r_   r.   re   r  s          r   rç   Ú!_dispatchable._should_backend_rund  s‡   € ð ˜:Ó%ØÜ Ó-ˆØ×'Ñ'¨¯	©	°4Ó@ˆ
Ü�j¤#×&Ñ&®jÜ3=¸jÌ#×3NÑ3N�{ : ,Ñ/ÐTVˆFÜ�M‰MØFØØ—	‘	Ü˜d¨&Ó1Øôð Ør[   c                óº  • U R                   R                  " U0 UD6nUR                  5         U R                  (       d  UR                  nUS	 UR
                  U4$ US:X  a  S=n=pšO<U R                  nU R                  n	U R                  n
U R                  nU R                  nUSL a  OžUSL a  SnO–[        U[        5      (       a�  UR                  U   SL d  [        UR                  U   5      (       a  SnSnOMUR                  U   SL a9  [        W[        5      (       a  X¸:X  d  [        U[        5      (       a
  X‹;   a  SnSnOSnWc  GOK[        U[        5      (       aÌ  US   S:X  a$  UR                  USS	     Vs0 s H  oÝS_M     nnGO	[        UR                  U   5      (       a  SnSnOçUR                  U   b  UR                  U   S0nOÅU R                   S
:X  aH  [#        UR                  S   S5      (       a*  UR                  S   R$                   Vs0 s H  oÝS_M     nnOmSnOjUR'                  5        VVs0 s HM  u  pïUR                  U   =nc  M  U[        U[        5      (       a  UR                  R)                  US5      OU_MO     nnnU	SL a  OžU	SL a  SnO–[        U	[        5      (       a�  UR                  U	   SL d  [        UR                  U	   5      (       a  Sn	SnOMUR                  U	   SL a9  [        W[        5      (       a  XÉ:X  d  [        U[        5      (       a
  Xœ;   a  Sn	SnOSn	Wc  Oò[        U[        5      (       at  US   S:X  a$  UR                  USS	     Vs0 s H  nUS_M     nnO°[        UR                  U   5      (       a  Sn	SnOŽUR                  U   b  UR                  U   S0nOlSnOiUR'                  5        VVs0 s HL  u  pïUR                  U   =nc  M  U[        U[        5      (       a  UR                  R)                  U5      OU_MN     nnnU R                   GH^  nUU R*                  ;   aX  UR                  U    Vs/ s H.  n[-        USS5      U:w  a  U R/                  UUUUUU	U
UUUS9
OUPM0     snUR                  U'   Ml  UR                  U   nUc.  UU R0                  ;   a  M�  [3        SU SU R                    S35      e[        U[        5      (       a  SnUR)                  UU5      nOUnUn[        U	[        5      (       a  SnU	R)                  UU5      nOU	nUn[        U
[4        5      (       a  UU
;   nOU
n[-        USS5      U:w  d  GM9  U R/                  UUUUUUUUUUS9
UR                  U'   GMa     UR                  nUS	 UR
                  U4$ s  snf s  snf s  snnf s  snf s  snnf s  snf )z^Convert graph arguments to the specified backend.

Returns
-------
args tuple and kwargs dict
r.   r?   TFNr   Ú[r   rz   Úto_numpy_arrayÚdtypeÚnamesrº   )rp   rq   rr   rs   rt   Ú
graph_nameÚ	use_cacherÆ   z!Missing required graph argument `z` in z	 function)r³   ÚbindÚapply_defaultsro   r_   r^   rr   rs   rt   rp   rq   rG   r~   Ú	argumentsÚcallabler�   r   rh   r  r   rM   r‘   r½   Ú_convert_graphr�   r   rN   )r—   ri   r^   r_   r  rÆ   ÚboundÚbound_kwargsrr   rs   rt   rp   rq   Ú	edge_attrrV   rW   Ú	node_attrré   r¿   rë   Úpreserve_edgesÚedgesÚpreserve_nodesÚnodesÚpreserve_graphs                            r   Ú_convert_argumentsÚ _dispatchable._convert_arguments|  sc  € ð ×"Ñ"×'Ò'¨Ð8°Ñ8ˆØ×ÑÔØ�{�{Ø Ÿ<™<ˆLØ˜YÐ'Ø—:‘:˜|Ð+Ð+Ø˜:Ó%àOSÐSÐÐSÐ"5Ð8Là"&×":Ñ":ÐØ"&×":Ñ":ÐØ#'×#<Ñ#<Ð ØŸ™ˆJØŸ™ˆJð  %Ò'àØ  DÒ(à‰JÜÐ+¬S×1Ñ1Ø�‰Ð2Ñ3°tÒ;¼xØ—‘Ð 3Ñ4÷@ñ @ð
 '+Ð#Ø!‘
Ø—‘Ð!4Ñ5¸Ò>Ü˜:¤s×+Ñ+ØÓ5Ü˜j¬$×/Ñ/Ø'Ó5ð
 ',Ð#Ø!‘
ð ',Ð#ð ÑáÜ˜
¤C×(Ñ(Ø˜!‰} Ó#ð 38·/±/À*ÈQÈrÐBRÒ2SóÚ2S Y˜q’LÑ2Sð ð ‘
ô ˜%Ÿ/™/¨*Ñ5×6Ñ6à&*Ð#Ø!‘
Ø—‘ Ñ,Ñ8à#Ÿo™o¨jÑ9¸1Ð=‘
Ø—‘Ð.Ó.´7Ø—‘ Ñ(¨'÷4ñ 4ð
 38·/±/À'Ñ2J×2PÒ2PóÚ2P Y˜q’LÑ2Pð ð �
ð
 "‘
ð !+× 0Ñ 0Ô 2ôâ 2‘H�CØ!&§¡°Ñ!5Ð5�Ió X�	¼*ÀSÌ#×:NÑ:N˜5Ÿ?™?×.Ñ.¨s°AÔ6ÐTWÒWÙ 2ð ñ ð  %Ò'àØ  DÒ(à‰JÜÐ+¬S×1Ñ1Ø�‰Ð2Ñ3°tÒ;¼xØ—‘Ð 3Ñ4÷@ñ @ð
 '+Ð#Ø!‘
Ø—‘Ð!4Ñ5¸Ò>Ü˜:¤s×+Ñ+ØÓ5Ü˜j¬$×/Ñ/Ø'Ó5ð
 ',Ð#Ø!‘
ð ',Ð#ð ÑàÜ˜
¤C×(Ñ(Ø˜!‰} Ó#ð 6;·_±_ÀZÐPQÐRTÐEUÒ5VóÚ5V¨	�I˜t’OÑ5Vð ð �
ô ˜%Ÿ/™/¨*Ñ5×6Ñ6à&*Ð#Ø!‘
Ø—‘ Ñ,Ñ8à#Ÿo™o¨jÑ9¸4Ð@‘
ð "‘
ð !+× 0Ñ 0Ô 2ôâ 2‘H�CØ!&§¡°Ñ!5Ð5�Ió U�	´zÀ#Äs×7KÑ7K˜5Ÿ?™?×.Ñ.¨sÔ3ÐQTÒTÙ 2ð ñ ð —[•[ˆEØ˜×(Ñ(Ó(ð  #Ÿ_™_¨UÒ3ó*ò 4˜ô ˜qÐ"8¸*ÓEÈÓUð ×'Ñ'Ø$ØØ#-Ø#-Ø,?Ø,?Ø-AØ#(Ø"+Ø"+ð (ñ ð òñ 4ñ*�—‘ Ó&ð$ Ÿ™¨Ñ.�Ø‘=Ø × 4Ñ 4Ó4Ù Ü#Ø;¸E¸7À%ÈÏ	É	À{ÐR[Ð\óð ô Ð1´4×8Ñ8Ø%*�NØ/×3Ñ3°E¸:ÓF‘Eà%8�NØ&�EÜÐ1´4×8Ñ8Ø%*�NØ/×3Ñ3°E¸:ÓF‘Eà%8�NØ&�EÜÐ2´C×8Ñ8Ø%*Ð.BÑ%B‘Nà%9�NÜ˜5Ð"8¸*ÓEÈÖUØ-1×-@Ñ-@Ø$ØØ#(Ø#(Ø,:Ø,:Ø-;Ø#(Ø"+Ø"+ð .Að .�E—O‘O EÔ*ñY !ðp —|‘|ˆØ˜Ð#Ø�z‰z˜<Ð'Ð'ùòiùòùóùòVùó ùò*s0   Å>V=ÈWÉ WÉ8WÍ1WÏWÏ77WÑ"5Wc                ó(  • U	(       a  [        USS 5      OS nUbÚ  UR                  S0 5      R                  U0 5      n[        UUUUUS9n[        XÍU
S9u  pïUbœ  S[        R
                  R                  ;  a(  [        R                  " SU< SU R                   S35        U[        :X  a  [        S	U S
U R                   S35      e[        R                  S[        USS 5      UU R                  U5        U$ US:X  a]  [        US5      (       d$  [        R                  SU R                  UU5        U$ [        UR                   5      n UR#                  U5      nO7[        U5      n UR)                  UUUUUU=(       d    US LU R                  US9nUb;  ['        WWU5        [        R                  S[        USS 5      UU R                  U5        U$ ! [$         a    Ub  ['        WW[        5        e f = f! [$         a    Ub  ['        WW[        5        e f = f)NÚ__networkx_cache__r;   ©rp   rq   rr   rs   rt   )rÆ   rð   z­Note: conversions to backend graphs are saved to cache (`G.__networkx_cache__` on the original graph) by default.

This warning means the cached graph is being used for the z backend in the call to aí  .

For the cache to be consistent (i.e., correct), the input graph must not have been manually mutated since the cached graph was created. Examples of manually mutating the graph data structures resulting in an inconsistent cache include:

    >>> G[u][v][key] = val

and

    >>> for u, v, d in G.edges(data=True):
    ...     d[key] = val

Using methods such as `G.add_edge(u, v, weight=val)` will correctly clear the cache to keep it consistent. You may also use `G.__networkx_cache__.clear()` to manually clear the cache, or set `G.__networkx_cache__` to None to disable caching for G. Enable or disable caching globally via `nx.config.cache_converted_graphs` config.

To disable this warning:

    >>> nx.config.warnings_to_ignore.add("cache")
z6Graph conversion aborted: unable to convert graph to 'z' backend in call to `z1', because this conversion has previously failed.zZUsing cached converted graph (from '%s' to '%s' backend) in call to '%s' for '%s' argumentrº   r?   zËUnable to convert input to 'networkx' backend in call to '%s' for '%s argument, because it is not from a backend (i.e., it does not have `G.__networkx_backend__` attribute). Using the original object: %s)rp   rq   rr   rs   rt   r   r  zUCaching converted graph (from '%s' to '%s' backend) in call to '%s' for '%s' argument)r½   Ú
setdefaultÚ_get_cache_keyÚ_get_from_cacherË   rU   r>   r   r   r   r   r¶   rÜ   rÝ   rh   rj   rº   Úconvert_to_nxr   Ú_set_to_cacheÚconvert_from_nx)r—   ri   rë   rp   rq   rr   rs   rt   r  r  rÆ   Únx_cacherð   rV   Ú
compat_keyr   r.   s                    r   r"  Ú_dispatchable._convert_graphO  sj  € ö BK”7˜5Ð"6¸Ô=ÐPTˆØÑØ×'Ñ'¨
°BÓ7×BÑBÀ<ÐQSÓTˆEÜ Ø%Ø%Ø$7Ø$7Ø%9ñˆCô -¨UÀ9ÑM‰NˆJØ‰~Ø¤"§)¡)×">Ñ">Ó>Ü—M’Mð#ð $0Ñ"2ð 3#Ø#'§9¡9 +ð .Nð	Nôð. Ô*Ó*ô
 .ðØ(˜>Ð)?ÀÇ	Á	¸{ð KIðIóð ô
 —‘ð8ä˜EÐ#9¸4Ó@Ø Ø—I‘IØôð �	à˜:Ó%ô ˜5Ð"8×9Ñ9Ü—‘ð!ð —I‘IØØôð �Ü# E×$>Ñ$>Ó?ˆGðØ×*Ñ*¨5Ó1‘ô $ LÓ1ˆGðØ×,Ñ,ØØ)Ø)Ø(;Ø(;ð *>×)UÀÐQUÐAUØŸ™Ø)ð -ð �ð" ÑÜ˜%  bÔ)Ü�M‰Mð4ä˜Ð5°tÓ<ØØ—	‘	Øôð ˆ	øôG ó ØÑ'Ü! %¨Ô.?Ô@Øðûô( ó ØÑ'Ü! %¨Ô.?Ô@Øðús   ÅG Å#+G1 Ç G.Ç1 HrÃ   c          
      ó`  • US:X  a  U R                   " U0 UD6$ [        U5      n[        R                  SUU R                  [        XU5      5         [        XPR                  5      " U0 UD6$ ! [         a7  nUb.  [        R                  SUU R                  U5        [        U5      Uee SnAff = f)zICall this dispatchable function with a backend without converting inputs.r?   ú6Using backend '%s' for call to '%s' with arguments: %sNrÑ   )r‹   rj   rÜ   rÝ   r   r  r½   r¶   )r—   ri   r^   r_   rÄ   r.   r   s          r   rØ   Ú _dispatchable._call_with_backendÌ  s­   € à˜:Ó%Ø—>’> 4Ð2¨6Ñ2Ð2Ü Ó-ˆÜ�‰ØDØØ�I‰IÜ˜$ fÓ-ô		
ð	Ü˜7§I¡IÔ.°Ð?¸Ñ?Ð?øÜ"ó 		ØÑ(Ü—‘Ø?Ø Ø—I‘IØô	ô *¨-Ó8¸cÐAØûð		ús   ÁA, Á,
B-Á62B(Â(B-rÅ   c          
      ó*  • US:X  a  U R                   nO [        U5      n[        X€R                  5      nX!1-
  n	[        R                  S[        U	5      S:”  a  U	OS[        [        U	5      5       S3[        U	5      S:”  a  SOSUU R                  5         U R                  UUU[        R                  R                  US9u  p«US:w  a,  [        R                  SUU R                  [        X
U5      5         U" U
0 UD6$ ! [         aG  n[        R
                  " SUc  SOS
-   UUU R                  /Uc  SOU4Q76   Ub  [        U5      Uee S	nAff = f! [         a7  nUb.  [        R                  SUU R                  U5        [        U5      Uee S	nAff = f)aŠ  Call this dispatchable function with a backend after converting inputs.

Parameters
----------
backend_name : str
input_backend_names : set[str]
args : arguments tuple
kwargs : keywords dict
extra_message : str, optional
    Additional message to log if NotImplementedError is raised by backend.
mutations : list, optional
    Used to clear objects gotten from cache if inputs will be mutated.
r?   zJConverting input graphs from %s backend%s to '%s' backend for call to '%s'r   rb   rÇ   r9   ©r  rÆ   zAFailed to convert graphs from %s to '%s' backend for call to '%s'Nz: %sr,   r;  rÑ   )r‹   rj   r½   r   rÜ   rÝ   rŽ   rß   rà   r,  rË   rU   r<   r¶   r  )r—   ri   Úinput_backend_namesr^   r_   rÄ   rÆ   r–   r.   Úother_backend_namesÚconverted_argsÚconverted_kwargsr   s                r   rÞ   Ú_dispatchable._convert_and_callä  s¸  € ð. ˜:Ó%Ø—>‘>‰Dä# LÓ1ˆGÜ˜7§I¡IÓ.ˆDØ1°NÑBÐÜ�‰ØXäÐ&Ó'¨!Ó+ñ  à”Tœ$Ð2Ó3Ó4Ð5°QÐ7ÜÐ*Ó+¨aÓ/‰C°RØØ�I‰Iô	
ð	Ø/3×/FÑ/FØØØÜŸ)™)×:Ñ:Ø#ð 0Gð 0Ñ,ˆNð* ˜:Ó%Ü�M‰MØHØØ—	‘	Ü˜dÐ4DÓEô	ð	Ù˜Ð<Ð+;Ñ<Ð<øô- #ó 	ô �MŠMØSØ&Ñ.‘2°Fñ<à#ØØ—	‘	ðð &Ñ-‘"°C°6óð Ñ(Ü)¨-Ó8¸cÐAØûð	ûô. #ó 		ØÑ(Ü—‘Ø?Ø Ø—I‘IØô	ô *¨-Ó8¸cÐAØûð		ús1   Â-C= Ã5E Ã=
EÄAE	Å	EÅ
FÅ2FÆFrÂ   c                ó  ^ ^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-• [        U5      nT R                  XU5      (       d¤  U(       d  T R                  (       dE  U(       a,  [        R	                  SUT R
                  [        T X#5      5        T R                  " U0 UD6$ SSKnST R
                   SU 3n[        UT R
                  5      (       a  US-  nUR                  U5        SSKJm Jm!Jm"  SSKJm(Jm)  SS	KJmJmJm%Jm&  SS
KJm,  SSKJm#  SSKm*SSKJmJm$  SSKJm+  T R@                  =(       a%    ST RB                  ;   =(       a    T R
                  S;  nST RB                  ;   =(       a    T RE                  X#5      n	U(       a  U(       d  U	(       d  U=p«O[G        UUUU!U#U$U%U&U(U)U,4S jU 5       6 u  p«U(       a  U(       d  U	(       d  U=pÍOC[G        UUUU!U#U$U%U&U(U)U,U-4S jURI                  5        5       6 u  pÍ[K        U5      n[K        U5      n T RM                  UU
USSS9u  pïU	(       aÝ  T RV                  RX                  " W0 WD6nUR[                  5         T RV                  RX                  " U0 UD6nUR[                  5         T R                   HK  nUR\                  U   nUR\                  U   Us=L a  c  M*  O  M.  UR                  5       UR\                  U'   MM     URP                  nUR^                  nURa                  SS5        [        R	                  SUT R
                  [        T WW5      5         [c        UT R
                  5      " U0 UD6nT R@                  [e        W[f        Rh                  5      =(       dC    [        US5      =(       d0    [e        U[j        [l        -  5      =(       a    [o        S U 5       5      :w  av  T R
                  S;   a  [o        S U 5       5      (       dO  T R
                  S;   a  [o        S U 5       5      (       d(  T R
                  S;  a  [q        S T R
                   35      eS*U U!U"U'U*U U+4S! jjm'U'U 4S" jnT R
                  S#;   a  O+[e        UT!5      (       a	  U" U5      nO T'" U5        T'" U5        T R
                  Rs                  S'5      (       a  U$ S+S( jnU	(       ad  T R                  " U0 UD6nT R                   HB  nWR\                  U   nWR\                  U   nUc  Uc  M)  URu                  U5      nU" UUSS)9  MD     URu                  U5      nU(       aF  [e        U[f        Rh                  5      (       a'  U	(       a  WnOT R                  " U0 UD6nU" UU5        U$ U$ ! [N         a¡  nU(       a8  [        R	                  SUT R
                  5        T R                  " U0 UD6s SnA$ SSKnUR                  URP                  (       a  URP                  S   O#T R
                   S[S        U5      RT                   35         SnAGNÿSnAff = f! [N         a¢  nU(       a9  [        R	                  SUT R
                  U5        T R                  " U0 UD6s SnA$ SSKnUR                  URP                  (       a  URP                  S   O#T R
                   S[S        U5      RT                   35         SnAGN€SnAff = f! [p         a-  n[q        T R
                   S$U S%[S        U5       S&35      UeSnAff = f),zECall this dispatchable function with a backend; for use with testing.zZFalling back to use 'networkx' instead of '%s' backend for call to '%s' with arguments: %sr   Nrb   z' not implemented by z with the given arguments)ÚIterableÚIteratorÚMapping)ÚcopyÚdeepcopy)ÚBufferedReaderÚBytesIOÚStringIOÚTextIOWrapper)Útee)ÚRandom)Ú	GeneratorÚRandomState)Úsparrayr?   >   Úread_gmlÚ	read_gexfÚ
from_pydotÚ
read_pajekÚread_graph6Úread_adjlistÚread_graphmlÚread_sparse6Úread_edgelistÚpydot_read_dotÚquotient_graphÚagraph_read_dotÚread_multiline_adjlistÚbipartite_read_edgelistc              3   ó  >#   • U  Ht  n[        UT5      (       a
  UT" U5      4OS[        UTT-  T-  T-  5      (       a
  UT
" U5      4O/[        UT5      (       a  [        UTT	-  5      (       d  T" U5      OX4v •  Mv     g 7fr+   ©rG   )r-   ÚargrJ  rK  rP  rF  rO  rQ  rL  rM  rH  rI  rN  s     €€€€€€€€€€€r   r/   Ú<_dispatchable._convert_and_call_for_tests.<locals>.<genexpr>z  s–   øé € ð 
ò  $˜ô " # {×3Ñ3ð ™( 3›-Ñ(ô " # w°Ñ'9¸FÑ'BÀYÑ'N×OÑOð ™t C›yÑ)ô " # x×0Ñ0Ü& s¨N¸]Ñ,J×KÑKñ ˜Sœð ˜ô$ò  $ùs   ƒA<A?c              3   ó4  >#   • U  H�  u  p[        UT5      (       a  X4UT" U5      44Og[        UTT	-  T-  T-  5      (       a  X4UT" U5      44O@[        UT5      (       a*  [        UTT
-  5      (       d  UT" U5      =mS    4UTS   44OX4X44v •  M�     g7f)r   r   Nrb  )r-   r˜   r™   rJ  rK  rP  rF  rO  rQ  rL  rM  rH  rI  rN  Úteeds      €€€€€€€€€€€€r   r/   rd  Š  sÇ   øé € ð 
ò !/™˜ô " ! [×1Ñ1ð �V˜a¡¨!£Ð-Ñ.ô " ! W¨xÑ%7¸&Ñ%@À9Ñ%L×MÑMð ˜& 1¡d¨1£g ,Ñ/ô " ! X×.Ñ.Ü& q¨.¸=Ñ*H×IÑIð ¡s¨1£v˜~˜t¨qÑ1Ð2°Q¸¸Q¹°LÑAð ˜& 1 &Ð)ô*ò !/ùs   ƒBBFr>  z`Graph conversion failed; falling back to use 'networkx' instead of '%s' backend for call to '%s'z raised r.   r;  zRBackend '%s' raised when calling '%s': %s; falling back to use 'networkx' instead.rº   c              3   ó|   #   • U  H2  n[        U[        R                  5      =(       d    [        US 5      v •  M4     g7fr¼   )rG   rË   rÌ   rh   ©r-   r&   s     r   r/   rd  ß  s2   é € ð â#˜ô ˜q¤"§(¡(Ó+×Q¬w°qÐ:PÓ/QÔQÚ#ùs   ‚:<>   Úcheck_planarityÚcheck_planarity_recursivec              3   ó(   #   • U  H  oS L v •  M
     g 7fr+   r,   rh  s     r   r/   rd  ç  s   é € Ð2ª6 a˜T�	ª6ùr1   >   Úheld_karp_ascentc              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr+   )rG   r�   rh  s     r   r/   rd  ì  s   é € Ð<²V°œ
 1¤d×+Ð+²Vùs   ‚>   Ú
all_triadsÚnonisomorphic_treesÚgeneral_k_edge_subgraphsz!`returns_graph` is incorrect for c           
      ó`  >• [        U TR                  5      (       a*  [        TR                   SU  S[	        U 5       SU S35      e[        U TR
                  T	-  5      (       a  g [        U [        R                  5      (       a)  T" U R                  US-   S9  T" U R                  US-   S9  g [        U T5      (       a  [        e[        U T5      (       a'  [        U [        5      (       d  U  H  nT" X!S-   S9  M     [        U T5      (       a!  U R                  5        H  nT" X!S-   S9  M     g g )Nú returned a numpy scalar ú (z, depth=Ú)r   )Údepth)rG   Únumberrâ   r   rH   ÚndarrayrË   rÌ   Ú_nodeÚ_adjr¶   r~   r®   )
rW   ru  r&   rE  rF  rG  Úcheck_resultÚnpr—   rR  s
      €€€€€€€r   rz  Ú?_dispatchable._convert_and_call_for_tests.<locals>.check_resultù  s  ø€ Ü˜#˜rŸy™y×)Ñ)Ü"Ø—y‘y�kÐ!:¸3¸%¸rÄ$ÀsÃ)ÀÈHÐUZÐT[Ð[\Ð]óð ô ˜#˜rŸz™z¨GÑ3×4Ñ4ØÜ˜#œrŸx™x×(Ñ(Ù˜SŸY™Y¨e°a©iÒ8Ù˜SŸX™X¨U°Q©YÒ7ØÜ˜#˜x×(Ñ(Ü)Ð)Ü˜#˜x×(Ñ(´¸CÄ×1EÑ1EÛ�AÙ  °!©)Ô4ñ ä˜#˜w×'Ñ'ØŸ™ž�AÙ  °!©)Ô4ò &ð (r[   c              3   ó®   >#   • U  H  n T" U5        Uv •  M     g ! [          a-  n[        TR                   SU S[        U5       S35      UeS nAff = f7f)Nrr  rs  rt  )râ   r   rH   )ÚitrW   r   rz  r—   s      €€r   Úcheck_iteratorÚA_dispatchable._convert_and_call_for_tests.<locals>.check_iterator  se   øé € Û�ðÙ  Ô%ð
 ”	ò øô $ó Ü&ØŸ9™9˜+Ð%>¸s¸eÀ2ÄdÈ3ÃiÀ[ÐPQÐRóàðûðüs$   ƒAŠ’	A›
A¥(AÁAÁA>   Úfrom_edgelistrr  rs  rt  r‚   c                 óh  • U R                  5       UR                  5       :X  d   eU R                  5       UR                  5       :X  d   eU R                  5       UR                  5       L d   eU R                  5       UR                  5       L d   eU(       aU  U R                  UR                  :X  d   eU R
                  UR
                  :X  d   eU R                  UR                  :X  d   eg [        U 5      [        U5      :X  d   e[        U R                  5      [        UR                  5      :X  d   eg r+   )	Únumber_of_nodesÚnumber_of_edgesÚis_directedÚis_multigraphrë   rx  ry  rN   r(  )ÚG1ÚG2Ústricts      r   Úassert_graphs_equalÚF_dispatchable._convert_and_call_for_tests.<locals>.assert_graphs_equal)  s÷   € Ø×%Ñ%Ó'¨2×+=Ñ+=Ó+?Ó?Ð?Ð?Ø×%Ñ%Ó'¨2×+=Ñ+=Ó+?Ó?Ð?Ð?Ø—>‘>Ó# r§~¡~Ó'7Ò7Ð7Ð7Ø×#Ñ#Ó%¨×)9Ñ)9Ó);Ò;Ð;Ð;ÞØ—x‘x 2§8¡8Ó+Ð+Ð+Ø—x‘x 2§8¡8Ó+Ð+Ð+Ø—w‘w "§'¡'Ó)Ð)Ñ)ä˜2“w¤# b£'Ó)Ð)Ð)Ü˜2Ÿ8™8“}¬¨B¯H©H«Ó5Ð5Ñ5r[   )r‰  )r   ©T);rj   r×   ro   rÜ   rÝ   r   r  r‹   Úpytestrh   ÚxfailÚcollections.abcrE  rF  rG  rH  rI  ÚiorJ  rK  rL  rM  rä   rN  ÚrandomrO  ÚnumpyÚnumpy.randomrP  rQ  Úscipy.sparserR  rŒ   r;   rÛ   Úzipr   r�   r,  r¶   r^   rH   r€   r³   r  r  r   r_   r   r½   rG   rË   rÌ   ÚtuplerÒ   r­   râ   rÓ   r4  ).r—   ri   r^   r_   r=   r.   r�  ÚmsgÚcompare_result_to_nxÚcompare_inputs_to_nxÚargs_to_convertÚargs_nxÚkwargs_to_convertÚ	kwargs_nxrA  rB  r   Úbound_backendÚbound_nxré   Úgraph_nxÚresultr  rŠ  Ú	result_nxÚG0r‡  Úconverted_resultrm   rJ  rK  rP  rE  rF  rG  rO  rQ  rL  rM  rz  rH  rI  r{  rR  rN  rf  s.   `                            @@@@@@@@@@@@@@@@@r   rÕ   Ú)_dispatchable._convert_and_call_for_tests4  s/  ÿÿù€ ô   Ó-ˆØ×$Ñ$ \¸×@Ñ@Þ T§[§[Þ!Ü—M‘Mð>à$ØŸ	™	Ü% d¨DÓ9ôð —~’~ tÐ6¨vÑ6Ð6ãà�d—i‘i�[Ð 5°l°^ÐDˆCÜ�w §	¡	×*Ñ*ØÐ2Ñ2�Ø�L‰L˜Ôç?Ñ?ß'ßGÓGÝ!Ý!ãß7Ý(ð
 ×Ñ÷ Ø˜dŸm™mÑ+÷à—	‘	ðñð 	ð4 ˜$Ÿ-™-Ñ'×V¨D×,HÑ,HÈÓ,Vð 	ö
 Ö/Ö8LØ(,Ð,ˆO˜gä'*÷
ö 
ñ  $ó
ð(Ñ$ˆOö Ö1Ö:NØ,2Ð2Ð 	ä+.÷
÷ 
ð !'§¡¤ó
ð,Ñ(Ðô !%Ð%6Ó 7ÐÜ˜Y›ˆIð	Ø/3×/FÑ/FØØØ!ØØð 0Gð 0Ñ,ˆNö,  à ×.Ñ.×3Ò3°^ÐXÐGWÑXˆMØ×(Ñ(Ô*Ø×)Ñ)×.Ò.°ÐE¸9ÑEˆHØ×#Ñ#Ô%ØŸœ�Ø#×-Ñ-¨eÑ4�Ø ×*Ñ*¨5Ñ1°X×IÔIØ08·±³�H×&Ñ& uÓ-ñ %ð —m‘mˆGØ Ÿ™ˆIØ�M‰M˜) TÔ*ä�‰ØDØØ�I‰IÜ˜$ Ð0@ÓAô		
ð	Ü˜W d§i¡iÔ0°.ÐUÐDTÑUˆFð* ×Ñä˜6¤2§8¡8Ó,÷ Ü˜6Ð#9Ó:÷ä˜f¤e¬d¡lÓ3÷ Üñ á#óó ó	ð —	‘	ÐMÓMÜÑ2©6Ó2×2Ñ2ð —	‘	Ð1Ó1ÜÑ<±VÓ<×<Ñ<à—	‘	ðóô Ð!BÀ4Ç9Á9À+ÐNÓOÐO÷	5õ 	5ö(	ð �9‰9Ð)Ó)àÜ˜ ×)Ñ)Ù# FÓ+‰FðÙ˜VÔ$ñ
 ˜Ô à�9‰9×Ñ˜i×(Ñ(àˆMô	6ö  àŸš¨Ð=°9Ñ=ˆIØŸœ�Ø"×,Ñ,¨UÑ3�Ø×'Ñ'¨Ñ.�Ø‘> R£^Ø ×.Ñ.¨rÓ2�BÙ'¨¨B°uÔ=ñ %ð #×0Ñ0°Ó8ÐÞ¤JÐ/?ÄÇÁ×$JÑ$Jö $Ø‘à—N’N GÐ9¨yÑ9�Ù Ð#3Ô4ØˆHàÐøôW #ó 	ÞÜ—‘ð7à Ø—I‘Iô	ð —~’~ wÐ<°)Ñ<Õ<Ûà�L‰LØ"ŸxŸx�—‘˜’°·	±	¨{¸(Ä4ÈÃ9×CUÑCUÐBVÐ-W÷ò ûð	ûôJ #ó 	ÞÜ—‘ð>à Ø—I‘IØôð —~’~ wÐ<°)Ñ<Õ<Ûà�L‰LØ"ŸxŸx�—‘˜’°·	±	¨{¸(Ä4ÈÃ9×CUÑCUÐBVÐ-W÷ò ûð	ûôr  ó Ü"Ø—y‘y�kÐ!:¸6¸(À"ÄTÈ&Ã\ÀNÐRSÐTóàðûðúsb   ÈU6 Ì/X$ Ñ4[ Õ6
X!Ö 9XÖ9X!Ö?AXØX!Ø$
[Ø.:[Ù([Ù.A[Û[Û
\
Û(\Ü\
c                 óð  • U R                   S1:X  a  U R                  $ SS/n[        U R                   S1-
  5       GHÚ  n[        U   nSU;   a  UR	                  U SUS    35        OUR	                  U5        SU;  d  U R
                  US   ;  a  UR	                  S5        Mj  US   U R
                     nUR                  S5      =(       d    UR                  S	5      =n(       a*  UR                  S
 UR                  S5       5       5        SnOSnUR                  S5      =(       d    UR                  S5      =n(       a€  U(       a  UR	                  S5        UR	                  S5        [        U5       HG  nUR	                  SU 35        Xx   =n	(       a  UR	                  SU	 35        UR	                  S5        MI     OUR	                  S5        UR                  S5      =n
(       d  GM´  UR	                  SU
 S35        UR	                  S5        GMÝ     U R                  =(       d    SnUR                  5       (       d  SU R
                   S3nU R                   (       a6  UR                  5         SR                  U5      nUR                  5        SU 3nSU R                   ;  GaJ  UR                  S5      nSnX   R                  5       (       d  US-  nX   R                  5       (       d  M  U[        U5      :  aD  X   R                  5       (       a-  US-  nU[        U5      :  a  X   R                  5       (       a  M-  [        U R                   5      n[        U5      S:X  a  SnO`[        U5      S:X  a
  SUS    S3nOG[        U5      S:X  a  SUS    SUS    S3nO(S S!R                  S" US#S$  5       5      -   S%US$    S3-   nS&U S'3nUR                  XÜ5        SR                  U5      nU$ )(zŠGenerate the backends section at the end for functions having an alternate
backend implementation(s) using the `backend_info` entry-point.r?   ÚBackendsz--------Úshort_summaryz : r}   r9   Úadditional_docsÚextra_docstringc              3   ó<   #   • U  H  o(       a  S U 3OUv •  M     g7f)z  Nr,   )r-   Úlines     r   r/   Ú*_dispatchable._make_doc.<locals>.<genexpr>i  s!   é € ð Ú>S°d¥4�b˜˜‘K¨TÔ1Ò>SùrÁ   Ú
TFÚextra_parametersÚadditional_parametersz  Additional parameters:z    z      Úurlz
[`Source <z>`_]zThe original docstring for z was empty.z
    z

    r   r   z
 such as "Ú"r   z or "z	 such as ú, c              3   ó.   #   • U  H  nS U S 3v •  M     g7f)r²  Nr,   rh  s     r   r/   r­  Ÿ  s   é € Ð@²-¨Q ! A 3 a¥²-ùs   ‚Nrz   z, or "zµ
    .. attention:: This function does not have a default NetworkX implementation.
        It may only be run with an installable :doc:`backend </backends>` that
        supports itz….

        Hint: use ``backend=...`` keyword argument to specify a backend or add
        backends to ``nx.config.backend_priority``.)r;   r‰   rQ   rD   rã   r   rM   Úextendr$   Úrstripr   Újoinr#   rŽ   Úinsert)r—   Úlinesr.   rS   Ú	func_infoÚ	func_docsÚadd_gapr¯  ÚparamÚdescÚfunc_urlÚnew_docÚto_addÚindexr;   Úexamples                   r   r�   Ú_dispatchable._make_docN  sÌ  € ð �=‰=˜Z˜LÓ(Ø—>‘>Ð!ð Øð
ˆô ˜dŸm™m¨z¨lÑ:×;ˆGÜ Ñ(ˆDØ $Ó&Ø—‘ ˜y¨¨D°Ñ,AÐ+BÐCÕDà—‘˜WÔ%Ø $Ó&¨$¯)©)¸4ÀÑ;LÓ*LØ—‘˜RÔ Ùà˜[Ñ)¨$¯)©)Ñ4ˆIð —‘Ð/Ó0×T°I·M±MÐBSÓ4Tðˆyõ ð —‘ñ Ø>G¿o¹oÈdÔ>Sóô ð ‘à�ð —‘Ð0Ó1÷ :Ø—=‘=Ð!8Ó9ðÐõ ö Ø—L‘L Ô$Ø—‘Ð7Ô8Ü#Ð$4Ö5�EØ—L‘L 4¨ w Ô0Ø/Ñ6Ð6�tÕ6ØŸ™ v¨d¨V _Ô5Ø—L‘L Ö$ò	 6ð —‘˜RÔ à$Ÿ=™=¨Ó/Ð/ˆx×/Ð/Ø—‘˜z¨(¨°4Ð8Ô9Ø—‘˜R× ñS <ðX —.‘.×& BˆØ�~‰~×ÑØ3°D·I±I°;¸kÐJˆGØ�=�=Ø�I‰IŒKØ—]‘] 5Ó)ˆFØ Ÿ™Ó)Ð*¨(°6°(Ð;ˆGð ˜TŸ]™]Ô*Ø—M‘M $Ó'ˆEØˆEØ‘l×(Ñ(×*Ñ*Ø˜‘
�ð ‘l×(Ñ(×*Ó*àœ#˜e›*Ó$¨©×);Ñ);×)=Ñ)=Ø˜‘
�ð œ#˜e›*Ó$¨©×);Ñ);×)=Ó)=ä˜dŸm™mÓ,ˆHÜ�8‹} Ó!Ø‘Ü�X“ !Ó#Ø& x°¡{ m°1Ð5‘Ü�X“ !Ó#Ø& x°¡{ m°5¸À!¹¸ÀQÐG‘ð  Ø—i‘iÑ@°(¸3¸B±-Ó@Ó@ñAà˜x¨™|˜n¨AÐ.ñ/ð ð&à&- Yð /FðFð ð �L‰L˜Ô'Ø—i‘i Ó&ˆGØˆr[   c                 ó(   • [         U R                  44$ )zxAllow this object to be serialized with pickle.

This uses the global registry `_registered_algorithms` to deserialize.
)Ú_restore_dispatchabler   )r—   s    r   Ú
__reduce__Ú_dispatchable.__reduce__­  s   € ô
 % t§y¡y lÐ2Ð2r[   )rƒ   r„   r…   r€   r†   rˆ   rŠ   r‰   rŒ   r“   r;   rp   ro   r‘   rv   r   rq   r�   r‹   rr   rt   rs   r+   )r€   r…   r†   Ú__firstlineno__rÔ   r‚   ÚpropertyrI   Úsetterr³   r·   r   r;   r  ÚtypingÚCallableÚ__annotations__rÛ   rÚ   rÙ   r×   rç   r,  r"  rØ   rÞ   rÕ   r�   rÇ  Ú__static_attributes__r,   r[   r   r
   r
   ×   s  ‡ Ø€Kð ðHð ØØØØ!Ø!Ø"Ø ØØØöHðT ñó ðð ‡^�^ñ ó ð ð ñ"ó ð"ðJ @Dõ 
/ð AEõ k
ö^ ,4Ñ'Ð9Wð ˆf�o‰oó ò
ò2ò+òò2ò0Q(òf{ðz OSõ ð> ØõNðb =BõX òt]õ~3r[   c                 ó(   • [         U    R                  $ r+   )r”   rˆ   )r   s    r   rÆ  rÆ  µ  s   € Ü! $Ñ'×3Ñ3Ð3r[   c                 ó|   • U b  [        U R                  5       5      OUUb  [        UR                  5       5      4$ U4$ )zLReturn key used by networkx caching given arguments for ``convert_from_nx``.)Ú	frozensetr   r0  s        r   r2  r2  ¹  sR   € ð Ñ!ô 	�*×"Ñ"Ó$Ô%à àÑ!ô 	�*×"Ñ"Ó$Ó%ð	ð ð !ðð r[   )ri   rÆ   c                óT  • Ub"  U R                  S0 5      R                  U0 5      n U (       d  gUu  pE[        R                  " USLa  US4OSUSLa  US4OS5       HB  nU R                  U5      =nc  M  U[        :w  d  X:X  d  M*  Ub  UR	                  X45        Xg4s  $    [        U R                  5       5       Hë  u  u  p‰n
U
[        :X  ac  USL d  USL a  O"USL d  USL d  UR                  U5      (       d  M?  U	SL d  USL a  O"U	SL d  USL d  U	R                  U5      (       d  Ml  [        X'   O-USL d  USL a  O"USL d  USL d  UR                  U5      (       d  M¢  USL d  U	SL a  O"USL d  U	SL d  UR                  U	5      (       d  MÏ  Ub  UR	                  XU	445        X‰4U
4s  $    g)aS  Search the networkx cache for a graph that is compatible with ``key``.

Parameters
----------
cache : dict
    If ``backend_name`` is given, then this is treated as ``G.__networkx_cache__``,
    but if ``backend_name`` is None, then this is treated as the resolved inner
    cache such as ``G.__networkx_cache__["backends"][backend_name]``.
key : tuple
    Cache key from ``_get_cache_key``.
backend_name : str, optional
    Name of the backend to control how ``cache`` is interpreted.
mutations : list, optional
    Used internally to clear objects gotten from cache if inputs will be mutated.

Returns
-------
tuple or None
    The key of the compatible graph found in the cache.
graph or "FAILED_TO_CONVERT" or None
    A compatible graph if possible. "FAILED_TO_CONVERT" indicates that a previous
    conversion attempt failed for this cache key.
r;   )NNTrŒ  F)rM   rä   Úproductr   rã   rÒ   r   r  )rð   rV   ri   rÆ   Úedge_keyÚnode_keyr8  r   ÚekeyÚnkeyrë   s              r   r3  r3  Ð  sÖ  € ð0 ÑØ—	‘	˜* bÓ)×-Ñ-¨l¸BÓ?ˆÞØð Ñ€HÜ×'Ò'Ø$¨DÒ0ˆ�4Ñ°gØ$¨DÒ0ˆ�4Ñ°göˆ
ð —)‘)˜JÓ'Ð'ˆBÓ4ØÔ#Ó# sÕ'8àÑ$ð × Ñ  %Ð!4Ô5Ø�>Ò!ñô$  $ E§K¡K£MÖ2Ñ‰ˆ�eØÔ%Ó%ð �uŠ} ¨DÒ 0ØØ˜’ ¨UÒ!2¸$¿-¹-È×:QÑ:QÙØ�uŠ} ¨DÒ 0ØØ˜’ ¨UÒ!2¸$¿-¹-È×:QÑ:QÙä*ˆEŠJØ˜Ò $¨$¢,ØØ˜Ò ¨¢°h×6GÑ6GÈ×6MÑ6MÙØ�uÒ ¨¢ØØ˜Ò ¨¢°h×6GÑ6GÈ×6MÑ6MÙØÑ ð ×Ñ˜e¨D \Ð2Ô3Øˆ|˜UÐ"Ò"ñ7  3ð: r[   )ri   c                ó   • Ub"  U R                  S0 5      R                  U0 5      n 0 nUu  pVX U'   U[        :X  a  U$ [        U 5       Hƒ  nXq:X  a  M
  Uu  p‰USL d  USL a  O"USL d  USL d  UR                  U5      (       d  M;  U	SL d  USL a  O"U	SL d  USL d  U	R                  U5      (       d  Mh  U R	                  US5      =nc  M  X$U'   M…     U$ )a½  Set a backend graph to the cache, and remove unnecessary cached items.

Parameters
----------
cache : dict
    If ``backend_name`` is given, then this is treated as ``G.__networkx_cache__``,
    but if ``backend_name`` is None, then this is treated as the resolved inner
    cache such as ``G.__networkx_cache__["backends"][backend_name]``.
key : tuple
    Cache key from ``_get_cache_key``.
graph : graph or "FAILED_TO_CONVERT"
    Setting value to "FAILED_TO_CONVERT" prevents this conversion from being
    attempted in future calls.
backend_name : str, optional
    Name of the backend to control how ``cache`` is interpreted.

Returns
-------
dict
    The items that were removed from the cache.
Nr;   FT)r1  r   rÒ   r  r   )
rð   rV   rë   ri   ÚremovedrÕ  rÖ  Úcur_keyr×  rØ  s
             r   r5  r5  $  sï   € ð, ÑØ× Ñ  ¨RÓ0×;Ñ;¸LÈ"ÓMˆð
 €GØÑ€HØˆ#�JØÔ!Ó!ØˆÜ˜–;ˆØ‹>ÙØ‰
ˆØ�5Š=˜H¨Ò,ØØ�TŠ\˜X¨Ò.°d·m±mÀH×6MÑ6MÙØ�5Š=˜H¨Ò,ØØ�TŠ\˜X¨Ò.°d·m±mÀH×6MÑ6MÙà—Y‘Y˜w¨Ó-Ð-ˆEÓ:Ø$�GÓñ ð €Nr[   c                   ó$   • \ rS rSrSrS rS rSrg)r  iW  zOSimple wrapper to display arguments of dispatchable functions in logging calls.c                 ó6   • Xl         X l        X0l        S U l        g r+   )r–   r^   r_   Úvalue)r—   r–   r^   r_   s       r   Ú__init__Ú_LazyArgsRepr.__init__Z  s   € ØŒ	ØŒ	ØŒØˆ�
r[   c                 ó  • U R                   cu  U R                  R                  R                  " U R                  0 U R
                  D6nSR                  S UR                  R                  5        5       5      nSU S3U l         U R                   $ )Nr³  c              3   ó6   #   • U  H  u  pU S U< 3v •  M     g7f)Ú=Nr,   )r-   rV   rW   s      r   r/   Ú)_LazyArgsRepr.__repr__.<locals>.<genexpr>c  s   é € ÐWÒ?V±8°3   Q s¡gÕ.Ò?Vùs   ‚Ú(rt  )	rÞ  r–   r³   Úbind_partialr^   r_   r·  r   r   )r—   r#  Úinners      r   Ú__repr__Ú_LazyArgsRepr.__repr__`  sm   € Ø�:‰:ÑØ—I‘I×+Ñ+×8Ò8¸$¿)¹)ÐSÀtÇ{Á{ÑSˆEØ—I‘IÑW¸u¿¹×?TÑ?TÔ?VÓWÓWˆEØ˜U˜G 1˜ˆDŒJØ�z‰zÐr[   )r^   r–   r_   rÞ  N)r€   r…   r†   rÉ  rI   rß  rè  rÏ  r,   r[   r   r  r  W  s   † ÙYòõr[   r  Ú_NETWORKX_BUILDING_DOCS_c                 óf   • U c  [        [        40 UD6$ [        U 40 UD6nUR                  U l        U $ r+   )r   r
   Ú_orig_dispatchablerI   )r–   r_   Údispatched_funcs      r   r
   r
   p  s8   € Ø‰<Üœ=Ñ3¨FÑ3Ð3Ü,¨TÑ<°VÑ<ˆØ&×.Ñ.ˆŒØˆr[   r•   rª   r+   )2r£   rä   ÚloggingrK   rÌ  r   Ú	functoolsr   Úimportlib.metadatar   r?   rË   Úconfigsr   r   r   Ú
decoratorsr	   Ú__all__Ú	getLoggerr€   rÜ   r   r    r;   rD   rf   r”   r(   rY   r\   r`   rj   r
   rÆ  r2  r3  r5  r  rL   rM   rì  r‚   rI   r¬   r“   r¯   r«   r   r³   )r˜   r™   s   00r   Ú<module>rõ     sf  ðó2 Û Û Û 	Û Û Ý Ý +ã ç >Ñ >Ý àÐ
€à
×
Ò
˜HÓ
%€Ø'Ð ð +0õ 3ñr Ð,Ó-€ð €ð Ð ØÐ òRòCòLòò
÷[3ñ [3ò|64òð. 15Àõ Qðh 6:õ 0÷fñ ð" ‡:�:‡>�>Ð,×-Ñ-ð 'Ðôð /×6Ñ6×>Ñ>€MÔØ×ÒÐ/×7Ñ7Ó8€DØ"&§,¡,Ø"&§/¡/×"7Ñ"7Ô"9ÔHÒ"9™$˜!¸QÀ%¹Z—AÑ"9ÒHð #/ð #€MÕð# .ùó$ Is   Ä#E
Ä3E
