Ë
    tPêjô  ã                  óf   — d Z ddlmZ ddlZddlmZmZ ddlmZ	 ddl
mZ ddlmZ  G d„ de«      Zy)	zQ
Functionality for formatting vulnerability results as an array of JSON objects.
é    )ÚannotationsN)ÚAnyÚcasté   )ÚVulnerabilityFormatc                  ób   — 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
y)Ú
JsonFormatzx
    An implementation of `VulnerabilityFormat` that formats vulnerability results as an array of
    JSON objects.
    c                ó    — || _         || _        y)a�  
        Create a new `JsonFormat`.

        `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      ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_format/json.pyÚ__init__zJsonFormat.__init__   s   € ð 'ˆÔØ,ˆÕó    c                 ó   — y)z8
        See `VulnerabilityFormat.is_manifest`.
        T© )r   s    r   Úis_manifestzJsonFormat.is_manifest#   s   € ð
 r   c                óè   — |j                  «       D ��cg c]  \  }}| j                  ||«      ‘Œ c}}|D �cg c]  }| j                  |«      ‘Œ c}dœ}t        j                  |«      S c c}}w c c}w )z¢
        Returns a JSON formatted string for a given mapping of dependencies to vulnerability
        results.

        See `VulnerabilityFormat.format`.
        )ÚdependenciesÚfixes)ÚitemsÚ_format_depÚ_format_fixÚjsonÚdumps)r   Úresultr   ÚdepÚvulnsÚfÚoutput_jsons          r   ÚformatzJsonFormat.format*   se   € ð MSÏLÉLËN×[¹j¸cÀ5˜T×-Ñ-¨c°5Õ9Ó[Ø38Ö9¨a�d×&Ñ& qÕ)Ò9ñ
ˆô �z‰z˜+Ó&Ð&ùó \ùÚ9s
   ”A)·A/c                óF  — |j                  «       r3t        t        j                  |«      }|j                  |j
                  dœS t        t        j                  |«      }|j                  t        |j                  «      |D �cg c]  }| j                  |«      ‘Œ c}dœS c c}w )N)ÚnameÚskip_reason)r#   Úversionr   )
Ú
is_skippedr   ÚserviceÚSkippedDependencyÚcanonical_namer$   ÚResolvedDependencyÚstrr%   Ú_format_vuln)r   r   r   Úvulns       r   r   zJsonFormat._format_dep;   sŒ   € ð �>‰>ÔÜ”w×0Ñ0°#Ó6ˆCà×*Ñ*Ø"Ÿ™ñð ô
 ”7×-Ñ-¨sÓ3ˆà×&Ñ&Ü˜3Ÿ;™;Ó'Ø:?Ö@°$�d×'Ñ'¨Õ-Ò@ñ
ð 	
ùò As   ÂBc                óî   — |j                   |j                  D �cg c]  }t        |«      ‘Œ c}dœ}| j                  rt	        |j
                  «      |d<   | j                  r|j                  |d<   |S c c}w )N)ÚidÚfix_versionsÚaliasesÚdescription)r/   r0   r+   r   Úlistr1   r   r2   )r   r-   r%   Ú	vuln_jsons       r   r,   zJsonFormat._format_vulnL   sk   € à—'‘'Ø9=×9JÑ9JÖK¨gœS �\ÒKñ
ˆ	ð ×ÒÜ#'¨¯©Ó#5ˆI�iÑ Ø×ÒØ'+×'7Ñ'7ˆI�mÑ$ØÐùò Ls   šA2c                ó   — |j                  «       r[t        t        j                  |«      }|j                  j
                  t        |j                  j                  «      |j                  dœS t        t        j                  |«      }|j                  j
                  t        |j                  j                  «      t        |j                  «      dœS )N)r#   r%   r$   )r#   Úold_versionÚnew_version)
r&   r   ÚfixÚSkippedFixVersionr   r)   r+   r%   r$   ÚResolvedFixVersion)r   Úfix_versions     r   r   zJsonFormat._format_fixW   s�   € Ø×!Ñ!Ô#Üœs×4Ñ4°kÓBˆKà#Ÿ™×6Ñ6Ü˜{Ÿ™×6Ñ6Ó7Ø*×6Ñ6ñð ô
 œ3×1Ñ1°;Ó?ˆà—O‘O×2Ñ2Ü˜{Ÿ™×6Ñ6Ó7Ü˜{×2Ñ2Ó3ñ
ð 	
r   N)r   Úboolr   r<   )Úreturnr<   )r   z;dict[service.Dependency, list[service.VulnerabilityResult]]r   zlist[fix.FixVersion]r=   r+   )r   zservice.Dependencyr   z!list[service.VulnerabilityResult]r=   údict[str, Any])r-   zservice.VulnerabilityResultr=   r>   )r;   zfix.FixVersionr=   r>   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r!   r   r,   r   r   r   r   r	   r	      sh   „ ñó
-ð òó ðð'àKð'ð $ð'ð 
ó	'ð"
Ø%ð
Ø.Oð
à	ó
ó"	ô
r   r	   )rB   Ú
__future__r   r   Útypingr   r   Úpip_audit._fixÚ_fixr8   Úpip_audit._serviceÚ_servicer'   Ú	interfacer   r	   r   r   r   ú<module>rK      s-   ðñõ #ã ß å Ý $å *ôT
Ð$õ T
r   