o
    QeJ	  ã                   @   s@   d dl mZ g Zdd„ ZG dd„ deƒZeG dd„ deƒƒZdS )	é   )Úcorec                    s   i ‰ ‡ ‡fdd„}|S )Nc                     s"   ˆˆ vrˆ| i |¤Žˆ ˆ< ˆ ˆ S ©N© )ÚargsZkargs©Z	_instanceÚclsr   úGD:\Projects\ConvertPro\env\Lib\site-packages\paddle/utils/op_version.pyÚ
_singleton   s   zSingleton.<locals>._singletonr   )r   r	   r   r   r   Ú	Singleton   s   r
   c                   @   s   e Zd Zdd„ Zddd„ZdS )ÚOpUpdateInfoHelperc                 C   s
   || _ d S r   )Ú_info)ÚselfÚinfor   r   r   Ú__init__!   s   
zOpUpdateInfoHelper.__init__Ú c                 C   sV   d}t jdt jdi}|dkrd}|S t| jƒ|v r)t| j|t| jƒ ƒƒ |kr)d}|S )NFÚnamer   T)r   Z
OpAttrInfoZOpInputOutputInfoÚtyper   Úgetattr)r   r   ÚresultZ	key_funcsr   r   r   Úverify_key_value$   s   þýz#OpUpdateInfoHelper.verify_key_valueN)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   s.   e Zd Zdd„ Zdd„ Zejjdfdd„ZdS )	ÚOpLastCheckpointCheckerc                 C   s   t  ¡ | _i | _|  ¡  d S r   )r   Zget_op_version_mapÚraw_version_mapÚcheckpoints_mapÚ_construct_map)r   r   r   r   r   5   s   
z OpLastCheckpointChecker.__init__c                 C   s8   | j D ]}| j |  ¡ d }| ¡  ¡ }|| j|< qd S )Néÿÿÿÿ)r   ZcheckpointsZversion_descÚinfosr   )r   Úop_nameZlast_checkpointr   r   r   r   r   :   s
   
ýz&OpLastCheckpointChecker._construct_mapr   c                 C   sZ   g }|| j v r+| j | D ]}| ¡ |ks|tjjkr*t| ¡ ƒ |¡r*| | ¡ ¡ q|S r   )	r   r   r   ÚOpUpdateTypeÚkInvalidr   r   r   Úappend)r   r   r   ÚkeyZupdatesÚupdater   r   r   Úfilter_updates@   s   
ÿ€z&OpLastCheckpointChecker.filter_updatesN)	r   r   r   r   r   r   r    r!   r%   r   r   r   r   r   2   s    r   N)Zfluidr   Ú__all__r
   Úobjectr   r   r   r   r   r   Ú<module>   s   