
    ӆhF"                         S SK r S SKrS SKrS SKrS SKr\R                  " S5      r " S S5      r " S S5      r	 " S S5      r
g)	    Nshapc                   B    \ rS rSrSrS r\SS j5       r\S 5       rSr	g)	Serializable   z3This is the superclass of all serializable objects.c                 D    [         R                  " [        U 5      U5        g)z(Save the model to the given file stream.N)pickledumptype)selfout_files     eC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\shap/_serializable.pysaveSerializable.save   s    DJ)    c                 6    U(       a  U R                  U5      $ 0 $ )zThis is meant to be overridden by subclasses and called with super.

We return constructor argument values when not being instantiated. Since there are no
constructor arguments for the Serializable class we just return an empty dictionary.
)_instantiated_load)clsin_fileinstantiates      r   loadSerializable.load   s     ))'22	r   c           
      x   [         R                  " U5      nUc  g[        R                  " U5      (       a  [	        X05      (       d  X0La  [        SU SU  S35      eUR                  " U4SS0UD6n[        R                  " UR                  5      S   nU" S0 U Vs0 s H  ofU;   d  M
  XdU   _M     snD6$ s  snf )	zThis is meant to be overridden by subclasses and called with super.

We return constructor argument values (we have no values to load in this abstract class).
Nz&Invalid object type loaded from file. z is not a subclass of .r   Fr    )r   r   inspectisclass
issubclass	Exceptiongetfullargspec__init__)r   r   kwargsobj_typeconstructor_args	used_argsks          r   r   Serializable._instantiated_load   s     ;;w'x((H1J1JPXPcDXJNdehdiijkll $==NeNvN**8+<+<=a@	_;K^;KaT]~11q11;K^__^s   	B7)	B7r   N)T)
__name__
__module____qualname____firstlineno____doc__r   classmethodr   r   __static_attributes__r   r   r   r   r      s4    =*   ` `r   r   c                   4    \ rS rSrSrS rS rS rS	S jrSr	g)

Serializer0   z#Save data items to an input stream.c                 6    Xl         X l        X0l        SU l        g Nr   )
out_stream
block_nameblock_versionserializer_version)r   r3   r4   versions       r   r    Serializer.__init__3   s    $$$"#r   c                    [         R                  SU R                  5        [        R                  " U R                  U R
                  5        [         R                  SU R                  5        [        R                  " U R                  U R
                  5        [         R                  SU R                  5        [        R                  " U R                  U R
                  5        U $ )Nserializer_version = %dblock_name = %sblock_version = %d)logdebugr6   r   r	   r3   r4   r5   )r   s    r   	__enter__Serializer.__enter__9   s    		+T-D-DED++T__=		#T__5DOOT__5		&(:(:;D&&8r   c                 p    [         R                  S5        [        R                  " SU R                  5        g )NEND_BLOCK___)r=   r>   r   r	   r3   )r   exception_typeexception_value	tracebacks       r   __exit__Serializer.__exit__B   s     		.!NDOO4r   c                 4   [         R                  SU5        [        R                  " XR                  5        Ub  USL a9  [         R                  SS5        [        R                  " SU R                  5        GO[        U5      (       aK  [         R                  SS5        [        R                  " SU R                  5        U" X R                  5        GOUS:X  d  [        U[        5      (       a  US:X  a  [         R                  SS	5        [        R                  " S	U R                  5        [        [        R                  " UR                  5      S
   5      S:X  a  UR                  U R                  U5        GOUR                  U R                  5        OUS:X  a  [        U[        [        [        45      (       aX  [         R                  SS5        [        R                  " SU R                  5        [        R                  " X R                  5        Og[         R                  SS5        [        R                  " SU R                  5        [        R                  " X R                  5        O[!        SU S35      e[         R                  S[        U5      5        g)z-Dump a data item to the current input stream.z	name = %sNFencoder_name = %s
no_encodercustom_encoderz.saveautoserializable.saver      pickle.dumpcloudpickle.dumpzUnknown encoder type 'z' given for serialization!
value = %s)r=   r>   r   r	   r3   callable
isinstancer   lenr   r   r   intfloatstrcloudpickle
ValueError)r   namevalueencoders       r   r   Serializer.saveF   s   		+t$D//*?g.II)<8KKdoo6gII)+;<KK($//:E??+Jul$C$CSYHYII)+>?KK+T__=7))%**5a89Q>

4??E2

4??+%#uc!233		-}=M4??;E??3		-/AB.@  85gY>XYZZ		,E
+r   )r4   r5   r3   r6   N)rL   )
r'   r(   r)   r*   r+   r    r?   rF   r   r-   r   r   r   r/   r/   0   s    -$5,r   r/   c                   >    \ rS rSrSrS rS rS rS
S jrS
S jr	S	r
g)Deserializerf   z%Load data items from an input stream.c                 P    Xl         X l        X0l        X@l        SU l        SU l        g r2   )	in_streamr4   block_min_versionblock_max_versionserializer_min_versionserializer_max_version)r   rb   r4   min_versionmax_versions        r   r    Deserializer.__init__i   s*    "$!,!, '(#&'#r   c                    [         R                  " U R                  5      n[        R	                  SU5        XR
                  :  a  [        SU SU R
                   S35      eXR                  :  a  [        SU SU R                   S35      e[         R                  " U R                  5      n[        R	                  SU5        X R                  :w  a  [        SU R                   SU S35      e[         R                  " U R                  5      n[        R	                  S	U5        X0R                  :  a  [        S
U SU R                   S35      eX0R                  :  a  [        S
U SU R                   S35      eU $ )Nr:   z=The file being loaded was saved with a serializer version of zA, but the current deserializer in SHAP requires at least version r   zB, but the current deserializer in SHAP only support up to version r;   z@The next data block in the file being loaded was supposed to be , but the next block found was r<   z8The file being loaded was saved with a block version of )r   r   rb   r=   r>   re   rY   rf   r4   rc   rd   )r   r6   r4   r5   s       r   r?   Deserializer.__enter__s   s   #[[8		+-?@ ; ;;OPbOc dRRVRmRmQnnoq   ; ;;OPbOc dSSWSnSnRoopr  [[0
		#Z0(RSWSbSbRc d00:|1>  DNN3		&6111J=/ ZRRVRhRhQiijl  111J=/ ZSSWSiSiRjjkm  r   c                     [        S5       HQ  n[        R                  " U R                  5      n[        R                  SU5        US:X  a    g U R                  5         MS     [        SU R                   S35      e)Nd   zend_token = %srB   z5The data block end token wsa not found for the block r   )	ranger   r   rb   r=   r>   _load_data_valuerY   r4   )r   rC   rD   rE   _	end_tokens         r   rF   Deserializer.__exit__   sh    sADNN3III&	2N*!!#  PQUQ`Q`Paabcddr   Nc                    [         R                  " U R                  5      n[        R	                  SU5        [        SU5        X1:w  a  [        SU SU S35      eU R                  U5      n[        R	                  S[        U5      5        U$ )z/Load a data item from the current input stream.zloaded_name = %sloaded_namez?The next data item in the file being loaded was supposed to be rk   r   rQ   )	r   r   rb   r=   r>   printrY   rp   rW   )r   rZ   decoderru   r[   s        r   r   Deserializer.load   s     kk$..1		$k2m[)QRVQW X00;}A? 
 %%g.		,E
+r   c                 D   [         R                  " U R                  5      n[        R	                  SU5        US:X  d  [        U5      (       a)  [        U5      (       d   S5       eU" U R                  5      $ US:X  a  g US:X  a  [        R                  U R                  5      $ US:X  a   [        R                  " U R                  5      $ US:X  a   [         R                  " U R                  5      $ US:X  a   [        R                  " U R                  5      $ [        S	U 35      e)
NrI   rK   zDYou must provide a callable custom decoder for the data item {name}!rJ   rM   z
numpy.saverO   rP   z Unsupported encoder type found: )
r   r   rb   r=   r>   rR   r   nprX   rY   )r   rw   encoder_names      r   rp   Deserializer._load_data_value   s    {{4>>2		%|4++x/@/@G$$l&ll$4>>**<'..$$T^^44<'774>>**=(;;t~~..--##DNN33;L>JKKr   )rd   rc   r4   rb   rf   re   )N)r'   r(   r)   r*   r+   r    r?   rF   r   rp   r-   r   r   r   r_   r_   f   s!    /(%Ne Lr   r_   )r   loggingr   rX   numpyrz   	getLoggerr=   r   r/   r_   r   r   r   <module>r      sJ        "` "`J3, 3,l_L _Lr   