
    ܖi1                        d dl mZ d dlmZ d dlmZmZ d dlZd dl	m
Z
 ddlmZ dd	lmZ ej                    G d
 dee             Z ej&                  d       G d d             Z ej&                  d       G d d             Zy)    )Iterable)Enum)AnyOptionalN)	SortedSet   )ComparableTuple   )XsUric                       e Zd ZdZdZdZdZy)IssueClassificationz
    This is our internal representation of the enum `issueClassification`.

    .. note::
        See the CycloneDX Schema definition: https://cyclonedx.org/docs/1.7/xml/#type_issueClassification
    defectenhancementsecurityN)__name__
__module____qualname____doc__DEFECTENHANCEMENTSECURITY     Y/var/www/html/content-pipeline/venv/lib/python3.12/site-packages/cyclonedx/model/issue.pyr   r      s     FKHr   r   T)%ignore_unknown_during_deserializationc                   n   e Zd ZdZddddee   dee   ddfdZe e	j                  e	j                  j                        dee   fd              Zej                  dee   ddfd	       Zedee   fd
       Zej                  de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defdZy)IssueTypeSourceaJ  
    This is our internal representation ofa source within the IssueType complex type that can be used in multiple
    places within a CycloneDX BOM document.

    .. note::
        See the CycloneDX Schema definition:
        https://cyclonedx.org/docs/1.7/json/#components_items_pedigree_patches_items_resolves_items_source
    Nnameurlr   r    returnc                     || _         || _        y Nr   )selfr   r    s      r   __init__zIssueTypeSource.__init__5   s    
 	r   c                     | j                   S )z
        The name of the source. For example "National Vulnerability Database", "NVD", and "Apache".

        Returns:
            `str` if set else `None`
        _namer$   s    r   r   zIssueTypeSource.name=        zzr   c                     || _         y r#   r'   r$   r   s     r   r   zIssueTypeSource.nameH   	    
r   c                     | j                   S )z
        Optional url of the issue documentation as provided by the source.

        Returns:
            `XsUri` if set else `None`
        _urlr)   s    r   r    zIssueTypeSource.urlL   s     yyr   c                     || _         y r#   r/   )r$   r    s     r   r    zIssueTypeSource.urlV   s	    	r   c                 D    t        | j                  | j                  f      S r#   )_ComparableTupler   r    r)   s    r   __comparable_tuplez"IssueTypeSource.__comparable_tupleZ   s!    IItxx!
  	r   otherc                 f    t        |t              r!| j                         |j                         k(  S yNF)
isinstancer   "_IssueTypeSource__comparable_tupler$   r5   s     r   __eq__zIssueTypeSource.__eq___   s,    e_-**,0H0H0JJJr   c                 p    t        |t              r!| j                         |j                         k  S t        S r#   )r8   r   r9   NotImplementedr:   s     r   __lt__zIssueTypeSource.__lt__d   s/    e_-**,u/G/G/IIIr   c                 4    t        | j                               S r#   )hashr9   r)   s    r   __hash__zIssueTypeSource.__hash__i       D++-..r   c                 <    d| j                    d| j                   dS )Nz<IssueTypeSource name=z, url=>)r(   r    r)   s    r   __repr__zIssueTypeSource.__repr__l   s    '

|6$((1EEr   )r   r   r   r   r   strr   r%   propertyserializable
xml_stringXmlStringSerializationTypeNORMALIZED_STRINGr   setterr    r3   r9   objectboolr;   r   r>   intrA   rE   r   r   r   r   r   *   s9    ##sm e_ 
	 \\DDVVWhsm  X  
[[# 4   Xe_   	ZZx 4  $4 
F t 
C D 
/# /F# Fr   r   c                      e Zd ZdZdddddddedee   dee   dee   dee   d	eee	      d
dfdZ
e e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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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e ej                   d      d
ee   fd              Zej                  dee   d
dfd       Ze ej0                  ej2                  j4                  d       ej                   d      d$d                     Zej                  d	e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$d
efd#Z%y)%	IssueTypea  
    This is our internal representation of an IssueType complex type that can be used in multiple places within
    a CycloneDX BOM document.

    .. note::
        See the CycloneDX Schema definition: https://cyclonedx.org/docs/1.7/xml/#type_issueType
    N)idr   descriptionsource
referencestyperR   r   rS   rT   rU   r!   c                `    || _         || _        || _        || _        || _        |xs g | _        y r#   )rV   rR   r   rS   rT   rU   )r$   rV   rR   r   rS   rT   rU   s          r   r%   zIssueType.__init__z   s4     		&$*r   c                     | j                   S )zb
        Specifies the type of issue.

        Returns:
            `IssueClassification`
        _typer)   s    r   rV   zIssueType.type   r*   r   c                     || _         y r#   rY   )r$   rV   s     r   rV   zIssueType.type   r-   r   r
   c                     | j                   S )z
        The identifier of the issue assigned by the source of the issue.

        Returns:
            `str` if set else `None`
        _idr)   s    r   rR   zIssueType.id   s     xxr   c                     || _         y r#   r]   )r$   rR   s     r   rR   zIssueType.id   s	    r   r   c                     | j                   S )z_
        The name of the issue.

        Returns:
            `str` if set else `None`
        r'   r)   s    r   r   zIssueType.name   s     zzr   c                     || _         y r#   r'   r,   s     r   r   zIssueType.name   r-   r      c                     | j                   S )zd
        A description of the issue.

        Returns:
            `str` if set else `None`
        _descriptionr)   s    r   rS   zIssueType.description   s        r   c                     || _         y r#   rd   )r$   rS   s     r   rS   zIssueType.description   s
    'r      c                     | j                   S )zn
        The source of this issue.

        Returns:
            `IssueTypeSource` if set else `None`
        _sourcer)   s    r   rT   zIssueType.source   s     ||r   c                     || _         y r#   ri   )r$   rT   s     r   rT   zIssueType.source   s	    r   r       c                     | j                   S )zh
        Any reference URLs related to this issue.

        Returns:
            Set of `XsUri`
        )_referencesr)   s    r   rU   zIssueType.references   s     r   c                 $    t        |      | _        y r#   )r   rn   )r$   rU   s     r   rU   zIssueType.references   s    $Z0r   c           
          t        | j                  | j                  | j                  | j                  | j
                  t        | j                        f      S r#   )r3   rV   rR   r   rS   rT   rU   r)   s    r   r4   zIssueType.__comparable_tuple   sA    IItww		4+;+;T[[T__-!
  	r   r5   c                 f    t        |t              r!| j                         |j                         k(  S yr7   )r8   rQ   _IssueType__comparable_tupler:   s     r   r;   zIssueType.__eq__   s,    eY'**,0H0H0JJJr   c                 p    t        |t              r!| j                         |j                         k  S t        S r#   )r8   rQ   rr   r=   r:   s     r   r>   zIssueType.__lt__   s/    eY'**,u/G/G/IIIr   c                 4    t        | j                               S r#   )r@   rr   r)   s    r   rA   zIssueType.__hash__   rB   r   c                 V    d| j                    d| j                   d| j                   dS )Nz<IssueType type=z, id=z, name=rD   )rV   rR   r   r)   s    r   rE   zIssueType.__repr__   s)    !$))E$'''$))ANNr   )r!   zSortedSet[XsUri])&r   r   r   r   r   r   rF   r   r   r   r%   rG   rH   xml_attributerV   rL   xml_sequencerI   rJ   rK   rR   r   rS   rT   	xml_arrayXmlArraySerializationTypeNESTEDrU   r3   rr   rM   rN   r;   r   r>   rO   rA   rE   r   r   r   rQ   rQ   p   sy    !"%),004+!+ SM+ sm	+
 c]+ )+ Xe_-+ 
+  \!)  "  
[[,    \q!\\DDVVWHSM  X "  YYXc] t   \q!\\DDVVWhsm  X "  
[[# 4   \q!\\DDVVW!Xc] ! X " ! (x} ( ( ( \q!1  "  ]]Xo6 4   \LBBII5Q\q!  " R   1Xe_ 1 1 1$4 F t 
C D 
/# /O# Or   rQ   )collections.abcr   enumr   typingr   r   py_serializablerH   sortedcontainersr   _internal.comparer	   r3    r   serializable_enumrF   r   serializable_classr   rQ   r   r   r   <module>r      s   $ %    & & C  	#t 	  	 !  tLBF BF MBFJ !  tLKO KO MKOr   