
    BVh                         d 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mZ  ej"                         Zd	 Zd
 Zd Z	 ddZd Zd Zy)z6Core conversion logic, serves as main point of access.    N)config)cache)inspect_utils)
ag_logging)tf_method_target)
tf_inspectc                      t         j                  j                  |d       }|yt         fd|j                  j                         D              ryy)NFc              3   0   K   | ]  }|u s|d u  y wN ).0vfs     [/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/autograph/impl/conversion.py	<genexpr>z-_is_of_known_loaded_module.<locals>.<genexpr>%   s     @1a$@s   		T)sysmodulesgetany__dict__values)r   module_namemods   `  r   _is_of_known_loaded_moduler   !   s@    T*#[@ 3 3 5@@	    c                    |t         j                  vst        t         j                  |   |      syt        t         j                  |   |      }t	        | |      ryt        j                  |       rt	        | j                  |      ryy)zDTests whether the function or method is an instance of a known type.FT)r   r   hasattrgetattr
isinstanceinspectismethod__func__)r   r   entity_nametype_entitys       r   _is_known_loaded_typer%   *   sl    $
#++k*K
8K0+>+;
 a !**k*	r   c                 "    t         dd      st         dd      r<t        j                  dj                                t        j                  dd        yt         dd	      rt        j                  dd
        yt        j                         rt        j                  dd        yt         fddD              rt        j                  dd        yt         d      r.t         j                  d      rt        j                  dd        yy)z:Checks whether an entity is supported by AutoGraph at all.wraptFunctionWrapperBoundFunctionWrapperz{} appears to be decorated by wrapt, which is not yet supported by AutoGraph. The function will run as-is. You may still apply AutoGraph before the wrapt decorator.   z(Permanently allowed: %s: wrapt decoratedT	functools_lru_cache_wrapperz"Permanently allowed: %s: lru_cachez$Permanently allowed: %s: constructorc              3   6   K   | ]  }t        |        y wr   )r   )r   mos     r   r   z!is_unsupported.<locals>.<genexpr>_   s"      	@
 !A&	@s   )collectionspdbcopyr    rez/Permanently allowed: %s: part of builtin module
__module___IS_TENSORFLOW_PLUGINz*Permanently allowed: %s: TensorFlow pluginF)
r%   loggingwarningformatlogr   isconstructorr   r   r4   )r/   s   `r   is_unsupportedr;   E   s     Aw(9:Aw(>?OO	EEKVAYP KK=qA1k+?@KK7;
   #KK91= 	 	@>	@ @ KKDaH aall34KK?C	r   c                    t        | t        j                        rt        }nt        j                  |       }t        |d      rt        j                  D ]  }|j                  |      }|t        j                  j                  k(  rt        j                  dd| |        y|t        j                  j                  k(  sit        j                  dd| |        y t        | d      r-t        j                  |       rt        j                  dd|        y|rot        j                  |       sZt        | d	      rNt!        |       t!        | j"                        k7  r-t%        | j"                        rt        j                  dd
|        yd}t        j&                  |       rt)        j*                  |       }|t,        j.                  u r| j0                  j2                  }|ot5        |t6        j8                        rt        j                  dd|        yt)        j:                  | |      }t%        |dd      rt        j                  dd| |       yt)        j<                  |       rN|r4t?        d | j@                  D              s0t        j                  dd|        yt        j                  dd|        yt        j                  dd|        y)a  Checks whether an entity is allowed for use in graph mode.

  Examples of allowed entities include all members of the tensorflow
  package.

  Args:
    o: A Python entity.
    check_call_override: Reserved for internal use. When set to `False`, it
      disables the rule according to which classes are allowed if their
      __call__ method is allowed.
    allow_namedtuple_subclass: Reserved for internal use. When `True`,
      namedtuple subclasses are not allowed.

  Returns:
    Boolean
  __name__r*   zNot allowed: %s: %sFzAllowlisted: %s: %sT__code__z6Allowlisted: %s: generator functions are not converted__call__z(Allowlisted: %s: object __call__ allowedNz,Allowlisted: %s: method of TestCase subclass)check_call_overrideallow_namedtuple_subclassz$Allowlisted: %s: owner is allowed %sc              3   F   K   | ]  }t        j                  |        y wr   )r   isnamedtuple)r   bases     r   r   z!is_allowlisted.<locals>.<genexpr>   s     Jd++D1Js   !zAllowlisted: %s: named tuplez(Allowlisted: %s: named tuple or subclasszNot allowed: %s: default rule)!r   r+   partialr   	getmoduler   r   CONVERSION_RULES
get_actionActionCONVERTr6   r9   DO_NOT_CONVERTisgeneratorfunctionisclasstyper?   is_allowlistedr!   r   getmethodclassr   TfMethodTarget__self__target_class
issubclassunittestTestCasegetdefiningclassrC   r   	__bases__)r/   r@   rA   r.   ruleactionowner_classs          r   rO   rO   p   s3   & 9$$% 	AQA Q
'' q!f	6==((	(A,a6V]]111A,a6 Q

 > >q AKKKQO*"4"4Q"7a 	Q4

##

)Ckk!?C+   ..q1K&555JJ++k	K!2!2	3AEqI!221kBk	
#$(
* 	A=q	!" !JakkJJA5q9kk!?C	++a0!4	r   c                 N    	 t         j                  | |      S # t        $ r Y yw xY w)NF)_ALLOWLIST_CACHEhas	TypeErrorentityoptionss     r   is_in_allowlist_cacherc      s,    00	 s    	$$c                 <    	 dt         |    |<   y # t        $ r Y y w xY w)NT)r]   r_   r`   s     r   cache_allowlistedre      s)    	(,VW%	 		s    	)TF)__doc__r+   r    r   rU    tensorflow.python.autograph.corer    tensorflow.python.autograph.pyctr   r   !tensorflow.python.autograph.utilsr   r6   ,tensorflow.python.eager.polymorphic_functionr   tensorflow.python.utilr   UnboundInstanceCacher]   r   r%   r;   rO   rc   re   r   r   r   <module>rm      sb    =   
  3 2 : C I - .5--/ 6'X <AcL	r   