Ë
    sPêj   ã            
       óÊ  — d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZ ej                  dk\  rddlmZ nddlmZ dd	lmZ dd
lmZmZ e	rddlmZ ddlmZ ddlmZ   G d„ de«      Z!edddeejD                     deddfd„«       Z#edddeejH                     deddfd„«       Z#edddededed   fd„«       Z#dddedede!fd„Z# ed«       G d„ de«      «       Zy) z¼
Set of classes and methods for outputting our libraries internal Bom model to CycloneDX documents in varying formats
and according to different versions of the CycloneDX schema standard.
é    N)ÚABCÚabstractmethod)ÚMapping)ÚTYPE_CHECKINGÚAnyÚLiteralÚOptionalÚUnionÚoverload)é   é   )Ú
deprecatedé   )ÚBomRefDiscriminator)ÚOutputFormatÚSchemaVersion)ÚBomé   )ÚJson)ÚXmlc                   óD  ‡ — e Zd Zdddeddfˆ fd„Zeedefd„«       «       Zeede	fd„«       «       Z
edefd	„«       Zej                  d
eddfd„«       Zdd„Zdd„Zeddeddfd„«       Zeddœdeeeef      dedefd„«       Zdddœdededeeeef      deddf
d„Zˆ xZS )Ú
BaseOutputÚbomr   ÚkwargsÚreturnNc                 ó@   •— t        ‰| �  di |¤Ž || _        d| _        y )NF© )ÚsuperÚ__init__Ú_bomÚ
_generated)Úselfr   r   Ú	__class__s      €ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/cyclonedx/output/__init__.pyr   zBaseOutput.__init__.   s!   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ	Ø %ˆ�ó    c                  ó   — y ©Nr   ©r"   s    r$   Úschema_versionzBaseOutput.schema_version3   ó   € ð 	r%   c                  ó   — y r'   r   r(   s    r$   Úoutput_formatzBaseOutput.output_format8   r*   r%   c                 ó   — | j                   S r'   ©r!   r(   s    r$   Ú	generatedzBaseOutput.generated=   s   € à�‰Ðr%   r/   c                 ó   — || _         y r'   r.   )r"   r/   s     r$   r/   zBaseOutput.generatedA   s	   € à#ˆ�r%   c                 ó   — | j                   S r'   ©r    r(   s    r$   Úget_bomzBaseOutput.get_bomE   s   € Ø�y‰yÐr%   c                 ó   — || _         y r'   r2   )r"   r   s     r$   Úset_bomzBaseOutput.set_bomH   s	   € Øˆ�	r%   Úforce_regenerationc                  ó   — y r'   r   )r"   r6   s     r$   ÚgeneratezBaseOutput.generateK   s   € àr%   ©Úindentr:   c                 ó   — y r'   r   )r"   r:   r   s      r$   Úoutput_as_stringzBaseOutput.output_as_stringO   s   € ð 	r%   ÚfilenameÚallow_overwritec                óÚ  — t         j                  j                  |«      }t         j                  j                  |«      }t        j                  |t         j
                  «      st        |«      ‚t         j                  j                  |«      r|st        |«      ‚t        |d¬«      5 }|j                  | j                  |¬«      j                  d«      «       d d d «       y # 1 sw Y   y xY w)NÚwb)Úmoder9   zutf-8)ÚosÚpathÚrealpathÚdirnameÚaccessÚW_OKÚPermissionErrorÚexistsÚFileExistsErrorÚopenÚwriter<   Úencode)r"   r=   r>   r:   r   Úoutput_filenameÚoutput_directoryÚf_outs           r$   Úoutput_to_filezBaseOutput.output_to_fileU   s±   € ô Ÿ'™'×*Ñ*¨8Ó4ˆÜŸ7™7Ÿ?™?¨?Ó;ÐÜ�y‰yÐ)¬2¯7©7Ô3Ü!Ð"2Ó3Ð3Ü�7‰7�>‰>˜/Ô*±?Ü! /Ó2Ð2Ü�/¨Ô-ð 	N°Ø�K‰K˜×-Ñ-°VÐ-Ó<×CÑCÀGÓLÔM÷	N÷ 	Nñ 	Nús   Â'1C!Ã!C*)r   r   )r   r   r   N)F)Ú__name__Ú
__module__Ú__qualname__Úintr   Úpropertyr   r   r)   r   r,   Úboolr/   Úsetterr3   r5   r8   r	   r
   Ústrr   r<   rQ   Ú__classcell__)r#   s   @r$   r   r   ,   sU  ø„ ð&˜Eð &¨Sð &°Tõ &ð
 Øð ò ó ó ðð Øð˜|ò ó ó ðð ð˜4ò ó ðð ×Ñð$ 4ð $¨Dò $ó ð$óóð ñ¨4ð ¸Dò ó ðð à=AòØ!)¨%°°S°©/Ñ!:ðà#&ðà+.òó ðð
NØ;?òN sð N¸Tð NØ'¨¨c°3¨h©Ñ8ðNà!$ðNà)-÷Nr%   r   r   r   r,   r)   r   ÚJsonOutputterc                  ó   — y r'   r   ©r   r,   r)   s      r$   Úmake_outputterr^   c   ó   € ð r%   ÚXmlOutputterc                  ó   — y r'   r   r]   s      r$   r^   r^   i   r_   r%   )r`   r[   c                  ó   — y r'   r   r]   s      r$   r^   r^   o   r_   r%   c                 óü   — t         r t        j                  |u rddlm} n't        j
                  |u rddlm} nt        d|›�«      ‚|j                  |d«      }|€t        d|j                  › d|›�«      ‚ || «      S )ap  
    Helper method to quickly get the correct output class/formatter.

    Pass in your BOM and optionally an output format and schema version (defaults to XML and latest schema version).


    Raises error when no instance could be made.

    :param bom: Bom
    :param output_format: OutputFormat
    :param schema_version: SchemaVersion
    :return: BaseOutput
    r   )ÚBY_SCHEMA_VERSIONzUnexpected output_format: NzUnknown z/schema_version: )
r   r   ÚJSONÚjsonrd   ÚXMLÚxmlÚ
ValueErrorÚgetÚname)r   r,   r)   rd   Úklasss        r$   r^   r^   u   s   € õ ä×Ñ˜MÑ)Þ+Ü	×	Ñ	˜]Ñ	*Þ*äÐ5°mÐ5FÐGÓHÐHà×!Ñ! .°$Ó7€EØ€}Ü˜8 M×$6Ñ$6Ð#7Ð7HÈÐHZÐ[Ó\Ð\Ù�‹:Ðr%   zSDeprecated re-export location - see docstring of "BomRefDiscriminator" for details.c                   ó   — e Zd ZdZy)r   uD  Deprecated â€” Alias of :class:`cyclonedx.contrib.bom.utils.BomRefDiscriminator`.

    .. deprecated:: next
        This re-export location is deprecated.
        Use ``from cyclonedx.contrib.bom.utils import BomRefDiscriminator`` instead.
        The exported symbol itself is NOT deprecated â€” only this import path.
    N)rR   rS   rT   Ú__doc__r   r%   r$   r   r   ”   s   „ ñð 	r%   r   )%rn   rB   ÚsysÚabcr   r   Úcollections.abcr   Útypingr   r   r   r	   r
   r   Úversion_infoÚwarningsr   Útyping_extensionsÚcontrib.bom.utilsr   Ú_BomRefDiscriminatorÚschemar   r   Ú	model.bomr   rf   r   r[   rh   r   r`   r   re   r^   rg   r   r%   r$   ú<module>rz      sJ  ðñ&ó
 
Û 
ß #Ý #ß I× Ià×Ñ�wÒÞ#å,å Kß 0áÝÝ+Ý(ô4N�ô 4Nðn 
ð˜ð ¨g°l×6GÑ6GÑ.Hð Ø#0ðØ5Dòó 
ðð
 
ð˜ð ¨g°l×6FÑ6FÑ.Gð Ø#0ðØ5Còó 
ðð
 
ð˜ð ¨lð Ø#0ðØ5:Ð;ZÑ5[òó 
ðð
˜ð ¨lð ÈMð Ð^hó ñ> ÐaÓbô	Ð.ó 	ó cñ	r%   