
    ܖi3                        d Z ddlmZ ddlmZmZ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mZmZmZmZ d
dlmZmZmZmZ d
dlmZ d
dlmZ d
dl m!Z! d
dl"m#Z#m$Z$m%Z% d
dl&m'Z'  ejP                  d       G d de!             Z)y)z
This set of classes represents the data that is possible about known Services.

.. note::
    See the CycloneDX Schema extension definition https://cyclonedx.org/docs/1.7/xml/#type_servicesType
    )Iterable)AnyOptionalUnionN)	SortedSet   )bom_ref_from_str)ComparableTuple)SchemaVersion1Dot3SchemaVersion1Dot4SchemaVersion1Dot5SchemaVersion1Dot6SchemaVersion1Dot7   )DataClassificationExternalReferencePropertyXsUri)BomRef)OrganizationalEntity)
Dependable)LicenseLicenseRepository%_LicenseRepositorySerializationHelper)ReleaseNotesT)%ignore_unknown_during_deserializationc            !       F   e Zd ZdZddddddddddddddddedeeeef      dee   dee   dee   d	ee   d
ee	e
      dee   dee   dee	e      dee	e      dee	e      dee	e      dee	d       dee   ddf dZe ej(                  d       ej*                  e       ej,                          ej.                  d      defd                                   Ze ej2                  d      dee   fd              Zej6                  dee   ddfd       Ze ej2                  d       ej8                  ej:                  j<                        dee   fd                     Zej6                  dee   ddfd       Ze ej2                  d       ej8                  ej:                  j<                        defd                     Z e j6                  deddfd       Z e ej2                  d        ej8                  ej:                  j<                        dee   fd!                     Z!e!j6                  dee   ddfd"       Z!e ej2                  d#       ej8                  ej:                  j<                        dee   fd$                     Z"e"j6                  d	ee   ddfd%       Z"e ejF                  ejH                  jJ                  d&       ej2                  d'      dMd(                     Z&e&j6                  d
e	e
   ddfd)       Z&e ej2                  d*      dee   fd+              Z'e'j6                  dee   ddfd,       Z'e ej(                  d-       ej.                  d-       ej2                  d.      dee   fd/                            Z(e(j6                  dee   ddfd0       Z(e ejF                  ejH                  jJ                  d1       ej2                  d2      dNd3                     Z)e)j6                  de	e   ddfd4       Z)e ej*                  e*       ej2                  d5      de+fd6                     Z,e,j6                  de	e   ddfd7       Z,e ejF                  ejH                  jJ                  d8       ej2                  d9      dOd:                     Z-e-j6                  de	e   ddfd;       Z-e ej\                  e/       ej\                  e0       ej\                  e1       ej\                  e2       ej\                  e3       ejF                  ejH                  jJ                  d<       ej2                  d=      dPd>                                                        Z4e4j6                  de	e   ddfd?       Z4e ejF                  ejH                  jJ                  d@       ej2                  dA      dQdB                     Z5e5j6                  de	d    ddfdC       Z5e ej\                  e0       ej\                  e1       ej\                  e2       ej\                  e3       ej2                  dD      dee   fdE                                          Z6e6j6                  dee   ddfdF       Z6de7fdGZ8dHe9defdIZ:dHe;defdJZ<de=fdKZ>defdLZ?y)RServicez
    Class that models the `service` complex type in the CycloneDX schema.

    .. note::
        See the CycloneDX schema: https://cyclonedx.org/docs/1.7/xml/#type_service
    N)bom_refprovidergroupversiondescription	endpointsauthenticatedx_trust_boundarydatalicensesexternal_references
propertiesservicesrelease_notesnamer   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   returnc                   t        |      | _        || _        || _        || _        || _        || _        |xs g | _        || _        |	| _	        |
xs g | _
        |xs g | _        |xs g | _        |xs g | _        || _        |xs g | _        y N)_bom_ref_from_str_bom_refr    r!   r-   r"   r#   r$   r%   r&   r'   r(   r)   r+   r,   r*   )selfr-   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   s                   [/var/www/html/content-pipeline/venv/lib/python3.12/site-packages/cyclonedx/model/service.py__init__zService.__init__;   s    $ *'2 
	&"b* 0JB	 B#6#<"  B*$*    zbom-refc                     | j                   S )a  
        An optional identifier which can be used to reference the service elsewhere in the BOM. Uniqueness is enforced
        within all elements and children of the root-level bom element.

        Returns:
           `BomRef` unique identifier for this Service
        )r2   r3   s    r4   r   zService.bom_ref]   s     }}r6   r   c                     | j                   S )z
        Get the organization that provides the service.

        Returns:
            `OrganizationalEntity` if set else `None`
        	_providerr8   s    r4   r    zService.providerl   s     ~~r6   c                     || _         y r0   r:   )r3   r    s     r4   r    zService.providerw   s	    !r6   r   c                     | j                   S )a'  
        The grouping name, namespace, or identifier. This will often be a shortened, single name of the company or
        project that produced the service or domain name. Whitespace and special characters should be avoided.

        Returns:
            `str` if provided else `None`
        _groupr8   s    r4   r!   zService.group{   s     {{r6   c                     || _         y r0   r>   )r3   r!   s     r4   r!   zService.group   s	    r6      c                     | j                   S )z
        The name of the service. This will often be a shortened, single name of the service.

        Returns:
            `str`
        _namer8   s    r4   r-   zService.name   s     zzr6   c                     || _         y r0   rC   )r3   r-   s     r4   r-   zService.name   s	    
r6      c                     | j                   S )z]
        The service version.

        Returns:
            `str` if set else `None`
        _versionr8   s    r4   r"   zService.version   s     }}r6   c                     || _         y r0   rH   )r3   r"   s     r4   r"   zService.version   s	    r6      c                     | j                   S )zq
        Specifies a description for the service.

        Returns:
            `str` if set else `None`
        _descriptionr8   s    r4   r#   zService.description   s        r6   c                     || _         y r0   rM   )r3   r#   s     r4   r#   zService.description   s
    'r6   endpoint   c                     | j                   S )zo
        A list of endpoints URI's this service provides.

        Returns:
            Set of `XsUri`
        )
_endpointsr8   s    r4   r$   zService.endpoints   s     r6   c                 $    t        |      | _        y r0   )r   rS   )r3   r$   s     r4   r$   zService.endpoints   s    #I.r6      c                     | j                   S )a1  
        A boolean value indicating if the service requires authentication. A value of true indicates the service
        requires authentication prior to use.

        A value of false indicates the service does not require authentication.

        Returns:
            `bool` if set else `None`
        _authenticatedr8   s    r4   r%   zService.authenticated   s     """r6   c                     || _         y r0   rW   )r3   r%   s     r4   r%   zService.authenticated   
    +r6   zx-trust-boundary   c                     | j                   S )aV  
        A boolean value indicating if use of the service crosses a trust zone or boundary. A value of true indicates
        that by using the service, a trust boundary is crossed.

        A value of false indicates that by using the service, a trust boundary is not crossed.

        Returns:
            `bool` if set else `None`
        _x_trust_boundaryr8   s    r4   r&   zService.x_trust_boundary   s     %%%r6   c                     || _         y r0   r]   )r3   r&   s     r4   r&   zService.x_trust_boundary   s
    !1r6   classification
   c                     | j                   S )zn
        Specifies the data classification.

        Returns:
            Set of `DataClassification`
        )_datar8   s    r4   r'   zService.data   s     zzr6   c                 $    t        |      | _        y r0   )r   rc   )r3   r'   s     r4   r'   zService.data
  s    t_
r6      c                     | j                   S )z
        A optional list of statements about how this Service is licensed.

        Returns:
            Set of `LicenseChoice`
        )	_licensesr8   s    r4   r(   zService.licenses  s     ~~r6   c                 $    t        |      | _        y r0   )r   rg   )r3   r(   s     r4   r(   zService.licenses  s    *84r6   	reference   c                     | j                   S )z
        Provides the ability to document external references related to the Service.

        Returns:
            Set of `ExternalReference`
        )_external_referencesr8   s    r4   r)   zService.external_references  s     (((r6   c                 $    t        |      | _        y r0   )r   rl   )r3   r)   s     r4   r)   zService.external_references+  s    $-.A$B!r6   property   c                     | j                   S )a  
        Provides the ability to document properties in a key/value store. This provides flexibility to include data not
        officially supported in the standard without having to use additional namespaces or create extensions.

        Return:
            Set of `Property`
        )_propertiesr8   s    r4   r*   zService.properties/  s      r6   c                 $    t        |      | _        y r0   )r   rq   )r3   r*   s     r4   r*   zService.propertiesA  s    $Z0r6   service   c                     | j                   S )a  
        A list of services included or deployed behind the parent service.

        This is not a dependency tree.

        It provides a way to specify a hierarchical representation of service assemblies.

        Returns:
            Set of `Service`
        )	_servicesr8   s    r4   r+   zService.servicesE  s     ~~r6   c                 $    t        |      | _        y r0   )r   rv   )r3   r+   s     r4   r+   zService.servicesU  s    "8,r6      c                     | j                   S )zj
        Specifies optional release notes.

        Returns:
            `ReleaseNotes` or `None`
        _release_notesr8   s    r4   r,   zService.release_notesY  s     """r6   c                     || _         y r0   rz   )r3   r,   s     r4   r,   zService.release_notesh  rZ   r6   c                    t        | j                  | j                  | j                  | j                  j
                  | j                  | j                  | j                  t        | j                        t        | j                        t        | j                        t        | j                        t        | j                        | j                  t        | j                        | j                   f      S r0   )_ComparableTupler!   r-   r"   r   valuer    r#   r%   r'   r$   r)   r(   r*   r,   r+   r&   r8   s    r4   __comparable_tuplezService.__comparable_tuplel  s    JJ		4<<LLMM4++ 0 ;=Mdnn=]T5568H8WT__-t/A/ACSTXTaTaCb!!!
  	r6   otherc                 f    t        |t              r!| j                         |j                         k(  S y)NF)
isinstancer   _Service__comparable_tupler3   r   s     r4   __eq__zService.__eq__w  s,    eW%**,0H0H0JJJr6   c                 p    t        |t              r!| j                         |j                         k  S t        S r0   )r   r   r   NotImplementedr   s     r4   __lt__zService.__lt__|  s/    eW%**,u/G/G/IIIr6   c                 4    t        | j                               S r0   )hashr   r8   s    r4   __hash__zService.__hash__  s    D++-..r6   c           	      p    d| j                    d| j                   d| j                   d| j                   d	S )Nz<Service bom-ref=z, group=z, name=z
, version=>)r   r!   r-   r"   r8   s    r4   __repr__zService.__repr__  s9    "4<<.GDII;V`aeamam`nnoppr6   )r.   zSortedSet[XsUri])r.   zSortedSet[DataClassification])r.   zSortedSet[ExternalReference])r.   zSortedSet[Property])r.   zSortedSet['Service'])@__name__
__module____qualname____doc__strr   r   r   r   r   r   boolr   r   r   r   r   r5   rn   serializable	json_nametype_mappingxml_attributexml_namer   xml_sequencer    setter
xml_stringXmlStringSerializationTypeNORMALIZED_STRINGr!   r-   r"   r#   	xml_arrayXmlArraySerializationTypeNESTEDr$   r%   r&   r'   r   r   r(   r)   viewr   r   r   r   r   r*   r+   r,   r~   r   objectr   r   r   intr   r    r6   r4   r   r   2   sC	    1537#!%%)/3(,+/7;04EI372604! + + %V,- + /0	 +
 } + # + c] + HUO, +  ~ + #4. + x 234 + 8G,- + &h/@&AB + Xh/0 + 8I./ +   -! +" 
# +D \I&\v&\!\9%  & " ' ' 
 \q!(#78  "  __"*>!? "D " " \q!\\DDVVWx}  X "  \\8C= T   \q!\\DDVVWc  X "  
[[    \q!\\DDVVW#  X "  ^^ x}       \q!\\DDVVW!Xc] ! X " ! (x} ( ( ( \LBBII:V\q! " W  /8E? /t / / \q!
#x~ 
# " 
# ,8D> ,d , , \./\-.\q!
&(4. 
& " / 0 
& 2$ 2D 2 2 \LBBIIK[\\r" # ]  
[[%"45 %$ % % \DE\r"+  # F  __5'!2 5t 5 5 \LBBII;W\r") # X ) Cx@Q7R CW[ C  C \)*\)*\)*\)*\)*\LBBII:V\r"  # W + + + + +   1Xh%7 1D 1 1 \LBBII9U\r" # V  __-)!4 - - - \)*\)*\)*\)*\r"#x5 # # + + + + # ,8L+A ,d , ,	$4 	F t 
C D 
/# /q# qr6   r   )*r   collections.abcr   typingr   r   r   py_serializabler   sortedcontainersr   _internal.bom_refr	   r1   _internal.comparer
   r~   schema.schemar   r   r   r   r    r   r   r   r   r   r   contactr   
dependencyr   licenser   r   r   release_noter   serializable_classr   r   r6   r4   <module>r      su   & % ' ' & & E C  E D  ) " V V & !  tLRqj Rq MRqr6   