
    F                         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  SSKJr  SSKJ	r	   " S	 S
\R                  5      r " S S\R                  5      r " S S\	R                  5      r " S S\	R                  5      rg)z7This package provides compatibility interfaces for OCI.    )absolute_import)division)print_functionN)docker_http)docker_image)docker_image_listc                   0    \ rS rSrSrS rS rS rS rSr	g)	
OCIFromV22   zCThis compatibility interface serves an OCI image from a v2_2 image.c                    [         R                  " U R                  R                  5       5      n[        R
                  US'   [        R                  US   S'   US    H  n[        R                  US'   M     [         R                  " USS9$ 	Override.	mediaTypeconfiglayersT	sort_keys)	jsonloads_imagemanifestr   OCI_MANIFEST_MIMEOCI_CONFIG_JSON_MIMEOCI_LAYER_MIMEdumpsselfr   layers      <lib/third_party/containerregistry/client/v2_2/oci_compat_.pyr   OCIFromV22.manifest   st    zz$++..01H'99H[&1&F&FHX{#(#&55eK $ ::h$//    c                 "    [         R                  $ r   )r   r   r   s    r   
media_typeOCIFromV22.media_type*   s    (((r!   c                     U $ N r$   s    r   	__enter__OCIFromV22.__enter__.       Kr!   c                     gr   Nr)   r   unused_typeunused_valueunused_tracebacks       r   __exit__OCIFromV22.__exit__1       r!   r)   N
__name__
__module____qualname____firstlineno____doc__r   r%   r*   r3   __static_attributes__r)   r!   r   r
   r
      s    K	0)	r!   r
   c                   0    \ rS rSrSrS rS rS rS rSr	g)	
V22FromOCI6   zCThis compatibility interface serves a v2_2 image from an OCI image.c                    [         R                  " U R                  R                  5       5      n[        R
                  US'   [        R                  US   S'   US    H  n[        R                  US'   M     [         R                  " USS9$ r   )	r   r   r   r   r   MANIFEST_SCHEMA2_MIMECONFIG_JSON_MIME
LAYER_MIMEr   r   s      r   r   V22FromOCI.manifest9   st    zz$++..01H'==H[&1&B&BHX{#(#&11eK $ ::h$//r!   c                 "    [         R                  $ r#   )r   rA   r$   s    r   r%   V22FromOCI.media_typeD   s    ,,,r!   c                     U $ r(   r)   r$   s    r   r*   V22FromOCI.__enter__H   r,   r!   c                     gr.   r)   r/   s       r   r3   V22FromOCI.__exit__K   r5   r!   r)   Nr6   r)   r!   r   r>   r>   6   s    K	0-	r!   r>   c                   J   ^  \ rS rSrSr S	U 4S jjrS rS rS rS r	Sr
U =r$ )
IndexFromListP   zHThis compatibility interface serves an Image Index from a Manifest List.c                 8   > [         [        U ]  U5        X l        g)zConstructor.

Args:
  image: a DockerImageList on which __enter__ has already been called.
  recursive: whether to recursively convert child manifests to OCI types.
N)superrL   __init__
_recursiver   image	recursive	__class__s      r   rP   IndexFromList.__init__S        
-'.Or!   c                     [         R                  " U R                  R                  5       5      n[        R
                  US'   [         R                  " USS9$ r   r   Tr   )r   r   r   r   r   OCI_IMAGE_INDEX_MIMEr   r   r   s     r   r   IndexFromList.manifest_   s>    zz$++..01H'<<H[::h$//r!   c                 "    [         R                  $ r#   )r   rZ   r$   s    r   r%   IndexFromList.media_typee   s    +++r!   c                 ,   U R                   (       d  U $ / nU R                   H  u  p#[        U[        R                  5      (       a(  [        U5       nUR                  X$45        S S S 5        ML  [        U[        R                  5      (       d   e[        U5       nUR                  X%45        S S S 5        M     [        R                  " U5       nX@l        S S S 5        U $ ! , (       d  f       M  = f! , (       d  f       M  = f! , (       d  f       U $ = fr(   )rQ   r   
isinstancer   DockerImageListrL   appendr   DockerImager
   FromList)r   	convertedplatformchildindexocis         r   r*   IndexFromList.__enter__i   s    ??kI;;	E,<<	=	=5!U


H,
- "! %!9!9::::#


H?
+  ' 
	#	#I	.%k 
/K "! 	.	.K$   C C2D 
C/	2
D	
Dc                     gr.   r)   r/   s       r   r3   IndexFromList.__exit__z   r5   r!   r   rQ   Tr7   r8   r9   r:   r;   rP   r   r%   r*   r3   r<   __classcell__rU   s   @r   rL   rL   P   s)    P  
 0,"	 	r!   rL   c                   J   ^  \ rS rSrSr S	U 4S jjrS rS rS rS r	Sr
U =r$ )
ListFromIndex   zHThis compatibility interface serves a Manifest List from an Image Index.c                 8   > [         [        U ]  U5        X l        g)zConstructor.

Args:
  image: a DockerImageList on which __enter__ has already been called.
  recursive: whether to recursively convert child manifests to Docker types.
N)rO   rt   rP   rQ   rR   s      r   rP   ListFromIndex.__init__   rW   r!   c                     [         R                  " U R                  R                  5       5      n[        R
                  US'   [         R                  " USS9$ rY   )r   r   r   r   r   MANIFEST_LIST_MIMEr   r[   s     r   r   ListFromIndex.manifest   s>    zz$++..01H'::H[::h$//r!   c                 "    [         R                  $ r#   )r   ry   r$   s    r   r%   ListFromIndex.media_type   s    )))r!   c                 ,   U R                   (       d  U $ / nU R                   H  u  p#[        U[        R                  5      (       a(  [        U5       nUR                  X$45        S S S 5        ML  [        U[        R                  5      (       d   e[        U5       nUR                  X%45        S S S 5        M     [        R                  " U5       nX@l        S S S 5        U $ ! , (       d  f       M  = f! , (       d  f       M  = f! , (       d  f       U $ = fr(   )rQ   r   r`   r   ra   rt   rb   r   rc   r>   rd   )r   re   rf   rg   
image_listv22s         r   r*   ListFromIndex.__enter__   s    ??kI;;	E,<<	=	=5!Z


H1
2 "! %!9!9::::#


H?
+  ' 
	#	#I	.*k 
/K "! 	.	.Krk   c                     gr.   r)   r/   s       r   r3   ListFromIndex.__exit__   r5   r!   rn   ro   rp   rr   s   @r   rt   rt      s)    P  
 0*"	 	r!   rt   )r;   
__future__r   r   r   r   containerregistry.client.v2_2r   r   r   Delegater
   r>   rL   rt   r)   r!   r   <module>r      sj    > &  %  5 6 ;	&& 	4	&& 	4,	%.. ,	^,	%.. ,	r!   