Ë
    tPêj÷  ã                  óÒ   — d Z ddlm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 ddlmZmZ ddlmZ ddlmZ d	d
lmZ  ej0                  e«      Z	 	 	 	 dd„Z G d„ de«      Zy)zU
Functionality for formatting vulnerability results using the CycloneDX SBOM format.
é    )ÚannotationsN)Úcast)Úoutput)ÚBom)Ú	Component)Ú	BomTargetÚVulnerabilityé   )ÚVulnerabilityFormatc                óÖ  — g }g }| j                  «       D ]Á  \  }}|j                  «       rŒt        t        j                  |«      }t        |j                  t        |j                  «      ¬«      }|D �cg c]:  }t        |j                  |j                  dt        |j                  ¬«      g¬«      ‘Œ< }}|j                  |«       |j                  |«       ŒÃ t!        ||¬«      S c c}w )N)ÚnameÚversionÚUpgrade)Úref)ÚidÚdescriptionÚrecommendationÚaffects)Ú
componentsÚvulnerabilities)ÚitemsÚ
is_skippedr   ÚserviceÚResolvedDependencyr   r   Ústrr   r	   r   r   r   Úbom_refÚextendÚappendr   )Úresultr   r   ÚdepÚvulnsÚcÚvulnÚ	vuln_lists           ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pip_audit/_format/cyclonedx.pyÚ_pip_audit_result_to_bomr&      sÛ   € ð €OØ€Jà—l‘l“nò ‰
ˆˆUð �>‰>ÔØÜ”7×-Ñ-¨sÓ3ˆä˜3Ÿ8™8¬S°·±Ó-=Ô>ˆð ö	
ð ô Ø—7‘7Ø ×,Ñ,Ø(ä" q§y¡yÔ1Ð2öð	
ˆ	ð 	
ð 	×Ñ˜yÔ)Ø×Ñ˜!Õð'ô* ˜*°oÔFÐFùò	
s   Á4?C&c                  ó†   — e Zd ZdZej
                   G d„ dej                  «      «       Zdd„Ze	d	d„«       Z
	 	 	 	 	 	 d
d„Zy)ÚCycloneDxFormatz³
    An implementation of `VulnerabilityFormat` that formats vulnerability results using CycloneDX.
    The container format used by CycloneDX can be additionally configured.
    c                  óh   — e Zd ZdZej
                  j                  Zej
                  j                  Z	y)úCycloneDxFormat.InnerFormatz8
        Valid container formats for CycloneDX.
        N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚOutputFormatÚJSONÚJsonÚXMLÚXml© ó    r%   ÚInnerFormatr*   <   s+   „ ñ	ð ×"Ñ"×'Ñ'ˆØ×!Ñ!×%Ñ%‰r5   r6   c                ó   — || _         y)z|
        Create a new `CycloneDxFormat`.

        `inner_format` determines the container format used by CycloneDX.
        N)Ú_inner_format)ÚselfÚinner_formats     r%   Ú__init__zCycloneDxFormat.__init__E   s   € ð *ˆÕr5   c                 ó   — y)z8
        See `VulnerabilityFormat.is_manifest`.
        Tr4   )r9   s    r%   Úis_manifestzCycloneDxFormat.is_manifestN   s   € ð
 r5   c                óî   — |rt         j                  d«       t        |«      }t        j                  || j
                  j                  t        j                  j                  ¬«      }|j                  «       S )z§
        Returns a CycloneDX formatted string for a given mapping of dependencies to vulnerability
        results.

        See `VulnerabilityFormat.format`.
        z0--fix output is unsupported by CycloneDX formats)ÚbomÚoutput_formatÚschema_version)
ÚloggerÚwarningr&   r   Úmake_outputterr8   ÚvalueÚSchemaVersionÚV1_4Úoutput_as_string)r9   r   Úfixesr?   Ú	formatters        r%   ÚformatzCycloneDxFormat.formatU   s`   € ñ Ü�N‰NÐMÔNä& vÓ.ˆÜ×)Ñ)ØØ×,Ñ,×2Ñ2Ü!×/Ñ/×4Ñ4ô
ˆ	ð ×)Ñ)Ó+Ð+r5   N)r:   r*   )ÚreturnÚbool)r   ú;dict[service.Dependency, list[service.VulnerabilityResult]]rI   zlist[fix.FixVersion]rL   r   )r+   r,   r-   r.   ÚenumÚuniqueÚEnumr6   r;   Úpropertyr=   rK   r4   r5   r%   r(   r(   6   sd   „ ñð
 
‡[�[ô&�d—i‘ió &ó ð&ó*ð òó ðð,àKð,ð $ð,ð 
ô	,r5   r(   )r   rN   rL   r   )r.   Ú
__future__r   rO   ÚloggingÚtypingr   Ú	cyclonedxr   Úcyclonedx.model.bomr   Úcyclonedx.model.componentr   Úcyclonedx.model.vulnerabilityr   r	   Úpip_audit._fixÚ_fixÚfixÚpip_audit._serviceÚ_servicer   Ú	interfacer   Ú	getLoggerr+   rB   r&   r(   r4   r5   r%   ú<module>ra      sd   ðñõ #ã Û Ý å Ý #Ý /ß Bå Ý $å *à	ˆ×	Ñ	˜8Ó	$€ðGØGðGàóGô<4,Ð)õ 4,r5   