U
    >iE                     @   sd   d Z ddlmZ G dd deZG dd deZdd Ze Z[G d	d
 d
eZG dd deZ	dS )zShared testing utilities.    )absolute_importc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	_MonkeyzBContext-manager for replacing module names in the scope of a test.c                    sH    | _ |std fdd|D | _| D ]\}}t || q.d S )Nz-_Monkey was used with nothing to monkey-patchc                    s   i | ]}|t  |qS  )getattr).0keymoduler   B/tmp/pip-unpacked-wheel-n32la62k/google/cloud/_testing/__init__.py
<dictcomp>   s      z$_Monkey.__init__.<locals>.<dictcomp>)r	   
ValueError
to_restoreitemssetattr)selfr	   kwr   valuer   r   r
   __init__   s    z_Monkey.__init__c                 C   s   | S Nr   r   r   r   r
   	__enter__   s    z_Monkey.__enter__c                 C   s&   | j  D ]\}}t| j|| q
d S r   )r   r   r   r	   )r   exc_typeexc_valexc_tbr   r   r   r   r
   __exit__"   s    z_Monkey.__exit__N)__name__
__module____qualname____doc__r   r   r   r   r   r   r
   r      s   r   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
_NamedTemporaryFile c                 C   s0   dd l }dd l}|j|d\}| _|| d S )Nr   )suffix)ostempfilemkstempnameclose)r   r!   r"   r#   Z
filehandler   r   r
   r   (   s    z_NamedTemporaryFile.__init__c                 C   s   | S r   r   r   r   r   r
   r   /   s    z_NamedTemporaryFile.__enter__c                 C   s   dd l }|| j d S )Nr   )r"   remover%   )r   r   r   r   r"   r   r   r
   r   2   s    z_NamedTemporaryFile.__exit__N)r    )r   r   r   r   r   r   r   r   r   r
   r   '   s   
r   c                     s0   dd l } dd l dd l| j fdd}|S )Nr   c                  3   s     } | V   |  d S r   )mkdtemprmtree)temp_dirshutilr#   r   r
   _tempdir_mgr=   s    z$_tempdir_maker.<locals>._tempdir_mgr)
contextlibr,   r#   contextmanager)r.   r-   r   r+   r
   _tempdir_maker8   s    r0   c                   @   sF   e Zd ZdZdd ZedddZdd Zd	d
 Zdd Z	dd Z
dS )_GAXBaseAPIFc                 K   s   | j | d S r   )__dict__update)r   r   r   r   r
   r   Q   s    z_GAXBaseAPI.__init__Nc                 C   s:   ddl m} ddlm} d}|dd || |}||d d d S )Nr   )	_RPCState)GrpcRendezvouszSome error details.r   )Zgrpc._channelr4   Zgoogle.cloud.exceptionsr5   )status_codeZtrailingr4   r5   detailsZ	exc_stater   r   r
   _make_grpc_errorT   s
    z_GAXBaseAPI._make_grpc_errorc                 C   s   ddl m} | |jS Nr   )
StatusCode)grpcr:   r8   	NOT_FOUNDr   r:   r   r   r
   _make_grpc_not_found]   s    z _GAXBaseAPI._make_grpc_not_foundc                 C   s   ddl m} | |jS r9   )r;   r:   r8   ZFAILED_PRECONDITIONr=   r   r   r
   _make_grpc_failed_preconditionb   s    z*_GAXBaseAPI._make_grpc_failed_preconditionc                 C   s   ddl m} | |jS r9   )r;   r:   r8   ZALREADY_EXISTSr=   r   r   r
   _make_grpc_already_existsg   s    z%_GAXBaseAPI._make_grpc_already_existsc                 C   s   ddl m} | |jS r9   )r;   r:   r8   ZDEADLINE_EXCEEDEDr=   r   r   r
   _make_grpc_deadline_exceededl   s    z(_GAXBaseAPI._make_grpc_deadline_exceeded)N)r   r   r   Z_random_gax_errorr   staticmethodr8   r>   r?   r@   rA   r   r   r   r
   r1   N   s   r1   c                   @   s   e Zd Zdd Zdd ZdS )_GAXPageIteratorc                 O   s   t || _|d| _d S )N
page_token)iter_pagesgetrD   )r   Zpageskwargsr   r   r
   r   s   s    
z_GAXPageIterator.__init__c                 C   s
   t | jS )zIterate to the next page.)nextrF   r   r   r   r
   __next__w   s    z_GAXPageIterator.__next__N)r   r   r   r   rJ   r   r   r   r
   rC   r   s   rC   N)
r   
__future__r   objectr   r   r0   Z_tempdirr1   rC   r   r   r   r
   <module>   s   $