o 2&a+@sddlZddlmZddlmZddlmZddlmZm Z m Z ddl m Z ddl m Z ddlmZeeZd d ZGd d d eZGd ddeZGdddeZGdddeZGdddeZddZdS)N)json)set_value_from_jmespath) PageIterator) MultiTableStylerColorizedStyler)text)compat) json_encodercCs t|tSN) isinstancer)responser2/usr/lib/python3/dist-packages/awscli/formatter.pyis_response_paginated rc@s,eZdZddZddZddZddZd S) FormattercCs ||_dSr )_args)selfargsrrr__init__"rzFormatter.__init__cCsFd|vrd|vr!d|dvr|dd}td||d=dSdSdS)NErrorsResponseMetadata RequestIdz RequestId: %s)LOGdebug)r response_data request_idrrr_remove_request_id%s    zFormatter._remove_request_idcCstSr )r get_stdout_text_writerrrrr_get_default_stream1szFormatter._get_default_streamcCs$z|WdStyYdSwr )flushIOError)rstreamrrr _flush_stream4s  zFormatter._flush_streamN)__name__ __module__ __qualname__rrr!r%rrrrr!s  rc@seZdZdddZdS)FullyBufferedFormatterNc Cs|dur|}t|r|}n|}|||jjdur%|jj|}z,z ||||WntyA}zWYd}~n d}~wwW| |dSW| |dS| |wr ) r!rbuild_full_resultrrquerysearch_format_responser#r%)r command_namer r$rerrr__call__<s$    zFullyBufferedFormatter.__call__r )r&r'r(r0rrrrr);sr)c@seZdZddZdS) JSONFormattercCs.|ikrtj||dtdd|ddSdS)NF)indentdefault ensure_ascii )rdumpr writerr.r r$rrrr-Ys  zJSONFormatter._format_responseN)r&r'r(r-rrrrr1Ws r1cs\eZdZdZdfdd ZddZddd Zd d Zd d ZddZ ddZ ddZ Z S)TableFormatterzPretty print a table from a given response. The table formatter is able to take any generic response and generate a pretty printed table. It does this without using the output definition from the model. Ncstt|||jdkrtddd|_dS|jdkr(t}tdd|d|_dS|jdkr:t}tdd|d|_dStd|j) NautoF|)initial_sectioncolumn_separatoroff)r=r>styleronzUnknown color option: %s) superr:rcolorrtablerr ValueError)rrrDr@ __class__rrrls     zTableFormatter.__init__cCs8|||rz |j|WdStyYdSwdSr ) _build_tablerDrenderr#r9rrrr-|s  zTableFormatter._format_responsercs|sdS|durjj||dt|trOt|dtr$|||n+|D](}|r5j|gq&tfdd|DrGj|q&j d|dq&t|trZ ||dS)NF indent_levelrc3s|]}|VqdSr ) _scalar_type).0elr rr sz.TableFormatter._build_table..)titlecurrentT) rD new_sectionr listdict_build_sub_table_from_listrLadd_rowallrH_build_sub_table_from_dict)rrPrQrKitemrr rrHs     zTableFormatter._build_tablecs|\}}t|dkr|j|d|dgn|r1|j||jfdd|D|D]}|j|||ddq3dS)Nrcsg|]}|qSrr)rMkrQrr sz=TableFormatter._build_sub_table_from_dict..rJ)_group_scalar_keyslenrDrVadd_row_headerrH)rrQrKheadersmore remainingrr\rrXs   z)TableFormatter._build_sub_table_from_dictcs||\}}|j|d}|D]8|s%|r%|jj||d|j|d}|jfdd|D|D]}|vrH|j|||ddq6qdS)NTrJFcsg|]}|dqS))get)rMheaderelementrrr]sz=TableFormatter._build_sub_table_from_list..rZ)_group_scalar_keys_from_listrDr`rRrVrH)rrQrKrPrarbfirstrcrrgrrUs&   z)TableFormatter._build_sub_table_from_listcCst|ttf Sr )r rSrT)rrhrrrrLszTableFormatter._scalar_typecCsXt}t}|D]}||\}}||||qtt|}tt|}||fSr )setr^updaterSsorted)r list_of_dictsrarbrYcurrent_headers current_morerrrris    z+TableFormatter._group_scalar_keys_from_listcCsNg}g}|D]}|||r||q||q||||fSr )rLappendsort)rrQrbrarhrrrr^s  z!TableFormatter._group_scalar_keysr )r) r&r'r(__doc__rr-rHrXrUrLrir^ __classcell__rrrFrr:ds r:c@seZdZdddZddZdS) TextFormatterNc Cs|dur|}z[t|rI|j}t|D]%\}}|dkri}n|j}|D]}||} t||j| q$|||q|j rH|dd|j ii|n| ||||W| |dSW| |dS| |w)Nr NextToken) r!r result_keys enumeratenon_aggregate_partr,r expressionr- resume_tokenrr%) rr.r r$rwipagerQ result_keydatarrrr0s8   zTextFormatter.__call__cCs.|jjdur|jj}||}t||dSr )rr+r,r format_text)rr r$rzrrrr-s  zTextFormatter._format_responser )r&r'r(r0r-rrrrrus  "rucCs<|dkrt|S|dkrt|S|dkrt|Std|)NrrrDzUnknown output type: %s)r1rur:rE) format_typerrrr get_formatter s r)loggingbotocore.compatrbotocore.utilsrbotocore.paginater awscli.tablerrrawsclirr awscli.utilsr getLoggerr&rrobjectrr)r1r:rurrrrrs         ~ +