
    ϑi#                         S SK r S SKrS SKJr  SSKJr  / rSrSrSr	Sr
SrS	 r " S
 S5      r\" 5       rSS\S\SS4S jjrS\4S jr\S4S\S\SS4S jjrS rS rS rS rS rg)    N)
log_helper   )ast_to_source_codeTRANSLATOR_VERBOSITYTRANSLATOR_CODE_LEVELd   c                    ^  U 4S jnU$ )Nc                  t   > [         R                  " 5          T" U 0 UD6sS S S 5        $ ! , (       d  f       g = fN)	threadingLock)argskwargsfuncs     b/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/jit/dy2static/logging_utils.pywrappersynchronized.<locals>.wrapper!   s&    ^^(( s   )
7 )r   r   s   ` r   synchronizedr       s    ) N    c                   >   \ rS rSrSr\S 5       rS r\S 5       r	\S 5       r
\
R                  S 5       r
\S 5       r\R                  S	 5       r\S
 5       r\R                  S 5       r\S 5       r\R                  S 5       rS rS rS rS rS rS rS rS rSrg)TranslatorLogger(   z
class for Logging and debugging during the transformation from dygraph to static graph.
The object of this class is a singleton.
c                     [        U S5      (       d0  [        R                  " U /UQ70 UD6U l        SU R                  l        U R                  $ )N	_instanceF)hasattrobject__new__r   _initialized)clsr   r   s      r   r   TranslatorLogger.__new__.   s?    sK(("NN3@@@CM).CMM&}}r   c                     U R                   (       a  g SU l         SU l        [        R                  " U R                  SSS9U l        S U l        S U l        S U l        S U l        g )NTzDynamic-to-Staticr   z/%(asctime)s %(name)s %(levelname)s: %(message)s)fmt)	r    logger_namer   
get_logger_logger_verbosity_level_transformed_code_level_need_to_echo_log_to_stdout_need_to_echo_code_to_stdoutselfs    r   __init__TranslatorLogger.__init__5   sa     .!,,A

 !%'+$+/(,0)r   c                     U R                   $ r   )r'   r,   s    r   loggerTranslatorLogger.loggerE   s    ||r   c                     U R                   b  U R                   $ [        [        R                  " [        [
        5      5      $ r   )r(   intosgetenvVERBOSITY_ENV_NAMEDEFAULT_VERBOSITYr,   s    r   verbosity_level TranslatorLogger.verbosity_levelI   s2      ,(((ryy!35FGHHr   c                 2    U R                  U5        Xl        g r   )check_levelr(   r-   levels     r   r9   r:   P   s     %r   c                     U R                   b  U R                   $ [        [        R                  " [        [
        5      5      $ r   )r)   r4   r5   r6   CODE_LEVEL_ENV_NAMEDEFAULT_CODE_LEVELr,   s    r   transformed_code_level'TranslatorLogger.transformed_code_levelU   s2    ''3///ryy!46HIJJr   c                 2    U R                  U5        Xl        g r   )r<   r)   r=   s     r   rB   rC   \   s    ',$r   c                 6    U R                   b  U R                   $ gNF)r*   r,   s    r   need_to_echo_log_to_stdout+TranslatorLogger.need_to_echo_log_to_stdouta   s    ++7333r   c                 T    [        U[        [        S 5      45      (       d   eXl        g r   )
isinstancebooltyper*   )r-   log_to_stdouts     r   rG   rH   g   s$    -$T
);<<<<+8(r   c                 6    U R                   b  U R                   $ grF   )r+   r,   s    r   need_to_echo_code_to_stdout,TranslatorLogger.need_to_echo_code_to_stdoutl   s    ,,8444r   c                 T    [        U[        [        S 5      45      (       d   eXl        g r   )rJ   rK   rL   r+   )r-   code_to_stdouts     r   rO   rP   r   s$    .4d*<====,:)r   c                 f    [        U[        [        S 5      45      (       a  UnU$ [        SU 35      e)NzLevel is not an integer: )rJ   r4   rL   	TypeError)r-   r>   rvs      r   r<   TranslatorLogger.check_levelw   s9    ec4:.//B 	 7w?@@r   c                 @    U R                  U5      nXR                  :H  $ r   )r<   rB   r=   s     r   has_code_levelTranslatorLogger.has_code_level~   s!      '3333r   c                 B    U R                  U5      nU R                  U:  $ )z
Checks whether the verbosity level set by the user is greater than or equal to the log level.
Args:
    level(int): The level of log.
Returns:
    True if the verbosity level set by the user is greater than or equal to the log level, otherwise False.
)r<   r9   r=   s     r   has_verbosityTranslatorLogger.has_verbosity   s%       '##u,,r   c                     U R                   R                  " U/UQ70 UD6  U R                  (       a  U R                  " SU-   /UQ76   g g )NzERROR: )r1   errorrG   _output_to_stdoutr-   msgr   r   s       r   r^   TranslatorLogger.error   sC    #///**""9s?:T: +r   c                     U R                   S:w  aI  U R                  R                  " U/UQ70 UD6  U R                  (       a  U R                  " SU-   /UQ76   g g g )Nr   z	WARNING: )r9   r1   warningrG   r_   r`   s       r   warnTranslatorLogger.warn   sW    2%KK5d5f5..&&{S'8@4@ / &r   c                     U R                  U5      (       aQ  SU SU 3nU R                  R                  " U/UQ70 UD6  U R                  (       a  U R                  " SU-   /UQ76   g g g )Nz(Level z) INFO: )r[   r1   inforG   r_   )r-   r>   ra   r   r   msg_with_levels         r   logTranslatorLogger.log   sl    e$$&ugRu5NKK^=d=f=..&&x.'@H4H / %r   c                    U R                  U5      (       ar  [        U5      nU[        :X  a  SU S3nO	SU SU S3nXv-   nU R                  R                  " U/UQ70 UD6  U R
                  (       a  U R                  " SU-   /UQ76   g g g )Nz'After the last level ast transformer: 'z', the transformed code:
zAfter the level z ast transformer: 'rh   )rX   r   LOG_AllTransformerr1   ri   rO   r_   )	r-   r>   ast_nodetransformer_namer   r   source_code
header_msgra   s	            r   log_transformed_code%TranslatorLogger.log_transformed_code   s     u%%,X6K**FGWFXXrs
/w6IJZI[[uv
*CKKS24262//&&x#~== 0 &r   c                 B    U R                   S-   U-   n[        X-  5        g )N )r%   print)r-   ra   r   s      r   r_   "TranslatorLogger._output_to_stdout   s!    $s*cjr   )r    r'   r+   r*   r)   r(   r%   N)__name__
__module____qualname____firstlineno____doc__r   r   r.   propertyr1   r9   setterrB   rG   rO   r<   rX   r[   r^   re   rk   rs   r_   __static_attributes__r   r   r   r   r   (   s   
  1    I I & & K K ""- #-  
  &&9 '9  
 !''; (;4	-;
AI> r   r   Fr>   also_to_stdoutreturnc                 0    U [         l        U[         l        g)a  
Sets the verbosity level of log for dygraph to static graph. Logs can be output to stdout by setting `also_to_stdout`.

There are two means to set the logging verbosity:

1. Call function `set_verbosity`

2. Set environment variable `TRANSLATOR_VERBOSITY`


**Note**:
`set_verbosity` has a higher priority than the environment variable.

Args:
    level(int): The verbosity level. The larger value indicates more verbosity.
        The default value is 0, which means no logging.
    also_to_stdout(bool): Whether to also output log messages to `sys.stdout`.

Examples:
    .. code-block:: python

        >>> import os
        >>> import paddle

        >>> paddle.jit.set_verbosity(1)
        >>> # The verbosity level is now 1

        >>> os.environ['TRANSLATOR_VERBOSITY'] = '3'
        >>> # The verbosity level is now 3, but it has no effect because it has a lower priority than `set_verbosity`
N)_TRANSLATOR_LOGGERr9   rG   r>   r   s     r   set_verbosityr      s    > */&4B1r   c                  "    [         R                  $ r   )r   r9   r   r   r   get_verbosityr      s    ---r   c                 0    U [         l        U[         l        g)a  
Sets the level to print code from specific level Ast Transformer. Code can be output to stdout by setting `also_to_stdout`.

There are two means to set the code level:

1. Call function `set_code_level`

2. Set environment variable `TRANSLATOR_CODE_LEVEL`


**Note**:
`set_code_level` has a higher priority than the environment variable.

Args:
    level(int): The level to print code. Default is 100, which means to print the code after all AST Transformers.
    also_to_stdout(bool): Whether to also output code to `sys.stdout`.

Examples:
    .. code-block:: python

        >>> import os
        >>> import paddle

        >>> paddle.jit.set_code_level(2)
        >>> # It will print the transformed code at level 2, which means to print the code after second transformer,
        >>> # as the date of August 28, 2020, it is CastTransformer.

        >>> os.environ['TRANSLATOR_CODE_LEVEL'] = '3'
        >>> # The code level is now 3, but it has no effect because it has a lower priority than `set_code_level`

N)r   rB   rO   r   s     r   set_code_levelr      s    D 16-5C2r   c                  "    [         R                  $ r   )r   rB   r   r   r   get_code_levelr     s    444r   c                 8    [         R                  " U /UQ70 UD6  g r   )r   r^   ra   r   r   s      r   r^   r^     s    S24262r   c                 8    [         R                  " U /UQ70 UD6  g r   )r   re   r   s      r   re   re     s    C1$1&1r   c                 8    [         R                  " X/UQ70 UD6  g r   )r   rk   )r>   ra   r   r   s       r   rk   rk     s    5777r   c                 :    [         R                  " XU/UQ70 UD6  g r   )r   rs   )r>   ro   rp   r   r   s        r   rs   rs     s&    ++),04:r   )r   F)r5   r   paddle.baser   	ast_utilsr   __all__r7   r@   r8   rA   rn   r   r   r   r4   rK   r   r   r   r   r^   re   rk   rs   r   r   r   <module>r      s    
  " )
+ -    I IX &'  C  C$  C4  CF.s .
 $E#D#D59#D	#DL5328r   