�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%sz1AbstractFormatter.push_margin..r%rY)r1rar new_marginlen)rrfstackrrr rs   zAbstractFormatter.push_margincCsF|jr|jd=dd|jD}|r,|d}nd}|jj|t|dS)Nr%cSsg|] }|r|qSrr)rhrMrrr ri sz0AbstractFormatter.pop_margin..rYrY)r1rrjrk)rrlrrrr r s zAbstractFormatter.pop_margincCs||_|jj|dS)N)r!r new_spacing)rr!rrr r"szAbstractFormatter.set_spacingcGsZ|jr*d|_|_|_d|_|jjdx|D]}|jj|q0W|jjt |jdS)Nrr%rX) r4r7r5r3rr]r2ra new_stylestuple)rr#Zstylerrr r$s  zAbstractFormatter.push_styler%cCs$|j| d=|jjt|jdS)N)r2rrnro)rr&rrr r'!szAbstractFormatter.pop_stylecCs$| |_|_d|_|_|_dS)Nr)r3r7r5r6r8)rr(rrr r)%sz"AbstractFormatter.assert_line_data)N)r%)r%)r*r+r,r-r r r rrr?rBrCrrrrrrrrr r"r$r'r)rrrr r.@s,        r.c@sxeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdS)raMinimal writer interface to use in testing & inheritance. A writer which only provides the interface definition; no actions are taken on any methods. This should be the base class for all writers which do not need to inherit any implementation methods. cCsdS)Nr)rrrr r 2szNullWriter.__init__cCsdS)Nr)rrrr flush3szNullWriter.flushcCsdS)Nr)rrrrr r`4szNullWriter.new_alignmentcCsdS)Nr)rrdrrr rc5szNullWriter.new_fontcCsdS)Nr)rrlevelrrr rj6szNullWriter.new_margincCsdS)Nr)rr!rrr rm7szNullWriter.new_spacingcCsdS)Nr)rr#rrr rn8szNullWriter.new_stylescCsdS)Nr)rr rrr r:9szNullWriter.send_paragraphcCsdS)Nr)rrrr r9:szNullWriter.send_line_breakcOsdS)Nr)rrrrrr r;;szNullWriter.send_hor_rulecCsdS)Nr)rrrrr r><szNullWriter.send_label_datacCsdS)Nr)rrrrr r]=szNullWriter.send_flowing_datacCsdS)Nr)rrrrr r_>szNullWriter.send_literal_dataN)r*r+r,r-r rpr`rcrjrmrnr:r9r;r>r]r_rrrr r*src@sheZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZdS)AbstractWriterzA writer which can be used in debugging formatters, but not much else. Each method simply announces itself by printing its name and arguments on standard output. cCstd|fdS)Nznew_alignment(%r))print)rrrrr r`IszAbstractWriter.new_alignmentcCstd|fdS)Nz new_font(%r))rs)rrdrrr rcLszAbstractWriter.new_fontcCstd||fdS)Nznew_margin(%r, %d))rs)rrrqrrr rjOszAbstractWriter.new_margincCstd|fdS)Nznew_spacing(%r))rs)rr!rrr rmRszAbstractWriter.new_spacingcCstd|fdS)Nznew_styles(%r))rs)rr#rrr rnUszAbstractWriter.new_stylescCstd|fdS)Nzsend_paragraph(%r))rs)rr rrr r:XszAbstractWriter.send_paragraphcCs tddS)Nzsend_line_break())rs)rrrr r9[szAbstractWriter.send_line_breakcOs tddS)Nzsend_hor_rule())rs)rrrrrr r;^szAbstractWriter.send_hor_rulecCstd|fdS)Nzsend_label_data(%r))rs)rrrrr r>aszAbstractWriter.send_label_datacCstd|fdS)Nzsend_flowing_data(%r))rs)rrrrr r]dsz AbstractWriter.send_flowing_datacCstd|fdS)Nzsend_literal_data(%r))rs)rrrrr r_gsz AbstractWriter.send_literal_dataN)r*r+r,r-r`rcrjrmrnr:r9r;r>r]r_rrrr rrAsrrc@sJeZdZdZdddZddZdd Zd d Zd d ZddZ ddZ dS) DumbWritera;Simple writer class which writes output on the file object passed in as the file parameter or, if file is omitted, on standard output. The output is simply word-wrapped to the number of columns specified by the maxcol parameter. This class is suitable for reflowing a sequence of paragraphs. NHcCs(|ptj|_||_tj||jdS)N)sysstdoutfilemaxcolrr reset)rrxryrrr r ts  zDumbWriter.__init__cCsd|_d|_dS)Nr)colatbreak)rrrr rzzszDumbWriter.resetcCs |jjd|d|_d|_dS)Nr^r)rxwriter{r|)rr rrr r:~szDumbWriter.send_paragraphcCs|jjdd|_d|_dS)Nr^r)rxr}r{r|)rrrr r9s zDumbWriter.send_line_breakcOs:|jjd|jjd|j|jjdd|_d|_dS)Nr^-r)rxr}ryr{r|)rrrrrr r;s   zDumbWriter.send_hor_rulecCsV|jj||jd}|dkr4d|_||dd}|j}|jt||_d|_dS)Nr^rr%)rxr}rfindr{ expandtabsrkr|)rrrLrrr r_s  zDumbWriter.send_literal_datacCs|sdS|jp|dj}|j}|j}|jj}xZ|jD]N}|rn|t||kr^|dd}n|d|d}|||t|}d}q8W||_|dj|_dS)Nrr^rXr%rY)r|rZr{ryrxr}r\rk)rrr|r{ryr}Zwordrrr r]s$ zDumbWriter.send_flowing_data)Nru) r*r+r,r-r rzr:r9r;r_r]rrrr rtks  rtc Cst}t|}|dk r t|}n$tjddr>ttjd}ntj}z0x*|D]"}|dkrd|jdqL|j|qLWWd|tjk r|jX|jddS)Nr%r^r) rtr.openrvargvstdinr rclose)rxwffplinerrr tests     r__main__)N) r-rvwarningswarnDeprecationWarningrbrr.rrrrtrr*rrrr s"k*C