Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
§

hµµhÿ,ãó,—dZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
mZmZm
Z
mZmZddlmZddlmZmZddlmZmZe
e
eeefeefZdd	gZGd
„d¦«ZGd„dee¦«ZGd
„dee¦«ZGd„d	e¦«Z dS)z)Source of information about a wheel file.éN)Úcontextmanager)ÚBinaryIOÚClassVarÚIteratorÚListÚOptionalÚTupleÚTypeÚcast)ÚInstallerError)ÚRecordEntryÚparse_record_file)Úcanonicalize_nameÚparse_wheel_filenameÚWheelSourceÚ	WheelFilecó܇—eZdZUdZeZeeee	d<de
de
ddfˆfd„Zed„¦«Z
ed	„¦«Zedee
fd
„¦«Zde
de
fd„Zdd
„Zdeefd„ZˆxZS)rzyRepresents an installable wheel.

    This is an abstract class, whose methods have to be implemented by subclasses.
    Úvalidation_errorÚdistributionÚversionÚreturnNcód•—t¦« ¦«||_||_dS)z¦Initialize a WheelSource object.

        :param distribution: distribution name (like ``urllib3``)
        :param version: version associated with the wheel
        N)ÚsuperÚ__init__rr)ÚselfrrÚ	__class__s   €ú</usr/local/lib/python3.11/site-packages/installer/sources.pyrzWheelSource.__init__s.ø€õ	‰Œ×ÒÑÔÐØ(ˆÔ؈Œˆˆócó&—|j›d|j›dS)ú Name of the dist-info directory.ú-ú
.dist-info©rr©rs rÚ
dist_info_dirzWheelSource.dist_info_dir&s €ðÔ#Ð>Ð> d¤lÐ>Ð>Ð>Ð>rcó&—|j›d|j›dS)zName of the data directory.r!z.datar#r$s rÚdata_dirzWheelSource.data_dir+s €ðÔ#Ð9Ð9 d¤lÐ9Ð9Ð9Ð9rcó—t‚)z±Get names of all files in the dist-info directory.

        Sample usage/behaviour::

            >>> wheel_source.dist_info_filenames
            ['METADATA', 'WHEEL']
        ©ÚNotImplementedErrorr$s rÚdist_info_filenameszWheelSource.dist_info_filenames0s
€õ"Ð!rÚfilenamecó—t‚)zÚGet contents, from ``filename`` in the dist-info directory.

        Sample usage/behaviour::

            >>> wheel_source.read_dist_info("METADATA")
            ...

        :param filename: name of the file
        r))rr,s  rÚread_dist_infozWheelSource.read_dist_info;s
€õ"Ð!rcó—t‚)z¡Validate ``RECORD`` of the wheel.

        This method should be called before :py:func:`install <installer.install>`
        if validation is required.
        r)r$s rÚvalidate_recordzWheelSource.validate_recordGs
€õ"Ð!rcó—t‚)aÞSequential access to all contents of the wheel (including dist-info files).

        This method should return an iterable. Each value from the iterable must be a
        tuple containing 3 elements:

        - record: 3-value tuple, to pass to
          :py:meth:`RecordEntry.from_elements <installer.records.RecordEntry.from_elements>`.
        - stream: An :py:class:`io.BufferedReader` object, providing the contents of the
          file at the location provided by the first element (path).
        - is_executable: A boolean, representing whether the item has an executable bit.

        All paths must be relative to the root of the wheel.

        Sample usage/behaviour::

            >>> iterable = wheel_source.get_contents()
            >>> next(iterable)
            (('pkg/__init__.py', '', '0'), <...>, False)

        This method may be called multiple times. Each iterable returned must
        provide the same content upon reading from a specific file's stream.
        r)r$s rÚget_contentszWheelSource.get_contentsOs
€õ."Ð!r)rN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
ValueErrorrrr
Ú	ExceptionÚ__annotations__ÚstrrÚpropertyr%r'rr+r.r0rÚWheelContentElementr2Ú
__classcell__©rs@rrrs2ø€€€€€€ððð
3=Аh˜t IœÔ/Ð<Ð<Ñ<ð Sð°3ð¸4ðððððððð?ð?ñ„Xð?ðð:ð:ñ„Xð:ðð" T¨#¤Yð"ð"ð"ñ„Xð"ð
" sð
"¨sð
"ð
"ð
"ð
"ð"ð"ð"ð"ð"˜hÐ':Ô;ð"ð"ð"ð"ð"ð"ð"ð"rcóD‡—eZdZdZdeeddfˆfd„Zdefd„ZˆxZS)Ú_WheelFileValidationErrorz*Raised when a wheel file fails validation.ÚissuesrNcór•—t¦« t|¦«¦«||_dS©N)rrÚreprrA)rrArs  €rrz"_WheelFileValidationError.__init__ls,ø€Ý
‰Œ×ҝ˜f™œÑ&Ô&Ð&؈Œˆˆrcó—d|j›dS)Nz WheelFileValidationError(issues=ú))rAr$s rÚ__repr__z"_WheelFileValidationError.__repr__ps€ØB°$´+ÐBÐBÐBÐBr)	r3r4r5r6rr:rrGr=r>s@rr@r@isyø€€€€€Ø4Ð4ð˜t Cœyð¨TðððððððC˜#ðCðCðCðCðCðCðCðCrr@cóL‡—eZdZdZdedeededdfˆfd„Zdefd„ZˆxZS)	Ú_WheelFileBadDistInfoz8Raised when a wheel file has issues around `.dist-info`.Úreasonr,Ú	dist_inforNcót•—t¦« |¦«||_||_||_dSrC)rrrJr,rK)rrJr,rKrs    €rrz_WheelFileBadDistInfo.__init__ws4ø€Ý
‰Œ×Ò˜Ñ Ô Ð ØˆŒØ ˆŒ
Ø"ˆŒˆˆrcó6—|j›d|j›d|j›dS)Nz (filename=z, dist_info=rF©rJr,rKr$s rÚ__str__z_WheelFileBadDistInfo.__str__}s)€àŒ{ÐWÐW t¤}ÐWÐWÀDÄNÐWÐWÐWð	
r)	r3r4r5r6r:rrrOr=r>s@rrIrItsø€€€€€ØBÐBð# #ð#°¸#´ð#È3ð#ÐSWð#ð#ð#ð#ð#ð#ð
˜ð
ð
ð
ð
ð
ð
ð
ð
rrIcóø‡—eZdZdZeZdejddfˆfd„Ze	e
dddedfd„¦«¦«Ze
defd	„¦«Ze
deefd
„¦«Zdedefd„Zd
dœdeddfd„Zdeefd„ZˆxZS)rzèImplements `WheelSource`, for an existing file from the filesystem.

    Example usage::

        >>> with WheelFile.open("sampleproject-2.0.0-py3-none-any.whl") as source:
        ...     installer.install(source, destination)
    ÚfrNcóö•—||_|jsJ‚tj |j¦«}t|¦«}t
¦« |j|j	¬¦«d|_
dS)z€Initialize a WheelFile object.

        :param f: An open zipfile, which will stay open as long as this object is used.
        )rrN)Ú_zipfiler,ÚosÚpathÚbasenamerrrrrÚ_dist_info_dir)rrQrVÚparsed_namers    €rrzWheelFile.__init__Žszø€ð
ˆŒ
ØŒzÐЈzå”7×#Ò# A¤JÑ/Ô/ˆÝ*¨8Ñ4Ô4ˆÝ
‰Œ×ÒØÔ'Ø$Ô1ð	ñ	
ô	
ð	
ð.2ˆÔÐÐrrUzos.PathLike[str]c#ó~K—tj|¦«5}||¦«V—ddd¦«dS#1swxYwYdS)z%Create a wheelfile from a given path.N)ÚzipfileÚZipFile)ÚclsrUrQs   rÚopenzWheelFile.openžsŠèè€õŒ_˜TÑ
"Ô
"ð	 aؐ#a‘&”&ˆLˆLˆLð	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð	ð	s—2²6¹6c
óæ—|j|jSd„|j ¦«D¦«}d„|D¦«}	|\}nE#t$r8t	d|jjt
t|¦«¦«¬¦«d‚wxYw| dd¦«d}t|¦«}t|j
¦«}||krt	d	|jj|¬¦«‚||_|S)
r NcóF—h|]}| dd¦«d’ŒS)ú/ér)Úsplit)Ú.0rUs  rú	<setcomp>z*WheelFile.dist_info_dir.<locals>.<setcomp>«s8€ð!
ð!
ð!
Ø&*ˆDJŠJs˜AÑÔ˜qÔ!ð!
ð!
ð!
rcó<—g|]}| d¦«¯|‘ŒS)r")Úendswith)rcÚnames  rú
<listcomp>z+WheelFile.dist_info_dir.<locals>.<listcomp>®s9€ð
ð
ð
ذd·m²mÀLÑ6QÔ6Qð
Øð
ð
ð
rz6Wheel doesn't contain exactly one .dist-info directoryrNr!érz7Wheel .dist-info directory doesn't match wheel filename)rWrSÚnamelistr7rIr,r:ÚsortedÚrsplitrr)rÚtop_level_directoriesÚ
dist_infosr%Údi_dnameÚ
norm_di_dnameÚnorm_file_dnames       rr%zWheelFile.dist_info_dir¥s>€ðÔÐ*ØÔ&Ð&ð!
ð!
Ø.2¬m×.DÒ.DÑ.FÔ.Fð!
ñ!
ô!
Ðð
ð
Ø2ð
ñ
ô
ˆ
ð	Ø)Ñˆ]ˆ]øÝð	ð	ð	Ý'ØOØœÔ/ݝf ZÑ0Ô0Ñ1Ô1ðñôðð	
ð	øøøð!×'Ò'¨¨QÑ/Ô/°Ô2ˆÝ)¨(Ñ3Ô3ˆ
Ý+¨DÔ,=Ñ>Ô>ˆà˜OÒ+Ð+Ý'ØPØœÔ/Ø'ðñôð
ð,ˆÔØÐs¿AÁABcó\‡—|jŠˆfd„|j ¦«D¦«S)z2Get names of all files in the dist-info directory.có”•—g|]D}|dd…dkr4‰tj|‰g¦«k¯*|t‰¦«dzd…‘ŒES)éÿÿÿÿNr`ra)Ú	posixpathÚcommonprefixÚlen)rcrgÚbases  €rrhz1WheelFile.dist_info_filenames.<locals>.<listcomp>Îseø€ð
ð
ð
àØBCCŒy˜CÒÐØ•yÔ-¨t°T¨lÑ;Ô;Ò;Ð;ð
•T‘”˜Q‘Ô!ð<Ð;Ð;r)r%rSrj)rrxs @rr+zWheelFile.dist_info_filenamesÊsFø€ðÔ!ˆð
ð
ð
ð
àœ
×.Ò.Ñ0Ô0ð
ñ
ô
ð	
rr,có—tj|j|¦«}|j |¦« d¦«S)z;Get contents, from ``filename`` in the dist-info directory.zutf-8)ruÚjoinr%rSÚreadÚdecode)rr,rUs   rr.zWheelFile.read_dist_infoÕs:€åŒ~˜dÔ0°(Ñ;Ô;ˆØŒ}×!Ò! $Ñ'Ô'×.Ò.¨wÑ7Ô7Ð7rT)Úvalidate_contentsr}cóЗ	| d¦« ¦«}d„t|¦«D¦«}n3#t$r&}t	d|jj›d|›g¦«|‚d}~wwxYwg}|j ¦«D]Â}|jdd…dkrŒ| |jd¦«}|j	tj|j	|jg¦«krP|j d¦«ddvr.|+| 
d	|jj›d
|j›d¦«Œ«|€,| 
d	|jj›d|j›d
¦«ŒÙtj|Ž}|j|j	›dkr3|j€|j#| 
d	|jj›d¦«Œ-|j|j€+| 
d	|jj›d|j›d¦«|rZ|j |¦«}	| |	¦«s+| 
d	|jj›d|j›d¦«ŒÄ|rt	|¦«‚dS)a¤Validate ``RECORD`` of the wheel.

        This method should be called before :py:func:`install <installer.install>`
        if validation is required.

        File names will always be validated against ``RECORD``.

        If ``validate_contents`` is true, sizes and hashes of files
        will also be validated against ``RECORD``.

        :param validate_contents: Whether to validate content integrity.
        ÚRECORDcó —i|]}|d|“ŒS©r©©rcÚrecords  rú
<dictcomp>z-WheelFile.validate_record.<locals>.<dictcomp>és+€ðððØ&,q”	˜6ðððrz!Unable to retrieve `RECORD` from z: Nrtr`)z
RECORD.p7sz
RECORD.jwszIn z, digital signature file z$ is incorrectly contained in RECORD.z, z is not mentioned in RECORDz/RECORDz/, RECORD file incorrectly contains hash / size.z, hash / size of z is not included in RECORDz didn't match RECORD)r.Ú
splitlinesrr8r@rSr,ÚinfolistÚpopr%rurvrbÚappendr
Ú
from_elementsÚhash_Úsizer{Úvalidate)
rr}Úrecord_linesÚrecord_mappingÚexcrAÚitemÚrecord_argsr„Údatas
          rr0zWheelFile.validate_recordÚsü€ð	Ø×.Ò.¨xÑ8Ô8×CÒCÑEÔEˆLððÝ0AÀ,Ñ0OÔ0OðñôˆNˆNøõð	ð	ð	Ý+ØV°T´]Ô5KÐVÐVÈsÐVÐVÐWñôàð
øøøøð	øøøð
ˆà”M×*Ò*Ñ,Ô,ð+	ñ+	ˆDØŒ}˜R˜S˜SÔ! SÒ(Ð(Øà(×,Ò,¨T¬]¸DÑAÔAˆKàÔ!¥YÔ%;ØÔ# T¤]Ð3ñ&ô&òðà”-×%Ò% cÑ*Ô*¨2Ô.Ð2NÐNÐNàÐ*à—M’MðC˜dœmÔ4ðCðCÈtÌ}ðCðCðCñôððàÐ"Ø—
’
Ø^˜$œ-Ô0Ð^Ð^°D´MÐ^Ð^Ð^ñôððå Ô.°Ð<ˆFàŒ} 4Ô#5Ð >Ð >Ð >Ò>Ð>à”<Ð+¨v¬{Ð/Fà—M’MØe˜dœmÔ4ÐeÐeÐeñôðñØŒ|Ð# v¤{Ð':à—
’
Øl˜$œ-Ô0ÐlÐlÀ4Ä=ÐlÐlÐlñôðð!ð
Ø”}×)Ò)¨$Ñ/Ô/Ø—’ tÑ,Ô,ðØ—M’MØj˜dœmÔ4ÐjÐjÀtÄ}ÐjÐjÐjñôðùðð	4Ý+¨FÑ3Ô3Ð3ð	4ð	4s‚AAÁ
A3Á
!A.Á.A3c#ó*K—| d¦« ¦«}t|¦«}d„|D¦«}|j ¦«D]´}|jdd…dkrŒ| |j|jddf¦«}|jdz	}t|otj
|¦«o|dz¦«}|j |¦«5}td	|¦«}	||	|fV—ddd¦«n#1swxYwYŒµdS)
aSequential access to all contents of the wheel (including dist-info files).

        This implementation requires that every file that is a part of the wheel
        archive has a corresponding entry in RECORD. If they are not, an
        :any:`AssertionError` will be raised.
        rcó —i|]}|d|“ŒSrr‚rƒs  rr…z*WheelFile.get_contents.<locals>.<dictcomp>-s€ÐBÐBÐB°˜& œ) VÐBÐBÐBrrtNr`ÚééIr)
r.r†rrSr‡r,rˆÚ
external_attrÚboolÚstatÚS_ISREGr]r)
rrŽÚrecordsrr‘r„ÚmodeÚ
is_executableÚstreamÚ
stream_casteds
          rr2zWheelFile.get_contents#shèè€ð×*Ò*¨8Ñ4Ô4×?Ò?ÑAÔAˆÝ# LÑ1Ô1ˆØBÐB¸'ÐBÑBÔBˆà”M×*Ò*Ñ,Ô,ð	;ð	;ˆDØŒ}˜R˜S˜SÔ! SÒ(Ð(Øð$×'Ò'¨¬
¸¼
ÀrÈ2Ð7NÑOÔOˆFðÔ%¨Ñ+ˆDÝ  Ð!M­$¬,°tÑ*<Ô*<Ð!MÀÈÁÑNÔNˆMà”×#Ò# DÑ)Ô)ð
;¨VÝ $ Z°Ñ 8Ô 8
ؘm¨]Ð:Ð:Ð:Ð:ð
;ð
;ð
;ñ
;ô
;ð
;ð
;ð
;ð
;ð
;ð
;øøøð
;ð
;ð
;ð
;øð	;ð	;sÃ#DÄD	ÄD	)r3r4r5r6r@rrZr[rÚclassmethodrrr]r;r:r%rr+r.ršr0r<r2r=r>s@rrrƒsnø€€€€€ððð1Ðð2˜'œ/ð2¨dð2ð2ð2ð2ð2ð2ð ØðÐ*ð¨x¸Ô/Dðððñ„^ñ„[ðð
ð"˜sð"ð"ð"ñ„Xð"ðHð
 T¨#¤Yð
ð
ð
ñ„Xð
ð8 sð8¨sð8ð8ð8ð8ð
<@ðG4ðG4ðG4°DðG4ÀDðG4ðG4ðG4ðG4ðR;˜hÐ':Ô;ð;ð;ð;ð;ð;ð;ð;ð;r)!r6rTrur›rZÚ
contextlibrÚtypingrrrrrr	r
rÚinstaller.exceptionsrÚinstaller.recordsr
rÚinstaller.utilsrrr:ršr<Ú__all__rr7r@rIrr‚rrú<module>r©sºðØ/Ð/à	€	€	€	ØÐÐÐØ€€€Ø€€€Ø%Ð%Ð%Ð%Ð%Ð%ØRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRà/Ð/Ð/Ð/Ð/Ð/Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØCÐCÐCÐCÐCÐCÐCÐCà˜E # s¨C -Ô0°(¸DÐ@ÔAÐð˜+Ð
&€ðR"ðR"ðR"ðR"ðR"ñR"ôR"ðR"ðjCðCðCðCðC 
¨NñCôCðCð
ð
ð
ð
ð
˜J¨ñ
ô
ð
ðz;ðz;ðz;ðz;ðz;ñz;ôz;ðz;ðz;ðz;r