Ë
    tPêj  ã                  óv  — d Z ddlmZ ddl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mZmZ dd	lmZ  ej(                  e«      Z ed
¬«       G d„ d«      «       Z ed
¬«       G d„ de«      «       Z ed
¬«       G d„ de«      «       Z e«       f	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Z G d„ de«      Zy)z=
Functionality for resolving fixed versions of dependencies.
é    )ÚannotationsN)ÚIterator)Ú	dataclass)ÚAnyÚcast)ÚVersion)Ú
DependencyÚResolvedDependencyÚVulnerabilityResultÚVulnerabilityService)Ú
AuditStateT)Úfrozenc                  ó,   — e Zd ZU dZded<   dd„Zdd„Zy)	Ú
FixVersionzh
    Represents an abstract dependency fix version.

    This class cannot be constructed directly.
    r
   Údepc                ó   — t         ‚)z7
        A stub constructor that always fails.
        )ÚNotImplementedError)ÚselfÚ_argsÚ_kwargss      úS/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_fix.pyÚ__init__zFixVersion.__init__#   s
   € ô "Ð!ó    c                ó&   — | j                   t        u S )zK
        Check whether the `FixVersion` was unable to be resolved.
        )Ú	__class__ÚSkippedFixVersion)r   s    r   Ú
is_skippedzFixVersion.is_skipped)   s   € ð �~‰~Ô!2Ð2Ð2r   N)r   r   r   r   ÚreturnÚNone)r   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   © r   r   r   r      s   … ñð 
Óó"ô3r   r   c                  ó   — e Zd ZU dZded<   y)ÚResolvedFixVersionz,
    Represents a resolved fix version.
    r   ÚversionN©r!   r"   r#   r$   r%   r&   r   r   r(   r(   0   s   … ñð Ôr   r(   c                  ó   — e Zd ZU dZded<   y)r   zY
    Represents a fix version that was unable to be resolved and therefore, skipped.
    ÚstrÚskip_reasonNr*   r&   r   r   r   r   9   s   … ñð Ôr   r   c              #  óF  K  — |j                  «       D ]F  \  }}|j                  «       rŒ|sŒt        t        |«      }	 t	        | |||«      }t        ||«      –— ŒH y# t        $ r8}t        |«      }t        j                  |«       t        ||«      –— Y d}~Œ†d}~ww xY w­w)z„
    Resolves a mapping of dependencies to known vulnerabilities to a series of fix versions without
    known vulnerabilities.
    N)Úitemsr   r   r
   Ú_resolve_fix_versionr(   ÚFixResolutionImpossibler,   ÚloggerÚdebugr   )ÚserviceÚresultÚstater   Úvulnsr)   Úfrir-   s           r   Úresolve_fix_versionsr9   B   s–   è ø€ ð —l‘l“nò 6‰
ˆˆUØ�>‰>ÔØÙØÜÔ% sÓ+ˆð	6Ü*¨7°C¸ÀÓFˆGÜ$ S¨'Ó2Ó2ñ6øô 'ò 	6Ü˜c›(ˆKÜ�L‰L˜Ô%Ü# C¨Ó5×5ûð	6üs.   ‚;B!¾AÁB!Á	BÁ&.BÂB!ÂBÂB!c           	     ó  ‡‡— ‰j                   Š|}|rs|j                  d‰j                  › d‰› �«       dˆˆfd„}t        |D �cg c]  } |‰|«      ‘Œ c}«      Š| j	                  t        ‰j                  ‰«      «      \  }}|rŒs‰S c c}w )NzResolving fix version for z, checking c                óœ   •— |j                   D ]  }|‰kD  sŒ	|c S  t        d‰j                  › d‰j                  › d|j                  › �«      ‚)Nzfailed to fix dependency z (z0), unable to find fix version for vulnerability )Úfix_versionsr1   Únamer)   Úid)ÚdÚvÚfix_versionÚcurrent_versionr   s      €€r   Úget_earliest_fix_versionz6_resolve_fix_version.<locals>.get_earliest_fix_versionj   s\   ø€ Ø Ÿ~™~ò '�Ø Ó0Ø&Ò&ð'ô *Ø+¨C¯H©H¨:°R¸¿¹°}ð E%Ø%&§T¡T Fð,óð r   )r?   r
   r@   r   r   r   )r)   Úupdate_stater=   ÚmaxÚqueryr
   )	r4   r   r7   r6   Úcurrent_vulnsrC   r@   Ú_rB   s	    `      @r   r0   r0   Z   s�   ù€ ð —k‘k€OØ€MÙ
Ø×ÑÐ7¸¿¹°zÀÈ_ÐL]Ð^Ô_ö	ô ÈÖWÀAÑ7¸¸QÕ?ÒWÓXˆØ"Ÿ=™=Ô);¸C¿H¹HÀoÓ)VÓWÑˆˆ=ò ð Ðùò Xs   ÁBc                  ó   — e Zd ZdZy)r1   zf
    Raised when `resolve_fix_versions` fails to find a fix version without known vulnerabilities
    N)r!   r"   r#   r$   r&   r   r   r1   r1   y   s   „ ñð 	r   r1   )r4   r   r5   z+dict[Dependency, list[VulnerabilityResult]]r6   r   r   zIterator[FixVersion])
r4   r   r   r
   r7   zlist[VulnerabilityResult]r6   r   r   r   )r$   Ú
__future__r   ÚloggingÚcollections.abcr   Údataclassesr   Útypingr   r   Úpackaging.versionr   Úpip_audit._servicer	   r
   r   r   Úpip_audit._stater   Ú	getLoggerr!   r2   r   r(   r   r9   r0   Ú	Exceptionr1   r&   r   r   ú<module>rT      s  ðñõ #ã Ý $Ý !ß å %÷ó õ (à	ˆ×	Ñ	˜8Ó	$€ñ �$Ô÷3ð 3ó ð3ñ, �$Ôô˜ó ó ðñ �$Ôô˜
ó ó ðñ #›ð6Ø!ð6à7ð6ð ð6ð ó	6ð0Ø!ðà	ðð %ðð ð	ð
 óô>	˜iõ 	r   