Ë
    tPêjJ  ã                  ó‚   — d 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 ddlmZ ddlmZmZmZ dd	„Z G d
„ de«      Zy)zI
Functionality for formatting vulnerability results as a Markdown table.
é    )Úannotations)Údedent)Úcast)ÚVersionNé   )ÚVulnerabilityFormatÚpypi_urlÚvuln_id_urlc                ó   — d| › d|› d�S )zReturn a Markdown link.ú[z](ú)© )ÚtextÚurls     ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_format/markdown.pyÚ_md_linkr      s   € àˆtˆf�B�s�e˜1ÐÐó    c                  ó’   — e Zd ZdZdd„Zedd„«       Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Z	dd„Z
dd„Z	 	 	 	 dd	„Zdd
„Zy)ÚMarkdownFormatzx
    An implementation of `VulnerabilityFormat` that formats vulnerability results as a set of
    Markdown tables.
    c                ó    — || _         || _        y)a…  
        Create a new `MarkdownFormat`.

        `output_desc` is a flag to determine whether descriptions for each vulnerability should be
        included in the output as they can be quite long and make the output difficult to read.

        `output_aliases` is a flag to determine whether aliases (such as CVEs) for each
        vulnerability should be included in the output.
        N)Úoutput_descÚoutput_aliases)Úselfr   r   s      r   Ú__init__zMarkdownFormat.__init__   s   € ð 'ˆÔØ,ˆÕr   c                 ó   — y)z8
        See `VulnerabilityFormat.is_manifest`.
        Fr   )r   s    r   Úis_manifestzMarkdownFormat.is_manifest*   s   € ð
 r   c                óh   — | j                  ||«      }| j                  |«      }|r|r|dz  }||z  }|S )z|
        Returns a Markdown formatted string representing a set of vulnerability results and applied
        fixes.
        ú
)Ú_format_vuln_resultsÚ_format_skipped_deps)r   ÚresultÚfixesÚoutputÚskipped_deps_outputs        r   ÚformatzMarkdownFormat.format1   sH   € ð ×*Ñ*¨6°5Ó9ˆØ"×7Ñ7¸Ó?ÐÙñ Ø˜$‘�ØÐ)Ñ)ˆFØˆr   c                óÈ  ‡— d}d}|r
|dz  }|dz  }| j                   r
|dz  }|dz  }| j                  r
|dz  }|dz  }|j                  «       D �‡��cg c]Z  \  Š}‰j                  «       sE|D ]@  }| j	                  t        t        j                  ‰«      |t        ˆfd„|D «       d «      «      ‘ŒB Œ\ }}}}|syt        d	|› d	|› d	�«      d
j                  |«      z   S c c}}}w )Nz"Name | Version | ID | Fix Versionsz--- | --- | --- | ---z | Applied Fixz | ---z
 | Aliasesz | Descriptionc              3  óB   •K  — | ]  }|j                   ‰k(  sŒ|–— Œ y ­w©N)Údep)Ú.0Úfr)   s     €r   ú	<genexpr>z6MarkdownFormat._format_vuln_results.<locals>.<genexpr>Y   s   øè ø€ Ò7˜A¨!¯%©%°3«,”aÑ7ùs   ƒ˜Ú ú
            r   )r   r   ÚitemsÚ
is_skippedÚ_format_vulnr   ÚserviceÚResolvedDependencyÚnextr   Újoin)	r   r!   r"   ÚheaderÚborderr)   ÚvulnsÚvulnÚ	vuln_rowss	        `   r   r   z#MarkdownFormat._format_vuln_resultsD   s,  ø€ ð
 6ˆØ(ˆÙØÐ&Ñ&ˆFØ�hÑˆFØ×ÒØ�lÑ"ˆFØ�hÑˆFØ×ÒØÐ&Ñ&ˆFØ�hÑˆFð %Ÿl™l›n÷	
ñ 	
ñ ��UØ—>‘>Ô#Øò	
ð ð ×ÑÜ”W×/Ñ/°Ó5ØÜÓ7 Ô7¸Ó>õð	
ðð	
ˆ	ò 	
ñ ØäðØˆHð ØˆHð ðó
ð
 �I‰I�iÓ ñ!ð 	!ùô	
s   ÁACc           	     óä  — t        |j                  t        |j                  «      «      }t        |j                  t	        |j                  «      «      }|› d|j
                  › d|› d| j                  |j                  «      › �}|�|d| j                  |«      › �z  }| j                  r*dj                  d„ |j                  D «       «      }|d|› �z  }| j                  r|d|j                  › �z  }|S )Nú | z, c              3  óF   K  — | ]  }t        |t        |«      «      –— Œ y ­wr(   )r   r
   )r*   Úas     r   r,   z.MarkdownFormat._format_vuln.<locals>.<genexpr>y   s   è ø€ Ò&YÀq¤x°´;¸q³>×'BÑ&Yùs   ‚!)r   Úcanonical_namer	   Úidr
   ÚversionÚ_format_fix_versionsÚfix_versionsÚ_format_applied_fixr   r5   Úaliasesr   Údescription)r   r)   r9   Úapplied_fixÚ	name_linkÚid_linkÚ	vuln_textÚlinked_aliasess           r   r1   zMarkdownFormat._format_vulnj   sñ   € ô ˜S×/Ñ/´¸#×:LÑ:LÓ1MÓNˆ	Ü˜4Ÿ7™7¤K°·±Ó$8Ó9ˆàˆk˜˜SŸ[™[˜M¨¨W¨I°SØ×(Ñ(¨×):Ñ):Ó;Ð<ð>ð 	ð Ð"Ø˜3˜t×7Ñ7¸ÓDÐEÐFÑFˆIØ×ÒØ!ŸY™YÑ&YÈDÏLÉLÔ&YÓYˆNØ˜3˜~Ð.Ð/Ñ/ˆIØ×ÒØ˜3˜t×/Ñ/Ð0Ð1Ñ1ˆIØÐr   c                ó\   — dj                  |D �cg c]  }t        |«      ‘Œ c}«      S c c}w )Nú,)r5   Ústr)r   rC   rA   s      r   rB   z#MarkdownFormat._format_fix_versions   s#   € Ø�x‰x°\ÖB¨'œ˜W�ÒBÓCÐCùÒBs   �)c                ó€  — |j                  «       rWt        t        j                  |«      }d|j                  j
                  › d|j                  j                  › d|j                  › �S t        t        j                  |«      }d|j                  j
                  › d|j                  j                  › d|j                  › d�S )NzFailed to fix z (z): zSuccessfully upgraded z => r   )	r0   r   ÚfixÚSkippedFixVersionr)   r?   rA   Úskip_reasonÚResolvedFixVersion)r   rG   s     r   rD   z"MarkdownFormat._format_applied_fix‚   s±   € Ø×!Ñ!Ô#Üœs×4Ñ4°kÓBˆKà  §¡×!?Ñ!?Ð @ÀÀ;Ç?Á?×CZÑCZÐB[Ð[^Ø×*Ñ*Ð+ð-ðô œ3×1Ñ1°;Ó?ˆà$ [§_¡_×%CÑ%CÐ$DÀBÀ{ÇÁ×G^ÑG^ÐF_ð `Ø×%Ñ%Ð& að)ð	
r   c                ó  — d}d}g }|j                  «       D ]M  }|j                  «       sŒt        t        j                  |«      }|j                  | j                  |«      «       ŒO |syt        d|› d|› d�«      dj                  |«      z   S )NzName | Skip Reasonz	--- | ---r-   r.   r   )	Úkeysr0   r   r2   ÚSkippedDependencyÚappendÚ_format_skipped_depr   r5   )r   r!   r6   r7   Úskipped_dep_rowsr)   s         r   r    z#MarkdownFormat._format_skipped_deps�   s§   € ð &ˆØˆà&(ÐØ—;‘;“=ò 	GˆCØ�~‰~ÕÜœ7×4Ñ4°cÓ:�Ø ×'Ñ'¨×(@Ñ(@ÀÓ(EÕFð	Gñ
  ØäðØˆHð ØˆHð ðó
ð
 �I‰IÐ&Ó'ñ(ð 	(r   c                ó8   — |j                   › d|j                  › �S )Nr<   )ÚnamerR   )r   r)   s     r   rX   z"MarkdownFormat._format_skipped_dep¥   s   € Ø—(‘(�˜3˜sŸ™Ð/Ð0Ð0r   N)r   Úboolr   r\   ÚreturnÚNone)r]   r\   )r!   ú;dict[service.Dependency, list[service.VulnerabilityResult]]r"   zlist[fix.FixVersion]r]   rN   )r)   zservice.ResolvedDependencyr9   zservice.VulnerabilityResultrG   zfix.FixVersion | Noner]   rN   )rC   zlist[Version]r]   rN   )rG   zfix.FixVersionr]   rN   )r!   r_   r]   rN   )r)   zservice.SkippedDependencyr]   rN   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r%   r   r1   rB   rD   r    rX   r   r   r   r   r      s³   „ ñó
-ð òó ððàKðð $ðð 
ó	ð&$!àKð$!ð $ð$!ð 
ó	$!ðLà'ðð *ðð +ð	ð
 
óó*Dó
ð(ØQð(à	ó(ô,1r   r   )r   rN   r   rN   r]   rN   )rc   Ú
__future__r   Útextwrapr   Útypingr   Úpackaging.versionr   Úpip_audit._fixÚ_fixrP   Úpip_audit._serviceÚ_servicer2   Ú	interfacer   r	   r
   r   r   r   r   r   ú<module>rn      s8   ðñõ #å Ý å %å Ý $ç AÑ Aóô
O1Ð(õ O1r   