+
    Dfj}A                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt  ! R R]	P                  4      t ! R	 R
]	P                  4      t ! R R]	P                  4      t ! R R]	P                  4      t ! R R]	P                  4      t ! R R]	P                  4      t ! R R]	P                  4      t ! R R]	P                  4      t ! R R]	P.                  4      tR# )z
HTTP errors.
)annotationsN)nativeString)unittest)error)Tagc                  >    ] tR t^tRtR R ltR R ltR R ltRtR	# )
CodeToMessageTestsz4
L{_codeToMessages} inverts L{_responses.RESPONSES}
c                   V ^8  d   QhRR/#    returnNone )formats   "=/usr/lib/python3/dist-packages/twisted/web/test/test_error.py__annotate__CodeToMessageTests.__annotate__   s     & & &    c                	V    \         P                  ! R 4      pV P                  VR4       R# )   302s   FoundNr   _codeToMessageassertEqualselfms   & r   test_validCode!CodeToMessageTests.test_validCode   s"      (H%r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r      s     " "$ "r   c                	V    \         P                  ! R 4      pV P                  VR4       R# )s   987Nr   r   s   & r   test_invalidCode#CodeToMessageTests.test_invalidCode   s"      (D!r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   !   s     " "T "r   c                	V    \         P                  ! R 4      pV P                  VR4       R# )s   InvalidCodeNr   r   s   & r   test_nonintegerCode&CodeToMessageTests.test_nonintegerCode!   s"      0D!r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r    r$   __static_attributes__r   r   r   r   r      s    &"" "r   r   c                  V    ] tR t^&tRtR R ltR R ltR R ltR R	 ltR
 R lt	Rt
R# )
ErrorTestsz4
Tests for how L{Error} attributes are initialized.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   ErrorTests.__annotate__+   s     + +4 +r   c                    \         P                  ! R4      pV P                  VP                  R4       V P                  \	        V4      R4       R# )z
If no C{message} argument is passed to the L{Error} constructor and the
C{code} argument is a valid HTTP status code, C{message} is set to the
HTTP reason phrase for C{code}.
   200   OK200 OKNr   Errorr   messagestrr   es   & r   test_noMessageValidStatus$ErrorTests.test_noMessageValidStatus+   s:     KKE*Q*r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r/   5   s     ( ( (r   c                    \         P                  ! R4      pV P                  VP                  R4       V P                  \	        V4      R4       R# )z
If no C{message} argument is passed to the L{Error} constructor and
C{code} isn't a known HTTP status code, C{message} stays L{None}.
   999N999r4   r8   s   & r   test_noMessageForStatus"ErrorTests.test_noMessageForStatus5   s:    
 KKD)Q'r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r/   >   s     * *D *r   c                    V P                  \        4      ;_uu_ 4        \        P                  ! R4       RRR4       R#   + '       g   i     R# ; i)zn
If C{code} isn't plausibly an HTTP status code (i.e., composed of
digits) it is rejected with L{ValueError}.
s   InvalidStatusN)assertRaises
ValueErrorr   r5   r   s   &r   test_invalidStatusErrorTests.test_invalidStatus>   s1    
 z**KK() +***s	   ?A	c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r/   F   s     7 7D 7r   c                    \         P                  ! RR4      pV P                  VP                  R4       V P                  \	        V4      R4       R# )zz
If a C{message} argument is passed to the L{Error} constructor, the
C{message} isn't affected by the value of C{status}.
r1      My own messagez200 My own messageNr4   r8   s   & r   test_messageExistsErrorTests.test_messageExistsF   s?    
 KK 12$56Q!56r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r/   O   s     + +$ +r   c                    \         P                  ! RR4      pV P                  \        V4      R4       \         P                  ! ^R4      pV P                  \        V4      R4       R# )zP
C{str()} on an L{Error} returns the code and message it was
instantiated with.
r1   r2   r3   N)r   r5   r   r7   r8   s   & r   test_strErrorTests.test_strO   sN     KK&Q* KKU#Q*r   r   N)r&   r'   r(   r)   r*   r:   r@   rG   rL   rP   r+   r   r   r   r-   r-   &   s%    +(*7+ +r   r-   c                  V    ] tR t^]tRtR R ltR R ltR R ltR R	 ltR
 R lt	Rt
R# )PageRedirectTestsz;
Tests for how L{PageRedirect} attributes are initialized.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   PageRedirectTests.__annotate__b   s     3 34 3r   c                n    \         P                  ! RRR7      pV P                  VP                  R4       R# )z
If no C{message} argument is passed to the L{PageRedirect} constructor
and the C{code} argument is a valid HTTP status code, C{code} is mapped
to a descriptive string to which C{message} is assigned.
r1      /foolocation
   OK to /fooNr   PageRedirectr   r6   r8   s   & r   r:   +PageRedirectTests.test_noMessageValidStatusb   s*     v8M2r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   rU   k   s     + +T +r   c                j    \         P                  ! R4      pV P                  VP                  R4       R# )a  
If no C{message} argument is passed to the L{PageRedirect} constructor
and C{location} is also empty and the C{code} argument is a valid HTTP
status code, C{code} is mapped to a descriptive string to which
C{message} is assigned without trying to include an empty location.
r1   r2   Nr[   r8   s   & r   #test_noMessageValidStatusNoLocation5PageRedirectTests.test_noMessageValidStatusNoLocationk   s(     v&E*r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   rU   u   s     * *4 *r   c                n    \         P                  ! RRR7      pV P                  VP                  R4       R# )z
If no C{message} argument is passed to the L{PageRedirect} constructor
and C{code} isn't a valid HTTP status code, C{message} stays L{None}.
r>   rW   rX   Nr[   r8   s   & r   )test_noMessageInvalidStatusLocationExists;PageRedirectTests.test_noMessageInvalidStatusLocationExistsu   s*    
 v8D)r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   rU   }        ? ?$ ?r   c                p    \         P                  ! RRRR7      pV P                  VP                  R4       R# )z
If a C{message} argument is passed to the L{PageRedirect} constructor,
the C{message} isn't affected by the value of C{status}.
r1   rK   rW   rX      My own message to /fooNr[   r8   s   & r    test_messageExistsLocationExists2PageRedirectTests.test_messageExistsLocationExists}   s.    
 v'87K$=>r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   rU           7 7d 7r   c                l    \         P                  ! RR4      pV P                  VP                  R4       R# )z
If a C{message} argument is passed to the L{PageRedirect} constructor
and no location is provided, C{message} doesn't try to include the
empty location.
r1   rK   Nr[   r8   s   & r   test_messageExistsNoLocation.PageRedirectTests.test_messageExistsNoLocation   s,     v'89$56r   r   Nr&   r'   r(   r)   r*   r:   r`   rd   rj   ro   r+   r   r   r   rS   rS   ]   s%    3+*?7 7r   rS   c                  V    ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	Rt
R# )InfiniteRedirectionTestszB
Tests for how L{InfiniteRedirection} attributes are initialized.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   %InfiniteRedirectionTests.__annotate__   s     3 34 3r   c                n    \         P                  ! RRR7      pV P                  VP                  R4       R# )z
If no C{message} argument is passed to the L{InfiniteRedirection}
constructor and the C{code} argument is a valid HTTP status code,
C{code} is mapped to a descriptive string to which C{message} is
assigned.
r1   rW   rX   rZ   Nr   InfiniteRedirectionr   r6   r8   s   & r   r:   2InfiniteRedirectionTests.test_noMessageValidStatus   s*     %%fw?M2r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   ru      s     	+ 	+T 	+r   c                j    \         P                  ! R4      pV P                  VP                  R4       R# )a  
If no C{message} argument is passed to the L{InfiniteRedirection}
constructor and C{location} is also empty and the C{code} argument is a
valid HTTP status code, C{code} is mapped to a descriptive string to
which C{message} is assigned without trying to include an empty
location.
r1   r2   Nrw   r8   s   & r   r`   <InfiniteRedirectionTests.test_noMessageValidStatusNoLocation   s(     %%f-E*r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   ru      s     ( (4 (r   c                    \         P                  ! RRR7      pV P                  VP                  R4       V P                  \	        V4      R4       R# )z
If no C{message} argument is passed to the L{InfiniteRedirection}
constructor and C{code} isn't a valid HTTP status code, C{message} stays
L{None}.
r>   rW   rX   Nr?   )r   rx   r   r6   r7   r8   s   & r   rd   BInfiniteRedirectionTests.test_noMessageInvalidStatusLocationExists   s>     %%fw?D)Q'r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   ru      rg   r   c                p    \         P                  ! RRRR7      pV P                  VP                  R4       R# )z
If a C{message} argument is passed to the L{InfiniteRedirection}
constructor, the C{message} isn't affected by the value of C{status}.
r1   rK   rW   rX   ri   Nrw   r8   s   & r   rj   9InfiniteRedirectionTests.test_messageExistsLocationExists   s.    
 %%f.?'R$=>r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   ru      rm   r   c                l    \         P                  ! RR4      pV P                  VP                  R4       R# )z
If a C{message} argument is passed to the L{InfiniteRedirection}
constructor and no location is provided, C{message} doesn't try to
include the empty location.
r1   rK   Nrw   r8   s   & r   ro   5InfiniteRedirectionTests.test_messageExistsNoLocation   s,     %%f.?@$56r   r   Nrq   r   r   r   rs   rs      s%    3	+(?7 7r   rs   c                  &    ] tR t^tRtR R ltRtR# )RedirectWithNoLocationTestsze
L{RedirectWithNoLocation} is a subclass of L{Error} which sets
a custom message in the constructor.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   (RedirectWithNoLocationTests.__annotate__   s     8 84 8r   c                    \         P                  ! RRR4      pV P                  VP                  R4       V P                  VP                  R4       R# )z
When C{code}, C{message}, and C{uri} are passed to the
L{RedirectWithNoLocation} constructor, the C{message} and C{uri}
attributes are set, respectively.
r   s   REDIRECTs   https://example.coms   REDIRECT to https://example.comN)r   RedirectWithNoLocationr   r6   urir8   s   & r   test_validMessage-RedirectWithNoLocationTests.test_validMessage   sC     ((>TU$FG 67r   r   N)r&   r'   r(   r)   r*   r   r+   r   r   r   r   r      s    
8 8r   r   c                  2    ] tR t^tRtR R ltR R ltRtR# )MissingRenderMethodTestszP
Tests for how L{MissingRenderMethod} exceptions are initialized and
displayed.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   %MissingRenderMethodTests.__annotate__   s     	3 	3$ 	3r   c                    \        4       p\        P                  ! VR4      pV P                  VP                  V4       V P                  VP
                  R4       R# )z
Given C{element} and C{renderName} arguments, the
L{MissingRenderMethod} constructor assigns the values to the
corresponding attributes.
renderThingN)objectr   MissingRenderMethodassertIselement
renderNamer   eltr9   s   &  r   test_constructor)MissingRenderMethodTests.test_constructor   sA     h%%c=9aii%allM2r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r      s     
 
4 
r   c                    \        4       p\        P                  ! VR4      pV P                  \	        V4      RV,          4       R# )z|
A L{MissingRenderMethod} is represented using a custom string
containing the element's representation and the method name.
r   zB'MissingRenderMethod': %r had no render method named 'renderThing'N)r   r   r   r   reprr   s   &  r   	test_repr"MissingRenderMethodTests.test_repr   s=    
 h%%c=9GT	
r   r   Nr&   r'   r(   r)   r*   r   r   r+   r   r   r   r   r      s    
	3
 
r   r   c                  2    ] tR t^tRtR R ltR R ltRtR# )MissingTemplateLoaderTestszR
Tests for how L{MissingTemplateLoader} exceptions are initialized and
displayed.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   'MissingTemplateLoaderTests.__annotate__   s     & &$ &r   c                ~    \        4       p\        P                  ! V4      pV P                  VP                  V4       R# )zz
Given an C{element} argument, the L{MissingTemplateLoader} constructor
assigns the value to the corresponding attribute.
N)r   r   MissingTemplateLoaderr   r   r   s   &  r   r   +MissingTemplateLoaderTests.test_constructor   s-    
 h'',aii%r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     U U4 Ur   c                    \        4       p\        P                  ! V4      pV P                  \	        V4      RV,          4       R# )z~
A L{MissingTemplateLoader} is represented using a custom string
containing the element's representation and the method name.
z)'MissingTemplateLoader': %r had no loaderN)r   r   r   r   r   r   s   &  r   r   $MissingTemplateLoaderTests.test_repr  s6    
 h'',a"MPS"STr   r   Nr   r   r   r   r   r      s    
&U Ur   r   c                      ] tR tRtRt. 3R R lltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR!tR"# )#FlattenerErrorTestsi  z
Tests for L{FlattenerError}.
c                    V ^8  d   QhRRRR/# )r   rootszlist[object]r   zerror.FlattenerErrorr   )r   s   "r   r    FlattenerErrorTests.__annotate__  s     6 6 6>R 6r   c                	     \        R 4      h  \         dR   p\        P                  ! \        P
                  ! 4       ^,          4      p\        P                  ! Y!T4      u Rp?# Rp?ii ; i)oh noesN)RuntimeError	Exception	traceback
extract_tbsysexc_infor   FlattenerError)r   r   r9   tbs   &&  r   makeFlattenerError&FlattenerErrorTests.makeFlattenerError  sP    	6y)) 	6%%cllnQ&78B''"55	6s    A)AA$A)$A)c                    V ^8  d   QhRRRR/# )r   objr   r   r7   r   )r   s   "r   r   r     s      & S r   c                	    R V,          # )zR(%s)r   )r   r   s   &&r   fakeFormatRoot"FlattenerErrorTests.fakeFormatRoot  s    }r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     / /$ /r   c                j    V P                  RR.R7      pV P                  VP                  RR.4       R# )z
Given C{exception}, C{roots}, and C{traceback} arguments, the
L{FlattenerError} constructor assigns the roots to the C{_roots}
attribute.
ab)r   N)r   r   _rootsr8   s   & r   r   $FlattenerErrorTests.test_constructor  s3     ##3*#5C:.r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   &  s     * *$ *r   c                n    V P                  4       pV P                  \        V4      \        V4      4       R# )zL
The string form of a L{FlattenerError} is identical to its
representation.
N)r   r   r7   r   r8   s   & r   rP   FlattenerErrorTests.test_str&  s*    
 ##%Qa)r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   .  s     
 
D 
r   c                   V P                  RR.4      pV P                  Vn        V P                  \        P
                  ! R\        V4      \        P                  \        P                  ,          4      \        V4      4       R# )z
The representation of a L{FlattenerError} initialized with roots and a
traceback contains a formatted representation of those roots (using
C{_formatRoot}) and a formatted traceback.
r   r   zException while flattening:
  R\(a\)
  R\(b\)
  File "[^"]*", line [0-9]*, in makeFlattenerError
    raise RuntimeError\("oh noes"\)
RuntimeError: oh noes
$N)	r   r   _formatRoot
assertTruerematchr   MSr8   s   & r   "test_reprWithRootsAndWithTraceback6FlattenerErrorTests.test_reprWithRootsAndWithTraceback.  sc     ##S#J/++HH+ Qrtt	 G	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   D  s     
 
t 
r   c                    V P                  . 4      pV P                  \        P                  ! R\	        V4      \        P
                  \        P                  ,          4      \	        V4      4       R# )
The representation of a L{FlattenerError} initialized without roots but
with a traceback contains a formatted traceback but no roots.
zException while flattening:
  File "[^"]*", line [0-9]*, in makeFlattenerError
    raise RuntimeError\("oh noes"\)
RuntimeError: oh noes
$N)r   r   r   r   r   r   r   r8   s   & r   %test_reprWithoutRootsAndWithTraceback9FlattenerErrorTests.test_reprWithoutRootsAndWithTracebackD  sR    
 ##B'HH+ Qrtt G
	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   V  s     
 
$ 
r   c                   \         P                  ! \        R4      . R4      pV P                  \        P
                  ! R\        V4      \        P                  \        P                  ,          4      \        V4      4       R# )r   r   Nz3Exception while flattening:
RuntimeError: oh noes
$)	r   r   r   r   r   r   r   r   r   r8   s   & r   (test_reprWithoutRootsAndWithoutTraceback<FlattenerErrorTests.test_reprWithoutRootsAndWithoutTracebackV  sW    
   i!8"dCHHJQrtt
 G	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   e  s     L L4 Lr   c                    V P                  4       pV P                  VP                  \        R4      4      \	        R4      4       R# )zS
The C{_formatRoot} method formats a short unicode string using the
built-in repr.
abcdN)r   r   r   r   r   r8   s   & r   !test_formatRootShortUnicodeString5FlattenerErrorTests.test_formatRootShortUnicodeStringe  s4    
 ##%|F';<d6lKr   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   m  s     

 

$ 

r   c                    V P                  4       p\        R4      pV P                  VP                  V4      \	        R4      4       R# )zc
The C{_formatRoot} method formats a long unicode string using the
built-in repr with an ellipsis.
z-abcde-abcde-abcde-ab<...>e-abcde-abcde-abcde-Nzxabcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-)r   r   r   r   r   r   r9   
longStrings   &  r    test_formatRootLongUnicodeString4FlattenerErrorTests.test_formatRootLongUnicodeStringm  s?    
 ##%!-0
MM*%@A	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r   y  s     @ @ @r   c                z    V P                  4       pV P                  VP                  R4      \        R4      4       R# )zP
The C{_formatRoot} method formats a short byte string using the
built-in repr.
s   abcdNr   r   r   r   r8   s   & r   test_formatRootShortByteString2FlattenerErrorTests.test_formatRootShortByteStringy  s/    
 ##%w/g?r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     

 

t 

r   c                ~    V P                  4       pRpV P                  VP                  V4      \        R4      4       R# )z`
The C{_formatRoot} method formats a long byte string using the
built-in repr with an ellipsis.
s-   abcde-abcde-abcde-ab<...>e-abcde-abcde-abcde-Nsx   abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-abcde-r   r   s   &  r   test_formatRootLongByteString1FlattenerErrorTests.test_formatRootLongByteString  s:    
 ##%#
MM*%AB	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     E Ed Er   c                z    V P                  4       pV P                  VP                  \        R4      4      R4       R# )z]
The C{_formatRoot} method formats a C{Tag} with no filename information
as 'Tag <tagName>'.
a-tagzTag <a-tag>N)r   r   r   r   r8   s   & r   test_formatRootTagNoFilename0FlattenerErrorTests.test_formatRootTagNoFilename  s/    
 ##%s7|4mDr   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     	
 	
 	
r   c                    V P                  4       p\        RR^
^R7      pV P                  VP                  V4      R4       R# )z|
The C{_formatRoot} method formats a C{Tag} with filename information
using the filename, line, column, and tag information
r   ztpl.py)filename
lineNumbercolumnNumberz-File "tpl.py", line 10, column 20, in "a-tag"N)r   r   r   r   )r   r9   ts   &  r   test_formatRootTagWithFilename2FlattenerErrorTests.test_formatRootTagWithFilename  s?    
 ##%(rKMM!M	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     
 
T 
r   c           	         V P                  \        \        P                  ! \	        R4      R.. 4      4      R4       V P                  \        \        P                  ! \	        R4      R.. 4      4      R4       R# )z
If a L{FlattenerError} is created with a string root, up to around 40
bytes from that string are included in the string representation of the
exception.
reason	abc123xyzz?Exception while flattening:
  'abc123xyz'
RuntimeError: reason
zcException while flattening:
  '01234567890123456789<...>01234567890123456789'
RuntimeError: reason
Nd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789r   r7   r   r   r   rF   s   &r   test_stringFlattenerErrorTests.test_string  si     	$$\(%;k]BOPV	
 	$$\(%;>O=PRTUV%	
r   c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   r     s     
 
d 
r   c           	         V P                  \        \        P                  ! \	        R4      R.. 4      4      R4       V P                  \        \        P                  ! \	        R4      R.. 4      4      R4       R# )z
If a L{FlattenerError} is created with a unicode root, up to around 40
characters from that string are included in the string representation
of the exception.
r  u	   abc☃xyzzBException while flattening:
  'abc\u2603xyz'
RuntimeError: reason
zwException while flattening:
  '01234567\u2603901234567\u26039<...>01234567\u2603901234567\u26039'
RuntimeError: reason
Nux   01234567☃901234567☃901234567☃901234567☃901234567☃901234567☃901234567☃901234567☃901234567☃901234567☃9r  rF   s   &r   test_unicode FlattenerErrorTests.test_unicode  sv     	$$\(%;>Q=RTVW%		
 	$$ *-H,I2
%	
r   r   N)r&   r'   r(   r)   r*   r   r   r   rP   r   r   r   r   r   r   r   r   r   r  r  r+   r   r   r   r   r     s_     8: 6/*
,
$
L

@

E	

$
 
r   r   c                  &    ] tR tRtRtR R ltRtR# )UnsupportedMethodTestsi  z!
Tests for L{UnsupportedMethod}.
c                   V ^8  d   QhRR/# r
   r   )r   s   "r   r   #UnsupportedMethodTests.__annotate__  s     

 

$ 

r   c                l    \         P                  ! RR.4      pV P                  \        V4      R4       R# )z
The C{__str__} for L{UnsupportedMethod} makes it clear that what it
shows is a list of the supported methods, not the method that was
unsupported.
s   HEADs   PATCHz#Expected one of [b'HEAD', b'PATCH']N)r   UnsupportedMethodr   r7   r8   s   & r   rP   UnsupportedMethodTests.test_str  s1     ##Wh$78F1	
r   r   N)r&   r'   r(   r)   r*   rP   r+   r   r   r   r  r    s    

 

r   r  )r*   
__future__r   r   r   r   twisted.python.compatr   twisted.trialr   twisted.webr   twisted.web.templater   TestCaser   r-   rS   rs   r   r   r   r   SynchronousTestCaser  r   r   r   <module>r     s    # 	 
  . "  $"** "$4+"" 4+n/7)) /7d37x00 37l8("3"3 8"
x00 
>U!2!2 U2}
(++ }
@
X99 
r   