§ |<ˆj¬ãóv—dZddlZddlZddlmZddlmZddlmZddl m Z d„Z d„Z d „Z Gd „d ¦«ZdS) aF This module represents the various types of requirement that can be specified for a project. It is somewhat redundant to re-implement here as we could use `pip.req.InstallRequirement`, but that would require depending on pip which is not easy to do since it will usually be installed by the user at a specific version. Additionally, the pip implementation has a lot of extra features that we don't need - we don't expect relative file paths to exist, for example. Note that the parsing here is also intentionally more lenient - it is not our job to validate the requirements list. éN)ÚPath)ÚOptional)Úparse)Ú RequirementcóR—tjj|vp| d¦«S)Nú.)ÚosÚpathÚsepÚ startswith)Úreqs ús/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/requirements_detector/requirement.pyÚ _is_filepathrs"€å Œ7Œ;˜#Ð Ð 4 §¢°Ñ!4Ô!4Ð4ócó^—d|vrdStj|¦«}d|vrdS|ddS)zs >>> _parse_egg_name('egg=fish&cake=lala') fish >>> _parse_egg_name('something_spurious') None ú=NÚeggr)rÚparse_qs)Ú url_fragmentÚpartss rÚ_parse_egg_namersA€ð �,ÐÐØˆtÝ ŒN˜<Ñ (Ô (€EØ �EÐÐØˆtØ �Œ<˜Œ?Ðrcól—|j|j|j|j|jdf}t j|¦«S©N)ÚschemeÚnetlocr ÚparamsÚqueryrÚ urlunparse)ÚurlpartsÚ new_urlpartss rÚ_strip_fragmentr!(s8€àŒØŒØŒ ØŒØŒØ ð €Lõ Ô ˜LÑ )Ô )Ð)rc óŽ—eZdZ ddedededefd„Zdefd„Zdefd „Zd „Z d „Z d „Z d „Z d„Z eddededfd„¦«ZdS)ÚDetectedRequirementNÚnameÚurlÚ requirementÚlocation_definedcó²—|�1|j|_||_d„|jD¦«|_d|_n||_g|_||_d|_||_dS)Ncó*—g|]}|j|jf‘ŒS©)ÚoperatorÚversion)Ú.0Úss rú z0DetectedRequirement.__init__..;s!€Ð!YÐ!YÐ!Y¸a 1¤:¨q¬yÐ"9Ð!YÐ!YÐ!Yr)r$r&Ú specifierÚ version_specsr%r')Úselfr$r%r&r's rÚ__init__zDetectedRequirement.__init__5sj€ð Ð "Ø#Ô(ˆDŒIØ*ˆDÔ Ø!YÐ!YÀ;ÔCXÐ!YÑ!YÔ!YˆDÔ ØˆDŒHˆHàˆDŒIØ!#ˆDÔ ØˆDŒHØ#ˆDÔ Ø 0ˆÔÐÐrÚreturncóJ—d d„|jD¦«¦«S)Nú,có —g|] \}}|›|›�‘Œ Sr*r*)r-Úcompr,s rr/z5DetectedRequirement._format_specs..Es%€ÐZÐZÐZ±m°d¸G 4 4¨¨Ð1ÐZÐZÐZr)Újoinr1©r2s rÚ _format_specsz!DetectedRequirement._format_specsDs&€Ø�xŠxÐZÐZÀtÔGYÐZÑZÔZÑ[Ô[Ð[rcóØ—|jr|jr|j›d|j›�S|jS|jr+|jr|j›| ¦«›�S|jSt d|›d�¦«‚)Nz#egg=zCannot convert z to pip format, no name or URL)r%r$r1r;Ú ValueErrorr:s rÚ pip_formatzDetectedRequirement.pip_formatGsˆ€Ø Œ8ð ØŒyð ;Ø&*¤h h h°´ ° Ð:Ð:Ø”8ˆOØ Œ9ð ØÔ!ð BØ!%¤ ¨D×,>Ò,>Ñ,@Ô,@Ð,@ÐAÐAØ”9Ð ÝÐO¨4ÐOÐOÐOÑPÔPÐPrcó¢—|jpd}|jr*d d„|jD¦«¦«}|›|›�}|jr |›d|j›d�}|S)NÚUnknownr6có —g|] \}}|›|›�‘Œ Sr*r*)r-r8Úvers rr/z/DetectedRequirement.__str__..Us%€ÐWÐWÐW±y°t¸S¨¨¨c¨cÐ2ÐWÐWÐWrz (ú))r$r1r9r%)r2ÚrepÚspecss rÚ__str__zDetectedRequirement.__str__Rsm€ØŒiÐ$˜9ˆØ Ô ð (Ø—H’HÐWÐWÀDÔDVÐWÑWÔWÑXÔXˆEؘC  Ð'ˆCØ Œ8ð .Ø"˜s˜s D¤H H HÐ-ˆC؈ rcó˜—tt|j¦«t|j¦«zt|j¦«z¦«Sr)ÚhashÚstrr$r%r1r:s rÚ__hash__zDetectedRequirement.__hash__[s5€Ý•C˜œ ‘N”N¥S¨¬¡]¤]Ñ2µS¸Ô9KÑ5LÔ5LÑLÑMÔMÐMrcó&—dt|¦«zS)Nz)rIr:s rÚ__repr__zDetectedRequirement.__repr__^s€Ø)­C°©I¬IÑ5Ð5rcób—|j|jko|j|jko|j|jkSr)r$r%r1©r2Úothers rÚ__eq__zDetectedRequirement.__eq__as0€ØŒy˜EœJÒ&Ðn¨4¬8°u´yÒ+@ÐnÀTÔEWÐ[`Ô[nÒEnÐnrcó*—|jpd|jpdkS)NÚ)r$rNs rÚ__gt__zDetectedRequirement.__gt__ds€Ø” �˜R E¤JÐ$4°"Ò5Ð5rcó6—| ¦«}| d¦«rdStjd|¦«}|r|d| ¦«…}tjdd|¦«}| d¦«d}tj|¦«}d}d|j vs |j dvrW|j d krd }n|j }tjtjd tj |j ¦«zd|¦«¦«}|€L|j dkrAt|¦«s2 t|¦«}t||¬ ¦«S#t$rYdSwxYwt|j¦«}t#|¦«}|r|›d |›�}t|||¬¦«S)Nz--hash=sha256:z\s#z^(-e|--editable) rRú;rú+)ÚgitrWzgit+gitz^%s://)r&r'z://)r$r%r')Ústripr ÚreÚsearchÚstartÚsubÚsplitrÚurlparserÚescaperrr#r=rÚfragmentr!)Úliner'Ú comment_posr%Ú vcs_schemer r$s rrzDetectedRequirement.parsegs¾€ð�zŠz‰|Œ|ˆà �?Š?Ð+Ñ ,Ô ,ð à�4õ”i ¨Ñ-Ô-ˆ Ø ð /ØÐ-˜+×+Ò+Ñ-Ô-Ð-Ô.ˆDõŒvÐ)¨2¨tÑ4Ô4ˆð�zŠz˜#‰Œ˜qÔ!ˆåŒn˜TÑ"Ô"ˆðˆ Ø �#”*Ð Ð  ¤ ¨hÐ 6Ð 6ØŒz˜UÒ"Ð"Ø&� � à œZ� Ý”.¥¤¨ µB´I¸c¼jÑ4IÔ4IÑ(IÈ2ÈtÑ!TÔ!TÑUÔUˆCà Ð  #¤*°Ò"2Ð"2½<ÈÑ;MÔ;MÐ"2ð _Ý! $Ñ'Ô'�õ +°sÐM]Ð^Ñ^Ô^Ð^øõ ð ð ð à�t�tð øøøõ˜sœ|Ñ,Ô,ˆÝ˜cÑ"Ô"ˆà ð 0Ø)˜z˜z¨3¨3Ð/ˆCå"¨°#ÐHXÐYÑYÔYÐYsÄ,E Å EÅE)NNNNr)Ú__name__Ú __module__Ú __qualname__rIrrr3r;r>rFrJrLrPrSÚ staticmethodrrr*rrr#r#4s#€€€€€àkoð 1ð 1Øð 1Ø%(ð 1Ø>Ið 1Ødhð 1ð 1ð 1ð 1ð\˜sð\ð\ð\ð\ð Q˜Cð Qð Qð Qð QððððNðNðNð6ð6ð6ðoðoðoð6ð6ð6ðð9Zð9Z dð9Z°hÐ?TÔ6Uð9Zð9Zð9Zñ„\ð9Zð9Zð9Zrr#)Ú__doc__r rYÚpathlibrÚtypingrÚurllibrÚpackaging.requirementsrrrr!r#r*rrúrmsÞðð ð ð € € € Ø € € € ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐà.Ð.Ð.Ð.Ð.Ð.ð5ð5ð5ð ð ð ð *ð *ð *ðmZðmZðmZðmZðmZñmZômZðmZðmZðmZr