3
Ud                 @   s>  d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlZ	d dl
Z
d dlZd dlZd dlmZ e
jdZe
jdZe
jdZe
jdZdZdZdZej Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zd)e e!dddZ"dd Z#dd Z$dd  Z%d!d" Z&e
j'j(d#dd$gd%d& Z)e
j'j*G d'd( d(Z+dS )*    )	ExitStack)datetimeN)	DataFramezgoogle.api_core.exceptionszgoogle.cloud.bigqueryzgoogle.oauth2.service_account
pandas_gbqc               C   s   t  stjd d S )Nz1Cannot run integration tests without a project id)_get_project_idpytestskip r	   r	   L/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/test_gbq.py_skip_if_no_project_id   s    r   c               C   s   t  stjd d S )NzACannot run integration tests without a private key json file path)_get_private_key_pathr   r   r	   r	   r	   r
   _skip_if_no_private_key_path    s    r   c               C   s   dt jkodt jkS )NTRAVIS_BUILD_DIRGBQ_PROJECT_ID)osenvironr	   r	   r	   r
   _in_travis_environment%   s    r   c               C   s"   t  rtjjdS tp tjjdS )Nr   )r   r   r   get
PROJECT_IDr	   r	   r	   r
   r   )   s    r   c              C   s8   t  r tjjtjjdddg S t} | s4tjjd} | S )Nr   ciztravis_gbq.jsonZ"GBQ_GOOGLE_APPLICATION_CREDENTIALS)r   r   pathjoinr   r   PRIVATE_KEY_JSON_PATH)private_key_pathr	   r	   r
   r   /   s    r   c              C   s   t  } | rtjj| S d S )N)r   service_accountCredentialsZfrom_service_account_file)r   r	   r	   r
   _get_credentials;   s    r   c              C   s   t  } t }tj| |dS )N)projectcredentials)r   r   bigqueryClient)
project_idr   r	   r	   r
   _get_clientA   s    r"   
   )lengthreturnc             C   s   dj tjtj| dS )N )k)r   randomchoicesstringascii_lowercase)r$   r	   r	   r
   generate_rand_strG   s    r,   c             C   s   t jjdd| fdjt}t jjd| }t jjddd| fd}t jjddd| fdjt}dd t| D }t|d |d |d |d |d dt| d	S )
N      )sizer#   c             S   s   g | ]}t jtjd qS )z
US/Arizona)r   nowpytztimezone).0tr	   r	   r
   
<listcomp>Q   s    z+make_mixed_dataframe_v2.<locals>.<listcomp>r   )boolsfltsintsstrstimes)index)	npr(   randintZastypeboolZrandnstrranger   )	test_sizer6   r7   r8   r9   r:   r	   r	   r
   make_mixed_dataframe_v2K   s    
rB   c                sB   i   fdd}| j d| tjd d ks2td ks>td S )Nc                s    j | tdggS )Ng      ?)updater   )sqlkwargs)captured_kwargsr	   r
   mock_read_gbqa   s    
z>test_read_gbq_without_deprecated_kwargs.<locals>.mock_read_gbqzpandas_gbq.read_gbqzSELECT 1verboseZprivate_key)setattrpdread_gbqAssertionError)monkeypatchrG   r	   )rF   r
   'test_read_gbq_without_deprecated_kwargs^   s    
rN   c                sH   i   fdd}| j d| tjdddd  d s8t d	 sDtd S )
Nc                s    j | tdggS )Ng      ?)rC   r   )rD   rE   )rF   r	   r
   rG   o   s    
z4test_read_gbq_with_new_kwargs.<locals>.mock_read_gbqzpandas_gbq.read_gbqzSELECT 1Tr.   )use_bqstorage_apimax_resultsrO   rP   )rI   rJ   rK   rL   )rM   rG   r	   )rF   r
   test_read_gbq_with_new_kwargsl   s    rQ   c                sB   i   fdd}| j d| tjd d ks2td ks>td S )Nc                s    j | tdggS )Ng      ?)rC   r   )rD   rE   )rF   r	   r
   rG   }   s    
z7test_read_gbq_without_new_kwargs.<locals>.mock_read_gbqzpandas_gbq.read_gbqzSELECT 1rO   rP   )rI   rJ   rK   rL   )rM   rG   r	   )rF   r
    test_read_gbq_without_new_kwargsz   s    
rR   progress_barZfooc                s:   i   fdd}| j d| tjd|d d ks6td S )Nc                s    j | tdggS )Ng      ?)rC   r   )rD   rE   )rF   r	   r
   rG      s    
z<test_read_gbq_progress_bar_type_kwarg.<locals>.mock_read_gbqzpandas_gbq.read_gbqzSELECT 1)progress_bar_typerT   )rI   rJ   rK   rL   )rM   rS   rG   r	   )rF   r
   %test_read_gbq_progress_bar_type_kwarg   s
    rU   c               @   s`   e Zd Zej dd Zdd Zejjddde	 fdd	ej
ejjfd
de	 fgdd ZdS )-TestToGBQIntegrationWithServiceAccountKeyPathc             c   sp   t   t  dt  }t | _| jj|| _| jjtj| j t }| d| }|V  | jj	| jdd d S )NZpydata_pandas_bq_testing_.T)Zdelete_contents)
r   r   r,   r"   clientZdatasetZcreate_datasetr   ZDatasetZdelete_dataset)selfZ
dataset_idZ
table_namedestination_tabler	   r	   r
   gbq_dataset   s    
z9TestToGBQIntegrationWithServiceAccountKeyPath.gbq_datasetc             C   sZ   |}d}t |}|j|t d t d tjd| t t dd}|d d |ksVtd S )Ni!N  )	chunksizer   z!SELECT COUNT(*) AS num_rows FROM standard)r!   r   dialectnum_rowsr   )rB   to_gbqr   r   rJ   rK   rL   )rY   r[   rZ   rA   dfresultr	   r	   r
   test_roundtrip   s    
z<TestToGBQIntegrationWithServiceAccountKeyPath.test_roundtripz)if_exists, expected_num_rows, expectationappendi,  Zfail   replaced   c       	      C   s   |}d}t |}|j|t d t d |( |jd d j|t |d t d W d Q R X tjd| t t dd}|d d	 |kstd S )
Nre   )r\   r   rg   )	if_existsr\   r   z!SELECT COUNT(*) AS num_rows FROM r]   )r!   r   r^   r_   r   )rB   r`   r   r   ZilocrJ   rK   rL   )	rY   rh   Zexpected_num_rowsZexpectationr[   rZ   rA   ra   rb   r	   r	   r
   test_gbq_if_exists   s*    
z@TestToGBQIntegrationWithServiceAccountKeyPath.test_gbq_if_existsN)__name__
__module____qualname__r   Zfixturer[   rc   markparametrizedoes_not_raiseZraisesr   ZgbqZTableCreationErrorri   r	   r	   r	   r
   rV      s   
rV   )r#   ),
contextlibr   ro   r   r   platformr(   r*   Znumpyr<   r   r1   ZpandasrJ   r   ZimportorskipZapi_exceptionsr   r   r   r   r   ZPRIVATE_KEY_JSON_CONTENTSpython_versionVERSIONr   r   r   r   r   r   r"   intr?   r,   rB   rN   rQ   rR   rm   rn   rU   ZsinglerV   r	   r	   r	   r
   <module>   s@   



