
    BVh^d                         d 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	  G d de
      Z G d	 d
e
      Z G d de
      Z G d dej                        ZddZy)zMActivity analysis.

Requires qualified name annotations (see qual_names.py).
    N)anno)
qual_names)transformer)NodeAnnoc                   v    e Zd ZdZddZed        Zed        Zed        Zd Z	e
d        Zd	 Zd
 Zd Zd Zy)Scopea  Encloses local symbol definition and usage information.

  This can track for instance whether a symbol is modified in the current scope.
  Note that scopes do not necessarily align with Python's scopes. For example,
  the body of an if statement may be considered a separate scope.

  Caution - the AST references held by this object are weak.

  Scope objects are mutable during construction only, and must be frozen using
  `Scope.finalize()` before use. Furthermore, a scope is consistent only after
  all its children have been frozen. While analysing code blocks, scopes are
  being gradually built, from the innermost scope outward. Freezing indicates
  that the analysis of a code block is complete. Once frozen, mutation is no
  longer allowed. `is_final` tracks whether the scope is frozen or not. Certain
  properties, like `referenced`, are only accurate when called on frozen scopes.

  Attributes:
    parent: Optional[Scope], the parent scope, if any.
    isolated: bool, whether the scope is a true Python scope (e.g. the scope of
      a function), or just a surrogate tracking an ordinary code block. Using
      the terminology of the Python 3 reference documentation, True roughly
      represents an actual scope, whereas False represents an ordinary code
      block.
    function_name: Optional[str], name of the function owning this scope.
    isolated_names: Set[qual_names.QN], identifiers that are isolated to this
      scope (even if the scope is not isolated).
    annotations: Set[qual_names.QN], identifiers used as type annotations
      in this scope.
    read: Set[qual_names.QN], identifiers read in this scope.
    modified: Set[qual_names.QN], identifiers modified in this scope.
    deleted: Set[qual_names.QN], identifiers deleted in this scope.
    bound: Set[qual_names.QN], names that are bound to this scope. See
      https://docs.python.org/3/reference/executionmodel.html#binding-of-names
      for a precise definition.
    globals: Set[qual_names.QN], names that are explicitly marked as global in
      this scope. Note that this doesn't include free read-only vars bound to
      global symbols.
    nonlocals: Set[qual_names.QN], names that are explicitly marked as nonlocal
      in this scope. Note that this doesn't include free read-only vars bound to
      global symbols.
    free_vars: Set[qual_names.QN], the free variables in this scope. See
      https://docs.python.org/3/reference/executionmodel.html for a precise
      definition.
    params: WeakValueDictionary[qual_names.QN, ast.Node], function arguments
      visible in this scope, mapped to the function node that defines them.
    enclosing_scope: Scope, the innermost isolated scope that is a transitive
      parent of this scope. May be the scope itself.
    referenced: Set[qual_names.QN], the totality of the symbols used by this
      scope and its parents.
    is_final: bool, whether the scope is frozen or not.

  Note - simple statements may never delete and modify a symbol at the same
  time. However, compound ones like if statements can. In that latter case, it's
  undefined whether the symbol is actually modified or deleted upon statement
  exit. Certain analyses like reaching definitions need to be careful about
  this.
  Nc                 ^   || _         || _        || _        t               | _        t               | _        t               | _        t               | _        t               | _        t               | _	        t               | _
        t               | _        t        j                         | _        d| _        y)a#  Create a new scope.

    Args:
      parent: A Scope or None.
      isolated: Whether the scope is isolated, that is, whether variables
        modified in this scope should be considered modified in the parent
        scope.
      function_name: Name of the function owning this scope.
    FN)parentisolatedfunction_namesetisolated_namesreadmodifieddeletedboundglobals	nonlocalsannotationsweakrefWeakValueDictionaryparamsis_final)selfr
   r   r   s       i/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/autograph/pyct/static_analysis/activity.py__init__zScope.__init__]   s}     DKDM&D%DDIEDM5DLDJ5DLUDNuD--/DK DM    c                 j    | j                   sJ | j                  | j                  s| j                  S | S N)r   r
   r   r   s    r   enclosing_scopezScope.enclosing_scope|   s-    ==={{t}}[[Kr   c                 x    | j                   #| j                  | j                   j                  z  S | j                  S r   )r
   r   
referencedr    s    r   r#   zScope.referenced   s/    {{YY////99r   c                 L    | j                   }|j                  |j                  z
  S r   )r!   r   r   )r   r!   s     r   	free_varszScope.free_vars   s$    **O/"7"777r   c                    | j                   rJ | j                  3|j                  J | j                  j                  |j                         t        j                  |j                        | _        t        j                  |j
                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _	        t        j                  |j                        | _
        y)zARecursively copies the contents of this scope from another scope.N)r   r
   	copy_fromcopyr   r   r   r   r   r   r   r   others     r   r'   zScope.copy_from   s    }}{{\\%%%
kkELL)))E$8$89DIIenn-DM		%**%DI99U]]+DL5;;'DJyy!2!23D))ELL)DKr   c                     |j                   *|j                   J | j                  |j                         }nd } | |      }|j                  |       |S r   )r
   copy_ofr'   )clsr*   r
   new_copys       r   r,   zScope.copy_of   sO    ||\\%%%{{5<<(ff6{HuOr   c                    | j                   rJ | j                  3|j                  J | j                  j                  |j                         | j                  j	                  |j                         | j
                  j	                  |j
                         | j                  j	                  |j                         | j                  j	                  |j                         | j                  j	                  |j                         | j                  j	                  |j                         | j                  j	                  |j                         y)z3Adds all activity from another scope to this scope.N)r   r
   
merge_fromr   updater   r   r   r   r   r   r)   s     r   r0   zScope.merge_from   s    }}{{\\%%%
kkU\\*u334IIUZZ MM(JJekk"LL&E--.KKu||$r   c                    | j                   rJ | j                  | j                  j                   rJ | j                  sI| j                  j                  j	                  | j                  | j
                  z
         | j                  j                  j	                  | j                  | j
                  z
         | j                  j                  j	                  | j                  | j
                  z
         | j                  j                  j	                  | j                         | j                  j                  j	                  | j                         | j                  j                  j	                  | j                         d| _         y| j                  j                  j	                  | j                  | j                  z
         | j                  j                  j	                  | j                  | j                  z
         d| _         y)zFreezes this scope.NT)r   r
   r   r   r1   r   r   r   r   r   r   r    s    r   finalizezScope.finalize   s\   }}{{%%%%]]		D,?,? ?@##DMMD4G4G$GH  d.A.A!AB""4<<0$$T^^4&&t'7'78
 DM 			DJJ 67&&t'7'7$**'DEDMr   c                 `    dt        | j                        dt        | j                        dS )NzScope{r=z, w=})tupler   r   r    s    r   __repr__zScope.__repr__   s    "'		"2E$--4HIIr   c                 "    || j                   |<   y r   )r   )r   nameowners      r   
mark_paramzScope.mark_param   s     DKKr   )TN)__name__
__module____qualname____doc__r   propertyr!   r#   r%   r'   classmethodr,   r0   r3   r7   r;    r   r   r   r      sw    8z>    
 8 8*  %&Jr   r   c                       e Zd ZdZd Zy)_ComprehensionTc                 0    d| _         t               | _        y NF)is_list_compr   targetsr    s    r   r   z_Comprehension.__init__   s    D5DLr   N)r<   r=   r>   no_rootr   rB   r   r   rD   rD      s    'r   rD   c                       e Zd Zd Zy)_FunctionOrClassc                     d | _         y r   )noder    s    r   r   z_FunctionOrClass.__init__   s	    DIr   N)r<   r=   r>   r   rB   r   r   rK   rK      s    r   rK   c                   x    e Zd ZdZd1 fd	Zed        Zd Zd2dZd1dZ	d Z
ej                  j                  fdZd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$	 	 d3dZ%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d& Z,d' Z-d( Z.d) Z/d* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6 xZ7S )4ActivityAnalyzerzAnnotates nodes with local scope information.

  See Scope.

  The use of this class requires that qual_names.resolve() has been called on
  the node. This class will ignore nodes have not been
  annotated with their qualified names.
  c                     t         t        |   |       d| _        t	        |d      | _        d| _        d| _        d| _        y )NFT)r   )	superrO   r   allow_skipsr   scope_in_aug_assign_in_annotation_track_annotations_only)r   contextparent_scope	__class__s      r   r   zActivityAnalyzer.__init__   sC    	
D*73D|d3DJ  DD#(D r   c                 :   | j                   t           }|j                  dkD  ry|j                  d   j                  }|j                  d   j                  }t        |t        j                        xr+ t        |t        j                        xr |j                  dk(  S y)N   r   F)
staterK   levelstackrM   
isinstancegastClassDefFunctionDefr9   )r   rW   	innermostr
   s       r   _in_constructorz ActivityAnalyzer._in_constructor   s    jj)*G}}q--#((i}}R %%f/ -)T%5%56 ,~~+. r   c                    t        j                  |t         j                  j                        rTt        j                  |t         j                  j                        }|j
                  r|j                  j                  dk(  ryy)Nr    TF)r   hasannoBasicQNgetannohas_attrr
   qnr   rM   rm   s      r   _node_sets_self_attributez*ActivityAnalyzer._node_sets_self_attribute  sL    ||D$**--(<<djjmm,b	2r   c                 \   | j                   r| j                  sy t        j                  |t        j                  j
                        sy t        j                  |t        j                  j
                        }| j                  t           D ]6  }||j                  v r y |j                  t        |j                        z  s6 y  t        |j                  t        j                        r| j                  t           j                   dkD  r-| j                  t           j                  j#                  |       y | j$                  j&                  j#                  |       | j$                  j(                  j#                  |       |j*                  r1|r/| j$                  j&                  j#                  |j,                         | j.                  r&| j$                  j0                  j#                  |       y y t        |j                  t        j2                        rX| j$                  j0                  j#                  |       | j                  r&| j$                  j4                  j#                  |       y y t        |j                  t        j6                        r]| j$                  j(                  j#                  |       | j$                  j9                  || j                  t:           j<                         y t        |j                  t        j>                        rp| j$                  j0                  j#                  |       | j$                  j(                  j#                  |       | j$                  j@                  j#                  |       y tC        djE                  tG        |j                        |            )Nr   z!Unknown context {} for node "{}".)$rV   rU   r   rh   ri   rj   rk   r^   rD   rH   	owner_setr   ra   ctxrb   Storer_   addrS   r   r   is_compositer
   rT   r   Loadr   Paramr;   rK   rM   Delr   
ValueErrorformattype)r   rM   composite_writes_alter_parentrm   ls        r   _track_symbolzActivityAnalyzer._track_symbol
  ss   ##D,?,? <<djjmm,	dDJJMM	*B ZZ' 	qyy	AII	&	 $((DJJ'	N	#	)	)A	-

>"**..r2
jjb!
jj2	:

		*			

B 
 
DHHdii	(
jjoo"			

""2& 
 
DHHdjj	)
jj2
jjB

+; < A AB	DHHdhh	' jjoo" jj2
jjR  :AA
txx."  r   c                 >    t        | j                  ||      | _        y )N)r   r   )r   rS   )r   r   f_names      r   _enter_scopezActivityAnalyzer._enter_scope?  s    tzzHFKDJr   c                 `    | j                   }|j                          |j                  | _         |S r   )rS   r3   r
   )r   exited_scopes     r   _exit_scopezActivityAnalyzer._exit_scopeB  s*    ::L$$DJr   c                 T    | j                         }t        j                  |||       |S r   )r   r   setanno)r   rM   tag
node_scopes       r   _exit_and_record_scopez'ActivityAnalyzer._exit_and_record_scopeH  s&    !!#JLLsJ'r   c                 l    | j                  d       | j                  |      }| j                  |       |S rF   )r   generic_visitr   r   rM   s     r   _process_statementz#ActivityAnalyzer._process_statementM  s3    ed#D%Kr   c                 D    d| _         | j                  |      }d| _         |S NTF)rU   visitr   s     r   _process_annotationz$ActivityAnalyzer._process_annotationS  s%    D::dDDKr   c                 $    | j                  |      S r   r   r   s     r   visit_ImportzActivityAnalyzer.visit_ImportY      ""4((r   c                 $    | j                  |      S r   r   r   s     r   visit_ImportFromz!ActivityAnalyzer.visit_ImportFrom\  r   r   c                 *   | j                  d       |j                  D ]a  }t        j                  |      }| j                  j
                  j                  |       | j                  j                  j                  |       c | j                  |       |S rF   )	r   namesr   rj   rS   r   rt   r   r   r   rM   r9   rm   s       r   visit_GlobalzActivityAnalyzer.visit_Global_  st    e

 !==b
jjoo"
jjR ! 	%Kr   c                 t   | j                  d       |j                  D ]  }t        j                  |      }| j                  j
                  j                  |       | j                  j                  j                  |       | j                  j                  j                  |        | j                  |       |S rF   )
r   r   r   rj   rS   r   rt   r   r   r   r   s       r   visit_NonlocalzActivityAnalyzer.visit_Nonlocalh  s    e

 #==b
jjoo"
jj2
jjr"	#
 	%Kr   c                 $    | j                  |      S r   r   r   s     r   
visit_ExprzActivityAnalyzer.visit_Exprr  r   r   c                 $    | j                  |      S r   r   r   s     r   visit_RaisezActivityAnalyzer.visit_Raiseu  r   r   c                 $    | j                  |      S r   r   r   s     r   visit_ReturnzActivityAnalyzer.visit_Returnx  r   r   c                 $    | j                  |      S r   r   r   s     r   visit_AssignzActivityAnalyzer.visit_Assign{  r   r   c                 :   | j                  d       | j                  |j                        |_        |j                   | j                  |j                        |_        |j                  r | j                  |j                        |_        | j                  |       |S rF   )r   r   targetvalue
annotationr   r   r   s     r   visit_AnnAssignz ActivityAnalyzer.visit_AnnAssign~  st    e**T[[)DKzz ::djj)dj00Ado%Kr   c                 &   | j                  d       d| _        | j                  |j                        |_        d| _        | j                  |j                        |_        | j                  |j
                        |_        | j                  |       |S NFT)r   rT   r   r   opr   r   r   s     r   visit_AugAssignz ActivityAnalyzer.visit_AugAssign  sq     	eD**T[[)DKDjj!DGDJJ'DJ%Kr   c                 $    | j                  |      S r   r   r   s     r   visit_DeletezActivityAnalyzer.visit_Delete  r   r   c                     |j                   r | j                  |j                         |_         | j                  |       |S r   )r   r   r~   r   s     r   
visit_NamezActivityAnalyzer.visit_Name  s2    00AdotKr   c                 v   | j                  |      }|j                  2t        j                  |j                  j                  d      d         }nt        j                  |j                        }| j                  j                  j                  |       | j                  j                  j                  |       |S )N.r   )
r   asnamer   rj   r9   splitrS   r   rt   r   rn   s      r   visit_aliaszActivityAnalyzer.visit_alias  s    d#D{{==-a01b==%bJJBJJKr   c                     | j                  |      }| j                  r&| j                  |      r| j                  |d       |S | j                  |       |S )NT)r|   )r   rf   ro   r~   r   s     r   visit_Attributez ActivityAnalyzer.visit_Attribute  sW    d#D > >t D
TB K Kr   c                 J    | j                  |      }| j                  |       |S r   )r   r~   r   s     r   visit_Subscriptz ActivityAnalyzer.visit_Subscript  s'    d#D 	tKr   c                     | j                  d       | j                  |j                        |_        | j                  |      }t	        j
                  |t        j                  |       |S rF   )r   visit_blockvaluesr   r   r   r   
ARGS_SCOPEr   rM   r   s      r   visit_PrintzActivityAnalyzer.visit_Print  sQ    e""4;;/DK,,T2JLLx**J7Kr   c                 $    | j                  |      S r   r   r   s     r   visit_AssertzActivityAnalyzer.visit_Assert  r   r   c                 *   | j                  d       | j                  |j                        |_        | j                  |j                        |_        | j	                  |t
        j                         | j                  |j                        |_        |S NF)r   )	r   r   argskeywordsr   r   r   r   funcr   s     r   
visit_CallzActivityAnalyzer.visit_Call  sn    e  +DI$$T]]3DM(*=*=>

499%DIKr   c                 p    | j                  d       | j                  |      }| j                  ||       |S r   )r   r   r   )r   rM   block
scope_names       r   _process_block_nodez$ActivityAnalyzer._process_block_node  s8    eU#E*5Kr   c                 \   t         j                  | j                        }g }|D ]c  \  }}| j                  j                  |       | j	                  |||      }t         j                  | j                        }|j                  |       e |D ]  }| j                  j                  |        |S r   )r   r,   rS   r'   r   appendr0   )r   r
   childrenbefore_parentafter_childrenchildr   after_childs           r   _process_parallel_blocksz)ActivityAnalyzer._process_parallel_blocks  s    
 MM$**-MN% )z
jj=)''zBfMM$**-kK(	)
 & )
jjK()Mr   c                 l   | j                   t           5 }||_        | j                  |j                        |_        |rA| j                  |j                        |_        | j                  |j                        |_        n | j                  |j                        |_        |cd d d        S # 1 sw Y   y xY wr   )	r^   rD   rG   r   
generatorsr   keyr   elt)r   rM   rG   is_dict_compcomprehension_s        r   _process_comprehensionz'ActivityAnalyzer._process_comprehension  s     
N	# ~$0n! ((9do	::dhh'ZZ

+
::dhh'  s   BB**B3c                     | j                  |j                        |_        | j                  |j                        |_        | j                  |      S r   )r   iterr   r   r   s     r   visit_comprehensionz$ActivityAnalyzer.visit_comprehension  s=     

499%DI**T[[)DKd##r   c                 (    | j                  |d      S )NT)r   r   r   s     r   visit_DictCompzActivityAnalyzer.visit_DictComp       &&t$&??r   c                 (    | j                  |d      S )NT)rG   r   r   s     r   visit_ListCompzActivityAnalyzer.visit_ListComp  r   r   c                 $    | j                  |      S r   r   r   s     r   visit_SetCompzActivityAnalyzer.visit_SetComp      &&t,,r   c                 $    | j                  |      S r   r   r   s     r   visit_GeneratorExpz#ActivityAnalyzer.visit_GeneratorExp	  r   r   c                    | j                   t           5 }||_        | j                  d       | j	                  |j
                        |_        | j                  j                  j                  t        j                  |j                               | j                  j                  j                  t        j                  |j                               | j	                  |j                        |_        | j	                  |j                        |_        | j                  |       | j                  d       | j!                  |      }| j#                          |cd d d        S # 1 sw Y   y xY wr   )r^   rK   rM   r   r   decorator_listrS   r   rt   r   rj   r9   r   basesr   r   r   r   )r   rM   fns      r   visit_ClassDefzActivityAnalyzer.visit_ClassDef  s	   	$	% bg  ,,T-@-@Ad
jjjmmDII67
jj:==34##DJJ/dj&&t}}5dm
!!$' %d
!  s   EEE(c                 R    |D cg c]  }|d n| j                  |       c}S c c}w r   )r   )r   nodesns      r   _visit_node_listz!ActivityAnalyzer._visit_node_list  s'    <ABqQYTDJJqM1BBBs   $c                    | j                  |j                  j                        |j                  _        | j                  |j                  j                        |j                  _        d| _        | j                  |      }d| _        |S r   )r   r   kw_defaultsdefaultsrV   _visit_arg_declarationsr   s     r   _visit_arg_annotationsz'ActivityAnalyzer._visit_arg_annotations"  si     11$))2G2GHDII..tyy/A/ABDII#'D ''-D#(D Kr   c                 f   | j                  |j                  j                        |j                  _        | j                  |j                  j                        |j                  _        |j                  j                  4| j	                  |j                  j                        |j                  _        | j                  |j                  j
                        |j                  _        |j                  j                  4| j	                  |j                  j                        |j                  _        |S r   )r   r   posonlyargsvarargr   
kwonlyargskwargr   s     r   r   z(ActivityAnalyzer._visit_arg_declarations*  s     11$))2G2GHDII**499>>:DIINyy#DII$4$45dii001E1EFDIIyy"

499??3diioKr   c                    | j                   t           5 }||_        | j                  d       | j	                  |j
                        |_        |j                  r | j                  |j                        |_        | j                  |      }t        j                  |j                        }| j                  j                  j                  |       | j                  j                  j                  |       | j!                  |       | j                  d|j                         | j                  d|j                         | j#                  |      }| j!                  |j$                         | j                  d|j                         | j	                  |j&                        |_        | j!                  |t(        j*                         | j!                  |t(        j,                         |cd d d        S # 1 sw Y   y xY wr   )r^   rK   rM   r   r   r   returnsr   r   r   rj   r9   rS   r   rt   r   r   r   r   bodyr   
BODY_SCOPEARGS_AND_BODY_SCOPE)r   rM   r   r   s       r   visit_FunctionDefz"ActivityAnalyzer.visit_FunctionDef4  s   	$	% #bg  ,,T-@-@Ad	//=((.d mmDII.m
jjm,
jj=)
!!$' dii( tyy) ))$/d
!!$)), tyy)""499-di
!!$(;(;<
!!$(D(DEG# # #s   GG//G8c                    | j                   t           5 }||_        | j                  d       | j	                  |      }| j                  |       | j                  d       | j                  d       | j                  |      }| j                  |j                         | j                  d       | j                  |j                        |_	        t        j                  |j                  t        j                  j                        sCt        j                  |j                  t        j                  j                  | j                         | j                  |t         j"                         | j                  }| j                  |t         j$                         | j                  j&                  j)                  |j&                  |j*                  z
         |cd d d        S # 1 sw Y   y xY wr   )r^   rK   rM   r   r   r   r   r   r   r   r   rh   StaticSCOPEr   rS   r   r  r  r   r1   r   )r   rM   r   lambda_scopes       r   visit_LambdazActivityAnalyzer.visit_LambdaZ  sc   	$	% (bg ((.d
!!$'  ))$/d
!!$)),
 **TYY'di
 \\$))T[[%6%67TYY 1 14::>
!!$(;(;<ZZl
!!$(D(DE jjoo\..1C1CCDQ( ( (s   F>GG%c                     | j                  d       | j                  |      }| j                  |t        j                         |S rF   )r   r   r   r   r  r   s     r   
visit_WithzActivityAnalyzer.visit_With  s;    ed#Dh&9&9:Kr   c                 $    | j                  |      S r   r   r   s     r   visit_withitemzActivityAnalyzer.visit_withitem  r   r   c                 x   | j                  d       | j                  |j                        |_        | j                  |j                        }t	        j
                  |t        j                  |       | j                  ||j                  t        j                  f|j                  t        j                  ff      }|S rF   r   r   testr   r   r   r   
COND_SCOPEr   r   r  orelseORELSE_SCOPEr   s      r   visit_IfzActivityAnalyzer.visit_If      e

499%DI,,TYY7JLLx**J7((+/99h6I6I*J+/;;8M8M*N*PQD Kr   c                    | j                  d       | j                  |j                        |_        | j                  |j                        |_        | j	                  |j                         | j                  d       | j                  |j                         t        j                  |t
        j                  j                        r=| j                  t        j                  |t
        j                  j                               | j	                  |t        j                         | j                  ||j                  t        j                  f|j                   t        j"                  ff      }|S r   )r   r   r   r   r   r   rh   ri   EXTRA_LOOP_TESTr   rk   r   ITERATE_SCOPEr   r   r  r  r  r   s     r   	visit_ForzActivityAnalyzer.visit_For  s    e**T[[)DK

499%DI		*eJJt{{||D$**445
dll41K1KLM(*@*@A((+/99h6I6I*J+/;;8M8M*N*PQD Kr   c                 x   | j                  d       | j                  |j                        |_        | j                  |j                        }t	        j
                  |t        j                  |       | j                  ||j                  t        j                  f|j                  t        j                  ff      }|S rF   r  r   s      r   visit_WhilezActivityAnalyzer.visit_While  r  r   c                 8   | j                  d       |j                  [| j                  j                  j	                  t        j                  |j                  t
        j                  j                               | j                  |      }| j                          |S rF   )r   r9   rS   r   rt   r   rk   ri   rj   r   r   r   s     r   visit_ExceptHandlerz$ActivityAnalyzer.visit_ExceptHandler  sl    e yy
jj##DLLDJJMM$JKd#DKr   r   )F)FF)8r<   r=   r>   r?   r   r@   rf   ro   r~   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  __classcell__)rY   s   @r   rO   rO      s    	)  3jL .2[[->-> 
))))))))$ +0*/"$@@--&C$L*X)	"	r   rO   c                 8    t        ||      j                  |       S r   )rO   r   )rM   rW   rX   s      r   resolver    s    	'<	0	6	6t	<<r   r   )r?   r(   r   rb    tensorflow.python.autograph.pyctr   r   r   6tensorflow.python.autograph.pyct.static_analysis.annosr   objectr   rD   rK   BaserO   r  rB   r   r   <module>r$     sb   
    1 7 8 KpF pfV v \{'' \~=r   