7idZddlZddlmZddlmZddlmZddlm Z m Z ddl m Z ddl mZd Zej eZd e d ed eeeffd Zde d ed efdZde ded efdZde ded efdZded eedffdZdeedfd ed dfdZy)z0Support functions for working with wheel files. N)Message)Parser)Tuple) BadZipFileZipFile)canonicalize_name)UnsupportedWheel)r wheel_zipnamereturnc t||}t||}t|}t ||||fS#t$r}t|dt |d}~wwxYw)zExtract information from the provided wheel, ensuring it meets basic standards. Returns the name of the .dist-info directory and the parsed WHEEL metadata. z has an invalid wheel, N)wheel_dist_info_dirwheel_metadata wheel_versionr strcheck_compatibility)r r info_dirmetadataversiones b/mnt/ssd/data/python-lab/ChefSystem/venv/lib/python3.12/site-packages/pip/_internal/utils/wheel.py parse_wheelrsp I&y$7!)X6)& X  I$'>s1vhGHHIs#5 AAAsourcec|jDchc]}|jddd}}|Dcgc]}|jds|}}|s tdt |dkDr)tdj dj ||d}t|}t|}|j|std|d ||Scc}wcc}w) zReturns the name of the contained .dist-info directory. Raises AssertionError or UnsupportedWheel if not found, >1 found, or it doesn't match the provided name. /r rz .dist-infoz.dist-info directory not foundz)multiple .dist-info directories found: {}z, z.dist-info directory z does not start with ) namelistsplitendswithr lenformatjoinr startswith) rr psubdirss info_dirsr info_dir_namecanonical_names rrr&s,2??+<=aqwwsAq!=G=#@qqzz,'?@I@ ?@@ 9~ 7 > >tyy?S T  |H%h/M&t,N  # #N 3#H@sCC Cpathc |j|S#tttf$r}t d|d|d}~wwxYw)Nzcould not read z file: )readrKeyError RuntimeErrorr )rr*rs rread_wheel_metadata_filer/EsJG{{4   , /GuEFFGs=8= dist_info_dirc|d}t||} |j}t j |S#t$r}td|d|d}~wwxYw)ziReturn the WHEEL metadata of an extracted wheel, if possible. Otherwise, raise UnsupportedWheel. z/WHEELzerror decoding z: N)r/decodeUnicodeDecodeErrorr rparsestr)rr0r*wheel_contents wheel_textrs rrrNsq_F #D-fd;NB#**,  8  Z (( B1%@AABs< AAA wheel_data.c|d}| td|j} ttt|j dS#t $rtd|wxYw)zbGiven WHEEL metadata, return the parsed Wheel-Version. Otherwise, raise UnsupportedWheel. z Wheel-VersionzWHEEL is missing Wheel-Version.zinvalid Wheel-Version: )r striptuplemapintr ValueError)r7 version_textrs rrrasso.L?@@  "GFSgmmC0122 F!8 DEEFs 'A A$rc  |dtdkDr8tdj|djt t ||tkDr4t jddjt t |yy)aRaises errors or warns if called with an incompatible Wheel-Version. pip should refuse to install a Wheel-Version that's a major series ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when installing a version only minor version ahead (e.g 1.2 > 1.1). version: a 2-tuple representing a Wheel-Version (Major, Minor) name: name of wheel or package to raise exception about :raises UnsupportedWheel: when an incompatible Wheel-Version is given rzB{}'s Wheel-Version ({}) is not compatible with this version of pipr9z*Installing from a newer Wheel-Version (%s)N)VERSION_COMPATIBLEr r!r"r<rloggerwarning)rr s rrrqsvqz&q)) VD#((3sG+<"=>   % % 8 HHSg& '  &)__doc__logging email.messager email.parserrtypingrzipfilerrpip._vendor.packaging.utilsrpip._internal.exceptionsr rA getLogger__name__rBrrrbytesr/rr=rrrDrrQs!'95   8 $7#%W 2E$ss>GWGCGEG)7)3)7)& Fg F%S/ F  sCx   rD