
    ZThB                       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c mc mc mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dl m!Z!m"Z" d dl#m$Z% d dl&m'Z' d dl(m)Z)  G d de      Z* G d de'      Z G d de'      Z G d de'      Z G d de      Z+ G d de      Z, G d de      Z-	 	 	 	 d+dZ$d,dZ.d-dZ/d-d Z0d.d!Z1d/d"Z2d/d#Z3d/d$Z4d/d%Z5d0d&Z6d/d'Z7d1d(Z8d0d)Z9d2d*Z:y)3    )annotations)Enum)ListOptionalType	TypedDictUnionN)Empty)Channel)ChannelBitFieldElement)ChannelEnumType IngestWithConfigDataChannelValue)ChannelConfig)NotRequiredSelfchannel_fqn)
AsProtobuf)_component_deprecation_warningc                  0    e Zd ZU dZded<   ded<   ded<   y)	ChannelValuez?
    Represents a fully qualified data point for a channel
    strchannel_namezNotRequired[str]	componentr   valueN)__name__
__module____qualname____doc____annotations__     ^/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/ingestion/channel.pyr   r      s     ++r#   r   c                      e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   dddg g f	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 ddZddZe	dd       Z
ddZy)r   z%
    A description for a channel
    r   nameChannelDataType	data_typeOptional[str]descriptionunitr   List[ChannelBitFieldElement]bit_field_elementsList[ChannelEnumType]
enum_types
identifierNc                    || _         || _        || _        || _        d | _        |r-t                t        | j                   |      | _         d | _        || _        || _        | j                         | _
        y )Nr&   r   )r&   r(   r*   r+   r   r   _channel_fqnr-   r/   fqnr0   )selfr&   r(   r*   r+   r   r-   r/   s           r$   __init__zChannelConfig.__init__0   sf     	"&	*,$$))yIDI!DN"4$((*r#   c                D    	 | j                  |      S # t        $ r Y yw xY w)z
        Like `try_value_from` except will return `None` there is a failure to produce a channel value due to a type mismatch.
        N)try_value_from
ValueErrorr5   r   s     r$   
value_fromzChannelConfig.value_fromI   s*    	&&u-- 		s    	c                   |
t               S t        |t              r(| j                  t        j
                  k(  rt        |      S t        |t              st        |t              rW| j                  t        j                  k(  rt        t        |            S | j                  t        j                  k(  rt        t        |            S | j                  t        j                  k(  rt        t        |            S | j                  t        j                  k(  rt!        t        |            S | j                  t        j"                  k(  rt%        t        |            S | j                  t        j&                  k(  rt)        t        |            S | j                  t        j*                  k(  rt-        t        |            S t        |t.              r(| j                  t        j0                  k(  rt3        |      S t        |t4              r(| j                  t        j6                  k(  rt9        |      S t;        dt=        |       d| j                         )a  
        Generate a channel value for this particular channel configuration. This will raise an exception
        if there is a type match, namely, if `value` isn't consistent with the channel's data-type. For a version
        of this function that does not raise an exception and simply ignores type mistmatches, see `value_from`. If `value`
        is `None` then an empty value will be generated.
        zFailed to cast value of type z to )empty_value
isinstanceboolr(   r'   BOOL
bool_valueintfloatINT_32int32_valueINT_64int64_valueUINT_32uint32_valueUINT_64uint64_valueFLOATfloat_valueDOUBLEdouble_valueENUM
enum_valuer   STRINGstring_valuebytesBYTESbytes_valuer9   typer:   s     r$   r8   zChannelConfig.try_value_fromT   s    == eT"t~~9M9M'Me$$s#z%'?~~!7!77"3u:..?#9#99"3u:..?#:#::#CJ//?#:#::#CJ//?#8#88"5<00?#9#99#E%L11?#7#77!#e*--s#/:P:P(P&&u%$..O<Q<Q*Qu%%8eT$..IYZ[[r#   c                R    || j                   | j                  xs d| j                  xs d| j                  j                  | j
                  D cg c]  }|j                  t               c}| j                  D cg c]  }|j                  t               c}      S c c}w c c}w )N )r&   r+   r*   r(   r/   r-   )
r&   r+   r*   r(   r   r/   as_pbChannelEnumTypePbr-   ChannelBitFieldElementPb)r5   klassetypeels       r$   rZ   zChannelConfig.as_pbw   s    b((.Bnn**DHOOT5$56T=A=T=T 7912 	
 		

 U s   B;B$c                T    | |j                   t        j                  |j                        |j                  |j
                  |j                  D cg c]  }t        j                  |       c}|j                  D cg c]  }t        j                  |       c}      S c c}w c c}w )N)r&   r(   r*   r+   r-   r/   )
r&   r'   from_pbr(   r*   r+   r-   r   r/   r   )clsmessager_   r^   s       r$   ra   zChannelConfig.from_pb   s    %--g.?.?@++=D=W=W 79&..r2  ELDVDVW5//6W	
 		

  Xs   B <B%c                    t        |       S )aA  
        NOTE: Component field of Channel has been deprecated. Function kept for backwards compatibility.

        The fully-qualified channel name of a channel called 'voltage' is simply `voltage`. The
        fully qualified name of a channel called 'temperature' of component 'motor' is a `motor.temperature'.
        r   )r5   s    r$   r4   zChannelConfig.fqn   s     4  r#   )r&   r   r(   r'   r*   r)   r+   r)   r   r)   r-   r,   r/   r.   )r   -Optional[Union[int, float, bool, str, bytes]]returnz*Optional[IngestWithConfigDataChannelValue])r   re   rf   r   )r]   zType[ChannelConfigPb]rf   ChannelConfigPb)rc   rg   rf   r   )rf   r   )r   r   r   r    r!   r6   r;   r8   rZ   classmethodra   r4   r"   r#   r$   r   r   "   s     I
44%%O &*"#';=,.%% #% #	%
 % !% 9% *%2	B		3	!\B!\	)!\F

 

 

!r#   r   c                  N    e Zd ZU ded<   ded<   ded<   d
dZddZedd       Zy	)r   r   r&   rB   index	bit_countc                .    || _         || _        || _        y Nr&   rj   rk   )r5   r&   rj   rk   s       r$   r6   zChannelBitFieldElement.__init__   s    	
"r#   c                T     || j                   | j                  | j                        S Nrn   rn   r5   r]   s     r$   rZ   zChannelBitFieldElement.as_pb   s$    **nn
 	
r#   c                T     | |j                   |j                  |j                        S rp   rn   rb   rc   s     r$   ra   zChannelBitFieldElement.from_pb   s&    --''
 	
r#   N)r&   r   rj   rB   rk   rB   )r]   zType[ChannelBitFieldElementPb]rf   r\   )rc   r\   rf   r   )r   r   r   r!   r6   rZ   rh   ra   r"   r#   r$   r   r      s/    
IJN#

 
 
r#   r   c                  T    e Zd ZU ded<   ded<   dZded<   dddZdd	Zedd
       Zy)r   r   r&   rB   keyNOptional[bool]	is_signedc                .    || _         || _        || _        y rm   r&   ru   rw   )r5   r&   ru   rw   s       r$   r6   zChannelEnumType.__init__   s    	"r#   c                z     || j                   | j                  | j                  d      S | j                        S )NFry   ry   rq   s     r$   rZ   zChannelEnumType.as_pb   s=    #~~5e
 	
 <@>>
 	
r#   c                T     | |j                   |j                  |j                        S )Nry   ry   rs   s     r$   ra   zChannelEnumType.from_pb   s    '++ARARSSr#   rm   )r&   r   ru   rB   rw   rv   )r]   zType[ChannelEnumTypePb]rf   r[   )rc   r[   rf   r   )	r   r   r   r!   rw   r6   rZ   rh   ra   r"   r#   r$   r   r      s6    
I	H $I~$#

 T Tr#   r   c                  J    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZedd       Zy)ChannelDataTypeStrRepdoublestringenum	bit_fieldr?   rC   int32int64uint32uint64rT   c                x   	 t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  d|    S # t        $ r Y y w xY w)N)CHANNEL_DATA_TYPE_DOUBLECHANNEL_DATA_TYPE_STRINGCHANNEL_DATA_TYPE_ENUMCHANNEL_DATA_TYPE_BIT_FIELDCHANNEL_DATA_TYPE_BOOLCHANNEL_DATA_TYPE_FLOATCHANNEL_DATA_TYPE_INT_32CHANNEL_DATA_TYPE_INT_64CHANNEL_DATA_TYPE_UINT_32CHANNEL_DATA_TYPE_UINT_64CHANNEL_DATA_TYPE_BYTES)r}   rN   rR   rP   	BIT_FIELDr@   rL   rD   rF   rH   rJ   rU   KeyErrorvals    r$   from_api_formatz%ChannelDataTypeStrRep.from_api_format   s    	,A,H,H,A,H,H*?*D*D/D/N/N*?*D*D+@+F+F,A,H,H,A,H,H-B-J-J-B-J-J+@+F+F    		s   B*B- -	B98B9N)r   r   rf   z!Optional['ChannelDataTypeStrRep'])r   r   r   rN   rR   rP   r   r@   rL   rD   rF   rH   rJ   rU   staticmethodr   r"   r#   r$   r}   r}      sK    FFDIDEFFGGE r#   r}   c                  F   e Zd ZdZej
                  Zej                  Zej                  Z
ej                  Zej                  Zej                  Zej"                  Zej&                  Zej*                  Zej.                  Zej2                  Zedd       Zedd       Zdd	dZy)
r'   z`
    Utility enum class to simplify working with channel data-types generated from protobuf
    c                N   || j                   j                  k(  r| j                   S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S || j
                  j                  k(  r| j
                  S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S || j                  j                  k(  r| j                  S t        d| d      )NUnknown channel data type ''.)rN   r   rR   rP   r   r@   rL   rD   rF   rH   rJ   rU   r9   )rb   r   s     r$   ra   zChannelDataType.from_pb   sA   #**"""::CJJ$$$::CHHNN"88OCMM'''== CHHNN"88OCIIOO#99CJJ$$$::CJJ$$$::CKK%%%;;CKK%%%;;CIIOO#99:3%rBCCr#   c                J   |j                  d      rt        j                  |      }|y 	 t        |      }|t        j                  k(  r| j                  S |t        j
                  k(  r| j
                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S |t        j                  k(  r| j                  S t        d      # t        $ r Y y w xY w)NCHANNEL_DATA_TYPE_Unreachable)
startswithr}   r   r9   rN   rR   rP   r   r@   rL   rD   rF   rH   rJ   rU   	Exception)rb   rawr   s      r$   from_strzChannelDataType.from_str  sh   >>./'77<C{+C0 '...::)000::)...88O)333== )...88O)///99)000::)000::)111;;)111;;)///99M**5  s   F 	F"!F"c                N   | t         j                  k(  r|rdS t        j                  j                  S | t         j                  k(  r|rdS t        j                  j                  S | t         j
                  k(  r|rdS t        j
                  j                  S | t         j                  k(  r|rdS t        j                  j                  S | t         j                  k(  r|rdS t        j                  j                  S | t         j                  k(  r|rdS t        j                  j                  S | t         j                  k(  r|rdS t        j                  j                  S | t         j                  k(  r|rdS t        j                  j                  S | t         j                  k(  r|rd	S t        j                  j                  S | t         j                  k(  r|rd
S t        j                  j                  S | t         j                  k(  r|rdS t        j                  j                  S t        d      )Nr   r   r   r   r   r   r   r   r   r   r   zUnreachable.)r'   rN   r}   r   rR   rP   r   r@   rL   rD   rF   rH   rJ   rU   r   )r5   
api_formats     r$   as_human_strzChannelDataType.as_human_str<  s   ?)))1;-cAVA]A]AcAcc_+++1;-cAVA]A]AcAcc_)))/9+_?T?Y?Y?_?___...  . +44::
 _)))/9+_?T?Y?Y?_?___***0:,a@U@[@[@a@aa_+++1;-cAVA]A]AcAcc_+++1;-cAVA]A]AcAcc_,,,/9+?T?\?\?b?b _,,,/9+?T?\?\?b?b _***0:,a@U@[@[@a@aaN++r#   N)r   z$channel_pb.ChannelDataType.ValueTyperf   z'ChannelDataType')r   r   rf   zOptional['ChannelDataType'])F)r   r?   rf   r   )r   r   r   r    
channel_pbr   rN   r   rR   r   rP   r   r   r   r@   r   rL   r   rD   r   rF   r   rH   r   rJ   r   rU   rh   ra   r   r   r"   r#   r$   r'   r'      s     00F00F,,D66I,,D..E00F00F22G22G..ED D4 "+ "+H ,r#   r'   c                  "    e Zd ZU ded<   ded<   y)_AbstractChannelr   r   r)   r   N)r   r   r   r!   r"   r#   r$   r   r   _  s    r#   r   c                \   t        | t              r6| j                  r
t                t	        | j
                  | j                        S t        | t              r| j
                  S t        | t              r| j
                  S | j                  d      }|r
t                | d   }t	        ||      S )ap  
    Computes the fully qualified channel name.

    NOTE: Component field of Channel is deprecated and should not be used. Function is left for code compatibility.

    The fully-qualified channel name of a channel called 'voltage' is simply `voltage'. The
    fully qualified name of a channel called 'temperature' of component 'motor' is a `motor.temperature'.
    r   r   r2   )	r>   r   r   r   r3   r&   rg   	ChannelPbget)channelr   r   s      r$   r   r   d  s    $ '=)*,GLL'*;*;<<	G_	-||	GY	'||KK,	*,~.CCr#   c                    t        |       S )N)r   r   r   s    r$   rS   rS         +377r#   c                    t        |       S )N)r~   r   r   s    r$   rO   rO     r   r#   c                    t        |       S )N)rC   r   r   s    r$   rM   rM         +#66r#   c                    t        |       S )N)r?   r   r   s    r$   rA   rA         +55r#   c                    t        |       S )N)r   r   r   s    r$   rE   rE     r   r#   c                    t        |       S )N)r   r   r   s    r$   rI   rI     r   r#   c                    t        |       S )N)r   r   r   s    r$   rG   rG     r   r#   c                    t        |       S )N)r   r   r   s    r$   rK   rK     r   r#   c                    t        |       S )N)r   r   r   s    r$   bit_field_valuer     s    +c::r#   c                    t        |       S )N)r   r   r   s    r$   rQ   rQ     r   r#   c                 *    t        t                     S )N)empty)r   r
   r"   r#   r$   r=   r=     s    +%'::r#   c                    t        |       S )N)rT   r   r   s    r$   rV   rV     r   r#   c                8   |t         j                  k(  r| j                  d      S |t         j                  k(  r| j                  d      S |t         j                  k(  r| j                  d      S |t         j
                  k(  r| j                  d      S |t         j                  k(  r| j                  d      S |t         j                  k(  r| j                  d      S |t         j                  k(  r| j                  d      S |t         j                  k(  r| j                  d      S |t         j                  k(  r| j                  d	      S |t         j                  k(  r| j                  d
      S |t         j                  k(  r| j                  d      S t        d| d      )Nr~   r   r   r   r?   rC   r   r   r   r   rT   r   r   )r'   rN   HasFieldrR   rP   r   r@   rL   rD   rF   rH   rJ   rU   r9   )r   target_types     r$   is_data_typer     sV   o,,,||H%%	..	.||H%%	,,	,||F##	11	1||K((	,,	,||F##	--	-||G$$	..	.||G$$	..	.||G$$	//	/||H%%	//	/||H%%	--	-||G$$
2;-rB
CCr#   )r   zPUnion[ChannelConfig, ChannelConfigPb, ChannelValue, ChannelPb, _AbstractChannel]rf   r   )r   r   rf   r   )r   rC   rf   r   )r   r?   rf   r   )r   rB   rf   r   )r   rT   rf   r   )rf   r   )r   r   r   r'   rf   r?   );
__future__r   r   r   typingr   r   r   r   r	   )sift.common.type.v1.channel_data_type_pb2commonrW   v1channel_data_type_pb2r   google.protobuf.empty_pb2r
   sift.channels.v3.channels_pb2r   r   1sift.common.type.v1.channel_bit_field_element_pb2r   r\   )sift.common.type.v1.channel_enum_type_pb2r   r[   sift.ingest.v1.ingest_pb2r   /sift.ingestion_configs.v2.ingestion_configs_pb2r   rg   typing_extensionsr   r   sift_py._internal.channelr   r3   "sift_py._internal.convert.protobufr   sift_py.errorr   r   r}   r'   r   rS   rO   rM   rA   rE   rI   rG   rK   r   rQ   r=   rV   r   r"   r#   r$   <module>r      s    "  9 9 > > + > G \ / A 9 8,9 ,u!J u!p
Z 
4Tj T,D Bq,d q,hy 
DD 	DD88767878;6;7Dr#   