
    x-j,                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
Zd dlZd dlmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ  eee j        d	
          Z G d d          Z G d de          Z G d de          Zd Z d Z!d Z"d Z#d Z$d Z%d Z&ed!d            Z'ed"d            Z(d Z)d Z*d Z+d#dZ,d#dZ-d  Z.dS )$    N)BytesIO)FunctionType
MethodType)coreglobal_scope)	ParameterVariablestatic_only)
get_logger)signature_safe_contextmanager)in_pir_modez&%(asctime)s-%(levelname)s: %(message)s)fmtc                       e Zd Zd Zd ZdS )_open_bufferc                     || _         d S Nbuffer)selfr   s     Y/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/framework/io_utils.py__init__z_open_buffer.__init__)   s        c                     | j         S r   r   )r   s    r   	__enter__z_open_buffer.__enter__,   s
    {r   N)__name__
__module____qualname__r   r    r   r   r   r   (   s2              r   r   c                   $     e Zd Z fdZd Z xZS )_buffer_readerc                     t                                          |           | j                                        | _        d S r   )superr   r   tellinitial_tell)r   r   	__class__s     r   r   z_buffer_reader.__init__1   s7        K,,..r   c                 X    |d         !| j                             | j                   d S d S )Nr   )r   seekr$   r   argss     r   __exit__z_buffer_reader.__exit__5   s3    7KT.///// r   )r   r   r   r   r*   __classcell__)r%   s   @r   r    r    0   sG        / / / / /0 0 0 0 0 0 0r   r    c                       e Zd Zd ZdS )_buffer_writerc                 8    | j                                          d S r   )r   flushr(   s     r   r*   z_buffer_writer.__exit__<   s    r   N)r   r   r   r*   r   r   r   r-   r-   ;   s#            r   r-   c                 ,    t          | t                    S r   )
isinstancestr)paths    r   _is_file_pathr4   @   s    dC   r   c                     t          |           rt          | |          S d|v rt          |           S d|v rt          |           S t	          d|           )Nwrz$Expected 'r' or 'w' in mode but got )r4   openr-   r    
ValueError)path_or_buffermodes     r   _open_file_bufferr<   D   sh    ^$$ LND)))$;;!.111D[[!.111JDJJKKKr   c                 ,    t          | t                    S r   )r1   r   r   s    r   _is_memory_bufferr>   P   s    fg&&&r   c                 :   | j                                         t          j        j        j        k    sb| j                                         t          j        j        j        k    s1| j                                         t          j        j        j        k    rdS | j        S )a@  

    Check whether the given variable is persistable.

    Args:
        var(Variable): The variable to be checked.

    Returns:
        bool: True if the given `var` is persistable
        False if not.

    Examples:
        .. code-block:: python

            >>> # doctest: +SKIP('ValueError: var fc.b not in this block')
            >>> import paddle
            >>> import paddle.base as base

            >>> paddle.enable_static()
            >>> param = base.default_main_program().global_block().var('fc.b')
            >>> res = base.io.is_persistable(param)
    F)	desctyper   VarDescVarTypeFEED_MINIBATCH
FETCH_LISTREADERpersistablevars    r   is_persistablerJ   T   sh    0 	4</>>>8==??dl2===8==??dl2999u?r   c                 ,    t          | t                    S )aX  
    Check whether the given variable is an instance of Parameter.

    Args:
        var(Variable): The variable to be checked.

    Returns:
        bool: True if the given `var` is an instance of Parameter,
        False if not.

    Examples:
        .. code-block:: python

            >>> # doctest: +SKIP('ValueError: var fc.w not in this block')
            >>> import paddle
            >>> import paddle.base as base

            >>> paddle.enable_static()
            >>> param = base.default_main_program().global_block().var('fc.w')
            >>> res = base.io.is_parameter(param)
    )r1   r   rH   s    r   is_parameterrL   t   s    , c9%%%r   c                     t          | t                    s(| j                                        st	          |           S dS )NF)r1   r   r@   need_check_feedrJ   rH   s    r   is_belong_to_optimizerrO      s<    sI&& ##(*B*B*D*D #c"""5r   c                 V   t          |t                    sJ |j                                        t          j        j        j        k    r4|                     |j	        |j
        |j        |j        |j        d          S |                     |j	        |j
        |j        |j        d          S )NT)nameshapedtyperA   	lod_levelrG   )rQ   rR   rS   rA   rG   )r1   r	   r@   rA   r   rB   rC   DENSE_TENSOR
create_varrQ   rR   rS   rT   )blockrI   s     r   _clone_var_in_block_rX      s    c8$$$$$
x}}$,.;;;))m   
 
 	
 ))   
 
 	
r   c           	   #     K   | r| nt           j                                        }|r|nt           j                                        }|r|n"t           j        j                                        }t           j                            |          5  t           j                            ||          5  t           j        j                                        5  t           j        j	        
                    d           5  d V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )paddlebaseProgramr   Scopescope_guardprogram_guardunique_nameguard	framework_dygraph_guard)mainstartupscopeprogstartup_progs        r   _load_program_scoperi      s-     244V[0022D%@776;+>+>+@+@L8EE 0 6 6 8 8E&& !!$55  	%%''  	,,T22	  	                                                              s~   !E.$D6%D7D	<DDDDDD6D##D6&D#'D6*E6D:	:E=D:	>EEE   c           
          d  fd D              t          |          rt          j        dk    rt          j        j        dk    rt          j         |          t          |d          5 }d|                    fdt          d	t                              D                        d d d            d S # 1 swxY w Y   d S t          |d          5 }t          j         ||           d d d            d S # 1 swxY w Y   d S )
Nc                 z    t          | t          j        t          j        f          rt          j        |           S | S r   )r1   rZ   Tensorr   DenseTensornparrayrH   s    r   
get_tensorz'_legacy_static_save.<locals>.get_tensor   s1    cFM4+;<== 	!8C== 
r   c                 4    i | ]}| |                   S r   r   ).0rQ   rq   
param_dicts     r   
<dictcomp>z'_legacy_static_save.<locals>.<dictcomp>   s*    LLL$

:d#344LLLr   darwin   )protocolwb   @c              3   2   K   | ]}||z            V  d S r   r   )rs   i	max_bytespickle_bytess     r   	<genexpr>z&_legacy_static_save.<locals>.<genexpr>   sE         QY./     r   r   )r4   sysplatformversion_infomajorpickledumpsr8   
writelinesrangelenr<   dump)rt   
model_pathrx   frq   r}   r~   s   `   @@@r   _legacy_static_saver      s     
 MLLLLLLLJ 	j!!:LH$$"a''|JBBB*d## 	qILL     q#l"3"3Y??     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z400 	:AK
A9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s%   1AB??CCDDDc                     t          d          }t          j                            |           }d}t	          d||          D ]}||                    |          z  }t          j        |d          }|S )Nr   rz   latin1)encoding)	bytearrayosr3   getsizer   readr   loads)r3   r   r~   	file_sizer}   _load_results          r   _pickle_loads_macr      sr    Q<<L%%II1i++ * *y))),|h???Kr   c                 ~    t           t                    rd}| v rg } |                                         D ]T\  }} fd|d         D             }t          j        |                              |d                    |<   ||d         z  }U|D ]}                     |                                |            S )NUnpackBigParamInfor@@c                      g | ]
}|         S r   r   )rs   partload_objs     r   
<listcomp>z%_pack_loaded_dict.<locals>.<listcomp>   s    EEET(4.EEEr   slicesOriginShape)r1   dictitemsro   concatenatereshapepop)r   unpack_inforemoveskeyvaluer   s   `     r   _pack_loaded_dictr      s    (D!! &-(""G&{399;; + +
UEEEEU8_EEE "v 6 6 > >-(! ! 5?* " "S!!!!LL%%%Or   c           	      N   i }i }d|cxk     rdk     rBn n>t          | t                    r(|                                 D ]\  }}t          |t          j                  rt          d|j        j        z            }t          j        |j	                  }||k    ri ||<   |j	        ||         d<   g ||         d<   |
                                }t          t          t          j        |dz  |z                                D ]N}|dz   t          |          z   }	||         d                             |	           |||z  ||dz   z           ||	<   O|rN|                                D ]4\  }}|| v r+|                     |           |d         D ]}
||
         | |
<   5|| d<   | S )	N      i?r   r   g      ?z@@.r   )r1   r   r   ro   ndarrayintrS   itemsizeprodrR   flattenr   mathceilr2   appendr   )	saved_objrx   temp_saved_objr   r   r   MAX_NUMBER_OF_ELEMENTnum_elementr|   	part_namer   s              r   _unpack_saved_dictr      s   NK8ai&& 	'oo//  
UeRZ00 ,/"ek&::- -) #%'%+"6"6K"%:::+-C(:?+C(757C(2 %!& $	$/#$58M$M!" !" " "  A ),ec!ff(<I',X6==iHHH8= !"7!8:O#$q5;*!*9N955  9%++-- 	; 	;JCic"""!(O ; ;D&4T&:IdOO-8	)*r   c           	         t          |t          j                  s0t          |d          s t	          dt          |           d          |:t          |t          j                  s t	          dt          |           d          |t                      }|	                    | j
                  }|t          d| j
         d          |                                }t          |d          rt          |j        t          t          f          r|                                }n|j        }t!          |                                          t!          |          k    rIt          | j
         dt!          |                                           d	t!          |           d          |                                }|                                rt          j                    }n|                                rt          j                    }n]|                                rat          j                    }|                    |                                           t          j        |                                          }n|                                rtt          j                    }|                    |                                           t          j        |                                |                                          }n`t          j                    }|                    |                                           t          j        |                                           }|!                    ||           d S )
N	__array__zA`value` should be `numpy.ndarray` or `DenseTensor`, but received .C`scope` should be None or `paddle.static.Scope` type, but received Can not find Variable '' in the Scope.rR   z expected a shape z, but the received shape is )"r1   ro   r   hasattr	TypeErrorrA   r   _Scoper   find_varrQ   r9   rq   rR   r   r   list_placeis_cpu_placeCPUPlaceis_cuda_pinned_placeCUDAPinnedPlaceis_xpu_placePlace	set_placeXPUPlacexpu_device_idis_custom_placeCustomPlacecustom_device_typecustom_device_id	CUDAPlacegpu_device_idset)rI   r   rf   var_temptvalue_shapepplaces           r   	set_valuer     s   ubj)) 
WUK-H-H 
^PTUZP[P[^^^
 
 	
 E4;!?!?`RVW\R]R]```
 
 	
 }~~ch''HL38LLLMMMAug ekJ#=>> 	&++--KK+K		??d;////8pptAGGIIpp\`al\m\mppp   	


A~~ 2	
			!	! 2$&&	
		 2JLL	AHHJJaoo//00	
				 2JLL	AHHJJ !5!5!7!79K9K9M9MNNJLL	AHHJJq0011EE%r   c                 .   |:t          |t          j                  s t          dt	          |           d          |t                      }|                    | j                  }|t          d| j         d          |	                                }|S )aC  
    Get the value of variable or value in given scope.

    Args:
        scope(Scope, optional) : If `scope` is None, it will be set to global scope
            obtained through 'paddle.static.global_scope()'. Otherwise, use `scope`.
            Default: None

    Returns:
        Tensor, the value in given scope.

    Nr   r   r   r   )
r1   r   r   r   rA   r   r   rQ   r9   rq   )rI   rf   r   r   s       r   	get_valuer   K  s     E4;!?!?`RVW\R]R]```
 
 	
 }~~ch''HL38LLLMMMAHr   c                 z    t                      r,|                                                                 dk    rdS dS )Nzpd_op.fetchTF)r   get_defining_oprQ   )r   s    r   is_pir_fetch_varr   f  s:    }} ..005577=HHt5r   )NNN)rj   r   )/loggingr   r   r   r   ior   typesr   r   numpyro   rZ   paddle.baser   r   paddle.base.frameworkr   r	   r
   paddle.base.log_helperr   paddle.base.wrapped_decoratorr   paddle.frameworkr   r   INFO_loggerr   r    r-   r4   r<   r>   rJ   rL   rO   rX   ri   r   r   r   r   r   r   r   r   r   r   <module>r      s     				  



       * * * * * * * *      * * * * * * * * B B B B B B B B B B - - - - - - G G G G G G ( ( ( ( ( (
*gl H         0 0 0 0 0\ 0 0 0    \   
! ! !	L 	L 	L' ' '  @& & &2  
 
 
* 
 
 
 
 : : : :4    $' ' 'T0 0 0 0f   6    r   