
                             S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSK	r	\" S/ SQ5      r
Sr\R                  " S	5      R                  5       r " S
 S\
5      rS rS rS rS r  SS jrg)z;This package manipulates v2.2 image configuration metadata.    )absolute_import)print_function)
namedtupleN
OverridesT)layers
entrypointcmdenvlabelsportsvolumesworkdiruserauthor
created_bycreation_timez1970-01-01T00:00:00Z    c                   j   ^  \ rS rSrSr            SU 4S jjr            SS jrSrU =r$ )	Overrides&   z#Docker image configuration options.c                 >   > [         [        U ]  U UUUUUUUUU	U
UUS9$ )zConstructor.r   r   r	   r   r   r
   r   r   r   r   r   r   )superr   __new__)clsr   r   r	   r   r   r
   r   r   r   r   r   r   	__class__s                =lib/third_party/containerregistry/transform/v2_2/metadata_.pyr   Overrides.__new__)   sE     C(# ) % %r   c                    [        U=(       d    U R                  U=(       d    U R                  U=(       d    U R                  U=(       d    U R                  U=(       d    U R
                  U=(       d    U R                  U=(       d    U R                  U=(       d    U R                  U	=(       d    U R                  U
=(       d    U R                  U=(       d    U R                  U=(       d    U R                  S9$ )Nr   )r   r   r   r	   r   r   r
   r   r   r   r   r   r   )selfr   r   r	   r   r   r
   r   r   r   r   r   r   s                r   OverrideOverrides.OverrideF   s     $0O488TYY$O488!tzz'4<<'4<<$0#9t'9'9; ;r    )NNNNNNNNNNNN)	__name__
__module____qualname____firstlineno____doc__r   r!   __static_attributes____classcell__)r   s   @r   r   r   &   sa    + "%<   #; ;r   r   c                     [         R                  n U[         l        [         R                  R                  U 5      U[         l        $ ! U[         l        f = f)z;Resolves environment variables embedded in the given value.)osenvironpath
expandvars)valueenvironment	outer_envs      r   _Resolver3   c   s8    jj)BJ77e$BJBJs   )A Ac                     [        U [        5      (       a&  [        S [        R                  " U 5       5       5      $ [        R
                  " U 5      $ )z$Do a deep copy, skipping null entry.c              3   \   #    U  H"  u  pUc  M
  [        U5      [        U5      4v   M$     g 7f)N)_DeepCopySkipNull).0kvs      r   	<genexpr>$_DeepCopySkipNull.<locals>.<genexpr>q   s/      "/DA ="1%'8';</s   	,,)
isinstancedictsix	iteritemscopydeepcopy)datas    r   r6   r6   n   sC    d "MM$/" " " 
t	r   c                 \    [        5       nU  H  nUR                  SS5      u  p4XAU'   M     U$ )z=Converts an iterable object of key=value pairs to dictionary.=   )r=   split)pairdkvr8   r9   s        r   _KeyValueToDictrJ   w   s3    
f!bXXc1FQaD  
(r   c                 p    [        U R                  5       5       Vs/ s H  o< SX   < 3PM     sn$ s  snf )NrD   )sortedkeys)rH   r8   s     r   _DictToKeyValuerN      s.    '-affh'7	8'7!Q
'7	88	8s   3c                    [        U 5      n[        5       nUR                  =(       d    [        US'   UR                  =(       d    SUS'   X%S'   X5S'   SU;   a  US   US'   UR                  S0 5      US'   UR                  (       a  UR                  US   S'   UR                  (       a  UR                  US   S	'   UR                  (       a  UR                  US   S
'   UR                  (       ae  [        US   R                  S/ 5      5      n[        R                  " UR                  5       H  u  px[        X5      Xg'   M     [        U5      US   S'   UR                  (       aI  US   R                  S0 5      n	[        R                  " UR                  5       H	  u  pxXU'   M     XS   S'   UR                   (       aE  SUS   ;  a  0 US   S'   UR                    H$  n
SU
;   a  0 US   S   U
'   M  0 US   S   U
S-   '   M&     UR"                  (       a/  SUS   ;  a  0 US   S'   UR"                   H  n
0 US   S   U
'   M     UR$                  (       a  UR$                  US   S'   UR                  S0 5      R                  S/ 5      nUR&                  (       a  UR&                  nX Vs/ s H  o[(        :w  d  M  SU-  PM     sn-  nSUS.US'   UR                  S/ 5      nU Hg  nUR                  =(       d    [        UR*                  =(       d    SUR                  =(       d    SS.nU[(        :X  a  SUS'   UR-                  SU5        Mi     XS'   U$ s  snf )a  Create an image config possibly based on an existing one.

Args:
  data: A dict of Docker image config to base on top of.
  options: Options specific to this image which will be merged with any
           existing data
  architecture: The architecture to write in the metadata (default: amd64)
  operating_system: The os to write in the metadata (default: linux)

Returns:
  Image config for the new image
createdUnknownr   architecturer,   z
os.versionconfig
EntrypointCmdUserEnvLabelsExposedPorts/z/tcpVolumes
WorkingDirrootfsdiff_idsz	sha256:%sr   )typer^   history)rP   r   r   Tempty_layerr   )r6   r=   r   _DEFAULT_TIMESTAMPr   getr   r	   r   r
   rJ   r>   r?   r3   rN   r   r   r   r   r   _EMPTY_LAYERr   insert)rB   optionsrR   operating_systemdefaultsoutputenviron_dictr8   r9   
label_dictpr^   r   lr`   cfgs                   r   r!   r!      s-     t$( 6&++A/A&^^0y&'!,X#L1F<\\(B/& %,%7%7F8\"[[%kkF8U\\&||F8V[["6(#3#7#7r#BCLgkk* 1lo + .l;F8U ^^!%%h3Jgnn-m .!+8X]]VH--)+fX~&]]	 /1x(+ 8:x(V4  __x(($&fXy!__')fXy!!$  __%,__F8\" \\(B'++J;(^^^^F&F&Q4Eq&FFHF8 ll9b)G**@.@**7iNN/ic
 
l	!MnnQ   9	-' Gs   *M;	M)amd64linux)r(   
__future__r   r   collectionsr   r@   hashlibr,   r>   _OverridesTrb   sha256	hexdigestrd   r   r3   r6   rJ   rN   r!   r#   r   r   <module>rw      s    B & % "   	 
  (  , ~~c",,.9; 9;z9 $ 'cr   