Ñò
ÐA&Lc        
   @   sß   d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d  d k l Z l	 Z	 e i
 i e ƒ Z e i ƒ  d „  Z d „  Z d „  Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   ParseException(   t   RequestParsert   ResponseParserc         C   s  h |  d 6} t  i  |  ƒ } | i p d  | d <| i i d d ƒ d p d  | d <| i p d | d <| i o- | i o# d	 i | i | i g ƒ | d
 <nE | i o | i | d
 <n* | i o d	 | i | d
 <n d  | d
 <| i	 p d  | d <| i
 p d  | d <| S(   Nt   rawt   schemet   :i   i    t   hostiP   t   portt   ;t   patht   queryt   fragment(   t   urlparseR   t   Nonet   netloct   rsplitR   R	   t   paramst   joinR
   R   (   t   datat   rett   parts(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   uri   s    $#


c         C   s.   t  ƒ  i ƒ  } t | d <t |  | ƒ | d S(   NR   t   request(   t   globalst   copyR   t   execfile(   t   fnamet   config(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   load_request_py&   s    
c         C   s.   t  ƒ  i ƒ  } t | d <t |  | ƒ | d S(   NR   t   response(   R   R   R   R   (   R   R   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   load_response_py,   s    
R   c           B   s¡   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sÈ   | |  _  t i i | ƒ |  _ | |  _ t |  i t ƒ p |  i g |  _ n t |  i  ƒ i	 i
 ƒ  } z | ~ } | i ƒ  |  _ Wd  QX|  i i d d ƒ i d d ƒ |  _ |  i i d d ƒ |  _ d  S(   Ns   
t    s   \r\ns   
s   \0t    (   R   t   osR	   t   basenamet   namet   expectt
   isinstancet   listt   opent   __exit__t	   __enter__t   readR   t   replace(   t   selfR   R$   t   _[1]t   handle(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   __init__3   s    		&$c         c   s   |  i  Vd  S(   N(   R   (   R,   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   send_allE   s    c         c   sq   |  i  } | i d ƒ } x< | d j o. | | d  V| | d } | i d ƒ } q Wt | ƒ o	 | Vn d  S(   Ns   
i    i   (   R   t   findt   len(   R,   t   linest   pos(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt
   send_linesH   s    	 c         c   s   x |  i  D] } | Vq
 Wd  S(   N(   R   (   R,   t   d(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt
   send_bytesR   s    
 c         c   sj   t  |  i ƒ d } d } xJ | t  |  i ƒ j  o3 t i d | ƒ } |  i | | | !V| | 7} q Wd  S(   Ni
   i    i   (   R2   R   t   randomt   randint(   R,   t   maxsR*   t   chunk(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   send_randomV   s     c         C   s   d S(   Niÿÿÿÿ(    (   R,   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   size_alla   s    c         C   s   d S(   Ni   (    (   R,   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt
   size_bytesd   s    c         C   s   t  i d d ƒ S(   Ni    i   (   R8   R9   (   R,   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   size_small_randomg   s    c         C   s   t  i d d ƒ S(   Ni   i   (   R8   R9   (   R,   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   size_randomj   s    c         C   sS   | ƒ  } | | ƒ } | d j o- t  | ƒ | j o t d | | f ƒ ‚ n | S(   Ni    s   Read more than %d bytes: %s(   R2   t   AssertionError(   R,   t   funct   sizest   szR   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   szreadq   s
    	 c         C   s>  |  i  | i i | ƒ } d } x§ t | ƒ o™ | t | ƒ  | j o$ t d | | t | ƒ  f ƒ ‚ n | t | ƒ } |  i  | i i | ƒ } | p | d 8} n | d j o t d ƒ ‚ q! q! Wt | ƒ o t d | ƒ ‚ n" t | ƒ o t d | ƒ ‚ n | i i | ƒ  ƒ } | o t d | ƒ ‚ n d  S(	   Niè  s    Invalid body data read: %r != %ri   i    s   Unexpected apparent EOFs   Failed to read entire body: %rs   Read beyond expected body: %rs   Read after body finished: %r(   RE   t   bodyR*   R2   RA   (   R,   t   reqRF   RC   R   t   count(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt
   match_readx   s(     c         C   sS  |  i  | i i | ƒ } d } x¼ t | ƒ o® | t | ƒ  | j o t d | ƒ ‚ n d | d  j o t d | ƒ ‚ n | t | ƒ } |  i  | i i | ƒ } | p | d 8} n | d j o t d ƒ ‚ q! q! Wt | ƒ o t d	 | ƒ ‚ n" t | ƒ o t d
 | ƒ ‚ n | i i | ƒ  ƒ } | o t d | ƒ ‚ n d  S(   Niè  s   Invalid data read: %rs   
iÿÿÿÿs   Embedded new line: %ri   i    s   Apparent unexpected EOFs   Failed to read entire body: %rs   Read beyond expected body: %rs!   Read data after body finished: %r(   RE   RF   t   readlineR2   RA   (   R,   RG   RF   RC   R   RH   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   match_readlineŽ   s*     c      	   C   så   | i  i ƒ  } x~ | D]v } d | d  j o t d | ƒ ‚ n | | t | ƒ  j o$ t d | | t | ƒ  f ƒ ‚ n | t | ƒ } q Wt | ƒ o t d | ƒ ‚ n | i  i | ƒ  ƒ } | o t d | ƒ ‚ n d S(   sF           This skips the sizes checks as we don't implement it.
        s   
iÿÿÿÿs   Embedded new line: %rs    Invalid body data read: %r != %rs   Failed to read entire body: %rs!   Read data after body finished: %rN(   RF   t	   readlinesRA   R2   (   R,   RG   RF   RC   R   t   line(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   match_readlines¤   s     c      	   C   sè   x | i  D]v } d | d  j o t d | ƒ ‚ n | | t | ƒ  j o$ t d | | t | ƒ  f ƒ ‚ n | t | ƒ } q
 Wt | ƒ o t d | ƒ ‚ n y) t | i  ƒ i ƒ  } t d | ƒ ‚ Wn t j
 o n Xd S(   sO           This skips sizes because there's its not part of the iter api.
        s   
iÿÿÿÿs   Embedded new line: %rs    Invalid body data read: %r != %rs   Failed to read entire body: %rs!   Read data after body finished: %rN(   RF   RA   R2   t   itert   nextt   StopIteration(   R,   RG   RF   RC   RM   R   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt
   match_iter¶   s    
 c            s  ‡  f d †  } | d ƒ } | d ƒ } | d ƒ } g  } | D]0 } | D]# } | D] } | | | | f qR qH q> ~ }	 g  }
 xˆ |	 D]€ \ } } } | i  d } | i  d } | i  d } ‡  f d †  } d ˆ  i | | | f } | | _ |
 i | | | | f ƒ q„ W|
 S(	   Nc            sB   g  } t  i ˆ  ƒ D]' \ } } | i |  ƒ o | | q q ~ S(   N(   t   inspectt
   getmemberst
   startswith(   t   pR-   t   kt   v(   R,   (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   get_funsÍ   s    t   send_t   size_t   match_i   i   c            s   ˆ  i  |  | | ƒ d  S(   N(   t   check(   t   snRD   t   mt(   R,   (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   test_reqÞ   s    s   %s: MT: %s SZ: %s SN: %s(   t	   func_nameR#   t   descriptiont   append(   R,   RY   t   senderst   sizerst   matchersR-   R_   RD   R^   t   cfgsR   t   mtnt   sznt   snnR`   t   desc(    (   R,   s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt	   gen_casesÌ   s&    

) 	c         C   sc   |  i  } t | ƒ  ƒ } x- | D]% } |  i | | | | i d ƒ ƒ q  Wt i t | ƒ d ƒ d  S(   Ni    (   R$   R   t   samet   popt   tt   eqR2   (   R,   t   sendert   sizert   matchert   casesRV   RG   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR]   å   s    
 #c         C   s9  t  i | i | d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i	 | d d	 ƒ t  i | i
 | d
 ƒ t  i | i | d ƒ | | | d | ƒ t  i | i | i d g  ƒ ƒ d  S(   Nt   methodR   R   R   R   R   R	   R
   R   t   versiont   headersRF   t   trailers(   Ro   Rp   Ru   R   R   R   R   R	   R
   R   Rv   Rw   Rx   t   get(   R,   RG   Rr   Rs   t   exp(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyRm   ì   s    (   t   __name__t
   __module__R/   R0   R5   R7   R<   R=   R>   R?   R@   RE   RI   RK   RN   RR   Rl   R]   Rm   (    (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR   2   s"   			
													t
   badrequestc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sÈ   | |  _  t i i | ƒ |  _ | |  _ t |  i t ƒ p |  i g |  _ n t |  i  ƒ i	 i
 ƒ  } z | ~ } | i ƒ  |  _ Wd  QX|  i i d d ƒ i d d ƒ |  _ |  i i d d ƒ |  _ d  S(   Ns   
R   s   \r\ns   
s   \0R    (   R   R!   R	   R"   R#   R$   R%   R&   R'   R(   R)   R*   R   R+   (   R,   R   R$   R-   R.   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR/   û   s    		&$c         c   sj   t  |  i ƒ d } d } xJ | t  |  i ƒ j  o3 t i d | ƒ } |  i | | | !V| | 7} q Wd  S(   Ni
   i    i   (   R2   R   R8   R9   (   R,   R:   R*   R;   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   send  s     c         C   s   t  i d d ƒ S(   Ni    i   (   R8   R9   (   R,   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   size  s    c         C   s>  | i  i |  i ƒ  ƒ } d } x§ t | ƒ o™ | t | ƒ  | j o$ t d | | t | ƒ  f ƒ ‚ n | t | ƒ } | i  i |  i ƒ  ƒ } | p | d 8} n | d j o t d ƒ ‚ q! q! Wt | ƒ o t d | ƒ ‚ n" t | ƒ o t d | ƒ ‚ n | i  i t ƒ  ƒ } | o t d | ƒ ‚ n d  S(	   Niè  s    Invalid body data read: %r != %ri   i    s   Unexpected apparent EOFs   Failed to read entire body: %rs   Read beyond expected body: %rs   Read after body finished: %r(   RF   R*   R   R2   RA   RC   (   R,   RG   RF   R   RH   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   match  s(     c         C   s9  t  i | i | d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i | d d ƒ t  i | i	 | d d	 ƒ t  i | i
 | d
 ƒ t  i | i | d ƒ |  i | | d ƒ t  i | i | i d g  ƒ ƒ d  S(   NRu   R   R   R   R   R   R	   R
   R   Rv   Rw   RF   Rx   (   Ro   Rp   Ru   R   R   R   R   R	   R
   R   Rv   Rw   R€   Rx   Ry   (   R,   RG   Rr   Rs   Rz   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyRm   )  s    c      	   C   sÙ   |  i  } t |  i ƒ  ƒ } y. x' | D] } |  i | | i d ƒ ƒ q& WWnr t j
 of } | i d ƒ } t | t ƒ p t d | ƒ ‚ n t | | ƒ p t d | | f ƒ ‚ q¿ n Xt	 i
 t | ƒ d ƒ d  S(   Ni    s'   Test case is not an exception calss: %ss   Invalid error result: %s: %s(   R$   R   R~   Rm   Rn   t	   Exceptiont
   issubclasst	   TypeErrorR%   Ro   Rp   R2   (   R,   Rt   RV   RG   t   instRz   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR]   7  s    
 !(   R{   R|   R/   R~   R   R€   Rm   R]   (    (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR}   ú   s   					R   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   sc   |  i  } t | ƒ  ƒ } x- | D]% } |  i | | | | i d ƒ ƒ q  Wt i t | ƒ d ƒ d  S(   Ni    (   R$   R   Rm   Rn   Ro   Rp   R2   (   R,   Rq   Rr   Rs   Rt   RV   t   resp(    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR]   G  s    
 #c         C   s|   t  i | i | d ƒ t  i | i | d ƒ t  i | i | d ƒ | | | d | ƒ t  i | i | i d g  ƒ ƒ d  S(   Nt   statusRv   Rw   RF   Rx   (   Ro   Rp   R†   Rv   Rw   Rx   Ry   (   R,   R…   Rr   Rs   Rz   (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyRm   N  s
    (   R{   R|   R]   Rm   (    (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyR   E  s   	(   Ro   RS   R!   R8   R   t   restkit.errorsR    t   restkit.http.parserR   R   R	   t   dirnamet   __file__t   seedR   R   R   t   objectR   R}   R   (    (    (    s<   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/treq.pyt   <module>   s   
			ÈK