o
    ®Ÿ?eö  ã                   @   s€   d Z ddlZddlZddlT ddlmZ eƒ  ddddœZ	d	d
„ Z
G dd„ dƒZe
eƒZe
eƒZeZe
eƒZe
eƒZeeƒZdS )zFImport router for absl.flags. See https://github.com/abseil/abseil-py.é    N)Ú*)Útf_decoratorÚnameÚdefaultÚhelp)Z	flag_nameÚdefault_valueÚ	docstringc                    s   ‡ fdd„}t  ˆ |¡S )zBWraps absl.flags's define functions so tf.flags accepts old names.c                     sP   d}t  ¡ D ]\}}||v rd}| |¡}|||< q|r!t d¡ ˆ | i |¤ŽS )z:Wrapper function that turns old keyword names to new ones.FTz€Use of the keyword argument names (flag_name, default_value, docstring) is deprecated, please use (name, default, help) instead.)Ú_RENAMED_ARGUMENTSÚitemsÚpopÚ_loggingÚwarning)ÚargsÚkwargsZhas_old_namesZold_nameÚnew_nameÚvalue©Úoriginal_function© úa/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/tensorflow/python/platform/flags.pyÚwrapper*   s   
€ÿz&_wrap_define_function.<locals>.wrapper)r   Zmake_decorator)r   r   r   r   r   Ú_wrap_define_function'   s   r   c                       sx   e Zd ZdZdd„ Z‡ fdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )Ú_FlagValuesWrapperzäWrapper class for absl.flags.FLAGS.

  The difference is that tf.flags.FLAGS implicitly parses flags with sys.argv
  when accessing the FLAGS values before it's explicitly parsed,
  while absl.flags.FLAGS raises an exception.
  c                 C   s   || j d< d S ©NÚ	__wrapped)Ú__dict__)ÚselfZflags_objectr   r   r   Ú__init__C   ó   z_FlagValuesWrapper.__init__c                    s$   |dkr
t ƒ  |¡S | jd  |¡S )Nr   r   )ÚsuperÚ__getattribute__r   ©r   r   ©Ú	__class__r   r   r    F   s   z#_FlagValuesWrapper.__getattribute__c                 C   s&   | j d }| ¡ s|tjƒ | |¡S r   )r   Z	is_parsedÚ_sysÚargvÚ__getattr__)r   r   Úwrappedr   r   r   r&   K   s   


z_FlagValuesWrapper.__getattr__c                 C   ó   | j d  ||¡S r   )r   Ú__setattr__)r   r   r   r   r   r   r)   S   ó   z_FlagValuesWrapper.__setattr__c                 C   ó   | j d  |¡S r   )r   Ú__delattr__r!   r   r   r   r,   V   ó   z_FlagValuesWrapper.__delattr__c                 C   ó   | j d  ¡ S r   )r   Ú__dir__©r   r   r   r   r/   Y   r   z_FlagValuesWrapper.__dir__c                 C   r+   r   )r   Ú__getitem__r!   r   r   r   r1   \   r-   z_FlagValuesWrapper.__getitem__c                 C   r(   r   )r   Ú__setitem__)r   r   Úflagr   r   r   r2   _   r*   z_FlagValuesWrapper.__setitem__c                 C   r.   r   )r   Ú__len__r0   r   r   r   r4   b   r   z_FlagValuesWrapper.__len__c                 C   r.   r   )r   Ú__iter__r0   r   r   r   r5   e   r   z_FlagValuesWrapper.__iter__c                 C   r.   r   )r   Ú__str__r0   r   r   r   r6   h   r   z_FlagValuesWrapper.__str__c                 O   s   | j d j|i |¤ŽS r   )r   Ú__call__)r   r   r   r   r   r   r7   k   s   z_FlagValuesWrapper.__call__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r&   r)   r,   r/   r1   r2   r4   r5   r6   r7   Ú__classcell__r   r   r"   r   r   ;   s    r   )r;   Úloggingr   Úsysr$   Z
absl.flagsZtensorflow.python.utilr   Zdisclaim_key_flagsr	   r   r   ZDEFINE_stringZDEFINE_booleanZDEFINE_boolZDEFINE_floatZDEFINE_integerÚFLAGSr   r   r   r   Ú<module>   s$   ý7