
    Wh                        d Z ddlmZ ddlZddlZddlZddlmZ ddZ		 ddd
Z
 G d dej                  Z G d dej                  ZdS )z*Pickling support for precompiled binaries.    )annotationsN)
xla_clientcompiledjax.stages.Compiledc                   t          | j        dd          }|t          d          t          j                            | j                  \  }}t          j                    5 }t          |          
                    ||| j        f           |                                || j        fcddd           S # 1 swxY w Y   dS )zSerializes a compiled binary.

  Because pytrees are not serializable, they are returned so that
  the user can handle them properly.
  _unloaded_executableNz*Compilation does not support serialization)getattr_executable
ValueErrorjax	tree_utiltree_flatten	args_infoioBytesIO_JaxPjrtPicklerdump
_no_kwargsgetvalueout_tree)r   unloaded_executableargs_info_flatin_treefiles        k/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/jax/experimental/serialize_executable.py	serializer      s      4 6> > 
A
B
BBM66x7IJJ.'	z|| 7tD	nh.ABD D D==??GX%667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   "AB55B9<B9backendstr | xc.Client | Nonec                v   |t          |t                    rt          j        |          d         j        }t          t          j        |           |                                          \  }}}|	                    |          }|                                }t          j
                            ||||          S )z>Constructs a jax.stages.Compiled from a serialized executable.Nr   )	no_kwargs)
isinstancestrr   devicesclient_JaxPjrtUnpicklerr   r   load	unflattenstagesCompiled)	
serializedr   r   r   r   r   r    r   loaded_compiled_objs	            r   deserialize_and_loadr,   +   s     _
7C00_k'""1%,G ""*Z"8"8'BBGGII//)+0022			9h) 
 
E 
E E    c                  4    e Zd Zej        fZej        fZd ZdS )r   c                F   t          |t          j                  rd|j                            |          fS t          |t          j        j                  rd|                                fS t          || j                  r	d|j	        fS t          || j
                  rdS d S )Nexecdevice)r$   )r!   xcLoadedExecutabler$   serialize_executable_xla
Executabler   device_typesidclient_types)selfobjs     r   persistent_idz_JaxPjrtPickler.persistent_idC   s    #r*++ <cj55c::;;#rw)** 'cmmoo&&#t())  #t()) [ r-   N)	__name__
__module____qualname__r2   Devicer7   Clientr9   r<    r-   r   r   r   ?   s5        ),),    r-   r   c                  $     e Zd Z fdZd Z xZS )r%   c                    t                                          |           || _        d |                                D             | _        d S )Nc                    i | ]
}|j         |S rB   )r8   ).0ds     r   
<dictcomp>z._JaxPjrtUnpickler.__init__.<locals>.<dictcomp>S   s    ===a!$===r-   )super__init__r   r#   devices_by_id)r:   r   r   	__class__s      r   rJ   z_JaxPjrtUnpickler.__init__P   sH    	GGTDL==7??+<+<===Dr-   c                    |d         dk    r | j                             |d                   S |d         dk    r| j        |d                  S |d         dk    r| j         S t          j        )Nr   r0      r1   r$   )r   deserialize_executablerK   pickleUnpicklingError)r:   pids     r   persistent_loadz!_JaxPjrtUnpickler.persistent_loadU   sl    
1v\00Q888
1vA''
1v\

  r-   )r=   r>   r?   rJ   rS   __classcell__)rL   s   @r   r%   r%   N   sG        > > > > >
! ! ! ! ! ! !r-   r%   )r   r   )N)r   r   )__doc__
__future__r   rP   r   r   jax._src.libr   r2   r   r,   Picklerr   	Unpicklerr%   rB   r-   r   <module>rZ      s    1 0 " " " " " "  				 



 ) ) ) ) ) )7 7 7 7* <@E E E E E(    fn   ! ! ! ! !( ! ! ! ! !r-   