o
    i 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   T/var/www/myenv/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f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.")
  
tensorflowFTN)_logger_logger_lockacquirerelease_logging	getLoggerr*   
findCallerhandlersr   ps1AttributeErrorflagsinteractivesetLevelr   stdoutstderrStreamHandlersetFormatter	FormatterBASIC_FORMAT
addHandler)logger_interactive_logging_target_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   rK          rK   zlogging.debugc                 O      t  j| g|R i | d S rI   )r-   debugrM   rN   rO   r   r   r   rR         rR   zlogging.errorc                 O   rQ   rI   )r-   errorrS   r   r   r   rU      rT   rU   zlogging.fatalc                 O   rQ   rI   )r-   fatalrS   r   r   r   rV      rT   rV   zlogging.infoc                 O   rQ   rI   )r-   inforS   r   r   r   rW      rT   rW   zlogging.warnc                 O   rQ   rI   r-   warningrS   r   r   r   warn   rT   rZ   zlogging.warningc                 O   rQ   rI   rX   rS   r   r   r   rY      rT   rY   r   r   r   r   r   zlogging.TaskLevelStatusMessagec                 C   s   t |  d S rI   )rU   )rM   r   r   r   TaskLevelStatusMessage   s   r[   zlogging.flushc                   C   s   t  rI   )NotImplementedErrorr   r   r   r   flush   s   r]   zlogging.vlogc                 O   rH   rI   rJ   rL   r   r   r   vlog   rP   r^   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   rc   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rc   _GetFileAndLinelog_ifr
   rM   nrN   countr   r   r   log_every_n
  s   
rj   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.
  Nrd   rg   r   r   r   log_first_n  s   
rk   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)r^   )r
   rM   	conditionrN   r   r   r   rf   +  s   rf   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   re   2  s   
re   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intre   _ospathbasename_level_names_get_thread_id)r
   	timestampfile_and_linenow	now_tuplenow_microsecondfilenamelineru   severitysr   r   r   google2_log_prefix:  s*   
r   zlogging.get_verbosityc                   C   s
   t   S )z0Return how much logging output will be produced.)r-   getEffectiveLevelr   r   r   r   get_verbosity\  s   
r   zlogging.set_verbosityc                 C   s   t  |  dS )z4Sets the threshold for what messages will be logged.N)r-   r;   )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   rw   h  s   rw   zlogging.DEBUGzlogging.ERRORzlogging.FATALzlogging.INFOzlogging.WARN)r   )Fr   )Fr   )8__doc__loggingr3   osrs   sysr   r   rp   ro   	tracebackr"   r   r   r   r   r   	threading tensorflow.python.util.tf_exportr   r/   Lockr0   r   r   version_infomajorminorr*   r-   rK   rR   rU   rV   rW   rZ   rY   rv   maxsizer   _log_prefixr`   r[   r]   r^   rc   rj   rk   rf   re   r   r   r   rw   export_constant__name__r   r   r   r   <module>   s   
	


X



























"


