o
    "j("                     @   s*  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Zd dl	Z	d dl
mZ d dlmZmZmZ d dlmZ d dlmZ eee jddZG d	d
 d
ZG dd deZG dd deZdd Zdd Zdd Zdd Zdd Zdd Zdd Z ed(ddZ!ed)d d!Z"d"d# Z#d$d% Z$d&d' Z%dS )*    N)BytesIO)core)	ParameterVariablestatic_only)
get_logger)signature_safe_contextmanagerz&%(asctime)s-%(levelname)s: %(message)s)fmtc                   @   s   e Zd Zdd Zdd ZdS )_open_bufferc                 C   s
   || _ d S Nbufferselfr    r   Z/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/framework/io_utils.py__init__'      
z_open_buffer.__init__c                 C   s   | j S r   r   )r   r   r   r   	__enter__*   s   z_open_buffer.__enter__N)__name__
__module____qualname__r   r   r   r   r   r   r
   &   s    r
   c                       s$   e Zd Z fddZdd Z  ZS )_buffer_readerc                    s   t  | | j | _d S r   )superr   r   tellinitial_tellr   	__class__r   r   r   /   s   z_buffer_reader.__init__c                 G   s"   |d d ur| j | j d S d S )Nr   )r   seekr   r   argsr   r   r   __exit__3   s   z_buffer_reader.__exit__)r   r   r   r   r!   __classcell__r   r   r   r   r   .   s    r   c                   @   s   e Zd Zdd ZdS )_buffer_writerc                 G   s   | j   d S r   )r   flushr   r   r   r   r!   :   s   z_buffer_writer.__exit__N)r   r   r   r!   r   r   r   r   r#   9   s    r#   c                 C   
   t | tS r   )
isinstancestr)pathr   r   r   _is_file_path>   r   r)   c                 C   s@   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 )r)   openr#   r   
ValueError)Zpath_or_buffermoder   r   r   _open_file_bufferB   s   
r/   c                 C   r%   r   )r&   r   r   r   r   r   _is_memory_bufferN   r   r0   c                 C   sF   | j  tjjjks| j  tjjjks| 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VarTypeZFEED_MINIBATCHZ
FETCH_LISTZREADERpersistablevarr   r   r   is_persistableR   s
   r8   c                 C   r%   )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)
    )r&   r   r6   r   r   r   is_parameterr   s   
r9   c                 C   s    t | ts| j st| S dS )NF)r&   r   r1   Zneed_check_feedr8   r6   r   r   r   is_belong_to_optimizer   s   r:   c                 C   s^   t |tsJ |j tjjjkr!| j|j	|j
|j|j|jddS | j|j	|j
|j|jddS )NT)nameshapedtyper2   	lod_levelr5   )r;   r<   r=   r2   r5   )r&   r   r1   r2   r   r3   r4   Z
LOD_TENSORZ
create_varr;   r<   r=   r>   )blockr7   r   r   r   _clone_var_in_block_   s"   	r@   c                 c   s
   | r| nt j }|r|nt j }|r|nt jj }t j|X t j||8 t jj " t jj	
d  d V  W d    n1 sHw   Y  W d    n1 sWw   Y  W d    n1 sfw   Y  W d    d S W d    d S 1 s~w   Y  d S r   )paddlebaseZProgramr   ZScopeZscope_guardZprogram_guardZunique_nameguardZ	frameworkZ_dygraph_guard)mainZstartupscopeprogZstartup_progr   r   r   _load_program_scope   s"   "rG      c                    s   dd   fddD t |rTtjdkrTtjjdkrTtj|d}t|d!}d	}td
t	||D ]}|
||||   q4W d    d S 1 sMw   Y  d S t|d}tj||d W d    d S 1 smw   Y  d S )Nc                 S   s2   t | tjjrt| S t | tjrt| S | S r   )r&   r   eagerZTensornparrayZ	LoDTensorr6   r   r   r   
get_tensor   s
   

z'_legacy_static_save.<locals>.get_tensorc                    s   i | ]	}| | qS r   r   ).0r;   rL   
param_dictr   r   
<dictcomp>   s    z'_legacy_static_save.<locals>.<dictcomp>darwin   )protocolwb   @r   )r)   sysplatformversion_infomajorpickledumpsr,   rangelenwriter/   dump)rO   Z
model_pathrS   pickle_bytesf	max_bytesir   rN   r   _legacy_static_save   s    
""rd   c                 C   sJ   t d}tj| }d}td||D ]	}|||7 }qtj|dd}|S )Nr   rU   latin1)encoding)	bytearrayosr(   getsizer\   readrZ   loads)r(   ra   r`   	file_sizerb   _Zload_resultr   r   r   _pickle_loads_mac   s   rn   c                    s   t  trDd}| v rDg } |  D ]!\}} fdd|d D }t||d  |< ||d 7 }q|D ]} | q7 |  S )NUnpackBigParamInfor@@c                    s   g | ]} | qS r   r   )rM   partload_objr   r   
<listcomp>   s    z%_pack_loaded_dict.<locals>.<listcomp>slicesOriginShape)r&   dictitemsrJ   ZconcatenateZreshapepop)rr   Zunpack_infoZremoveskeyvaluert   r   rq   r   _pack_loaded_dict   s   


r{   c                 C   sB  i }i }d|  k rdk rzn njt | trz|  D ]`\}}t |tjrytd|jj }t|j	}||kryi ||< |j	|| d< g || d< |
 }ttt|d | D ]!}|d t| }	|| d |	 ||| ||d   ||	< qWq|r| D ]\}}|| v r| | |d D ]}
||
 | |
< qq|| d< | S )	N      i?ru   rt   g      ?z@@.ro   )r&   rv   rw   rJ   Zndarrayintr=   itemsizeprodr<   flattenr\   mathceilr'   appendrx   )Z	saved_objrS   Ztemp_saved_objZunpack_inforry   rz   ZMAX_NUMBER_OF_ELEMENTZnum_elementrc   Z	part_namerp   r   r   r   _unpack_saved_dict   sV   




r   )NNN)rH   )&loggingr   rh   rZ   rV   ior   numpyrJ   rA   Zpaddle.baser   Zpaddle.base.frameworkr   r   r   Zpaddle.base.log_helperr   Zpaddle.base.wrapped_decoratorr   r   INFO_loggerr
   r   r#   r)   r/   r0   r8   r9   r:   r@   rG   rd   rn   r{   r   r   r   r   r   <module>   s@    
