
    &Vf+                     ,   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 Z e            dk    rd dlm	Z	  ej
        e	d d d	           d
 ZddZd Zd Zd ZddZddZd Zd Z G d d          Z e            Zd dZd Zd Zd Zd Zd ZddZdS )!    N)backendc                 .    t          j        | d          S )Nkeras	namespace)optreeregister_pytree_node_class)clss    W/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/tree/optree_impl.pyregister_tree_node_classr      s    ,SGDDDD    
tensorflow)ListWrapperc                 
    | d fS N xs    r   <lambda>r      s
    1d) r   c                 :    t          t          |                    S r   )r   list)metadatachildrens     r   r   r      s    ;tH~~#>#> r   r   r   c                 2    t          j        | dd           S NTr   none_is_leafr   )r   tree_is_leaf)	structures    r   	is_nestedr       s(    "    r   Tc                       fd}r            }|
 |            S n |            }  |          }||S |t           u rd n|S )Nc                      t          j        fddd          \  } }|j        dk    r|j        dk    rS t          j        |fd| D                       S )Nc                     | uS r   r   )r   r   s    r   r   z5traverse.<locals>.traverse_children.<locals>.<lambda>&   s    ay0 r   Tr   is_leafr   r      c                 4    g | ]}t          |           S ))top_down)traverse).0cfuncr(   s     r   
<listcomp>z7traverse.<locals>.traverse_children.<locals>.<listcomp>/   s(    HHH!$H555HHHr   )r   tree_flatten	num_nodes
num_leavestree_unflatten)r   treedefr,   r   r(   s     r   traverse_childrenz#traverse.<locals>.traverse_children#   s    "/0000	
 
 
' !!g&8A&=&=(HHHHHxHHH  r   )_MAP_TO_NONE)r,   r   r(   r3   rettraversed_structures   ```   r   r)   r)   !   s            'd9oo;$$&&&  0/11d&'';&&,&&44C/r   c                 :    t          j        | dd          \  }}|S r   )r   r.   )r   leaves_s      r   flattenr:   >   s-     #  IFA Mr   c                     t          |           st          d|            |st          d          |dd          D ]}t          |d         |d           t	          j        | g|R ddd	S )
N(`func` must be callable. Received: func=z#Must provide at least one structurer&   r   F)check_typesTr   r   )callable	TypeError
ValueErrorassert_same_structurer   tree_map)r,   
structuresothers      r   map_structurerE   H   s    D>> KI4IIJJJ @>???ABB G GjmUFFFFF? (,   r   c                 &    t          | fdg|R  S )Nc                      | S r   r   )r9   argsr,   s     r   r   z%map_structure_up_to.<locals>.<lambda>W   s    t r   )_map_structure_with_path_up_to)shallow_structurer,   rC   s    ` r   map_structure_up_torK   T   s3    )$$$$ 
   r   c                     t          j        | dd          }t          j        |dd          }||k    rt          d| d|           |r@t          j        d | |dd          }t          j        |dd          st          d          d S d S )NTr   r   zD`a` and `b` don't have the same structure. Received: structure of a=z, structure of b=c                 >    t          |           t          |          u S r   )type)r   ys     r   r   z'assert_same_structure.<locals>.<lambda>g   s    aDGG+ r   z4The type of the leaves of `a` and `b` doesn't match.)r   tree_structurer@   rB   tree_allr?   )abr=   a_structureb_structuretype_structures         r   rA   rA   \   s    'PPPK'PPPKk!!,(3, ,), ,
 
 	

  ++
 
 
 
 
 
 	 F   	 	r   c                 &   |pt           }d }t          |          s:t          d                     ||d          t	          |                              t          |           s|t          |          dk    rat          d                    t	          |            || d          t	          |          t          |           ||d                              |d         S 	 t          | |d|          \  }}|t          |          k     rt          nu# t          $ rh t          |           }t          |          t          |          k    r6t          dt          |           dt          |           d	|  d
| d	          Y nw xY w || |          S )Nc                 N    t          |           }|d |         ||d          odz   S )Nz...)str)valuelength	value_strs      r   truncatez"pack_sequence_as.<locals>.truncatex   s/    JJ	&!Yvww%7%AEBBr   zYAttempted to pack value:
  {}
into a structure, but found incompatible type `{}` instead.d   r&   zThe target structure is of type `{}`
  {}
However the input is a sequence ({}) of length {}.
  {}
nest cannot guarantee that it is safe to map one to the other.r   z'Could not pack sequence. Structure had z atoms, but flat_sequence had z items. Structure: z, flat_sequence: .)
_sequence_liker    r?   formatrN   lenr@   _packed_nest_with_indices
IndexErrorr:   )r   flat_sequencesequence_fnr]   final_indexpackedflat_structures          r   pack_sequence_asrj   u   s   /KC C C ]## 
..4f,,d=.A.A/ /
 
 	
 Y  }""EEKVOOHY,,''&&H]C00F F
 
 
 Q7}a
 
V ]++++ , 	 	 	 ++~#m"4"444K!$^!4!4K K%(%7%7K K (K K ;HK K K   54	 ;y&)))s   "/D A/FFc                 F    d }t          | t          |           |          S )Nc                 j    t          | t                    rt          |          S t          | |          S r   )
isinstancer   tupler`   )instancerH   s     r   rf   z$lists_to_tuples.<locals>.sequence_fn   s0    h%% 	;;h---r   )rf   )rj   r:   )r   rf   s     r   lists_to_tuplesrp      s9    . . .
 79%%;   r   c                 |    d }t          |           st          d|            t          j        | ||dd          S )Nc                 l    t          | t          t          f          ot          d | D                       S )Nc              3   ^   K   | ](}t          |t          t          d           f          V  )d S r   )rm   intrN   )r*   es     r   	<genexpr>z>map_shape_structure.<locals>.is_shape_tuple.<locals>.<genexpr>   sH       4
 4
12Jq3T

+,,4
 4
 4
 4
 4
 4
r   )rm   r   rn   allr   s    r   is_shape_tuplez+map_shape_structure.<locals>.is_shape_tuple   sE    !dE]++ 
 4
 4
674
 4
 4
 1
 1
 	
r   r<   Tr   r$   )r>   r?   r   rB   )r,   r   rx   s      r   map_shape_structurery      sa    
 
 

 D>> KI4IIJJJ?   r   c                       e Zd ZdZd ZdS )
_MapToNonez6A special object used as a sentinel within `traverse`.c                     dS )Nzkeras.utils.tree._MAP_TO_NONEr   )selfs    r   __repr__z_MapToNone.__repr__   s    ..r   N)__name__
__module____qualname____doc__r~   r   r   r   r{   r{      s)        @@/ / / / /r   r{   r   c              #     K   t          | t          t          f          sDt          | t          j        j        t          j        j        f          st          j        |           s||fV  d S t          t          |                    }t          |           D ]1\  }}||fz   }||         }t          |||          D ]\  }}||fV  2d S )N)path)rm   rY   bytescollectionsabcMappingSequencer   is_namedtupledict_yield_sorted_items_yield_flat_up_to)	shallow_tree
input_treer   shallow_keyshallow_subtreesubpathinput_subtree	leaf_path
leaf_values	            r   r   r      s     ,e-- .;?2KO4LM	
 	
. --	. Z      -j99::
,?,M,M 	. 	.(Kk^+G&{3M):W* * * . .%	: !*-----.	. 	.r   c              '   0   K   t           fd|D              }	 |D ]}t          | \  }}|dd         |z   V  dS # t          $ rO}t                                          dd          }t	          d|j        d          d|d          d	          |d}~ww xY w)
z<Same as `_yield_flat_up_to`, but takes multiple input trees.c                 0    g | ]}t          |          S r   )r   )r*   r   r   s     r   r-   z*_multiyield_flat_up_to.<locals>.<listcomp>   s3     

 

 

 lJ77

 

 

r   Nr&   pathsr   zCould not find key 'r   z' in some `input_trees`. Please ensure the structure of all `input_trees` are compatible with `shallow_tree`. The last valid path yielded was r_   )zipKeyErrorlocalsgetr@   rH   )r   input_treeszipped_iteratorspaths_and_valuesr   valuesru   s   `      r   _multiyield_flat_up_tor      s      

 

 

 

)

 

 

 0 	% 	%!12ME6)f$$$$$	% 	%    We,,'16!9 ' ' !8' ' '
 

 	s    < 
BA
BBc                     g }t          | g|R  D ]}|                     ||            t          j        | dd          }|                    |          S r   )r   appendr   rP   	unflatten)rJ   r,   rC   resultspath_and_valuesshallow_structure_specs         r   rI   rI      s    G1&   / / 	tt_-....#2   "++G444r   c                    t          | t          t          j        j        f          rt          t          t          |           |                    fd| D             }t          | t          j                  r t          |           | j	        |          S t          | t          j                  r% t          |           t          |                    S  t          |           |          S t          | t          j        j                  rt          |          S t          j        |           r=t          |           }	  || S # t           $ r}t#          d| d|           |d }~ww xY w t          |           |          S )Nc              3   ,   K   | ]}||         fV  d S r   r   )r*   keyresults     r   rv   z!_sequence_like.<locals>.<genexpr>  s,      BB#C-BBBBBBr   zCouldn't traverse z with arguments )rm   r   r   r   r   r   sorteddefaultdictrN   default_factorytypesMappingProxyTypeMappingViewr   r   r   	Exceptionr?   )ro   rH   keys_and_valuesinstance_typeru   r   s        @r   r`   r`     s   (T;?#:;<< $ c&**D1122BBBBBBBh 788 	3!4>>(":OLLL%"899 	3!4>>$"7"7888!4>>/222	Hko9	:	: $Dzz		h	'	' 
$X	 =$'' 	 	 	GXGGGG 	 tH~~d###s   E 
E+E&&E+c              #     K   t          | t          j        j                  r t	          |           D ]}|| |         fV  d S t          j        |           r | j        D ]}|t          | |          fV  d S t          |           D ]}|V  d S r   )
rm   r   r   r   r   r   r   _fieldsgetattr	enumerate)iterabler   fielditems       r   r   r   %  s      (KO344  (## 	% 	%Cx}$$$$$	% 	%		h	'	' % 	4 	4E'(E2233333	4 	4 h'' 	 	DJJJJ	 	r   c              #   <   K   t          |           D ]	\  }}|V  
d S r   )r   )r   r9   vs      r   _yield_valuer   7  s6      #H--  1 r   c                    g }|pt           }t          |           D ]h}t          |          r7t          ||||          \  }}|                     |||                     |}H|                    ||                    |dz  }i||fS )Nr&   )r`   r   r    rc   r   )r   flatindexrf   rh   s	new_indexchilds           r   rc   rc   <  s    F/K)$$ 	 	Q<< 	84   Iu MM++a//000EEMM$u+&&&QJEE&=r   )Tr   r   )r   collections.abcr   r   optree.utilskeras.src.backend.configr   r   +tensorflow.python.trackable.data_structuresr   register_pytree_noder    r)   r:   rE   rK   rA   rj   rp   ry   r{   r4   r   r   rI   r`   r   r   rc   r   r   r   <module>r      s                 , , , , , ,E E E
 799GGGGGGF>>	     0 0 0 0:  	 	 	     2.* .* .* .*b	 	 	  $/ / / / / / / / z||. . . .&  ,	5 	5 	5$ $ $D  $  
     r   