
     h              	      L   d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZ  ed          Z ed          Z ed          Zee	e         eg e	e         f         f         Zer6dd	lmZ  G d
 deeeef                   Z G d deeeeef                   Zn edddg          Z edg d          Z G d dee                   Z G d deee
e         f         eeeef                   Z G d de	e                   Z G d de	e                   ZddZe	ZdS )    )annotationsN)
namedtuple)
TYPE_CHECKINGCallableGenericIterableIteratorMapping
NamedTupleSequenceTypeVarUnionKTRTCT   )	Criterionc                  $    e Zd ZU ded<   ded<   dS )RequirementInformationr   requirementz	CT | NoneparentN)__name__
__module____qualname____annotations__     ]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/pip/_vendor/resolvelib/structs.pyr   r      s'         r   r   c                  2    e Zd ZU dZded<   ded<   ded<   dS )	StatezResolution state in a round.zdict[KT, CT]mappingzdict[KT, Criterion[RT, CT]]criteriaz$list[RequirementInformation[RT, CT]]backtrack_causesN)r   r   r   __doc__r   r   r   r   r    r       s<         **---->>>>>>r   r    r   r   )r!   r"   r#   c                  r    e Zd ZdZddZddZddZddZddZddZ	ddZ
d dZd!dZd"dZd#dZd#dZdS )$DirectedGraphz&A graph structure with directed edges.returnNonec                H    t                      | _        i | _        i | _        d S N)set	_vertices	_forwards
_backwardsselfs    r   __init__zDirectedGraph.__init__0   s    "%%%,.-/r   Iterator[KT]c                *    t          | j                  S r*   )iterr,   r/   s    r   __iter__zDirectedGraph.__iter__5       DN###r   intc                *    t          | j                  S r*   )lenr,   r/   s    r   __len__zDirectedGraph.__len__8   s    4>"""r   keyr   boolc                    || j         v S r*   )r,   r0   r;   s     r   __contains__zDirectedGraph.__contains__;   s    dn$$r   DirectedGraph[KT]c                    t          |                       }t          | j                  |_        d | j                                        D             |_        d | j                                        D             |_        |S )z$Return a shallow copy of this graph.c                4    i | ]\  }}|t          |          S r   r+   .0kvs      r   
<dictcomp>z&DirectedGraph.copy.<locals>.<dictcomp>B   s$    HHHA1c!ffHHHr   c                4    i | ]\  }}|t          |          S r   rC   rD   s      r   rH   z&DirectedGraph.copy.<locals>.<dictcomp>C   s$    JJJ$!QAs1vvJJJr   )typer+   r,   r-   itemsr.   )r0   others     r   copyzDirectedGraph.copy>   sp    T

dn--HH1E1E1G1GHHHJJ$/2G2G2I2IJJJr   c                    || j         v rt          d          | j                             |           t                      | j        |<   t                      | j        |<   dS )zAdd a new vertex to the graph.zvertex existsN)r,   
ValueErroraddr+   r-   r.   r>   s     r   rP   zDirectedGraph.addF   sY    $.  _---3!ees"uur   c                .   | j                             |           | j                            |          D ]"}| j        |                             |           #| j                            |          D ]"}| j        |                             |           #dS )zCRemove a vertex from the graph, disconnecting all edges from/to it.N)r,   remover-   popr.   )r0   r;   fts       r   rR   zDirectedGraph.removeN   s    c"""##C(( 	+ 	+AOA%%c****$$S)) 	* 	*AN1$$S))))	* 	*r   rT   rU   c                >    || j         |         v o|| j        |         v S r*   )r.   r-   r0   rT   rU   s      r   	connectedzDirectedGraph.connectedV   s%    DOA&&A1q0A+AAr   c                    || j         vrt          |          | j        |                             |           | j        |                             |           dS )zgConnect two existing vertices.

        Nothing happens if the vertices are already connected.
        N)r,   KeyErrorr-   rP   r.   rW   s      r   connectzDirectedGraph.connectY   sY    
 DN""1++qa   q!!!!!r   Iterator[tuple[KT, KT]]c              #  ^   K   | j                                         D ]\  }}|D ]}||fV  	d S r*   )r-   rK   )r0   rT   childrenrU   s       r   
iter_edgeszDirectedGraph.iter_edgesc   sT      >//11 	 	KAx  d



	 	r   c                6    t          | j        |                   S r*   )r4   r-   r>   s     r   iter_childrenzDirectedGraph.iter_childrenh   s    DN3'(((r   c                6    t          | j        |                   S r*   )r4   r.   r>   s     r   iter_parentszDirectedGraph.iter_parentsk   s    DOC()))r   N)r'   r(   r'   r2   r'   r7   )r;   r   r'   r<   )r'   r@   )r;   r   r'   r(   )rT   r   rU   r   r'   r<   )rT   r   rU   r   r'   r(   )r'   r\   )r;   r   r'   r2   )r   r   r   r$   r1   r5   r:   r?   rM   rP   rR   rX   r[   r_   ra   rc   r   r   r   r&   r&   -   s       000 0 0 0
$ $ $ $# # # #% % % %   % % % %* * * *B B B B" " " "   
) ) ) )* * * * * *r   r&   c                  J    e Zd Z	 ddd
ZddZddZddZddZd dZd!dZ	dS )"IteratorMappingNr!   Mapping[KT, RT]accessorCallable[[RT], Iterable[CT]]appends Mapping[KT, Iterable[CT]] | Noner'   r(   c                4    || _         || _        |pi | _        d S r*   )_mapping	_accessor_appends)r0   r!   ri   rk   s       r   r1   zIteratorMapping.__init__p   s!      !3:=br   strc                N    d                     | j        | j        | j                  S )Nz!IteratorMapping({!r}, {!r}, {!r}))formatrn   ro   rp   r/   s    r   __repr__zIteratorMapping.__repr__z   s)    299MNM
 
 	
r   r<   c                8    t          | j        p| j                  S r*   )r<   rn   rp   r/   s    r   __bool__zIteratorMapping.__bool__   s    DM2T]333r   r;   objectc                &    || j         v p|| j        v S r*   )rn   rp   r>   s     r   r?   zIteratorMapping.__contains__   s    dm#;sdm';;r   rF   r   Iterator[CT]c                    	 | j         |         }n*# t          $ r t          | j        |                   cY S w xY wt	          j        |                     |          | j                            |d                    S )Nr   )rn   rZ   r4   rp   	itertoolschainro   get)r0   rF   rG   s      r   __getitem__zIteratorMapping.__getitem__   s{    	*a AA 	* 	* 	*a()))))	*t~~a00$-2C2CAr2J2JKKKs    $77r2   c                ^      fd j         D             }t          j         j        |          S )Nc              3  .   K   | ]}|j         v|V  d S r*   rn   rE   rF   r0   s     r   	<genexpr>z+IteratorMapping.__iter__.<locals>.<genexpr>   s/      CCaAT],B,B,B,B,B,BCCr   )rp   r{   r|   rn   r0   mores   ` r   r5   zIteratorMapping.__iter__   s2    CCCC4=CCCt}d333r   r7   c                r     t           fd j        D                       }t           j                  |z   S )Nc              3  .   K   | ]}|j         vd V  dS )r   Nr   r   s     r   r   z*IteratorMapping.__len__.<locals>.<genexpr>   s/      FFq/E/E1/E/E/E/EFFr   )sumrp   r9   rn   r   s   ` r   r:   zIteratorMapping.__len__   s<    FFFFdmFFFFF4=!!D((r   r*   )r!   rh   ri   rj   rk   rl   r'   r(   r'   rq   r'   r<   )r;   rw   r'   r<   )rF   r   r'   ry   rd   re   )
r   r   r   r1   rt   rv   r?   r~   r5   r:   r   r   r   rg   rg   o   s        
 59	A A A A A
 
 
 
4 4 4 4< < < <L L L L4 4 4 4) ) ) ) ) )r   rg   c                  2    e Zd ZdZddZddZdd
ZddZdS )_FactoryIterableViewa:  Wrap an iterator factory returned by `find_matches()`.

    Calling `iter()` on this class would invoke the underlying iterator
    factory, making it a "collection with ordering" that can be iterated
    through multiple times, but lacks random access methods presented in
    built-in Python sequence types.
    factoryCallable[[], Iterable[RT]]r'   r(   c                "    || _         d | _        d S r*   )_factory	_iterable)r0   r   s     r   r1   z_FactoryIterableView.__init__   s    .2r   rq   c                P    t          |           j         dt          |            dS N())rJ   r   listr/   s    r   rt   z_FactoryIterableView.__repr__   s(    t**%55T

5555r   r<   c                d    	 t          t          |                      n# t          $ r Y dS w xY wdS )NFT)nextr4   StopIterationr/   s    r   rv   z_FactoryIterableView.__bool__   sE    	d 	 	 	55	ts    
--Iterator[RT]c                    | j         |                                 n| j         }t          j        |          \  | _         }|S r*   )r   r   r{   tee)r0   iterablecurrents      r   r5   z_FactoryIterableView.__iter__   s7    &*n&<4==???$."+-"9"9r   N)r   r   r'   r(   r   r   r'   r   r   r   r   r$   r1   rt   rv   r5   r   r   r   r   r      sn         3 3 3 36 6 6 6        r   r   c                  2    e Zd ZdZddZddZdd	ZddZdS )_SequenceIterableViewzWrap an iterable returned by find_matches().

    This is essentially just a proxy to the underlying sequence that provides
    the same interface as `_FactoryIterableView`.
    sequenceSequence[RT]c                    || _         d S r*   )	_sequence)r0   r   s     r   r1   z_SequenceIterableView.__init__   s    !r   r'   rq   c                @    t          |           j         d| j         dS r   )rJ   r   r   r/   s    r   rt   z_SequenceIterableView.__repr__   s$    t**%999999r   r<   c                *    t          | j                  S r*   )r<   r   r/   s    r   rv   z_SequenceIterableView.__bool__   r6   r   r   c                *    t          | j                  S r*   )r4   r   r/   s    r   r5   z_SequenceIterableView.__iter__   r6   r   N)r   r   r   r   r   r   r   r   r   r   r      sn         " " " ": : : :$ $ $ $$ $ $ $ $ $r   r   matchesMatches[CT]r'   Iterable[CT]c                    t          |           rt          |           S t          | t                    st	          |           } t          |           S )zCBuild an iterable view from the value returned by `find_matches()`.)callabler   
isinstancer   r   r   )r   s    r   build_iter_viewr      sK     -#G,,,gx((  w-- )))r   )r   r   r'   r   )
__future__r   r{   collectionsr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   Matchesresolvers.criterionr   r   r    r&   rg   r   r   r   IterableViewr   r   r   <module>r      s   " " " " " "     " " " " " "                        WT]]WT]]WT]]
hr8B<'788
9 M......    WRV_   ? ? ? ? ?
GBBJ/ ? ? ? ? (Z =(";  Jw K K KLLE?* ?* ?* ?* ?*GBK ?* ?* ?*D%) %) %) %) %)gb(2,./R1D %) %) %)P    8B<   :$ $ $ $ $HRL $ $ $(* * * * r   