
    жvg              	          d Z ddlZddlmZ ddlm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 ddlmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$  ej%        e&          Z' G d de          Z(e
ee(f         Z)eeef         Z*eeeef         Z+e
eee*         f         Z,e
eee+         f         Z-ee,e-f         Z.ee)e.f         Z/dee)e0f         fdZ1	 dde)dee	e2ge0f                  de.fdZ3dee$         de/fdZ4dee"         dee         dee"ddf         fdZ5dee$         de)dee         fdZ6dee         de)dee         fdZ7dS )z'Validation of dependencies of packages
    N)suppress)Parser)reduce)
CallableDict	FrozenSet	GeneratorIterableList
NamedTupleOptionalSetTuple)Requirement)Tag	parse_tag)NormalizedNamecanonicalize_name)Version))make_distribution_for_install_requirement)get_default_environment)BaseDistribution)InstallRequirementc                   0    e Zd ZU eed<   ee         ed<   dS )PackageDetailsversiondependenciesN)__name__
__module____qualname__r   __annotations__r   r        [/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/pip/_internal/operations/check.pyr   r   "   s/         {######r#   r   returnc                  \   i } d}t                      }|                    dd          D ]}|j        }	 t          |                                          }t          |j        |          | |<   D# t          t          f$ r(}t          
                    d||           d}Y d}~xd}~ww xY w| |fS )z3Converts a list of distributions into a PackageSet.Fr"   )
local_onlyskipz$Error parsing dependencies of %s: %sTN)r   iter_installed_distributionscanonical_namelistiter_dependenciesr   r   OSError
ValueErrorloggerwarning)package_setproblemsenvdistnamer   es          r$   !create_package_set_from_installedr7   2   s    KH
!
#
#C00E0KK  "	 6 6 8 899L .t|\ J JK$ 	 	 	NNA4KKKHHHHHH	   s   9A..B'?B""B'r1   should_ignorec                 N   i }i }|                                  D ]\  }}t                      }t                      }|r ||          r0|j        D ]}t          |j                  }	|	| vr?d}
|j        |j                            ddi          }
|
r|                    |	|f           Y| |	         j        }|j	        
                    |d          s|                    |	||f           |rt          |t                    ||<   |rt          |t                    ||<   
||fS )zCheck if a package set is consistent

    If should_ignore is passed, it should be a callable that takes a
    package name and returns a boolean.
    TNextra )prereleases)key)itemssetr   r   r5   markerevaluateaddr   	specifiercontainssortedstr)r1   r8   missingconflictingpackage_namepackage_detailmissing_depsconflicting_depsreqr5   missedr   s               r$   check_package_setrO   C   sk    GK(3(9(9(;(; J J$n%(UU-0UU 	]]<88 	!. 	; 	;C$SX..D ;&&:) Z00'2??F 2 $$dC[111 "$'/G=))'t)DD ; $$dGS%9::: 	B$*<S$A$A$AGL! 	J(./?S(I(I(IK%Kr#   
to_installc                     t                      \  }}t          | |          }t          ||          |t          |fd          fS )zeFor checking if the dependency graph would be consistent after     installing given requirements
    c                     | vS Nr"   )r5   	whitelists    r$   <lambda>z)check_install_conflicts.<locals>.<lambda>   s    D	4I r#   )r8   )r7   _simulate_installation_of_create_whitelistrO   )rP   r1   _would_be_installedrT   s       @r$   check_install_conflictsrZ   p   sf    
 788NK2:{KK ""4kBBI 	'I'I'I'I	
 	
 	
 r#   packagessupported_tagsc              #     K   | D ]}t          t                    5  |                    d          }t          t          j        t          t          t                      	                    |          
                    dg                     t	                                }|                    |          r|V  d d d            n# 1 swxY w Y   d S )NWHEELr   )r   FileNotFoundError	read_textr   	frozensetunionmapr   r   parsestrget_all
isdisjoint)r[   r\   p
wheel_file
wheel_tagss        r$   check_unsupportedrj      s       	 	'(( 	 	W--J)/Ivxx00<<DDUBOOPP* *J
 $$^44 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	s   BCC	
C	c                    t                      }| D ]x}t          |          }|                                }|j        }t	          |j        t          |                                                    ||<   |                    |           y|S )z=Computes the version of packages after installing to_install.)	r?   r   get_metadata_distributionr*   r   r   r+   r,   rB   )rP   r1   	installedinst_reqabstract_distr4   r5   s          r$   rV   rV      s    
 I   A(KK6688"*4<d>T>T>V>V9W9WXXDdr#   rY   c                     t          |           }|D ]D}||v r||         j        D ]/}t          |j                  |v r|                    |            n0E|S rS   )r?   r   r   r5   rB   )rY   r1   packages_affectedrI   rM   s        r$   rW   rW      s     .//#  ,,,|,9 	 	C **.???!%%l333 @ r#   rS   )8__doc__logging
contextlibr   email.parserr   	functoolsr   typingr   r   r   r	   r
   r   r   r   r   r   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.tagsr   r   pip._vendor.packaging.utilsr   r   pip._vendor.packaging.versionr   pip._internal.distributionsr   pip._internal.metadatar   pip._internal.metadata.baser   pip._internal.req.req_installr   	getLoggerr   r/   r   
PackageSetMissingConflictingMissingDictConflictingDictCheckResultConflictDetailsboolr7   rF   rO   rZ   rj   rV   rW   r"   r#   r$   <module>r      sj                                              ; : : : : : 5 5 5 5 5 5 5 5 I I I I I I I I 1 1 1 1 1 1 Q Q Q Q Q Q : : : : : : 8 8 8 8 8 8 < < < < < <		8	$	$$ $ $ $ $Z $ $ $ ..01

+
,NG[89>4=01~tK'889K01
K/0!5T1A+B ! ! ! !$ OS*  * * ,4XseTk5J,K* *  *  *  * Z-?(@ _    ('(SM t+,    '(7A   &N+:D     r#   