ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ >WQc@sxddlZddlZddlZddlZdZdZdZdfdYZdZe dkrtendS( iNiiit PrettyTablec BsmeZdeddddZdZdZdZdZdZ dZ dZ d d d d Z d Z ddZdZdZdddeeededZdddeeededZdedZdeedZdeedZddddeeeeedd Zddddeeeeedd ZdZdZRS(icCsg|_|r|j|ng|_g|_|j|g|_i|_i|_t|_ ||_ ||_ ||_ ||_ d|_d|_d|_dS(sReturn a new PrettyTable instance Arguments: fields - list or tuple of field names caching - boolean value to turn string caching on/off padding width - number of spaces between column lines and contentt|t-t+N(tfieldstset_field_namestwidthstalignstset_padding_widthtrowstcachet html_cachetFRAMEthrulestcachingt padding_widtht left_paddingt right_paddingt vertical_charthorizontal_chart junction_char(tselfRRRRR((slprettytable.pyt__init__+s"              cCs&tj|}|j||!|_|S(sReturn a new PrettyTable whose data rows are a slice of this one's Arguments: i - beginning slice index j - ending slice index(tcopytdeepcopyR (Rtitjtnewtable((slprettytable.pyt __getslice__Ks cCs |jS(N(t get_string(R((slprettytable.pyt__str__XscCs|jrg|D]}t|^q|_x|jD]i}x`tdt|D]I}tt|||j|krQtt|||j|Row has incorrect number of values, (actual) %d!=%d (expected)iN( R RR'R tappendR!R"RR (RR$R((slprettytable.pytadd_rows (#$RcCsIt|jdt|fkr |d kr@td|n|jj||jjt||jj|xtdt|D]}t|j|dkr|jjgn|j|j||tt|||jdkrtt|||jdt_stringify_rowtjoin(RR9R:RRCRDR R;R<tkeythruletbitst old_widthsR$RR tstring((slprettytable.pyR,sH '  #+ #   #+c Cs|s dS|j\}}||}|jg}xct|j|jD]L\}}|rl||krlqHn|j|||j|j|jqHWdj|S(NRF(RBRtzipRRR3RRM( RRRDR@RARRPR#twidth((slprettytable.pyRKfs  "c Cs+|j\}}g}|rf|tkrS|j|j|||jdn|j|jnxzt|j|jD]c\}}|r||krq|n|jd||j|d||r||j|jq|q|W|r|tkr|jd|j|j||ndj |S(Ns t RF( RBRJR3RKRRSRRtcenterRM( RRRDR R@RARPR#RT((slprettytable.pyRIts" "& c Cs|j\}}g}|r1|j|jnxt|j||j|jD]\}} } } |rz||krzqPn| dkr|jd|t| j| d|ng| dkr|jd|t| j | d|n,|jd|t| j | d||rP|j|jqPqPW|rt|t krt|jd|j|j ||ndj |S(NR%RUR&s RF(RBR3RRSRRRR"tljusttrjustRVtALLRKRM( RR$RRDROR@RARPR#tvalueRTR*((slprettytable.pyRLs$1 / /, c Cs-|j||||||||| | GHdS(sPrint HTML formatted version of table in current state to stdout. Arguments: start - index of first data row to include in output end - index of last data row to include in output PLUS ONE (list slice style) fields - names of fields (columns) to include sortby - name of field to sort rows by format - should be True or False to attempt to format alignmet, padding, etc. or not header - should be True or False to print a header showing field names or not border - should be True or False to print or not print borders hrules - include horizontal rule after each row attributes - dictionary of name/value pairs to include as HTML attributes in the tagN(tget_html_string( RR9R:RR;R<tformatRCRDR t attributes((slprettytable.pyt print_htmlsc  Cs|jrStj||||||| ||| f } | |jkrS|j| Sn|re|j} n |j} | |||||||| | } |jr| |j| tag(RRGRHR t_get_formatted_html_stringt_get_simple_html_string(RR9R:RR;R<R\RCRDR R]RNt tmp_html_funcRR((slprettytable.pyR[s -  $ c Csg} d} |r| d7} n| rQx)| D]} | d| | | f7} q,Wn| d7} | j| | jdxI|jD]>} |r| |krqn| jdtjt| qW| jd|r|jt|||}n |j}xy|jD]n}| jdxXt|j|D]D\} }|rL| |krLq(n| jdtjt|q(WqW| jd| jd d j | }|S( Nss s s s s
%s
%s
s ( R3RtcgitescapeR"R>tstardR RSRM(RR9R:RR;R<RCRDR R]RPt table_tagt attr_nameR#R R$tdatumRR((slprettytable.pyR`s8     $   (  c  Cs`g} d} |r| d7} n|tkr8| d7} n| rjx)| D]} | d| | | f7} qEWn| d7} | j| |j\} }|r | jdxR|jD]G}|r||krqn| jd| |tjt|fqW| jdn|r,|j||||}n |j}x|jD]}| jdxt |j|j |D]\}}}|r||krqkn|d kr| jd | |tjt|fqk|d kr| jd | |tjt|fqk| jd | |tjt|fqkWq?W| jd| jddj | }|S(NssW %ss R%sU %sR&sV %ssW %sss ( RJR3RBRRcRdR"R>R RSRRM(RR9R:RR;R<RCRDR R]RPRfRgR@RAR#R R$R*RhRR((slprettytable.pyR_sH       -  ( , ,1  N(t__name__t __module__R?tTrueRRRRR+RR-R.R2R4R6R>RBR tFalseRERRKRIRLR^R[R`R_(((slprettytable.pyR)s,         !!:''! $c Cs#tddddg}|jdd|jdddd g|jd d d d g|jddddg|jddddg|jddddg|jddddg|jddd d!g|GHttjd"krtjd"d#krd$GH|jd%ddgd&GH|jd'd(d)d*d+GHd,GH|jd-td.GH|jd-td/GH|jd-t d0GH|jd1t |jd1t d2t d3GH|jd2t d4GH|jd5d|jd5d|jd5dd6t d7GH|j d8|j|j d*|j|j d*|jd8|j|jd9|j|j d|jd|j d(d:GH|jd;d;d;|j|jd<d=d>|j|jd?d@dAdBGH|jd'd(d)d*d%ddgd2t d-t dCGHt}|jddd dddddg|jddd dddddDg|jddd ddddd g|jdd d ddddd!g|jdEGH|j|jd2t |jd2t |jdFt |jdGidHdI6dHdJ6ndS(KNs City nametAreat PopulationsAnnual RainfallR%tAdelaideiisgĂ@tBrisbaneii:Xg@tDarwinipiDgʚ@tHobartiMi"g\@tSydneyi i*Bg33333@t Melbourneii:g333337@tPerthi iQg33333+@ittestsTesting field subset selection:RsTesting row subset selection:R9iR:isTesting hrules settings:sFRAME:R sALL:sNONE:sTesting lack of headers:RCRDsTesting lack of borders:sTesting sorting:R;R<sTesting padding parameter:iisTesting changing characterst*t!t~toRRRsTesting everything at once:sRebuilding by columns:i s Testing HTML:R\R]ttabletnametid(RR+R4R tsystargvRER RYRJRlRkRR-R.R?R2R6R^(tx((slprettytable.pytmain&s(              . %%%%  t__main__( RcRRGR~R RYRJRRRi(((slprettytable.pyt s     I