
    ni-                        d dl Z d dlZd dlmZmZ d dlmZ  G d de          Z G d de          Z ej	        d          Z
d	 Zd
 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 G d de          Z G d de          ZdS )    N)datetime	timedelta)	FieldMaskc                       e Zd Zd ZdS )ObjectSerializerc                 "    || _         || _        d S N)to_dict_valuefrom_dict_value)selfr
   r   s      T/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/kagglesdk/kaggle_object.py__init__zObjectSerializer.__init__	   s    *.    N__name__
__module____qualname__r    r   r   r   r      s#        / / / / /r   r   c                       e Zd Zd ZdS )PredefinedSerializerc                 B    t                               | d d            dS )zOPredefined objects such as int, float etc are serialized/deserialized directly.c                     |S r	   r   clsv_s      r   <lambda>z/PredefinedSerializer.__init__.<locals>.<lambda>   s    ! r   c                     |S r	   r   r   r   s     r   r   z/PredefinedSerializer.__init__.<locals>.<lambda>   s    A r   Nr   r   r   s    r   r   zPredefinedSerializer.__init__   s(    !!$(;(;=M=MNNNNNr   Nr   r   r   r   r   r      s(        O O O O Or   r   z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))c                 \    t                               d|                                           S )Nz_\1)!_pascal_to_upper_snake_case_regexsubupper)strings    r    _pascal_case_to_upper_snake_caser'      s$    ,00@@FFHHHr   c                     t          j        d|           }d                    t          t          j        |                    S )Nz0[A-Z]?[a-z]+|[A-Z]{2,}(?=[A-Z][a-z]|\d|\W|$)|\d+r   )refindalljoinmapstrlower)camel_inputwordss     r   _convertr1      s2    JJKXXE88C	5))***r   c                   @    e Zd Zd Zed             Zed             ZdS )EnumSerializerc                 B    t                               | d d            dS )a1  
        Enum objects are serialized using their ".name" field and deserialized by indexing the string in the Enum type.
        Example:
        class Foo(Enum):
           TEST = 1
        foo = Foo.TEST
        foo.name # => returns "TEST"
        Foo["TEST"] # => returns Foo.TEST enum value.
        c                 8    t                               | |          S r	   )r3   _to_strr   s      r   r   z)EnumSerializer.__init__.<locals>.<lambda>0   s    n44S!<< r   c                 8    t                               | |          S r	   )r3   	_from_strr   s     r   r   z)EnumSerializer.__init__.<locals>.<lambda>1   s    >33C;; r   Nr    r!   s    r   r   zEnumSerializer.__init__$   s5     	!!<<;;	
 	
 	
 	
 	
r   c                     |j         S r	   )namer   s     r   r6   zEnumSerializer._to_str4   s     vr   c                    	 | |         S # t           $ r t          |           }|                                }t          |                                          }t	          | j                                                  }|                                D ]s}|                                }||k    r||         c cY S |                    |          r|                    |          s|                    |          r||         c cY S t w xY wr	   )	KeyErrorvarsr.   r1   r'   r   keys
startswithendswith)r   r   dctnnnenum_prefixkeyks           r   r8   zEnumSerializer._from_str:   s   	q6M 	 	 	s))C		A!""$$B:3<HHNNPPKxxzz $ $IIKK66s8OOOOO<<,, $A $!**R.. $s8OOOOO$	s   
 B.D:A	DDNr   r   r   r   staticmethodr6   r8   r   r   r   r3   r3   "   sY        
 
 
    \
   \  r   r3   c                       e Zd ZdefdZdS )ListSerializeritem_serializerc                 L    t                               | fdfd           dS )z
        Lists are serialized based on the type they contain. Since objects are generated from proto files, a list always
        contains objects of the same type, which is serialized/deserialized using "item_serializer".
        c                 (      fd|D             S )Nc                 >    g | ]}                     |          S r   r
   ).0r   r   ignore_defaultsrK   s     r   
<listcomp>z=ListSerializer.__init__.<locals>.<lambda>.<locals>.<listcomp>W   s.    ,o,o,ohi_-J-J3PQSb-c-c,o,o,or   r   )r   lrQ   rK   s   ` `r   r   z)ListSerializer.__init__.<locals>.<lambda>W   s%    ,o,o,o,o,o,omn,o,o,o r   c                 $      fd|D             S )Nc                 <    g | ]}                     |          S r   r   )rP   r   r   rK   s     r   rR   z=ListSerializer.__init__.<locals>.<lambda>.<locals>.<listcomp>X   s)    OOOO;;CCCOOOr   r   )r   rS   rK   s   ` r   r   z)ListSerializer.__init__.<locals>.<lambda>X   s     OOOOOQOOO r   Nr    r   rK   s    `r   r   zListSerializer.__init__P   sB    
 	!!ooooOOOO	
 	
 	
 	
 	
r   Nr   r   r   r   r   r   r   r   rJ   rJ   N   s0        	
(8 	
 	
 	
 	
 	
 	
r   rJ   c                       e Zd ZdefdZdS )MapSerializerrK   c                 L    t                               | fdfd           dS )z
        Maps are serialized based on type of their values. Since maps keys are always predefined types, we don't need a
        serializer for them.
        c                 L      fd|                                 D             S )Nc                 F    i | ]\  }}|                     |          S r   rO   )rP   rF   r   r   rQ   rK   s      r   
<dictcomp>z<MapSerializer.__init__.<locals>.<lambda>.<locals>.<dictcomp>e   s?     - - -NRaQR?00aII- - -r   items)r   drQ   rK   s   ` `r   r   z(MapSerializer.__init__.<locals>.<lambda>e   sC     - - - - - -VWV]V]V_V_- - - r   c                 H      fd|                                 D             S )Nc                 D    i | ]\  }}|                     |          S r   rV   )rP   rF   r   r   rK   s      r   r^   z<MapSerializer.__init__.<locals>.<lambda>.<locals>.<dictcomp>h   s/    ]]]41aA>>sAFF]]]r   r_   )r   ra   rK   s   ` r   r   z(MapSerializer.__init__.<locals>.<lambda>h   s-    ]]]]]STSZSZS\S\]]] r   Nr    rW   s    `r   r   zMapSerializer.__init__^   sM    
 	!!    ^]]]	
 	
 	
 	
 	
r   NrX   r   r   r   rZ   rZ   \   s0        
(8 
 
 
 
 
 
r   rZ   c                   @    e Zd Zd Zed             Zed             ZdS )DateTimeSerializerc                 B    t                               | d d            dS )z@Date times are serialized/deserialized as a string in iso formatc                 6    t                               |          S r	   )re   r6   )r   dtr   s      r   r   z-DateTimeSerializer.__init__.<locals>.<lambda>r   s    199"== r   c                 6    t                               |          S r	   )re   r8   )r   r   s     r   r   z-DateTimeSerializer.__init__.<locals>.<lambda>s   s    +55a88 r   Nr    r!   s    r   r   zDateTimeSerializer.__init__n   s3    !!==88	
 	
 	
 	
 	
r   c                 4    |                      d          dz   S )Nmilliseconds)timespecZ)	isoformat)rh   s    r   r6   zDateTimeSerializer._to_strv   s    ||^|44s::r   c                 B   |                      d          } |                     dd          }t          |          dk    rt          j        |           S |\  }}|d d         }	 t          j        | d|           S # t
          $ r t          j        |          cY S w xY w)Nrm   .   )maxsplit   )rstriprsplitlenr   fromisoformat
ValueError)r   fieldsrh   nanosmilliss        r   r8   zDateTimeSerializer._from_strz   s    HHSMM#**v;;!)!,,,Urr	.)R*:*:&*:*:;;; 	. 	. 	.)"-----	.s   $A= =BBNrG   r   r   r   re   re   l   sY        
 
 
 ; ; \; 
. 
. \
. 
. 
.r   re   c                   ^    e Zd Zg dZd Zed             Zed             Zed             ZdS )TimeDeltaSerializer)
r   i i @B i i'    d   
   rq   c                 B    t                               | d d            dS )zkTime deltas are serialized/deserialized as a string in "<seconds>.<nanoseconds>s" format. Example: 151.500sc                 6    t                               |          S r	   )r}   _to_dict_value)r   tr   s      r   r   z.TimeDeltaSerializer.__init__.<locals>.<lambda>   s    1@@CC r   c                 6    t                               |          S r	   )r}   _from_dict_valuer   s     r   r   z.TimeDeltaSerializer.__init__.<locals>.<lambda>   s    .??BB r   Nr    r!   s    r   r   zTimeDeltaSerializer.__init__   s3    !!CCBB	
 	
 	
 	
 	
r   c                     | j         }t                              | j        dz            }|d                    |          S d                    ||          S )Nr   z{}sz{}.{}s)secondsr}   _nanos_to_strmicrosecondsformat)deltar   	nanos_strs      r   r   z"TimeDeltaSerializer._to_dict_value   sP    -'55e6H46OPP	<<(((w	222r   c                     | dk    rd S | dk     r| dz  } | dz  dk    rd                     | dz            S | dz  dk    rd                     | dz            S d                     |           S )Nr   r~   z{}r   )r   )rz   s    r   r   z!TimeDeltaSerializer._nanos_to_str   s~    A::4199RKE7?a;;uw///T\Q;;ut|,,,;;u%%%r   c                 ,   |                      d                              d          \  }}t          |          t          j        t          |                   z  }t          t          |          t          t          |          dz                      S )Nsrp   r   )r   r   )rt   splitintr}   SUBSECOND_SCALING_FACTORSrv   r   )valuer   nanosRawrz   s       r   r   z$TimeDeltaSerializer._from_dict_value   sr    #ll3//55c::(H 3 McRZmm \\WCE

T@Q<R<RSSSSr   N)	r   r   r   r   r   rH   r   r   r   r   r   r   r}   r}      s        ! ! !
 
 
 3 3 \3 
& 
& \
& T T \T T Tr   r}   c                   *    e Zd Zd Zed             ZdS )FieldMaskSerializerc                 B    t                               | d d            dS )zhField masks are serialized/deserialized as a string that contains a list of paths with a comma delimiterc                 *    |                                 S r	   )ToJsonString)r   mr   s      r   r   z.FieldMaskSerializer.__init__.<locals>.<lambda>   s    ann.. r   c                 6    t                               |          S r	   )r   _from_joined_pathsr   s     r   r   z.FieldMaskSerializer.__init__.<locals>.<lambda>   s    .AA!DD r   Nr    r!   s    r   r   zFieldMaskSerializer.__init__   s3    !!..DD	
 	
 	
 	
 	
r   c                 L    t                      }|                    |            |S r	   )r   FromJsonString)joined_pathsmasks     r   r   z&FieldMaskSerializer._from_joined_paths   s$    {{L)))r   N)r   r   r   r   rH   r   r   r   r   r   r      s>        
 
 
   \  r   r   c                       e Zd Zd ZdS )KaggleObjectSerializerc                 B    t                               | d d            dS )z
        Kaggle objects (i.e., proto-generated types that inherit from KaggleObject) have custom "to_dict" and "from_dict"
        methods that serialize/deserialize them to/from dictionaries.
        c                 .    |                      ||          S r	   )to_dict)r   r   rQ   s      r   r   z1KaggleObjectSerializer.__init__.<locals>.<lambda>   s    CKK?,K,K r   c                 ,    |                      |          S r	   )	from_dictr   s     r   r   z1KaggleObjectSerializer.__init__.<locals>.<lambda>   s    3==++ r   Nr    r!   s    r   r   zKaggleObjectSerializer.__init__   s:    
 	!! LK ,+
	
 
	
 
	
 
	
 
	
r   Nr   r   r   r   r   r      s#        
 
 
 
 
r   r   c                   &    e Zd Z	 ddZddZd ZdS )	FieldMetadataFc                 h    || _         || _        || _        || _        || _        || _        || _        d S r	   )	json_name
field_nameprivate_field_name
field_typedefault_value
serializeroptional)r   r   r   r   r   r   r   r   s           r   r   zFieldMetadata.__init__   s;     #$"4$*$ r   Tc                     t          || j                  }|r|| j        k    rd S |d S | j                            | j        ||          S r	   )getattrr   r   r   r
   r   )r   instancerQ   r   s       r   get_as_dict_itemzFieldMetadata.get_as_dict_item   sT    $"9:: 	u(:::4=4,,T_e_UUUr   c                     | j         |vrd S || j                  }|| j        k    rd S 	 t          || j        | j                            | j        |                     d S # t          $ r} d }~ww xY wr	   )r   r   setattrr   r   r   r   	Exception)r   r   	json_dictr   es        r   set_from_dictzFieldMetadata.set_from_dict   s    >**F$.)D&&&F	'//GG    
  	 	 		s   4A 
A-'A((A-N)FT)r   r   r   r   r   r   r   r   r   r   r      sT         ! ! ! !$V V V V    r   r   c                       e Zd Zd Zed             Zed             Zed             Zed             Z	d Z
d Zdd	Zdd
Zed             Zed             ZddZd Zd Zd Zd Zd ZdS )KaggleObjectc                     d)Nz5Error: endpoint must be defined by the request objectr   r!   s    r   endpointzKaggleObject.endpoint  s    EEr   c                      d S r	   r   r   r   r   endpoint_pathzKaggleObject.endpoint_path      tr   c                      d S r	   r   r   r   r   body_fieldszKaggleObject.body_fields  r   r   c                 6    |                      |j                  S r	   )	from_jsontext)r   http_responses     r   prepare_fromzKaggleObject.prepare_from  s    }}]/000r   c                      dS )NGETr   r   r   r   methodzKaggleObject.method  s    ur   c                     d| _         d S )NT)
_is_frozenr!   s    r   _freezezKaggleObject._freeze!  s    r   c                     t          | d          r/t          | |          st          d| j        j         d|           t                              | ||           d S )Nr   zUnknown field for z: )hasattrAttributeError	__class__r   object__setattr__)r   rE   r   s      r   r   zKaggleObject.__setattr__$  sj    4&& 	XwtS/A/A 	X !Vdn6M!V!VQT!V!VWWW4e,,,,,r   Tc                 J      fd j         D             }fd|D             S )Nc                 J    g | ]}|j         |                              f S r   )r   r   rP   fieldrQ   r   s     r   rR   z(KaggleObject.to_dict.<locals>.<listcomp>*  s1    oooY^U_e&<&<T?&S&STooor   c                 $    i | ]\  }}r|	||S r	   r   rP   rF   r   rQ   s      r   r^   z(KaggleObject.to_dict.<locals>.<dictcomp>+  %    TTT!Q?Tam1mmmr   _fieldsr   rQ   kv_pairss   `` r   r   zKaggleObject.to_dict)  s>    ooooobfbnoooTTTT8TTTTr   c                 J      fd j         D             }fd|D             S )Nc                 J    g | ]}|j         |                              f S r   )r   r   r   s     r   rR   z-KaggleObject.to_field_map.<locals>.<listcomp>.  s2    pppZ_U%u'='=dO'T'TUpppr   c                 $    i | ]\  }}r|	||S r	   r   r   s      r   r^   z-KaggleObject.to_field_map.<locals>.<dictcomp>/  r   r   r   r   s   `` r   to_field_mapzKaggleObject.to_field_map-  s>    pppppcgcopppTTTT8TTTTr   c                 Z     |             }| j         D ]}|                    ||           |S r	   )r   r   )r   r   r   r   s       r   r   zKaggleObject.from_dict1  s<    355[ 	5 	5E)4444r   c                 P    |                      t          j        |                    S r	   )r   jsonloads)r   json_strs     r   r   zKaggleObject.from_json8  s    }}TZ11222r   c                 P    t          j        |                     |                    S r	   )r   dumpsr   )r   rQ   s     r   to_jsonzKaggleObject.to_json<  s    z$,,77888r   c                 .    |                      d          S NF)rQ   r   r!   s    r   __str__zKaggleObject.__str__?      ||E|222r   c                 .    |                      d          S r   r   r!   s    r   __repr__zKaggleObject.__repr__B  r   r   c                     	 |                      |          }n# t          $ r Y dS w xY wt          | |j                  }|j        r|d uS ||j        k    S )NF)
_get_fieldrx   r   r   r   r   )r   r   r   r   s       r   __contains__zKaggleObject.__contains__E  sq    	OOJ//EE 	 	 	55	e677> 	0$$E///s    
&&c                 f    |                      |          }t          | |j        |j                   d S r	   )r   r   r   r   r   r   r   s      r   __delattr__zKaggleObject.__delattr__P  s1    
++e.0CDDDDDr   c                     t          fd| j        D             d           }| t          d| j        j         d d          |S )Nc              3   2   K   | ]}|j         k    |V  d S r	   )r   )rP   fr   s     r   	<genexpr>z*KaggleObject._get_field.<locals>.<genexpr>U  s/      LLA1K1Ka1K1K1K1KLLr   zProtocol message z	 has no "z" field.)nextr   rx   r   r   r   s    ` r   r   zKaggleObject._get_fieldT  s[    LLLLLLLdSS=g1HggS]ggghhhr   Nr   )r   r   r   r   rH   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     sx       F F F   \   \ 1 1 [1   \  - - -
U U U UU U U U   [ 3 3 [39 9 9 93 3 33 3 3	0 	0 	0E E E    r   r   )r   r)   r   r   google.protobuf.field_mask_pb2r   r   r   r   compiler#   r'   r1   r3   rJ   rZ   re   r}   r   r   r   r   r   r   r   <module>r     st    				 ( ( ( ( ( ( ( ( 4 4 4 4 4 4/ / / / /v / / /O O O O O+ O O O %/BJ/Y$Z$Z !I I I+ + +
) ) ) ) )% ) ) )X
 
 
 
 
% 
 
 

 
 
 
 
$ 
 
 
 . . . . .) . . .80T 0T 0T 0T 0T* 0T 0T 0Tf    *   "
 
 
 
 
- 
 
 
() ) ) ) )F ) ) )XL L L L L6 L L L L Lr   