
    i                     l   S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  S r
0 rS rS rS r\R                  r " S	 S
5      rS rS r\R
                  " \\5        S rS rS rS rS r " S S\R0                  5      rS r\\R6                  \'    " S S\R8                  5      r " S S5      rg)z/
Serialization support for compiled functions.
    N)cloudpickle)irc                      U R                   " U6 $ )zE
Global hook to rebuild a given class from its __reduce__ arguments.
)_rebuild)clsargss     O/var/www/html/trading/venv/lib/python3.13/site-packages/numba/core/serialize.py_rebuild_reductionr
      s     <<    c                     X4n [         U   nU$ ! [         a#    [        R                  " U5      =[         U'   n U$ f = f)zUsed by `numba_unpickle` from _helperlib.c

Parameters
----------
address : int
bytedata : bytes
hashed : bytes

Returns
-------
obj : object
    unpickled object
)_unpickled_memoKeyErrorr   loads)addressbytedatahashedkeyobjs        r	   _numba_unpickler      sU     
CAc" J  A%0%6%6x%@@sJAs   	 )==c                     [         n[        R                  " 5        nU" USS9nUR                  U 5        UR	                  5       nSSS5        U$ ! , (       d  f       W$ = f)zISimilar to `pickle.dumps()`. Returns the serialized object in bytes.
       )protocolN)NumbaPicklerioBytesIOdumpgetvalue)r   picklerbufppickleds        r	   dumpsr"   4   sQ     G	C!$	s,,. 

 N 

 Ns   )A
Ac                    [         R                  " U 5      u  p#n/ n[        U5      nU HO  n[        U[        R
                  5      (       a  UR                  [        U5      5        M>  UR                  U5        MQ     U[        U5      U4$ N)	r   r   iter
isinstancer   Valueappendnexttuple)
static_excexc_argsexcstatic_argslocinfo	real_argsexc_args_iterargs           r	   runtime_build_excinfo_structr3   @   su     + 1 1* =CgINMc288$$T-01S!	 
 y!7++r   c                   8    \ rS rSrSrSrS rS r\S 5       r	Sr
g)_CustomPickledP   ah  A wrapper for objects that must be pickled with `NumbaPickler`.

Standard `pickle` will pick up the implementation registered via `copyreg`.
This will spawn a `NumbaPickler` instance to serialize the data.

`NumbaPickler` overrides the handling of this type so as not to spawn a
new pickler for the object when it is already being pickled by a
`NumbaPickler`.
ctorstatesc                     Xl         X l        g r$   r7   )selfr8   r9   s      r	   __init___CustomPickled.__init__]   s    	r   c                 R    [         R                  U R                  U R                  44$ r$   )r5   r   r8   r9   r;   s    r	   _reduce_CustomPickled._reducea   s     &&DKK(@@@r   c                     U " X5      $ r$    )r   r8   r9   s      r	   r   _CustomPickled._rebuildd   s    4  r   N)__name__
__module____qualname____firstlineno____doc__	__slots__r<   r@   classmethodr   __static_attributes__rC   r   r	   r5   r5   P   s-     !IA ! !r   r5   c                 2    [        U 5      u  p[        X5      $ )zHstandard unpickling for `_CustomPickled`.

Uses `NumbaPickler` to load.
)r   r5   )
serializedr8   r9   s      r	   _unpickle__CustomPickledrO   i   s    
 $LD$''r   c                 V    [        U R                  U R                  45      n[        U44$ )zFstandard pickling for `_CustomPickled`.

Uses `NumbaPickler` to dump.
)r"   r8   r9   rO   )cprN   s     r	   _pickle__CustomPickledrR   r   s(    
 +,J#j]22r   c                 &    [         [        X5      44$ )aT  For customizing object serialization in `__reduce__`.

Object states provided here are used as keyword arguments to the
`._rebuild()` class method.

Parameters
----------
states : dict
    Dictionary of object states to be serialized.

Returns
-------
result : tuple
    This tuple conforms to the return type requirement for `__reduce__`.
)custom_rebuildr5   )r   r9   s     r	   custom_reducerU      s      N37999r   c                 T    U R                   U R                  p!UR                  " S0 UD6$ )zaCustomized object deserialization.

This function is referenced internally by `custom_reduce()`.
rC   )r8   r9   r   )custom_pickledr   r9   s      r	   rT   rT      s)    
 !%%~'<'<<<!&!!r   c                     [         R                  " 5        n[        U5      n UR                  U 5         SSS5        g! [        R
                   a     SSS5        gf = f! , (       d  f       g= f)zmCheck if *obj* can be serialized.

Parameters
----------
obj : object

Returns
--------
can_serialize : bool
NTF)r   r   r   r   picklePicklingError)r   foutr   s      r	   is_serialiabler\      s_     
t$	LL  
 ## 	 
		 
s+   A >A AA AA  
A.c                 H    [         R                  " S[        U 5       S35      e)NzPickling of z is unsupported)rY   rZ   type)r   s    r	   
_no_pickler_      s     


d3i[H
IIr   c                 D    [         R                  R                  U 5        U $ )z1This is called on a type to disable pickling
    )r   disabled_typesadd)typs    r	   disable_picklingrd      s     ##C(Jr   c                   8   ^  \ rS rSr\" 5       r U 4S jrSrU =r$ )r      c                 j   > [        U5      U R                  ;   a  [        U5        [        TU ]  U5      $ r$   )r^   ra   r_   superreducer_override)r;   r   	__class__s     r	   ri   NumbaPickler.reducer_override   s,    9+++sOw',,r   rC   )	rE   rF   rG   rH   setra   ri   rL   __classcell__rj   s   @r	   r   r      s    UN- -r   r   c                 "    U R                  5       $ r$   )r@   )rQ   s    r	   _custom_reduce__custompickledrp      s    ::<r   c                   l    \ rS rSrSr\R                  S 5       r\R                  S 5       r	S r
S rSrg)	ReduceMixin   zfA mixin class for objects that should be reduced by the NumbaPickler
instead of the standard pickler.
c                     [         er$   NotImplementedErrorr?   s    r	   _reduce_statesReduceMixin._reduce_states       !!r   c                     [         er$   ru   )r   kwargss     r	   r   ReduceMixin._rebuild   ry   r   c                     U R                   $ r$   rn   r?   s    r	   _reduce_classReduceMixin._reduce_class   s    ~~r   c                 R    [        U R                  5       U R                  5       5      $ r$   )rU   r~   rw   r?   s    r	   
__reduce__ReduceMixin.__reduce__   s!    T//143F3F3HIIr   rC   N)rE   rF   rG   rH   rI   abcabstractmethodrw   abstractclassmethodr   r~   r   rL   rC   r   r	   rr   rr      sF    
 	" " 	" "

Jr   rr   c                   :    \ rS rSrSrS rS rS r\S 5       r	Sr
g)	PickleCallableByPath   a  Wrap a callable object to be pickled by path to workaround limitation
in pickling due to non-pickleable objects in function non-locals.

Note:
- Do not use this as a decorator.
- Wrapped object must be a global that exist in its parent module and it
  can be imported by `from the_module import the_object`.

Usage:

>>> def my_fn(x):
>>>     ...
>>> wrapped_fn = PickleCallableByPath(my_fn)
>>> # refer to `wrapped_fn` instead of `my_fn`
c                     Xl         g r$   _fn)r;   fns     r	   r<   PickleCallableByPath.__init__   s    r   c                 &    U R                   " U0 UD6$ r$   r   )r;   r   r{   s      r	   __call__PickleCallableByPath.__call__   s    xx(((r   c                     [        U 5      R                  U R                  R                  U R                  R                  44$ r$   )r^   r   r   rF   rE   r?   s    r	   r   PickleCallableByPath.__reduce__   s0    Dz""TXX%8%8$((:K:K$MMMr   c                 H    U " [        [        R                  U   U5      5      $ r$   )getattrsysmodules)r   modnamefn_paths      r	   r   PickleCallableByPath._rebuild  s    73;;w/9::r   r   N)rE   rF   rG   rH   rI   r<   r   r   rK   r   rL   rC   r   r	   r   r      s+    )N ; ;r   r   )rI   r   r   r   copyregrY   numbar   llvmliter   r
   r   r   r"   r3   r   r5   rO   rR   rU   rT   r\   r_   rd   CloudPicklerr   rp   dispatch_tableABCrr   r   rC   r   r	   <module>r      s     
 	     ,		, 	! !2(3 ~5 6:&"*J	-;++ 	- /L  N +J#'' J2; ;r   