Ë
    tPêjÜ>  ã                  ó   — d Z ddlmZ ddlZddl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 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mZmZ ddlmZmZmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+  ejX                  e-«      Z. ej^                  dej`                  «      Z1 G d„ de«      Z2 G d„ de«      Z3 G d„ de«      Z4y)zK
Collect dependencies from one or more `requirements.txt`-formatted files.
é    )ÚannotationsN)ÚIterator)Ú	ExitStack)ÚPath)ÚNamedTemporaryFileÚTemporaryDirectory)ÚIO)ÚSpecifierSet)Úcanonicalize_name)ÚVersion)ÚInstallRequirementÚInvalidRequirementLineÚRequirementsFile)ÚDependencyFixErrorÚDependencySourceÚDependencySourceErrorÚInvalidRequirementSpecifier)ÚResolvedFixVersion)Ú
Dependency)ÚResolvedDependencyÚSkippedDependency)Ú
AuditState)Ú
VirtualEnvÚVirtualEnvErrorz==(?P<version>.+?)$c                  ó’   — e Zd ZdZdddddg  e«       dœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
	 	 	 	 	 	 dd„Zy)ÚRequirementSourcezP
    Wraps `requirements.txt` dependency resolution as a dependency source.
    FN)Úrequire_hashesÚno_depsÚdisable_pipÚskip_editableÚ	index_urlÚextra_index_urlsÚstatec               ó‚   — || _         || _        || _        || _        || _        || _        || _        || _        i | _        y)a  
        Create a new `RequirementSource`.

        `filenames` provides the list of filepaths to parse.

        `require_hashes` controls the hash policy: if `True`, dependency collection
        will fail unless all requirements include hashes.

        `disable_pip` controls the dependency resolution policy: if `True`,
        dependency resolution is not performed and the inputs are checked
        and treated as "frozen".

        `no_deps` controls whether dependency resolution can be disabled even without
        hashed requirements (which implies a fully resolved requirements file): if `True`,
        `disable_pip` is allowed without a hashed requirements file.

        `skip_editable` controls whether requirements marked as "editable" are skipped.
        By default, editable requirements are not skipped.

        `index_url` is the base URL of the package index.

        `extra_index_urls` are the extra URLs of package indexes.

        `state` is an `AuditState` to use for state callbacks.
        N)	Ú
_filenamesÚ_require_hashesÚ_no_depsÚ_disable_pipÚ_skip_editableÚ
_index_urlÚ_extra_index_urlsr#   Ú
_dep_cache)	ÚselfÚ	filenamesr   r   r   r    r!   r"   r#   s	            úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_dependency_source/requirement.pyÚ__init__zRequirementSource.__init__/   sH   € ðJ $ˆŒØ-ˆÔØˆŒØ'ˆÔØ+ˆÔØ#ˆŒØ!1ˆÔØˆŒ
Ø79ˆ�ó    c              #  ó  K  — g }g }	 | j                   D ]–  }|j                  «       rst        dd¬«      }|j                  d«      5 }t	        j
                  ||«       ddd«       |j                  «        t        |j                  «      }|j                  |«       |j                  |«       Œ˜ | j                  |«      E d{  –—†  |D ]  }|j                  «        Œ y# 1 sw Y   ŒƒxY w7 Œ(# |D ]  }|j                  «        Œ w xY w­w)z“
        Collect all of the dependencies discovered by this `RequirementSource`.

        Raises a `RequirementSourceError` on any errors.
        ÚwF)ÚmodeÚdeleteÚrN)r%   Úis_fifor   ÚopenÚshutilÚcopyfileobjÚcloser   ÚnameÚappendÚ_collect_from_filesÚunlink)r-   Úcollect_filesÚ	tmp_filesÚfilenameÚtmp_fileÚfÚts          r/   ÚcollectzRequirementSource.collect^   sÿ   è ø€ ð ˆØˆ	ð$	Ø ŸO™Oò /�ð ×#Ñ#Ô%ô
  2°sÀ5ÔI�HØ!Ÿ™ sÓ+ð 8¨qÜ×*Ñ*¨1¨hÔ7÷8ð —N‘NÔ$Ü# H§M¡MÓ2�HØ×$Ñ$ XÔ.à×$Ñ$ XÕ.ð7/ð< ×/Ñ/°Ó>×>Ð>ð ò �Ø—‘•
ñ÷8ð 8úð ?ùð ò �Ø—‘•
ñüsA   ‚Dˆ=C, ÁCÁA%C, ÃC*ÃC, ÃDÃC'	Ã#C, Ã,DÄDc           	   #  óÚ  K  — g }| j                   }|D ]¡  }t        j                  |«      }t        |j                  «      dkD  r7|j                  d   }t        d|› d|j                  › d|j                  › �«      ‚|xs t        d„ |j                  D «       «      }|j                  |j                  «       Œ£ | j                  r=| j                  s|st        d«      ‚| j                  t        |«      |«      E d {  –—†  y g }| j                   r|j!                  d«       |D ]  }|j                  dt#        |«      g«       Œ  t%        || j&                  | j(                  | j*                  «      }	 t-        «       5 }	|j/                  |	«       d d d «       |j2                  D ]  \  }}t5        ||¬	«      –— Œ y 7 Œ¼# 1 sw Y   Œ/xY w# t0        $ r}
t        t#        |
«      «      |
‚d }
~
ww xY w­w)
Nr   úrequirement file z$ contains invalid specifier at line ú: c              3  ó4   K  — | ]  }|j                   –— Œ y ­w)N)Úhash_options)Ú.0Úreqs     r/   ú	<genexpr>z8RequirementSource._collect_from_files.<locals>.<genexpr>›   s   è ø€ Ò2_È°3×3CÕ3CÑ2_ùs   ‚zsthe --disable-pip flag can only be used with a hashed requirements files or if the --no-deps flag has been providedz--require-hashesz-r)r<   Úversion)r&   r   Ú	from_fileÚlenÚinvalid_linesr   Úline_numberÚerror_messageÚanyÚrequirementsÚextendr(   r'   ÚRequirementSourceErrorÚ_collect_preresolved_depsÚiterr=   Ústrr   r*   r+   r#   r   Úcreater   Úinstalled_packagesr   )r-   r.   Úreqsr   rB   ÚrfÚinvalidÚve_argsÚveÚve_dirÚexcr<   rO   s                r/   r>   z%RequirementSource._collect_from_files�   sÝ  è ø€ à)+ˆØ#×3Ñ3ˆØ!ò 	)ˆHÜ!×+Ñ+¨HÓ5ˆBÜ�2×#Ñ#Ó$ qÒ(Ø×*Ñ*¨1Ñ-�Ü1Ø'¨ zð 2Ø#×/Ñ/Ð0°°7×3HÑ3HÐ2IðKóð ð ,Ò_¬sÑ2_ÈrÏÉÔ2_Ó/_ˆNØ�K‰K˜Ÿ™Õ(ð	)ð  ×ÒØ—=’=©Ü,ð>óð ð ×5Ñ5´d¸4³jÀ.ÓQ×QÐQØàˆØ×ÒØ�N‰NÐ-Ô.Ø!ò 	2ˆHØ�N‰N˜D¤# h£-Ð0Õ1ð	2ô ˜ §¡°$×2HÑ2HÈ$Ï*É*ÓUˆð	<Ü#Ó%ð "¨Ø—	‘	˜&Ô!÷"ð  ×2Ñ2ò 	A‰MˆD�'Ü$¨$¸Ô@Ó@ñ	Að% Rø÷"ð "ûäò 	<Ü(¬¨S«Ó2¸Ð;ûð	<üsO   ‚C8G+Ã:F7Ã;A3G+Å/
G Å9F9ÆG Æ%G+Æ9GÆ>G Ç	G(ÇG#Ç#G(Ç(G+c                óØ  — t        «       5 }| j                  D �cg c]  }|j                  t        d¬«      «      ‘Œ }}t	        | j                  |d¬«      D ]5  \  }}|j                  d«      5 }t        j                  ||«       ddd«       Œ7 	 | j                  D ]k  }| j                  j                  d|j                  j                  › d|j                  j                  › d	|j                  › d
�«       | j                  ||«       Œm 	 ddd«       yc c}w # 1 sw Y   ŒËxY w# t        $ r0}t        j!                  d|› �«       | j#                  |«       |‚d}~ww xY w# 1 sw Y   yxY w)zJ
        Fixes a dependency version for this `RequirementSource`.
        zr+)r4   T©Ústrictr6   NzFixing dependency z (z => ú)zJencountered an exception while applying fixes, recovering original files: )r   r%   Úenter_contextr   Úzipr8   r9   r:   r#   Úupdate_stateÚdepr<   rO   Ú	_fix_fileÚ	ExceptionÚloggerÚwarningÚ_recover_files)	r-   Úfix_versionÚstackÚ_rA   rB   rC   rD   Úes	            r/   ÚfixzRequirementSource.fix¼   si  € ô ‹[ð 	˜Eð MQÏOÉOö(ØGH�×#Ñ#Ô$6¸DÔ$AÕBð(ˆIð (ô '*¨$¯/©/¸9ÈTÔ&Rò 4Ñ"�˜(Ø—]‘] 3Ó'ð 4¨1Ü×&Ñ& q¨(Ô3÷4ð 4ð4ðà $§¡ò :�HØ—J‘J×+Ñ+Ø,¨[¯_©_×-AÑ-AÐ,BÀ"À[Ç_Á_×E\ÑE\ÐD]Ð]aØ&×.Ñ.Ð/¨qð2ôð —N‘N 8¨[Õ9ñ:÷	ð 	ùò(÷4ð 4ûô ò Ü—‘Ø`ÐabÐ`cÐdôð ×#Ñ# IÔ.Ø�ûðú÷%	ð 	úsR   ‹E š"D¼1E Á-DÂ
E ÂA:D$ÄE ÄD!ÄE Ä$	EÄ-+EÅEÅE Å E)c           	     ó   — t        t        j                  |j                  «       ¬«      «      }i }|D ]Ù  }t	        |t
        «      r�|j                  �|j                  j                  «       rw|j                  �k|j                  |j                  «      }|s|j                  ||j                  <   Œ|||j                  k7  sŒŒt        d|j                  › dt        |«      › �«      ‚t	        |t        «      sŒÁt        d|› dt        |«      › �«      ‚ |j                  d«      5 }d}|D ]Ö  }t	        |t
        «      r©t!        |j                  «      |j"                  j$                  k(  r}d}|j                  j'                  |j"                  j(                  «      rL|j                  j'                  |j(                  «      s't+        d	|j(                  › �«      |j                  _        t-        |j/                  «       |¬
«       ŒØ |slt0        j3                  d|› d|j"                  j$                  › �«       t-        d|¬
«       t-        |j"                  j$                  › d	|j(                  › �|¬
«       d d d «       y # 1 sw Y   y xY w)N)rB   úpackage ú has duplicate requirements: rH   z has invalid requirement: r3   FTz==)Úfilez:added fixed subdependency explicitly to requirements file rI   z/    # pip-audit: subdependency explicitly fixed)Úlistr   ÚparseÚas_posixÚ
isinstancer   ÚmarkerÚevaluaterM   Úgetr<   Ú	specifierÚRequirementFixErrorr[   r   r8   r   rl   Úcanonical_nameÚcontainsrO   r
   ÚprintÚdumpsro   rp   )	r-   rB   rr   r^   Úreq_specifiersrM   Úduplicate_req_specifierrD   Úfounds	            r/   rm   zRequirementSource._fix_fileÙ   s+  € ô Ô$×*Ñ*°H×4EÑ4EÓ4GÔHÓIˆð
 35ˆàò 	ˆCä˜3Ô 2Ô3Ø—Z‘ZÐ'¨3¯:©:×+>Ñ+>Ô+@Ø—G‘GÐ'à*8×*<Ñ*<¸S¿X¹XÓ*FÐ'á.Ø/2¯}©}�N 3§8¡8Ò,à,°·±Ó=Ü-Ø" 3§8¡8 *Ð,IÌ#ÈcË(ÈÐTóð ô ˜CÔ!7Õ8Ü)Ø'¨ zÐ1KÌCÐPSËHÈ:ÐVóð ð!	ð* �]‰]˜3Óð 	Z 1ØˆEØò 
+�ä˜sÔ$6Ô7Ü)¨#¯(©(Ó3°{·±×7UÑ7UÒUà �EØ—}‘}×-Ñ-Ø#Ÿ™×/Ñ/ôà!Ÿm™m×4Ñ4°[×5HÑ5HÔIÜ,8¸2¸k×>QÑ>QÐ=RÐ9SÓ,T˜Ÿ™Ô)Ü�c—i‘i“k¨Ö*ð
+ñ& Ü—‘ØPØ�j  ;§?¡?×#AÑ#AÐ"BðDôô ØEØõô ˜Ÿ™×7Ñ7Ð8¸¸;×;NÑ;NÐ:OÐPÐWXÕY÷=	Z÷ 	Zñ 	Zús   ÄEI4É4I=c                ó<  — t        | j                  |d¬«      D ]G  \  }}	 |j                  d«       |j                  d«      5 }t	        j
                  ||«       d d d «       ŒI y # 1 sw Y   ŒxY w# t        $ r"}t        j                  d|› �«       Y d }~Œ}d }~ww xY w)NTrf   r   r3   z/encountered an exception during file recovery: )	rj   r%   Úseekr8   r9   r:   rn   ro   rp   )r-   rA   rB   rC   rD   ru   s         r/   rq   z RequirementSource._recover_files  s’   € Ü"% d§o¡o°yÈÔ"Nò 		ÑˆH�hðØ—‘˜aÔ Ø—]‘] 3Ó'ð 4¨1Ü×&Ñ& x°Ô3÷4øñ		÷4ð 4ûäò ô —‘Ð!PÐQRÐPSÐTÔUÜûð	ús/    "A0ÁA$ÁA0Á$A-	Á)A0Á0	BÁ9BÂBc           	   #  ó
  K  — i }|D �]÷  }|j                   s|rt        d|j                  «       › d�«      ‚|j                  €$t	        |j
                  j                  d¬«      –— Œ_| j                  r%|j                  rt	        |j                  d¬«      –— |j                  �|j                  j                  «       sŒ·|j                  |j                  «      }|s|j                  ||j                  <   n5||j                  k7  r$t        d|j                  › dt        |«      › �«      ‚�Œ#|j                  rt	        |j                  d	¬«      –— �ŒJ|j                  s$t        d|j                  › d
t        |«      › �«      ‚t         j#                  t        |j                  «      «      }|€$t        d|j                  › dt        |«      › �«      ‚t%        |j                  t'        |j)                  d«      «      «      –— �Œú y­w)z=
        Collect pre-resolved (pinned) dependencies.
        zrequirement z does not contain a hashNz5could not deduce package version from URL requirement)r<   Úskip_reasonzrequirement marked as editablerx   ry   z?URL requirements cannot be pinned to a specific package versionz is not pinned: z$ is not pinned to an exact version: rO   )rK   rX   r‡   rM   r   Úrequirement_lineÚliner)   Úis_editabler<   r   r€   r�   r‚   r[   Úis_urlÚPINNED_SPECIFIER_REÚmatchr   r   Úgroup)r-   r^   r   rˆ   rM   r‰   Úpinned_specifiers          r/   rY   z+RequirementSource._collect_preresolved_deps'  sÓ  è ø€ ð 35ˆØó 9	_ˆCØ×#Ò#©Ü,¨|¸C¿I¹I»K¸=ÐH`Ð-aÓbÐbØ�w‰wˆô (Ø×-Ñ-×2Ñ2Ø Wôò ð Ø×"Ò" s§¢Ü'¨S¯X©XÐCcÔdÒdØ�z‰zÐ%¨c¯j©j×.AÑ.AÔ.Cð à&4×&8Ñ&8¸¿¹Ó&BÐ#á*Ø+.¯=©=�˜sŸx™xÒ(ð )¨C¯M©MÒ9Ü,Ø˜sŸx™x˜jÐ(EÄcÈ#ÃhÀZÐPóð ñ ð �zŠzÜ'ØŸ™Ø aôô ð —]’]Ü,¨|¸C¿H¹H¸:ÐEUÔVYÐZ]ÓV^ÐU_Ð-`ÓaÐaä#6×#<Ñ#<¼SÀÇÁÓ=OÓ#PÐ Ø#Ð+Ü0Ø& s§x¡x jÐ0TÔUXÐY\ÓU]ÐT^Ð_óð ô )¨¯©´7Ð;K×;QÑ;QÐR[Ó;\Ó3]Ó^Ô^ñs9	_ùs   ‚HH)r.   ú
list[Path]r   Úboolr   r˜   r   r˜   r    r˜   r!   z
str | Noner"   z	list[str]r#   r   ÚreturnÚNone)r™   úIterator[Dependency])r.   r—   r™   r›   )rr   r   r™   rš   )rB   r   rr   r   r™   rš   )rA   zlist[IO[str]]r™   rš   )r^   zIterator[InstallRequirement]r   r˜   r™   r›   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r0   rF   r>   rv   rm   rq   rY   © r1   r/   r   r   *   sÂ   „ ñð  %ØØ!Ø#Ø $Ø&(Ù&›Lñ-:àð-:ð ð	-:ð
 ð-:ð ð-:ð ð-:ð ð-:ð $ð-:ð ð-:ð 
ó-:ó^-ó^-Aó^ó:@ZóD
ð@_Ø0ð@_ØBFð@_à	ô@_r1   r   c                  ó   — e Zd ZdZy)rX   z8A requirements-parsing specific `DependencySourceError`.N©rœ   r�   rž   rŸ   r    r1   r/   rX   rX   j  s   „ ÙBàr1   rX   c                  ó   — e Zd ZdZy)rƒ   z4A requirements-fixing specific `DependencyFixError`.Nr¢   r    r1   r/   rƒ   rƒ   p  s   „ Ù>àr1   rƒ   )5rŸ   Ú
__future__r   ÚloggingÚrer9   Úcollections.abcr   Ú
contextlibr   Úpathlibr   Útempfiler   r   Útypingr	   Úpackaging.specifiersr
   Úpackaging.utilsr   Úpackaging.versionr   Úpip_requirements_parserr   r   r   Úpip_audit._dependency_sourcer   r   r   r   Úpip_audit._fixr   Úpip_audit._servicer   Úpip_audit._service.interfacer   r   Úpip_audit._stater   Úpip_audit._virtual_envr   r   Ú	getLoggerrœ   ro   ÚcompileÚVERBOSEr“   r   rX   rƒ   r    r1   r/   ú<module>r¹      s«   ðñõ #ã Û 	Û Ý $Ý  Ý ß ;Ý å -Ý -Ý %÷ñ ÷ó õ .Ý )ß NÝ 'ß >à	ˆ×	Ñ	˜8Ó	$€à �b—j‘jÐ!7¸¿¹ÓDÐ ô}_Ð(ô }_ô@
	Ð2ô 	ô	Ð,õ 	r1   