
    ܖi                         d dl mZmZmZ d dlZddlmZmZ erd dl m	Z	  e	dd      Z
 ej                  d	
       G d dej                  j                               Zy)    )TYPE_CHECKINGAnyOptionalN   )!CycloneDxDeserializationException'SerializationOfUnexpectedValueException)TypeVar_T_BRBomRef)boundT)%ignore_unknown_during_deserializationc                   Z   e Zd ZdZddee   ddfdZe ej                  d       ej                  d      dee   fd                     Zej                  dee   dd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defdZdefdZededee   fd       Zedddeddfd       Zy)r   a   
    An identifier that can be used to reference objects elsewhere in the BOM.

    This copies a similar pattern used in the CycloneDX PHP Library.

    .. note::
        See https://github.com/CycloneDX/cyclonedx-php-library/blob/master/docs/dev/decisions/BomDependencyDataModel.md
    Nvaluereturnc                     || _         y Nr   selfr   s     [/var/www/html/content-pipeline/venv/lib/python3.12/site-packages/cyclonedx/model/bom_ref.py__init__zBomRef.__init__*   s	    
    .c                     | j                   S r   _valuer   s    r   r   zBomRef.value-   s     {{r   c                     |xs d | _         y r   r   r   s     r   r   zBomRef.value3   s     mtr   otherc                     | |u xsK t        |t              xr9 |j                  d uxr) | j                  d uxr |j                  | j                  k(  S r   )
isinstancer   r   r   r   s     r   __eq__zBomRef.__eq__8   sZ     
uf% , D(, 4'	,
 +	
r   c                 \    t        |t              rt        |       t        |      k  S t        S r   )r!   r   strNotImplementedr"   s     r   __lt__zBomRef.__lt__B   s%    eV$t9s5z))r   c                 L    t        | j                  xs dt        |              S )N__id__)hashr   idr   s    r   __hash__zBomRef.__hash__G   s!    DKK6VBtH:#677r   c                 :    d| j                   dt        |        dS )Nz<BomRef z id=>)r   r+   r   s    r   __repr__zBomRef.__repr__J   s    $++RXJa88r   c                 "    | j                   xs dS )N r   r   s    r   __str__zBomRef.__str__M   s    {{ b r   c                     | j                   d uS r   r   r   s    r   __bool__zBomRef.__bool__P   s    {{$&&r   oc                 N    t        ||       r|j                  S t        d|      )Nz#Attempt to serialize a non-BomRef: )r!   r   r   )clsr5   s     r   	serializezBomRef.serializeU   s,    a77N51!79 	9r   r7   ztype[_T_BR]r
   c                 h    	  | t        |            S # t        $ r}t        d|      |d }~ww xY w)Nr   z'BomRef string supplied does not parse: )r%   
ValueErrorr   )r7   r5   errs      r   deserializezBomRef.deserialize\   s@    	SV$$ 	39!?	s    	1,1r   )__name__
__module____qualname____doc__r   r%   r   propertyserializable	json_namexml_namer   setterobjectboolr#   r   r'   intr,   r/   r2   r4   classmethodr8   r<    r   r   r   r      s6   hsm t  \C \3x}    !  \\$8C= $T $ $
F 
t 
C D 
8# 89# 9! !'$ '
 9# 9(3- 9 9  3 7  r   )typingr   r   r   py_serializablerB   exception.serializationr   r   r	   r
   serializable_classhelpers
BaseHelperr   rJ   r   r   <module>rQ      s]   & 0 / & pG8,E !  tLC\!!,, C MCr   