o
    ?e)                  
   @   s  d Z ddlZ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 ddlmZ ddlmZ ddlmZ ddlZddlmZ dae Zefd	d
ZdXddZejjdkreejjdkredYddZnejjdkrwejjdkrwdZddZndd Zeddd Zedgddd Zedgddd Zedgdd d! Z ed"gdd#d$ Z!ed%gdd&d' Z"ed(gdd)d* Z#ed+gdd,d- Z$ed.ed/ed0ed1ed2ia%dej& d Z'dZ(i a)ed3gdd4d5 Z*ed6gdd7d8 Z+ed9gdd:d; Z,d<d= Z-ed>gdd?d@ Z.edAgddBdC Z/edDgddEdF Z0dGdH Z1d[dIdJZ2edKgddLdM Z3edNgddOdP Z4dQdR Z5e2Z(edSgd6e7d2 edTgd6e7d/ edUgd6e7d. edVgd6e7d1 edWgd6e7d0 dS )\zLogging utilities.    N)DEBUG)ERROR)FATAL)INFO)WARN)	tf_exportc                 C   s   ~ ~dS )zEmpty helper method.N )	error_msglevelr   r   f/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/tensorflow/python/platform/tf_logging.py	error_log(   s   r      c                 C   sB   t | }|jj}|j}|r|j}|j|kr||fS |j}|sdS )zGReturns a code and frame object for the lowest non-logging stack frame.NN)_sys	_getframef_codeco_filenamef_back)offsetfZour_filecoder   r   r   _get_caller-   s   

r      F   c                 C   sD   t d\}}d }| rdt }|r|j|j|j|fS ddd|fS N   
(unknown file)r   (unknown function)r   join
_tracebackformat_stackr   f_linenoco_name)
stack_info
stacklevelr   framesinfor   r   r   _logger_find_caller@      r)      c                 C   sD   t d\}}d }| rdt }|r|j|j|j|fS ddd|fS r   r   )r%   r   r'   r(   r   r   r   r)   K   r*   c                  C   s$   t d\} }| r| j|j| jfS dS )Nr   )r   r   r   )r   r   r#   r$   )r   r'   r   r   r   r)   U   s   
get_loggerc                  C   s   t rt S t  zXt rt W t  S td} t| _t jsXd}zt	j
r'd}W n ty5   t	jj}Y nw |rA| t t	j}nt	j}t|}|ttjd | | | a t W t  S t  w )a  Return TF logger instance.

  Returns:
    An instance of the Python logging library Logger.

  See Python documentation (https://docs.python.org/3/library/logging.html)
  for detailed API. Below is only a summary.

  The logger has 5 levels of logging from the most serious to the least:

  1. FATAL
  2. ERROR
  3. WARN
  4. INFO
  5. DEBUG

  The logger has the following methods, based on these logging levels:

  1. fatal(msg, *args, **kwargs)
  2. error(msg, *args, **kwargs)
  3. warn(msg, *args, **kwargs)
  4. info(msg, *args, **kwargs)
  5. debug(msg, *args, **kwargs)

  The `msg` can contain string formatting.  An example of logging at the `ERROR`
  level
  using string formating is:

  >>> tf.get_logger().error("The value %d is invalid.", 3)

  You can also specify the logging verbosity.  In this case, the
  WARN level log will not be emitted:

  >>> tf.get_logger().setLevel(ERROR)
  >>> tf.get_logger().warn("This is a warning.")
  Z
tensorflowFTN)_logger_logger_lockacquirerelease_logging	getLoggerr)   
findCallerhandlersr   ps1AttributeErrorflagsinteractivesetLevelr   stdoutstderrStreamHandlersetFormatter	FormatterBASIC_FORMAT
addHandler)loggerZ_interactiveZ_logging_targetZ_handlerr   r   r   r,   ]   s8   )
&




zlogging.log)v1c                 O       t  j| |g|R i | d S Nr,   logr
   msgargskwargsr   r   r   rF          rF   zlogging.debugc                 O      t  j| g|R i | d S rD   )r,   debugrH   rI   rJ   r   r   r   rM         rM   zlogging.errorc                 O   rL   rD   )r,   errorrN   r   r   r   rP      rO   rP   zlogging.fatalc                 O   rL   rD   )r,   fatalrN   r   r   r   rQ      rO   rQ   zlogging.infoc                 O   rL   rD   )r,   inforN   r   r   r   rR      rO   rR   zlogging.warnc                 O   rL   rD   r,   warningrN   r   r   r   warn   rO   rU   zlogging.warningc                 O   rL   rD   rS   rN   r   r   r   rT      rO   rT   r   r   r   r   r   zlogging.TaskLevelStatusMessagec                 C   s   t |  d S rD   )rP   )rH   r   r   r   TaskLevelStatusMessage   s   rV   zlogging.flushc                   C   s   t  rD   )NotImplementedErrorr   r   r   r   flush   s   rX   zlogging.vlogc                 O   rC   rD   rE   rG   r   r   r   vlog   rK   rY   c                 C   s   dt | d t | < t |  S )zWrapper for _log_counter_per_token.

  Args:
    token: The token for which to look up the count.

  Returns:
    The number of times this function has been called with
    *token* as an argument (starting at 0)
  r   )_log_counter_per_tokenget)tokenr   r   r   _GetNextLogCountPerToken   s   r^   zlogging.log_every_nc                 G   s(   t t }t| |||  g|R   dS )aO  Log 'msg % args' at level 'level' once per 'n' times.

  Logs the 1st call, (N+1)st call, (2N+1)st call,  etc.
  Not threadsafe.

  Args:
    level: The level at which to log.
    msg: The message to be logged.
    n: The number of times this should be called before it is logged.
    *args: The args to be substituted into the msg.
  Nr^   _GetFileAndLinelog_ifr
   rH   nrI   countr   r   r   log_every_n
  s   
re   zlogging.log_first_nc                 G   s&   t t }t| |||k g|R   dS )a  Log 'msg % args' at level 'level' only first 'n' times.

  Not threadsafe.

  Args:
    level: The level at which to log.
    msg: The message to be logged.
    n: The number of times this should be called before it is logged.
    *args: The args to be substituted into the msg.
  Nr_   rb   r   r   r   log_first_n  s   
rf   zlogging.log_ifc                 G   s   |rt | |g|R   dS dS )zALog 'msg % args' at level 'level' only if condition is fulfilled.N)rY   )r
   rH   	conditionrI   r   r   r   ra   +  s   ra   c                  C   s   t  \} }| s	dS | j|jfS )z3Returns (filename, linenumber) for the stack frame.)z	<unknown>r   )r   r   r#   )r   r   r   r   r   r`   2  s   
r`   c                 C   s   |pt  }t |}td|d  }|pt \}}tj|}d}	| tv r,t|  d }	d|	|d |d |d |d	 |d
 |t	 ||f
 }
|
S )z3Assemble a logline prefix using the google2 format.g    .Ag      ?Ir   z*%c%02d%02d %02d:%02d:%02d.%06d %5d %s:%d] r   r+   r   r      )
_timetime	localtimeintr`   _ospathbasename_level_names_get_thread_id)r
   	timestampZfile_and_linenowZ	now_tupleZnow_microsecondfilenamelinerp   Zseveritysr   r   r   google2_log_prefix:  s*   
rx   zlogging.get_verbosityc                   C   s
   t   S )z0Return how much logging output will be produced.)r,   getEffectiveLevelr   r   r   r   get_verbosity\  s   
rz   zlogging.set_verbosityc                 C   s   t  |  dS )z4Sets the threshold for what messages will be logged.N)r,   r9   )vr   r   r   set_verbosityb  s   r|   c                  C   s   t  } | t@ S )zGGet id of current thread, suitable for logging as an unsigned quantity.)_thread	get_ident_THREAD_ID_MASK)	thread_idr   r   r   rr   h  s   rr   zlogging.DEBUGzlogging.ERRORzlogging.FATALzlogging.INFOzlogging.WARN)r   )Fr   )Fr   )8__doc__loggingr1   osrn   sysr   r}   rk   rj   	tracebackr!   r   r   r   r   r   	threadingZ tensorflow.python.util.tf_exportr   r-   Lockr.   r   r   version_infomajorminorr)   r,   rF   rM   rP   rQ   rR   rU   rT   rq   maxsizer   Z_log_prefixr[   rV   rX   rY   r^   re   rf   ra   r`   rx   rz   r|   rr   Zexport_constant__name__r   r   r   r   <module>   s   
	


X



























"


