î
i fa ã @ s d Z d d d d g Z d Z d Z d Z d Z y d d
l m Z m Z Wn e k
rj d Z d Z Yn Xd d
„ Z
d d „ Z d d d „ Z d d d d „ Z
d d d „ Z d d d „ Z d d „ Z d d „ Z d d „ Z e d k rü e ƒ n d S)zHConversions to/from quoted-printable transport encoding as per RFC 1521.ÚencodeÚdecodeÚencodestringÚdecodestringó =éL s 0123456789ABCDEFó é )Úa2b_qpÚb2a_qpNc C s\ t | t ƒ s t ‚ | d k r% | S| d k r5 | S| t k p[ d | k oX d k n S)zìDecide whether a particular byte ordinal needs to be quoted.
The 'quotetabs' flag indicates whether embedded tabs and spaces should be
quoted. Note that line-ending tabs and spaces are always encoded, as per
RFC 1521.
s ó _ó ó ~)Ú
isinstanceÚbytesÚAssertionErrorÚESCAPE)ÚcÚ quotetabsÚheader© r ú+/opt/alt/python34/lib64/python3.4/quopri.pyÚneedsquoting s r c C sW t | t ƒ r! t | ƒ d k s' t ‚ t | ƒ } t t t | d t | d f ƒ S)zQuote a single character.é é )r r Úlenr Úordr ÚHEX)r r r r Úquote$ s 'r Fc
C s½ t d k rA | j ƒ } t | d | d | ƒ} | j | ƒ d S| d d d „ } d } x>| j ƒ } | sr Pn g } d }
| d
d … d k r | d d … } d }
n xm | D]e } t | f ƒ } t | | | ƒ rê t | ƒ } n | r| d k r| j d
ƒ q´ | j | ƒ q´ W| d k r6| | ƒ n t j | ƒ } xH t
| ƒ t k r�| | d t d … d d ƒ| t d d … } qHW| } q\ W| d k r¹| | d |
ƒn d S)av Read 'input', apply quoted-printable encoding, and write to 'output'.
'input' and 'output' are binary file objects. The 'quotetabs' flag
indicates whether embedded tabs and spaces should be quoted. Note that
line-ending tabs and spaces are always encoded, as per RFC 1521.
The 'header' flag indicates whether we are encoding spaces as _ as per RFC
1522.Nr r s
c S s‰ | rN | d d … d k rN | j | d d … t | d d … ƒ | ƒ n7 | d k rt | j t | ƒ | ƒ n | j | | ƒ d S)Nr s ó .éÿÿÿÿr r )Úwriter )ÚsÚoutputÚlineEndr r r r ; s
2zencode.