
    F                         d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddlm	Z	  G d	 d
ej                        Z G d dej                        Z G d de	j                        Z G d de	j                        Zy)z7This package provides compatibility interfaces for OCI.    )absolute_import)division)print_functionN)docker_http)docker_image)docker_image_listc                   (    e Zd ZdZd Zd Zd Zd Zy)
OCIFromV22zCThis compatibility interface serves an OCI image from a v2_2 image.c                    t        j                  | j                  j                               }t        j
                  |d<   t        j                  |d   d<   |d   D ]  }t        j                  |d<    t        j                  |d      S 	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   zOCIFromV22.manifest   st    zz$++..01H'99H[&1&F&FHX{#(#&55eK $ ::h$//    c                 "    t         j                  S r   )r   r   r   s    r   
media_typezOCIFromV22.media_type*   s    (((r   c                     | S N r"   s    r   	__enter__zOCIFromV22.__enter__.       Kr   c                      yr   Nr&   r   unused_typeunused_valueunused_tracebacks       r   __exit__zOCIFromV22.__exit__1       r   N__name__
__module____qualname____doc__r   r#   r'   r/   r&   r   r   r
   r
      s    K	0)	r   r
   c                   (    e Zd ZdZd Zd Zd Zd Zy)
V22FromOCIzCThis compatibility interface serves a v2_2 image from an OCI image.c                    t        j                  | j                  j                               }t        j
                  |d<   t        j                  |d   d<   |d   D ]  }t        j                  |d<    t        j                  |d      S r   )	r   r   r   r   r   MANIFEST_SCHEMA2_MIMECONFIG_JSON_MIME
LAYER_MIMEr   r   s      r   r   zV22FromOCI.manifest9   st    zz$++..01H'==H[&1&B&BHX{#(#&11eK $ ::h$//r   c                 "    t         j                  S r!   )r   r9   r"   s    r   r#   zV22FromOCI.media_typeD   s    ,,,r   c                     | S r%   r&   r"   s    r   r'   zV22FromOCI.__enter__H   r(   r   c                      yr*   r&   r+   s       r   r/   zV22FromOCI.__exit__K   r0   r   Nr1   r&   r   r   r7   r7   6   s    K	0-	r   r7   c                   >     e Zd ZdZ	 d fd	Zd Zd Zd Zd Z xZ	S )IndexFromListzHThis compatibility interface serves an Image Index from a Manifest List.c                 :    t         t        |   |       || _        y)zConstructor.

    Args:
      image: a DockerImageList on which __enter__ has already been called.
      recursive: whether to recursively convert child manifests to OCI types.
    N)superr@   __init__
_recursiver   image	recursive	__class__s      r   rC   zIndexFromList.__init__S        
-'.DOr   c                     t        j                  | j                  j                               }t        j
                  |d<   t        j                  |d      S r   r   Tr   )r   r   r   r   r   OCI_IMAGE_INDEX_MIMEr   r   r   s     r   r   zIndexFromList.manifest_   s>    zz$++..01H'<<H[::h$//r   c                 "    t         j                  S r!   )r   rL   r"   s    r   r#   zIndexFromList.media_typee   s    +++r   c                    | j                   s| S g }| j                  D ]  \  }}t        |t        j                        r(t        |      5 }|j                  ||f       d d d        Ht        |t        j                        sJ t        |      5 }|j                  ||f       d d d         t        j                  |      5 }|| _        d d d        | S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   | S xY wr%   )rD   r   
isinstancer   DockerImageListr@   appendr   DockerImager
   FromList)r   	convertedplatformchildindexocis         r   r'   zIndexFromList.__enter__i   s    ??kI;;%	E,<<	=5!U


He,
- "! %!9!9:::#


Hc?
+  ' 
	#	#I	.%dk 
/K "! 	.K$   CC?C)C	C&	)C3c                      yr*   r&   r+   s       r   r/   zIndexFromList.__exit__z   r0   r   T
r2   r3   r4   r5   rC   r   r#   r'   r/   __classcell__rH   s   @r   r@   r@   P   s$    P  
 0,"	r   r@   c                   >     e Zd ZdZ	 d fd	Zd Zd Zd Zd Z xZ	S )ListFromIndexzHThis compatibility interface serves a Manifest List from an Image Index.c                 :    t         t        |   |       || _        y)zConstructor.

    Args:
      image: a DockerImageList on which __enter__ has already been called.
      recursive: whether to recursively convert child manifests to Docker types.
    N)rB   ra   rC   rD   rE   s      r   rC   zListFromIndex.__init__   rI   r   c                     t        j                  | j                  j                               }t        j
                  |d<   t        j                  |d      S rK   )r   r   r   r   r   MANIFEST_LIST_MIMEr   rM   s     r   r   zListFromIndex.manifest   s>    zz$++..01H'::H[::h$//r   c                 "    t         j                  S r!   )r   rd   r"   s    r   r#   zListFromIndex.media_type   s    )))r   c                    | j                   s| S g }| j                  D ]  \  }}t        |t        j                        r(t        |      5 }|j                  ||f       d d d        Ht        |t        j                        sJ t        |      5 }|j                  ||f       d d d         t        j                  |      5 }|| _        d d d        | S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   | S xY wr%   )rD   r   rP   r   rQ   ra   rR   r   rS   r7   rT   )r   rU   rV   rW   
image_listv22s         r   r'   zListFromIndex.__enter__   s    ??kI;;%	E,<<	=5!Z


Hj1
2 "! %!9!9:::#


Hc?
+  ' 
	#	#I	.*dk 
/K "! 	.KrZ   c                      yr*   r&   r+   s       r   r/   zListFromIndex.__exit__   r0   r   r\   r]   r_   s   @r   ra   ra      s$    P  
 0*"	r   ra   )r5   
__future__r   r   r   r   containerregistry.client.v2_2r   r   r   Delegater
   r7   r@   ra   r&   r   r   <module>rm      sj    > &  %  5 6 ;	&& 	4	&& 	4,	%.. ,	^,	%.. ,	r   