
    v                         S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  \R                  R                  5        V s/ s H  o R                  PM     sn rSrSr " S	 S
\5      rS rS rgs  sn f )z;Helpers to separate release tracks in declarative commands.    )absolute_import)division)unicode_literalsN)baserelease_tracksgroupc                       \ rS rSrSrg)DoesNotExistForTrackError    N)__name__
__module____qualname____firstlineno____static_attributes__r       5lib/googlecloudsdk/calliope/command_release_tracks.pyr
   r
      s    r   r
   c                 n   [        U [        5      (       a  [        U ;   n[        U ;   a  X[           ;  a
  [	        5       eU [        	 X;   a  X   R                  5        H	  u  p4X@U'   M     [         H  nXP;   d  M
  X	 M     [        U R                  5       5       H  u  p6 [        Xa5        M     U(       a  U (       d
  [	        5       eU $ [        U [        5      (       a4  [        U 5      n/ U SS& U H  n U R                  [        Xa5      5        M      U $ ! [         a    X	  M  f = f! [         a     MD  f = f)a  Recursively modify an object to have only values for the provided track.

Args:
  obj: The object to modify.
  track: The track to extract the values for.

Returns:
  The modified object
Raises:
  DoesNotExistForTrackError: if the object does not exist for the track.
N)

isinstancedictGROUPRELEASE_TRACKSr
   items
ALL_TRACKSlist_SetValuesForTrackappend)objtrackis_groupkeyvalue	track_keychildchildrens           r   r   r   %   s+    T|H	.)	)'))
n
|
((**#C +  			N  
 399;'
5( (
  &'' 
* #t CyHCF

%e34 
 
*! ' H ' s$   D3D&D#"D#&
D43D4c              #      #    [        U [        5      (       d  U /n U  H\  nUR                  [        5      nU(       d  / SQnU H3  n[        R
                  " U5      n [        XC5        U/U[        '   Uv   M5     M^     g! [         a     N#f = f7f)aH  Separate combined track definitions.

If a file does not specify tracks, the same implementation may be used for
all track implementations the command is present in.

Args:
  command_impls: A single or list of declarative command implementation(s).

Yields:
  One implementation for each distinct track implmentation in a file.
)ALPHABETAGAN)r   r   getr   copydeepcopyr   r
   )command_implsimplr   r   
track_impls        r    SeparateDeclarativeCommandTracksr0   X   s      
M4	(	("OMdXXn-N.n==&j:-
 %*7j   	  '  	s*   ABA>'B>
BB
BB)__doc__
__future__r   r   r   r+   googlecloudsdk.callioper   ReleaseTrack	AllValuesidr   r   r   	Exceptionr
   r   r0   )ts   0r   <module>r9      sh     B &  '  ( --779:9qdd9:
!	 0f} ;s   A)