
                             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 dd	lmZ dd
lmZ ddlmZ ddl
mZ  G d dej"                        Zy)zThe BigQuery CLI head command.    )Optional)app)flagsN)
client_job)client_table)utils)bigquery_command)bq_cached_client)bq_id_utilsc                   X     e Zd ZdZdedej                  f fdZddedee	   fdZ
 xZS )	Headz+head [-n <max rows>] [-j] [-t] <identifier>namefvc                 T   t         t        |   ||       t        j                  dddd|       t        j                  dddd|       t        j
                  d	d
dd|       t        j
                  dddd|       t        j                  dd dd|       | j                  |       y )NjobFz!Reads the results of a query job.j)
short_nameflag_valuestablezReads rows from a table.t	start_rowr   z5The number of rows to skip before showing table data.smax_rowsd   z4The number of rows to print when showing table data.nselected_fieldszA subset of fields (including nested fields) to return when showing table data. If not specified, full row will be retrieved. For example, "-c:a,b".c)superr   __init__r   DEFINE_booleanDEFINE_integerDEFINE_string_ProcessCommandRc)selfr   r   	__class__s      $platform/bq/frontend/command_head.pyr   zHead.__init__   s    	$tR(	+ 
" 
	? 
> 
	!  	2    
identifierreturnc                    t         j                  j                         }| j                  r!| j                  rt        j                  d      | j                  r1t        j                  ||t        j                  j                        }nt        j                  ||      }d}t        |t        j                  j                         r:t#        j$                  |t'        |      | j(                  | j*                        \  }}nt        |t        j                  j,                        rQt/        j0                  |j2                  || j(                  | j*                  | j4                  |j6                        \  }}nt        j                  d|d      t         j8                  j:                  j=                         j?                  |||	       y
)zDisplays rows in a table.

    Examples:
      bq head dataset.table
      bq head -j job
      bq head -n 10 dataset.table
      bq head -s 5 -n 10 dataset.table
    zCannot specify both -j and -t.)id_fallbacksr(   default_location)r+   r(   F)r   r   )	apiclient	table_refr   r   r   max_rows_per_requestzInvalid identifier 'z' for head.)use_full_timestampN) r
   ClientGetr   r   r   
UsageErrorbq_client_utilsGetJobReferencebq_flagsLOCATIONvalueGetTableReference
isinstancer   ApiClientHelperJobReferencer   ReadSchemaAndJobRowsdictr   r   TableReferencer   read_schema_and_rowsr-   r   r/   FactoryClientTablePrinterGetTablePrinter
PrintTable)r$   r(   client	referencer0   fieldsrowss          r&   RunWithArgszHead.RunWithArgsC   s]    $$((*Fvv$&&NN;<<vv!11#,,22i "33*i )[88EEF44

y/FF66	lfd 
I{::II	J!66$$FF66&&%::lfd NN*NOO//??ALL); M r'   ) )__name__
__module____qualname__usagestrr   
FlagValuesr   r   intrI   __classcell__)r%   s   @r&   r   r      s9    
;%'3 'E$4$4 'R0C 0# 0r'   r   )__doc__typingr   abslr   r   r6   clientsr   r   r   r4   frontendr	   r
   frontend_flagsr   BigqueryCmdr    r'   r&   <module>r[      s>    $        , % % , \'' \r'   