§
    �’ja  ã                  óN  — U d dl mZ d dlZd dlZd dlZd dlmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZ erd d
lmZmZm Z  ddl!m"Z"m#Z# ddl$m%Z% dZ&de'd<   d#d„Z( G d„ deee	e
f         ¦  «        Z) G d„ deee	e
f         ¦  «        Z*d$d"„Z+dS )%é    )ÚannotationsN)ÚTYPE_CHECKINGÚGenericé   )	ÚCTÚKTÚRTÚDirectedGraphÚIterableViewÚIteratorMappingÚRequirementInformationÚStateÚbuild_iter_viewé   )ÚAbstractResolverÚResult)Ú	Criterion)ÚInconsistentCandidateÚRequirementsConflictedÚResolutionImpossibleÚResolutionTooDeepÚResolverException)Ú
CollectionÚIterableÚMapping)ÚAbstractProviderÚ
Preference)ÚBaseReportergš™™™™™¹?ÚfloatÚ_OPTIMISTIC_BACKJUMPING_RATIOÚstateúState[RT, CT, KT]ÚreturnúResult[RT, CT, KT]c                ó¢  ‡— | j         }d„ |                     ¦   «         D ¦   «         }d |t          d ¦  «        <   t          ¦   «         }|                     d ¦  «         d hŠ| j                             ¦   «         D ]£\  }}t          | j        ||‰¦  «        sŒ||vr|                     |¦  «         |                     ¦   «         D ]X}	 |t          |¦  «                 }n# t          $ r Y Œ%w xY w||vr|                     |¦  «         | 	                    ||¦  «         ŒYŒ¤t          ˆfd„|                     ¦   «         D ¦   «         || j        ¬¦  «        S )Nc                ó4   — i | ]\  }}t          |¦  «        |“ŒS © )Úid©Ú.0ÚkÚvs      úYC:\Projects\DSCons\.venv\Lib\site-packages\pip\_vendor\resolvelib\resolvers\resolution.pyú
<dictcomp>z!_build_result.<locals>.<dictcomp>(   s$   € Ð%KÐ%KÐ%K±4°1°a¥b¨¡e¤e¨QÐ%KÐ%KÐ%Kó    c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS r'   r'   )r*   r+   r,   Ú	connecteds      €r-   r.   z!_build_result.<locals>.<dictcomp>>   s$   ø€ ÐDÐDÐD™$˜!˜Q°Q¸)°^°^��A°^°^°^r/   )ÚmappingÚgraphÚcriteria)r2   Úitemsr(   r
   Úaddr4   Ú_has_route_to_rootÚiter_parentÚKeyErrorÚconnectr   )	r!   r2   Úall_keysr3   ÚkeyÚ	criterionÚpÚpkeyr1   s	           @r-   Ú_build_resultr@   &   sq  ø€ ØŒm€GØ%KÐ%K¸7¿=º=¹?¼?Ð%KÑ%KÔ%K€HØ€H�R�‰XŒXÑå&3¡o¤o€EØ	‡I‚Iˆd�O„O€Oà!% €IØœ.×.Ò.Ñ0Ô0ð %ð %‰ˆˆYÝ! %¤.°#°xÀÑKÔKð 	ØØ�eÐÐØ�IŠI�c‰NŒNˆNØ×&Ò&Ñ(Ô(ð 	%ð 	%ˆAðØ¥ 1¡¤”��øÝð ð ð Ø�ðøøøà˜5Ð Ð Ø—	’	˜$‘”�Ø�MŠM˜$ Ñ$Ô$Ð$Ð$ð	%õ ØDÐDÐDÐD '§-¢-¡/¤/ÐDÑDÔDØØ”ðñ ô ð s   ÃCÃ
C(Ã'C(c                  óš   — e Zd ZdZd3d„Zed4d
„¦   «         Zd5d„Zd6d„Zd7d„Z	d8d„Z
d9d„Zd:d „Zd;d"„Zd<d%„Zd5d&„Zd5d'„Zd=d*„Zd>d,„Zd?d1„Zd2S )@Ú
Resolutionz­Stateful resolution object.

    This is designed as a one-off object that holds information to kick start
    the resolution process, and holds the results afterwards.
    ÚproviderúAbstractProvider[RT, CT, KT]ÚreporterúBaseReporter[RT, CT, KT]r#   ÚNonec                ód   — || _         || _        g | _        t          | _        d | _        d | _        d S ©N)Ú_pÚ_rÚ_statesr    Ú_optimistic_backjumping_ratioÚ_save_statesÚ_optimistic_start_round)ÚselfrC   rE   s      r-   Ú__init__zResolution.__init__K   s:   € ð
 ˆŒØˆŒØ02ˆŒõ .KˆÔ*Ø<@ˆÔØ37ˆÔ$Ð$Ð$r/   r"   c                ób   — 	 | j         d         S # t          $ r}t          d¦  «        |‚d }~ww xY w)Néÿÿÿÿr!   )rL   Ú
IndexErrorÚAttributeError)rP   Úes     r-   r!   zResolution.stateY   sC   € ð	1Ø”< Ô#Ð#øÝð 	1ð 	1ð 	1Ý  Ñ)Ô)¨qÐ0øøøøð	1øøøs   ‚ �
.™)©.c                óî   — | j         d         }t          |j                             ¦   «         |j                             ¦   «         |j        dd…         ¬¦  «        }| j                              |¦  «         dS )z‰Push a new state into history.

        This new state will be used to hold resolution results of the next
        coming round.
        rS   N©r2   r4   Úbacktrack_causes)rL   r   r2   Úcopyr4   rY   Úappend)rP   Úbaser!   s      r-   Ú_push_new_statezResolution._push_new_state`   ss   € ð Œ|˜BÔˆÝØ”L×%Ò%Ñ'Ô'Ø”]×'Ò'Ñ)Ô)Ø!Ô2°1°1°1Ô5ð
ñ 
ô 
ˆð
 	Œ×Ò˜EÑ"Ô"Ð"Ð"Ð"r/   r4   údict[KT, Criterion[RT, CT]]Úrequirementr	   Úparentú	CT | Nonec           
     ó¢  — | j                              ||¬¦  «         | j                             |¬¦  «        }|                     |¦  «        }|rt          |j        ¦  «        }ng }| j                             |t          |t          j
        d¦  «        ||gi¦  «        t          |t          j        d¦  «        ||i¦  «        ¬¦  «        }|r8t          |j        ¦  «        }|                     t          ||¦  «        ¦  «         nt          ||¦  «        g}t          t!          |¦  «        ||¬¦  «        }|j        st%          |¦  «        ‚|||<   d S )N)r_   r`   )Úrequirement_or_candidateÚiter_requirementÚincompatibilities©Ú
identifierÚrequirementsre   ©Ú
candidatesÚinformationre   )rK   Úadding_requirementrJ   ÚidentifyÚgetÚlistre   Úfind_matchesr   ÚoperatorÚmethodcallerÚ
attrgetterrk   r[   r   r   r   rj   r   )	rP   r4   r_   r`   rg   r=   re   Úmatchesrk   s	            r-   Ú_add_to_criteriazResolution._add_to_criterian   s{  € ð 	Œ×"Ò"¨{À6Ð"ÑJÔJÐJà”W×%Ò%¸{Ð%ÑKÔKˆ
Ø—L’L Ñ,Ô,ˆ	Øð 	#Ý $ YÔ%@Ñ AÔ AÐÐà "Ðà”'×&Ò&Ø!Ý(ØÝÔ%Ð&8Ñ9Ô9Ø˜k˜]Ð+ñô õ
 .ØÝÔ#Ð$7Ñ8Ô8ØÐ.Ð/ñô ð 'ñ 
ô 
ˆð ð 	HÝ˜yÔ4Ñ5Ô5ˆKØ×ÒÕ5°kÀ6ÑJÔJÑKÔKÐKÐKå1°+¸vÑFÔFÐGˆKåÝ& wÑ/Ô/Ø#Ø/ð
ñ 
ô 
ˆ	ð
 Ô#ð 	4Ý(¨Ñ3Ô3Ð3Ø(ˆ�ÑÐÐr/   ÚparentsúCollection[KT]c                ó¦   ‡ ‡— ‰sdS |                      ¦   «         D ]5\  }}t          |j        ˆˆ fd„|j        D ¦   «         |j        ¦  «        ||<   Œ6dS )aW  Remove information from parents of criteria.

        Concretely, removes all values from each criterion's ``information``
        field that have one of ``parents`` as provider of the requirement.

        :param criteria: The criteria to update.
        :param parents: Identifiers for which to remove information from all criteria.
        Nc                ód   •— g | ],}|j         �!‰j                             |j         ¦  «        ‰v¯*|‘Œ-S rI   )r`   rJ   rm   )r*   rk   rv   rP   s     €€r-   ú
<listcomp>z@Resolution._remove_information_from_criteria.<locals>.<listcomp>ª   sM   ø€ ð ð ð à#à#Ô*Ð2Øœ7×+Ò+¨KÔ,>Ñ?Ô?ÀwÐNÐNð	  ð OÐNÐNr/   )r5   r   rj   rk   re   )rP   r4   rv   r<   r=   s   ` `  r-   Ú!_remove_information_from_criteriaz,Resolution._remove_information_from_criteriaš   s‹   øø€ ð ð 	ØˆFØ&ŸnšnÑ.Ô.ð 	ð 	‰NˆC�Ý%ØÔ$ðð ð ð ð à'0Ô'<ðñ ô ð Ô+ñô ˆH�S‰MˆMð	ð 	r/   Únamer   r   c                ó  — | j                              || j        j        t	          | j        j        t          j        d¦  «        ¦  «        t	          | j        j        t          j        d¦  «        ¦  «        | j        j        ¬¦  «        S )Nrj   rk   )rg   Úresolutionsrj   rk   rY   )	rJ   Úget_preferencer!   r2   r   r4   rq   rs   rY   )rP   r|   s     r-   Ú_get_preferencezResolution._get_preferenceµ   s~   € ØŒw×%Ò%ØØœ
Ô*Ý&Ø”
Ô#ÝÔ# LÑ1Ô1ñô õ (Ø”
Ô#ÝÔ# MÑ2Ô2ñô ð "œZÔ8ð &ñ 
ô 
ð 	
r/   r=   úCriterion[RT, CT]Úboolc                ó¬   ‡ ‡— 	 ‰ j         j        |         Šn# t          $ r Y dS w xY wt          ˆˆ fd„|                     ¦   «         D ¦   «         ¦  «        S )NFc              3  óP   •K  — | ] }‰j                              |‰¬ ¦  «        V — Œ!dS ©)r_   Ú	candidateN©rJ   Úis_satisfied_by)r*   ÚrÚcurrent_pinrP   s     €€r-   ú	<genexpr>z8Resolution._is_current_pin_satisfying.<locals>.<genexpr>Ë   sL   øè è € ð 
ð 
àð ŒG×#Ò#°¸[Ð#ÑIÔIð
ð 
ð 
ð 
ð 
ð 
r/   )r!   r2   r9   Úallrd   )rP   r|   r=   rŠ   s   `  @r-   Ú_is_current_pin_satisfyingz%Resolution._is_current_pin_satisfyingÄ   s…   øø€ ð	Øœ*Ô,¨TÔ2ˆKˆKøÝð 	ð 	ð 	Ø�5�5ð	øøøåð 
ð 
ð 
ð 
ð 
à×/Ò/Ñ1Ô1ð
ñ 
ô 
ñ 
ô 
ð 	
s   „ —
%¤%r†   r   c                ó®   — | j         j                             ¦   «         }| j                             |¬¦  «        D ]}|                      |||¬¦  «         Œ|S )N©r†   ©r`   )r!   r4   rZ   rJ   Úget_dependenciesru   )rP   r†   r4   r_   s       r-   Ú_get_updated_criteriaz Resolution._get_updated_criteriaÐ   s_   € Ø”:Ô&×+Ò+Ñ-Ô-ˆØœ7×3Ò3¸iÐ3ÑHÔHð 	Kð 	KˆKØ×!Ò! (¨KÀ	Ð!ÑJÔJÐJÐJØˆr/   úlist[Criterion[RT, CT]]c                óp  ‡ ‡— ‰ j         j        |         }g }|j        D �]Š	 ‰                      ‰¦  «        }nQ# t          $ rD}‰ j                             |j        ‰¦  «         |                     |j        ¦  «         Y d }~Œcd }~ww xY wt          ˆˆ fd„| 
                    ¦   «         D ¦   «         ¦  «        }|st          ‰|¦  «        ‚‰ j                             ‰¬¦  «         ‰ j         j                             |¦  «         ‰ j         j                             |d ¦  «         ‰‰ j         j        |<   g c S |S )Nc              3  óP   •K  — | ] }‰j                              |‰¬ ¦  «        V — Œ!dS r…   r‡   )r*   r‰   r†   rP   s     €€r-   r‹   z7Resolution._attempt_to_pin_criterion.<locals>.<genexpr>æ   sL   øè è € ð ð àð ”×'Ò'°AÀÐ'ÑKÔKðð ð ð ð ð r/   r�   )r!   r4   rj   r’   r   rK   Úrejecting_candidater=   r[   rŒ   rd   r   ÚpinningÚupdater2   Úpop)rP   r|   r=   Úcausesr4   rV   Ú	satisfiedr†   s   `      @r-   Ú_attempt_to_pin_criterionz$Resolution._attempt_to_pin_criterionÖ   sj  øø€ Ø”JÔ'¨Ô-ˆ	à*,ˆØ"Ô-ð 	ñ 	ˆIðØ×5Ò5°iÑ@Ô@��øÝ)ð ð ð Ø”×+Ò+¨A¬K¸ÑCÔCÐCØ—’˜aœkÑ*Ô*Ð*Ø����øøøøðøøøõ ð ð ð ð ð à"×3Ò3Ñ5Ô5ðñ ô ñ ô ˆIð ð BÝ+¨I°yÑAÔAÐAàŒG�OŠO iˆOÑ0Ô0Ð0ØŒJÔ×&Ò& xÑ0Ô0Ð0ð ŒJÔ×"Ò" 4¨Ñ.Ô.Ð.Ø'0ˆDŒJÔ˜tÑ$àˆIˆIˆIð ˆs   ¢8¸
BÁ:BÂBÚincompatibilities_from_brokenúlist[tuple[KT, list[CT]]]c                ó  — |D �] \  }}|sŒ		 | j         j        |         }n# t          $ r Y Œ)w xY w| j                             |t          | j         j        t          j        d¦  «        ¦  «        t          | j         j        t          j        d¦  «        ||i¦  «        ¬¦  «        }t          |¦  «        }|s dS | 
                    |j        ¦  «         t          |t          |j        ¦  «        |¬¦  «        | j         j        |<   �ŒdS )Nrd   re   rf   Fri   T)r!   r4   r9   rJ   rp   r   rq   rr   rs   r   Úextendre   r   ro   rk   )rP   r�   r+   re   r=   rt   rj   s          r-   Ú_patch_criteriazResolution._patch_criteriaû   s>  € ð
 %Bð 	ñ 	Ñ ˆAÐ Ø$ð ØðØ œJÔ/°Ô2�	�	øÝð ð ð Ø�ðøøøà”g×*Ò*ØÝ,Ø”JÔ'ÝÔ)Ð*<Ñ=Ô=ñô õ #2Ø”JÔ'ÝÔ'Ð(;Ñ<Ô<ØÐ)Ð*ñ#ô #ð +ñ ô ˆGõ ,;¸7Ñ+CÔ+CˆJØð Ø�u�uØ×$Ò$ YÔ%@ÑAÔAÐAÝ%.Ø%Ý  Ô!6Ñ7Ô7Ø"3ð&ñ &ô &ˆDŒJÔ Ñ"Ñ"ð
 ˆts   �  
-¬-c                óD   — | j         €d„ | j        D ¦   «         | _         dS dS )zCSave states for potential rollback if optimistic backjumping fails.Nc           	     ó¨   — g | ]O}t          |j                             ¦   «         |j                             ¦   «         |j        d d …         ¬¦  «        ‘ŒPS )NrX   )r   r2   rZ   r4   rY   )r*   Úss     r-   rz   z*Resolution._save_state.<locals>.<listcomp>!  sf   € ð !ð !ð !ð õ ØœIŸNšNÑ,Ô,ØœZŸ_š_Ñ.Ô.Ø%&Ô%7¸¸¸Ô%:ðñ ô ð!ð !ð !r/   )rN   rL   ©rP   s    r-   Ú_save_statezResolution._save_state  s>   € àÔÐ$ð!ð !ð œð!ñ !ô !ˆDÔÐÐð %Ð$r/   c                óL   — d| _         | j        r| j        | _        d| _        dS dS )z3Rollback states and disable optimistic backjumping.g        N)rM   rN   rL   r¥   s    r-   Ú_rollback_stateszResolution._rollback_states*  s7   € à-0ˆÔ*ØÔð 	%ØÔ,ˆDŒLØ $ˆDÔÐÐð	%ð 	%r/   rš   ú$list[RequirementInformation[RT, CT]]c                ó¾  ‡ — t          j        d„ |D ¦   «         d„ |D ¦   «         ¦  «        }ˆ fd„|D ¦   «         }t          ‰ j        ¦  «        dk    �r‹‰ j        d= ‰ j        }	 	 ‰ j                             ¦   «         }|j                             ¦   «         \  }}n%# t          t          f$ r t          |¦  «        d‚w xY w‰ j        s||vrn’‰ j        r‰ j        €||vr‰                      ¦   «          ˆ fd„‰ j                             |¦  «        D ¦   «         }|                     |¦  «        sn0|j        sn(t          ‰ j        ¦  «        d	k    rt          |¦  «        ‚Œúd
„ |j                             ¦   «         D ¦   «         }|                     ||gf¦  «         ‰                      ¦   «          ‰                      |¦  «        }	|	rdS t          ‰ j        ¦  «        dk    �°‹dS )a2  Perform backjumping.

        When we enter here, the stack is like this::

            [ state Z ]
            [ state Y ]
            [ state X ]
            .... earlier states are irrelevant.

        1. No pins worked for Z, so it does not have a pin.
        2. We want to reset state Y to unpinned, and pin another candidate.
        3. State X holds what state Y was before the pin, but does not
           have the incompatibility information gathered in state Y.

        Each iteration of the loop will:

        1.  Identify Z. The incompatibility is not always caused by the latest
            state. For example, given three requirements A, B and C, with
            dependencies A1, B1 and C1, where A1 and B1 are incompatible: the
            last state might be related to C, so we want to discard the
            previous state.
        2.  Discard Z.
        3.  Discard Y but remember its incompatibility information gathered
            previously, and the failure we're dealing with right now.
        4.  Push a new state Y' based on X, and apply the incompatibility
            information from Y to Y'.
        5a. If this causes Y' to conflict, we need to backtrack again. Make Y'
            the new Z and go back to step 2.
        5b. If the incompatibilities apply cleanly, end backtracking.
        c              3  ó2   K  — | ]}|j         ®	|j         V — Œd S rI   r�   ©r*   Úcs     r-   r‹   z'Resolution._backjump.<locals>.<genexpr>Q  s+   è è € Ð>Ð>˜!¨¬Ð)=ˆQŒXÐ)=Ð)=Ð)=Ð)=Ð>Ð>r/   c              3  ó$   K  — | ]}|j         V — Œd S rI   )r_   r¬   s     r-   r‹   z'Resolution._backjump.<locals>.<genexpr>R  s$   è è € Ð+Ð+˜qˆQŒ]Ð+Ð+Ð+Ð+Ð+Ð+r/   c                óD   •— h | ]}‰j                              |¦  «        ’ŒS r'   ©rJ   rm   )r*   r‰   rP   s     €r-   ú	<setcomp>z'Resolution._backjump.<locals>.<setcomp>T  s)   ø€ ÐLÐLÐL°Q˜TœW×-Ò-¨aÑ0Ô0ÐLÐLÐLr/   é   rS   TNc                óD   •— h | ]}‰j                              |¦  «        ’ŒS r'   r°   )r*   ÚdrP   s     €r-   r±   z'Resolution._backjump.<locals>.<setcomp>w  s6   ø€ ð (ð (ð (Ø,-�D”G×$Ò$ QÑ'Ô'ð(ð (ð (r/   r   c                ó@   — g | ]\  }}|t          |j        ¦  «        f‘ŒS r'   )ro   re   r)   s      r-   rz   z(Resolution._backjump.<locals>.<listcomp>ˆ  s9   € ð -ð -ð -Ù37°1°a�•D˜Ô,Ñ-Ô-Ð.ð-ð -ð -r/   F)Ú	itertoolsÚchainÚlenrL   r!   r™   r2   ÚpopitemrT   r9   r   rM   rN   r¦   rJ   r‘   Ú
isdisjointr4   r5   r[   r]   r¡   )
rP   rš   Úincompatible_reqsÚincompatible_depsÚbroken_stater|   r†   Úcurrent_dependenciesr�   Úsuccesss
   `         r-   Ú	_backjumpzResolution._backjump1  sn  ø€ õ> 09¬Ø>Ð>˜vÐ>Ñ>Ô>Ø+Ð+ FÐ+Ñ+Ô+ñ0
ô 0
Ðð MÐLÐLÐLÐ:KÐLÑLÔLÐÝ�$”,ÑÔ 1Ò$Ñ$à”˜RÐ ð  œ:ˆLð+7ðAØ#'¤<×#3Ò#3Ñ#5Ô#5�LØ&2Ô&:×&BÒ&BÑ&DÔ&D‘O�D˜)˜)øÝ"¥HÐ-ð Að Að AÝ.¨vÑ6Ô6¸DÐ@ðAøøøð Ô:ðàÐ$5Ð5Ð5ð ð
 Ô6ð'àÔ)Ð1ØÐ$5Ð5Ð5à×$Ò$Ñ&Ô&Ð&ð
(ð (ð (ð (Ø15´×1IÒ1IÈ)Ñ1TÔ1Tð(ñ (ô (Ð$ð ,×6Ò6Ð7HÑIÔIð Øð
 $Ô+ð Øõ �t”|Ñ$Ô$¨Ò)Ð)Ý.¨vÑ6Ô6Ð6ðW+7ðZ-ð -Ø;GÔ;P×;VÒ;VÑ;XÔ;Xð-ñ -ô -Ð)ð
 *×0Ò0°$¸¸Ð1DÑEÔEÐEà× Ò Ñ"Ô"Ð"Ø×*Ò*Ð+HÑIÔIˆGð ð Ø�tõ �$”,ÑÔ 1Ò$Ñ$ðJ ˆus   Á#5B Â"B;Úcriteronc                óX   — t          d„ |D ¦   «                              ¦   «         ¦  «        S )z5Extract causes from list of criterion and deduplicatec                óB   — i | ]}|j         D ]}t          |¦  «        |“ŒŒS r'   )rk   r(   )r*   r­   Úis      r-   r.   z.Resolution._extract_causes.<locals>.<dictcomp>   s/   € ÐGÐGÐG !¸¼ÐGÐG°A•R˜‘U”U˜AÐGÐGÐGÐGr/   )ro   Úvalues)rP   rÁ   s     r-   Ú_extract_causeszResolution._extract_causesœ  s-   € õ ÐGÐG xÐGÑGÔG×NÒNÑPÔPÑQÔQÐQr/   rh   úIterable[RT]Ú
max_roundsÚintc                ó¦  ‡ ‡— ‰ j         rt          d¦  «        ‚‰ j                             ¦   «          t	          t          j        ¦   «         i g ¬¦  «        g‰ _         |D ]Q}	 ‰                      ‰ j        j	        |d ¬¦  «         Œ&# t          $ r}t          |j        j        ¦  «        |‚d }~ww xY w‰                      ¦   «          d }d }t          |¦  «        D �]l}‰ j                             |¬¦  «         ‰ j        ra‰ j        �Z|€8|}t'          ||z
  ‰ j        z  ¦  «        }|dk    r‰                      ¦   «          Œen |�||z
  |k    r‰                      ¦   «          Œ†ˆ fd„‰ j        j	                             ¦   «         D ¦   «         }|s)‰ j                             ‰ j        ¬¦  «         ‰ j        c S t/          ‰ j        j	                             ¦   «         ¦  «        t/          |¦  «        z
  Št3          |¦  «        dk    r•t5          ‰ j                             |‰ j        j        t=          ‰ j        j	        t?          j         d	¦  «        ¦  «        t=          ‰ j        j	        t?          j         d
¦  «        ¦  «        ‰ j        j!        ¬¦  «        ¦  «        }	n|}	|	st          d¦  «        ‚t3          |	¦  «        dk    rtE          |	‰ j#        ¬¦  «        }
n|	d         }
‰  $                    |
¦  «        }|rÒ‰  %                    |¦  «        }‰ j         &                    |¬¦  «         	 ‰  '                    |¦  «        }tQ          | o‰ j        o‰ j        ¦  «        }n"# t          $ r ‰ j        r
‰ j        rd}n‚ Y nw xY w|r‰ j        r‰                      ¦   «          nŒ|‰ j        j!        d d …<   |st          ‰ j        j!        ¦  «        ‚n_ˆˆ fd„‰ j        j	                             ¦   «         D ¦   «         }‰  )                    ‰ j        j	        |¦  «         ‰                      ¦   «          ‰ j         *                    |‰ j        ¬¦  «         �ŒntW          |¦  «        ‚)Nzalready resolvedrX   r�   )Úindexr   c                óF   •— g | ]\  }}‰                      ||¦  «        °|‘ŒS r'   ©r�   )r*   r<   r=   rP   s      €r-   rz   z&Resolution.resolve.<locals>.<listcomp>Õ  sC   ø€ ð !ð !ð !á"�C˜Ø×6Ò6°s¸IÑFÔFð!Øð!ð !ð !r/   )r!   r   rj   rk   )Úidentifiersr~   rj   rk   rY   z-narrow_requirement_selection returned 0 names)r<   )rš   Tc                óN   •— h | ]!\  }}|‰v ¯	‰                      ||¦  «        °|’Œ"S r'   rÍ   )r*   r<   r=   Úsatisfied_namesrP   s      €€r-   r±   z%Resolution.resolve.<locals>.<setcomp>"  sJ   ø€ ð +ð +ð +á&˜˜YØ˜oÐ-Ð-Ø ×;Ò;¸CÀÑKÔKð .ð à-Ð-Ð-r/   )rË   r!   ),rL   ÚRuntimeErrorrK   Ústartingr   ÚcollectionsÚOrderedDictru   r!   r4   r   r   r=   rk   r]   ÚrangeÚstarting_roundrM   rN   rÉ   r¨   r5   ÚendingÚsetÚkeysr¸   ro   rJ   Únarrow_requirement_selectionr2   r   rq   rs   rY   Úminr€   rœ   rÆ   Úresolving_conflictsrÀ   r‚   r{   Úending_roundr   )rP   rh   rÈ   r‰   rV   Úoptimistic_rounds_cutoffÚ"optimistic_backjumping_start_roundÚround_indexÚunsatisfied_namesÚnarrowed_unstatisfied_namesr|   Úfailure_criterionrš   r¿   Úfailed_optimistic_backjumpingÚnewly_unsatisfied_namesrÐ   s   `               @r-   ÚresolvezResolution.resolve¢  s7  øø€ ØŒ<ð 	3ÝÐ1Ñ2Ô2Ð2àŒ×ÒÑÔÐõ Ý#Ô/Ñ1Ô1ØØ!#ðñ ô ð
ˆŒð ð 	Kð 	KˆAðKØ×%Ò% d¤jÔ&9¸1ÀTÐ%ÑJÔJÐJÐJøÝ)ð Kð Kð KÝ*¨1¬;Ô+BÑCÔCÈÐJøøøøðKøøøð 	×ÒÑÔÐð 04Ð Ø9=Ð*å  Ñ,Ô,ð o	Fñ o	FˆKØŒG×"Ò"¨Ð"Ñ5Ô5Ð5ð Ô1ð !°dÔ6GÐ6SØ5Ð=Ø9DÐ6Ý/2Ø# kÑ1°TÔ5WÑWñ0ô 0Ð,ð 0°1Ò4Ð4Ø×-Ò-Ñ/Ô/Ð/Ø ð 5ð .Ð9à#Ð&HÑHØ3ò4ð 4ð ×-Ò-Ñ/Ô/Ð/Ø ð!ð !ð !ð !à&*¤jÔ&9×&?Ò&?Ñ&AÔ&Að!ñ !ô !Ðð %ð "Ø”—’ T¤Z�Ñ0Ô0Ð0Ø”zÐ!Ð!Ð!õ " $¤*Ô"5×":Ò":Ñ"<Ô"<Ñ=Ô=ÅÐDUÑ@VÔ@VÑVˆOåÐ$Ñ%Ô%¨Ò)Ð)Ý.2Ø”G×8Ò8Ø$5Ø$(¤JÔ$6Ý#2Ø œJÔ/Ý$Ô/°Ñ=Ô=ñ$ô $õ %4Ø œJÔ/Ý$Ô/°Ñ>Ô>ñ%ô %ð *.¬Ô)Dð 9ñ ô ñ/ô /Ð+Ð+ð  /@Ð+ð /ð TÝ"Ð#RÑSÔSÐSõ Ð.Ñ/Ô/°!Ò3Ð3åÐ6¸DÔ<PÐQÑQÔQ��à2°1Ô5�à $× >Ò >¸tÑ DÔ DÐà ð )'Ø×-Ò-Ð.?Ñ@Ô@�ð ”×+Ò+°6Ð+Ñ:Ô:Ð:ðØ"Ÿnšn¨VÑ4Ô4�Gõ 59Ø#˜ð .Ø Ô>ð.à Ô-ñ5ô 5Ð1Ð1øõ ,ð ð ð ØÔ9ð ¸dÔ>Oð Ø8<Ð5Ð5àð 6Ð5ðøøøð 1ð P°TÔ5Fð PØ×)Ò)Ñ+Ô+Ð+Ð+à5;�D”JÔ/°°°Ñ2ð #ð PÝ2°4´:Ô3NÑOÔOÐOðPð
+ð +ð +ð +ð +à*.¬*Ô*=×*CÒ*CÑ*EÔ*Eð+ñ +ô +Ð'ð ×6Ò6Ø”JÔ'Ð)@ñô ð ð ×$Ò$Ñ&Ô&Ð&àŒG× Ò  {¸$¼*Ð ÑEÔEÐEÑEå 
Ñ+Ô+Ð+s*   Á "BÂ
B,ÂB'Â'B,Ì!MÍM4Í3M4N)rC   rD   rE   rF   r#   rG   )r#   r"   )r#   rG   )r4   r^   r_   r	   r`   ra   r#   rG   )r4   r^   rv   rw   r#   rG   )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‚   )rÁ   r“   r#   r©   )rh   rÇ   rÈ   rÉ   r#   r"   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   Úpropertyr!   r]   ru   r{   r€   r�   r’   rœ   r¡   r¦   r¨   rÀ   rÆ   ræ   r'   r/   r-   rB   rB   D   sh  € € € € € ðð ð8ð 8ð 8ð 8ð ð1ð 1ð 1ñ „Xð1ð#ð #ð #ð #ð*)ð *)ð *)ð *)ðXð ð ð ð6
ð 
ð 
ð 
ð

ð 

ð 

ð 

ðð ð ð ð#ð #ð #ð #ðJ!ð !ð !ð !ðF
ð 
ð 
ð 
ð%ð %ð %ð %ðið ið ið iðVRð Rð Rð RðN,ð N,ð N,ð N,ð N,ð N,r/   rB   c                  ó"   — e Zd ZdZeZ	 ddd	„Zd
S )ÚResolverz3The thing that performs the actual resolution work.éd   rh   rÇ   rÈ   rÉ   r#   r$   c                ó‚   — t          | j        | j        ¦  «        }|                     ||¬¦  «        }t	          |¦  «        S )a  Take a collection of constraints, spit out the resolution result.

        The return value is a representation to the final resolution result. It
        is a tuple subclass with three public members:

        * `mapping`: A dict of resolved candidates. Each key is an identifier
            of a requirement (as returned by the provider's `identify` method),
            and the value is the resolved candidate.
        * `graph`: A `DirectedGraph` instance representing the dependency tree.
            The vertices are keys of `mapping`, and each edge represents *why*
            a particular package is included. A special vertex `None` is
            included to represent parents of user-supplied requirements.
        * `criteria`: A dict of "criteria" that hold detailed information on
            how edges in the graph are derived. Each key is an identifier of a
            requirement, and the value is a `Criterion` instance.

        The following exceptions may be raised if a resolution cannot be found:

        * `ResolutionImpossible`: A resolution cannot be found for the given
            combination of requirements. The `causes` attribute of the
            exception is a list of (requirement, parent), giving the
            requirements that could not be satisfied.
        * `ResolutionTooDeep`: The dependency tree is too deeply nested and
            the resolver gave up. This is usually caused by a circular
            dependency, but you can try to resolve this by increasing the
            `max_rounds` argument.
        )rÈ   )rB   rC   rE   ræ   r@   )rP   rh   rÈ   Ú
resolutionr!   s        r-   ræ   zResolver.resolve8  s>   € õ@   ¤¨t¬}Ñ=Ô=ˆ
Ø×"Ò" <¸JÐ"ÑGÔGˆÝ˜UÑ#Ô#Ð#r/   N)rî   )rh   rÇ   rÈ   rÉ   r#   r$   )rç   rè   ré   rê   r   Úbase_exceptionræ   r'   r/   r-   rí   rí   3  s=   € € € € € Ø=Ð=à&€Nð
 ð"$ð "$ð "$ð "$ð "$ð "$ð "$r/   rí   r4   úMapping[KT, Criterion[RT, CT]]r<   ú	KT | Noner;   údict[int, KT | None]r1   úset[KT | None]r‚   c                ó:  — ||v rdS || vrdS |€J ‚| |                               ¦   «         D ]o}	 |t          |¦  «                 }n# t          $ r Y Œ%w xY w||v r|                     |¦  «          dS t	          | |||¦  «        r|                     |¦  «          dS ŒpdS )NTF)r8   r(   r9   r6   r7   )r4   r<   r;   r1   r>   r?   s         r-   r7   r7   ]  sá   € ð ˆiÐÐØˆtØ
�(ÐÐØˆuØˆ?ˆ?ˆ?Ø�cŒ]×&Ò&Ñ(Ô(ð 
ð 
ˆð	Ø�B˜q™EœE”?ˆDˆDøÝð 	ð 	ð 	ØˆHð	øøøà�9ÐÐØ�MŠM˜#ÑÔÐØ�4�4Ý˜h¨¨h¸	ÑBÔBð 	Ø�MŠM˜#ÑÔÐØ�4�4ð	ð ˆ5s   ®AÁ
AÁA)r!   r"   r#   r$   )
r4   rò   r<   ró   r;   rô   r1   rõ   r#   r‚   ),Ú
__future__r   rÓ   r¶   rq   Útypingr   r   Ústructsr   r   r	   r
   r   r   r   r   r   Úabstractr   r   r=   r   Ú
exceptionsr   r   r   r   r   Úcollections.abcr   r   r   Ú	providersr   r   Ú	reportersr   r    Ú__annotations__r@   rB   rí   r7   r'   r/   r-   ú<module>r      s>  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð /Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=à8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø(Ð(Ð(Ð(Ð(Ð(à'*Ð Ð *Ð *Ð *Ñ *ðð ð ð ð<l,ð l,ð l,ð l,ð l,�˜˜R ˜Ô$ñ l,ô l,ð l,ð^'$ð '$ð '$ð '$ð '$Ð  B¨ 
Ô+ñ '$ô '$ð '$ðTð ð ð ð ð r/   