
    )h              	         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r*d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y)    )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<   y)RequirementInformationr   requirementz	CT | NoneparentN)__name__
__module____qualname____annotations__     Q/var/www/html/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.pyr   r      s    r   r   c                  0    e Zd ZU dZded<   ded<   ded<   y)	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                  p    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y)DirectedGraphz&A graph structure with directed edges.c                >    t               | _        i | _        i | _        y N)set	_vertices	_forwards
_backwardsselfs    r   __init__zDirectedGraph.__init__0   s    "%%,.-/r   c                ,    t        | j                        S r(   )iterr*   r-   s    r   __iter__zDirectedGraph.__iter__5       DNN##r   c                ,    t        | j                        S r(   )lenr*   r-   s    r   __len__zDirectedGraph.__len__8   s    4>>""r   c                    || j                   v S r(   )r*   r.   keys     r   __contains__zDirectedGraph.__contains__;   s    dnn$$r   c                b    t        |              }t        | j                        |_        | j                  j	                         D ci c]  \  }}|t        |       c}}|_        | j
                  j	                         D ci c]  \  }}|t        |       c}}|_        |S c c}}w c c}}w )z$Return a shallow copy of this graph.)typer)   r*   r+   itemsr,   )r.   otherkvs       r   copyzDirectedGraph.copy>   s    T
dnn-151E1E1GHA1c!f9H26//2G2G2IJ$!QAs1vIJ IJs   B%B+c                    || j                   v rt        d      | j                   j                  |       t               | j                  |<   t               | j
                  |<   y)zAdd a new vertex to the graph.zvertex existsN)r*   
ValueErroraddr)   r+   r,   r8   s     r   rD   zDirectedGraph.addF   sK    $.. _--3!es"ur   c                2   | j                   j                  |       | j                  j                  |      D ]   }| j                  |   j                  |       " | j                  j                  |      D ]   }| j                  |   j                  |       " y)zCRemove a vertex from the graph, disconnecting all edges from/to it.N)r*   remover+   popr,   )r.   r9   fts       r   rF   zDirectedGraph.removeN   s~    c"##C( 	+AOOA%%c*	+$$S) 	*ANN1$$S)	*r   c                J    || j                   |   v xr || j                  |   v S r(   )r,   r+   r.   rH   rI   s      r   	connectedzDirectedGraph.connectedV   s)    DOOA&&A1q0A+AAr   c                    || j                   vrt        |      | j                  |   j                  |       | j                  |   j                  |       y)zgConnect two existing vertices.

        Nothing happens if the vertices are already connected.
        N)r*   KeyErrorr+   rD   r,   rK   s      r   connectzDirectedGraph.connectY   sH    
 DNN"1+qa q!r   c              #  j   K   | j                   j                         D ]  \  }}|D ]  }||f 
  y wr(   )r+   r=   )r.   rH   childrenrI   s       r   
iter_edgeszDirectedGraph.iter_edgesc   s>     >>//1 	KAx d
	s   13c                2    t        | j                  |         S r(   )r1   r+   r8   s     r   iter_childrenzDirectedGraph.iter_childrenh   s    DNN3'((r   c                2    t        | j                  |         S r(   )r1   r,   r8   s     r   iter_parentszDirectedGraph.iter_parentsk   s    DOOC())r   N)returnNonerW   Iterator[KT]rW   int)r9   r   rW   bool)rW   zDirectedGraph[KT])r9   r   rW   rX   )rH   r   rI   r   rW   r]   )rH   r   rI   r   rW   rX   )rW   zIterator[tuple[KT, KT]])r9   r   rW   rZ   )r   r   r   r$   r/   r2   r6   r:   rA   rD   rF   rL   rO   rR   rT   rV   r   r   r   r&   r&   -   sB    00
$#%%*B"
)*r   r&   c                  V    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	y)IteratorMappingNc                6    || _         || _        |xs i | _        y r(   )_mapping	_accessor_appends)r.   r!   accessorappendss       r   r/   zIteratorMapping.__init__p   s      !3:=br   c                d    dj                  | j                  | j                  | j                        S )Nz!IteratorMapping({!r}, {!r}, {!r}))formatra   rb   rc   r-   s    r   __repr__zIteratorMapping.__repr__z   s*    299MMNNMM
 	
r   c                H    t        | j                  xs | j                        S r(   )r]   ra   rc   r-   s    r   __bool__zIteratorMapping.__bool__   s    DMM2T]]33r   c                >    || j                   v xs || j                  v S r(   )ra   rc   r8   s     r   r:   zIteratorMapping.__contains__   s    dmm#;sdmm';;r   c                    	 | j                   |   }t	        j
                  | j                  |      | j                  j                  |d            S # t        $ r t        | j                  |         cY S w xY w)Nr   )ra   rN   r1   rc   	itertoolschainrb   get)r.   r?   r@   s      r   __getitem__zIteratorMapping.__getitem__   sg    	*a A t~~a0$--2C2CAr2JKK  	*a())	*s   A !A43A4c                n      fd j                   D        }t        j                   j                  |      S )Nc              3  @   K   | ]  }|j                   vs|  y wr(   ra   .0r?   r.   s     r   	<genexpr>z+IteratorMapping.__iter__.<locals>.<genexpr>   s     CaAT]],BC   )rc   rm   rn   ra   r.   mores   ` r   r2   zIteratorMapping.__iter__   s&    C4==Ct}}d33r   c                p     t         fd j                  D              }t         j                        |z   S )Nc              3  @   K   | ]  }|j                   vsd   yw)r   Nrs   rt   s     r   rv   z*IteratorMapping.__len__.<locals>.<genexpr>   s     Fq/E1Frw   )sumrc   r5   ra   rx   s   ` r   r6   zIteratorMapping.__len__   s+    FdmmFF4==!D((r   r(   )r!   zMapping[KT, RT]rd   zCallable[[RT], Iterable[CT]]re   z Mapping[KT, Iterable[CT]] | NonerW   rX   rW   strrW   r]   )r9   objectrW   r]   )r?   r   rW   zIterator[CT]rY   r[   )
r   r   r   r/   rh   rj   r:   rp   r2   r6   r   r   r   r_   r_   o   sV    
 59	A A /A 2	A
 
A
4<L4)r   r_   c                  0    e Zd ZdZddZddZd	dZd
dZy)_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.
    c                     || _         d | _        y r(   )_factory	_iterable)r.   factorys     r   r/   z_FactoryIterableView.__init__   s    .2r   c                J    t        |       j                   dt        |        dS N())r<   r   listr-   s    r   rh   z_FactoryIterableView.__repr__   s$    t*%%&aT
|155r   c                L    	 t        t        |              y# t        $ r Y yw xY w)NFT)nextr1   StopIterationr-   s    r   rj   z_FactoryIterableView.__bool__   s,    	d   		s    	##c                    | j                   | j                         n| j                   }t        j                  |      \  | _         }|S r(   )r   r   rm   tee)r.   iterablecurrents      r   r2   z_FactoryIterableView.__iter__   s6    &*nn&<4==?$.."+--"9r   N)r   zCallable[[], Iterable[RT]]rW   rX   r}   r   rW   zIterator[RT]r   r   r   r$   r/   rh   rj   r2   r   r   r   r   r      s    36r   r   c                  0    e Zd ZdZddZddZd	dZd
dZy)_SequenceIterableViewzWrap an iterable returned by find_matches().

    This is essentially just a proxy to the underlying sequence that provides
    the same interface as `_FactoryIterableView`.
    c                    || _         y r(   )	_sequence)r.   sequences     r   r/   z_SequenceIterableView.__init__   s	    !r   c                L    t        |       j                   d| j                   dS r   )r<   r   r   r-   s    r   rh   z_SequenceIterableView.__repr__   s%    t*%%&a'7q99r   c                ,    t        | j                        S r(   )r]   r   r-   s    r   rj   z_SequenceIterableView.__bool__   r3   r   c                ,    t        | j                        S r(   )r1   r   r-   s    r   r2   z_SequenceIterableView.__iter__   r3   r   N)r   zSequence[RT]r}   r   r   r   r   r   r   r   r      s    ":$$r   r   c                z    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   )matchess    r   build_iter_viewr      s3    #G,,gx(w- ))r   )r   zMatches[CT]rW   zIterable[CT])
__future__r   rm   collectionsr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   Matchesresolvers.criterionr   r   r    r&   r_   r   r   r   IterableViewr   r   r   <module>r      s   "  "   T]T]T]
hr8B<'788
9.WRV_ ?
GBBJ/ ? ( =("; w KLE?*GBK ?*D%)gb(2,./R1D %)P8B< :$HRL $(* r   