
    ܖi!                        d Z ddlmZ ddlmZ ddlmZmZm	Z	m
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 d	dlmZ erddlmZ ej2                   G d dee             Z ej8                  d       G d d             Z ej8                  d       G d d             Ze
eef   Z	 er G d dee         Z n G d de      Z  G d de      Z!y)z
    This set of classes represents the lifecycles types in the CycloneDX standard.

.. note::
    Introduced in CycloneDX v1.5

.. note::
    See the CycloneDX Schema for lifecycles: https://cyclonedx.org/docs/1.7/xml/#metadata_lifecycles
    )Enum)loads)TYPE_CHECKINGAnyOptionalUnion)ElementN)
BaseHelper)	SortedSet   )ComparableTuple)!CycloneDxDeserializationException)ViewTypec                   ,    e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
LifecyclePhasez
    Enum object that defines the permissible 'phase' for a Lifecycle according to the CycloneDX schema.

    .. note::
        See the CycloneDX Schema definition: https://cyclonedx.org/docs/1.7/xml/#type_classification
    designz	pre-buildbuildz
post-build
operations	discoverydecommissionN)__name__
__module____qualname____doc__DESIGN	PRE_BUILDBUILD
POST_BUILD
OPERATIONS	DISCOVERYDECOMMISSION     ]/var/www/html/content-pipeline/venv/lib/python3.12/site-packages/cyclonedx/model/lifecycle.pyr   r   ,   s,     FIEJJI!Lr#   r   T)%ignore_unknown_during_deserializationc                       e Zd ZdZdeddfdZedefd       Zej                  deddfd       Zde	fdZ
d	edefd
Zd	edefdZdefdZy)PredefinedLifecyclez
    Object that defines pre-defined phases in the product lifecycle.

    .. note::
        See the CycloneDX Schema definition:
        https://cyclonedx.org/docs/1.7/json/#tab-pane_metadata_lifecycles_items_oneOf_i0
    phasereturnNc                     || _         y N_phaseselfr(   s     r$   __init__zPredefinedLifecycle.__init__G   s	    r#   c                     | j                   S r+   r,   r/   s    r$   r(   zPredefinedLifecycle.phaseJ   s    {{r#   c                     || _         y r+   r,   r.   s     r$   r(   zPredefinedLifecycle.phaseN   s	    r#   c                 ,    t        | j                        S r+   )hashr-   r2   s    r$   __hash__zPredefinedLifecycle.__hash__R   s    DKK  r#   otherc                 V    t        |t              r| j                  |j                  k(  S yNF)
isinstancer'   r-   r/   r7   s     r$   __eq__zPredefinedLifecycle.__eq__U   s#    e01;;%,,..r#   c                     t        |t              r| j                  |j                  k  S t        |t              ryt        S )NT)r:   r'   r-   NamedLifecycleNotImplementedr;   s     r$   __lt__zPredefinedLifecycle.__lt__Z   s3    e01;;--e^,r#   c                 "    d| j                    dS )Nz<PredefinedLifecycle phase=>r,   r2   s    r$   __repr__zPredefinedLifecycle.__repr__a   s    ,T[[M;;r#   )r   r   r   r   r   r0   propertyr(   setterintr6   objectboolr<   r   r@   strrC   r"   r#   r$   r'   r'   =   s    n   ~   \\> d  !# !F t 
C D <# <r#   r'   c                       e Zd ZdZdddedee   ddfdZe ej                  d       ej                  ej                  j                        defd	                     Zej                  deddfd
       Ze ej                  d       ej                  ej                  j                        dee   fd                     Zej                  dee   ddfd       ZdefdZdefdZdedefdZdedefdZdefdZy)r>   z
    Object that defines custom state in the product lifecycle.

    .. note::
        See the CycloneDX Schema definition:
        https://cyclonedx.org/docs/1.7/json/#tab-pane_metadata_lifecycles_items_oneOf_i1
    N)descriptionnamerK   r)   c                     || _         || _        y r+   )_name_description)r/   rL   rK   s      r$   r0   zNamedLifecycle.__init__o   s    
'r#      c                     | j                   S )zS
        Name of the lifecycle phase.

        Returns:
             `str`
        rN   r2   s    r$   rL   zNamedLifecycle.names   s     zzr#   c                     || _         y r+   rR   )r/   rL   s     r$   rL   zNamedLifecycle.name   s	    
r#   r   c                     | j                   S )zZ
        Description of the lifecycle phase.

        Returns:
             `str`
        rO   r2   s    r$   rK   zNamedLifecycle.description   s        r#   c                     || _         y r+   rU   )r/   rK   s     r$   rK   zNamedLifecycle.description   s
    'r#   c                 D    t        | j                  | j                  f      S r+   )_ComparableTuplerN   rO   r2   s    r$   __comparable_tuplez!NamedLifecycle.__comparable_tuple   s#    JJ))!
  	r#   c                 4    t        | j                               S r+   )r5   !_NamedLifecycle__comparable_tupler2   s    r$   r6   zNamedLifecycle.__hash__   s    D++-..r#   r7   c                 f    t        |t              r!| j                         |j                         k(  S yr9   )r:   r>   r[   r;   s     r$   r<   zNamedLifecycle.__eq__   s,    e^,**,0H0H0JJJr#   c                     t        |t              r!| j                         |j                         k  S t        |t              ryt        S r9   )r:   r>   r[   r'   r?   r;   s     r$   r@   zNamedLifecycle.__lt__   s=    e^,**,u/G/G/IIIe01r#   c                 "    d| j                    dS )Nz<NamedLifecycle name=rB   rR   r2   s    r$   rC   zNamedLifecycle.__repr__   s    &tzzl!44r#   )r   r   r   r   rI   r   r0   rD   serializablexml_sequence
xml_stringXmlStringSerializationTypeNORMALIZED_STRINGrL   rE   rK   rX   r[   rF   r6   rG   rH   r<   r   r@   rC   r"   r#   r$   r>   r>   e   sq    CG (S ((3- (4 ( \q!\\DDVVWc  X "  
[[    \q!\\DDVVW!Xc] ! X " ! (x} ( ( ($4 
/# /F t 
C D 5# 5r#   r>   c                       e Zd ZdZyLifecycleRepositoryzoCollection of :class:`Lifecycle`.

        This is a `set`, not a `list`.  Order MUST NOT matter here.
        Nr   r   r   r   r"   r#   r$   rf   rf          	r#   rf   c                       e Zd ZdZyre   rg   r"   r#   r$   rf   rf      rh   r#   c                       e Zd Zededeed      dedefd       Zede	e
eef      dedefd       Zedededeed      d	ee   dedee   fd
       Zededee   dedefd       Zy)_LifecycleRepositoryHelperoviewr   __r)   c                |    t        |      dk(  ry |D cg c]  }t        |j                  |             c}S c c}w )Nr   )view_)len
json_loadsas_json)clsrl   rm   rn   lis        r$   json_normalizez)_LifecycleRepositoryHelper.json_normalize   sJ     q6Q;#$& 2:: &   & 	& &s   "9c                     t               }|D ]a  }d|v r%|j                  t        j                  |             ,d|v r%|j                  t        j                  |             Ut        d|       |S )Nr(   rL   zunexpected: )rf   addr'   	from_jsonr>   r   )rt   rl   rn   reporu   s        r$   json_denormalizez+_LifecycleRepositoryHelper.json_denormalize   s     #$ 	OB"},66 211  8,rf8MNN	O r#   element_namexmlnsc          	          t        |      dk(  ry t        |      }|D ]&  }|j                  |j                  |dd|             ( |S )Nr   F	lifecycle)rp   	as_stringr|   r}   )rq   r	   appendas_xml)rt   rl   r|   rm   r}   rn   elemru   s           r$   xml_normalizez(_LifecycleRepositoryHelper.xml_normalize   s[     q6Q;|$ 	UBKK		e+U " T U	U r#   
default_nsc                 R   t               }d|xs di}|j                  d|      D ]  }|j                  d|      &|j                  t        j                  ||             ;|j                  d|      &|j                  t        j                  ||             st        d|       |S )Nbom zbom:lifecyclez	bom:phasezbom:namezunexpected content: )rf   iterfindfindrx   r'   from_xmlr>   r   )rt   rl   r   rn   rz   ns_mapru   s          r$   xml_denormalizez*_LifecycleRepositoryHelper.xml_denormalize   s     #$)r* **_f5 	WBww{F+7,55
$ %V,800
$ % 8:Nrf8UVV	W r#   N)r   r   r   classmethodrf   r   typer   rv   listdictrI   r{   r	   r   r   r"   r#   r$   rk   rk      s
   &2 &%d:&67& &%(& & d38n!5 "':  1 $'$T*%56 &c]  	 %-W$5	   $,SM!&9 r#   rk   )"r   enumr   jsonr   rr   typingr   r   r   r   xml.etree.ElementTreer	   py_serializabler_   py_serializable.helpersr
   sortedcontainersr   _internal.comparer   rX   exception.serializationr   r   serializable_enumrI   r   serializable_classr'   r>   	Lifecyclerf   rk   r"   r#   r$   <module>r      s   $  $ 6 6 ) & . & C G( "S$ "  "  !  tL$< $< M$<N !  tLB5 B5 MB5J %~56	 i	2 i 8 8r#   