
BXQc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 m
 Z
 m Z d d l Z d d l Z d Z e j d  Z d e f d     YZ d d' d	     YZ d
 d( d     YZ d e f d     YZ e d d e d  Z d d) d     YZ d d* d     YZ d d+ d     YZ d d, d     YZ d   Z d   Z d e j  f d     YZ! d d- d     YZ" d e f d     YZ# d d. d      YZ$ d! d/ d"     YZ% d# e% f d$     YZ& d% e% f d&     YZ' d S(0   s   HTML handling.

Copyright 2003-2006 John J. Lee <jjl@pobox.com>

This code is free software; you can redistribute it and/or modify it under
the terms of the BSD or ZPL 2.1 licenses (see the file COPYING.txt
included with the distribution).

iN(   t   split_header_wordst   is_htmls   latin-1s   \s+t   CachingGeneratorFunctionc           B   s    e  Z d  Z d   Z d   Z RS(   s/   Caching wrapper around a no-arguments iterable.c         C   s   g  |  _  t |  |  _ d  S(   N(   t   _cachet   itert	   _iterator(   t   selft   iterable(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   __init__    s    	c         c   sI   |  j  } x | D] } | Vq Wx# |  j D] } | j |  | Vq) Wd  S(   N(   R   R   t   append(   R   t   cachet   item(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   __call__&   s    		(   t   __name__t
   __module__t   __doc__R   R   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR      s   	t   EncodingFinderc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   _default_encoding(   R   t   default_encoding(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   0   s    c         C   s   x | j    j d  D]k } xb t | g  d D]M \ } } | d k r0 | } y t j |  Wn t k
 ru q0 q} X| Sq0 q0 Wq W|  j S(   Ns   content-typei    t   charset(   t   infot
   getheadersR    t   codecst   lookupt   LookupErrorR   (   R   t   responset   ctt   kt   vt   encoding(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   2   s     (   R   R   R   R   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   /   s   	t   ResponseTypeFinderc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   _allow_xhtml(   R   t   allow_xhtml(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   D   s    c         C   s4   | j    j d  } | j   } t | | |  j  S(   Ns   content-type(   R   R   t   geturlt   _is_htmlR   (   R   R   R   t   ct_hdrst   url(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   F   s    (   R   R   R   R   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   C   s   	t   Argsc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   t  |  |  j d <d  S(   Nt
   dictionary(   t   dictt   __dict__(   R   t   args_map(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   Q   s    c         C   s4   y |  j  | SWn t k
 r/ t |  j |  SXd  S(   N(   R&   t   KeyErrort   getattrt	   __class__(   R   t   key(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   __getattr__T   s    c         C   s)   | d k r t     n  | |  j | <d  S(   NR&   (   t   AttributeErrorR&   (   R   R-   t   value(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   __setattr__Z   s    (   R   R   R   R.   R1   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR%   M   s   		c         C   s   t  t    S(   N(   R%   t   locals(   t   select_defaultt   form_parser_classt   request_classt   backwards_compat(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   form_parser_args`   s    t   Linkc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   sg   d  | | | g k s t  | |  _ t j | |  |  _ | | | | f \ |  _ |  _ |  _ |  _	 d  S(   N(
   t   Nonet   AssertionErrort   base_urlt   _rfc3986t   urljoint   absolute_urlR$   t   textt   tagt   attrs(   R   R;   R$   R?   R@   RA   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   j   s    	c         C   sP   y7 x0 d D]( } t  |  |  t  | |  k r
 d Sq
 WWn t k
 rK d SXd S(   NR$   R?   R@   RA   ii    (   s   urls   texts   tags   attrs(   R+   R/   (   R   t   othert   name(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   __cmp__o   s    c         C   s&   d |  j  |  j |  j |  j |  j f S(   Ns4   Link(base_url=%r, url=%r, text=%r, tag=%r, attrs=%r)(   R;   R$   R?   R@   RA   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   __repr__w   s    (   R   R   R   RD   RE   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR8   i   s   		t   LinksFactoryc           B   s,   e  Z d e d d   Z d   Z d   Z RS(   c         C   s   d d  l  } | d  k r$ | j } n  | |  _ | |  _ | d  k rg i d d 6d d 6d d 6d d 6} n  | |  _ d  |  _ d  |  _ d  S(   Nit   hreft   at   areat   srct   framet   iframe(   t   _pullparserR9   t   TolerantPullParsert   link_parser_classt
   link_classt   urltagst	   _responset	   _encoding(   R   RO   RP   RQ   RM   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   ~   s    				c         C   s   | |  _  | |  _ | |  _ d  S(   N(   RR   RS   t	   _base_url(   R   R   R;   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   set_response   s    		c         c   s  |  j  } |  j } |  j } |  j | d | } y'x | j |  j j   d g   D] } | j d k rn qS n  | j d k r t	 | j
  j d  } | d k	 rS | } qS qS n  t	 | j
  } | j } d }	 | j |  j |  }
 |
 s qS n  t j |
 |  }
 | d k r8| j d k r8| j d | f  }	 q8n  t | |
 |	 | | j
  VqS WWn% t j k
 r~} t j |   n Xd S(   s7   Return an iterator that provides links of the document.R   t   baset   endtagRG   RH   t   startendtagN(   RR   RS   RT   RO   t   tagsRQ   t   keyst   typet   dataR'   RA   t   getR9   R<   t	   clean_urlt   get_compressed_textR8   t   sgmllibt   SGMLParseErrort   _formt
   ParseError(   R   R   R   R;   t   pt   tokent	   base_hrefRA   R@   R?   R$   t   exc(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   links   s4    			&		"N(   R   R   R9   R8   R   RU   Rh   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRF   |   s
   	t   FormsFactoryc           B   s5   e  Z d  Z e d d e d  Z d   Z d   Z RS(   s  Makes a sequence of objects satisfying HTMLForm interface.

    After calling .forms(), the .global_form attribute is a form object
    containing all controls not a descendant of any FORM element.

    For constructor argument docs, see ParseResponse argument docs.
    c         C   ss   | |  _  | d  k r! t j } n  | |  _ | d  k rB t j } n  | |  _ | |  _ d  |  _	 d  |  _
 d  |  _ d  S(   N(   R3   R9   Rb   t
   FormParserR4   t   _requestt   RequestR5   R6   RR   R   t   global_form(   R   R3   R4   R5   R6   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR      s    						c         C   s   | |  _  | |  _ d  |  _ d  S(   N(   RR   R   R9   Rm   (   R   R   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRU      s    		c         C   sl   |  j  } t j |  j d |  j d |  j d |  j d | d t j d t j	 d t j
 } | d |  _ | d	 S(
   NR3   R4   R5   R   t   _urljoint	   _urlparset   _urlunparsei    i   (   R   Rb   t   ParseResponseExRR   R3   R4   R5   R<   R=   t   urlsplitt
   urlunsplitRm   (   R   R   t   forms(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRt      s    							N(   R   R   R   t   FalseR9   R   RU   Rt   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRi      s   	t   TitleFactoryc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   s   d  |  _ |  _ d  S(   N(   R9   RR   RS   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR      s    c         C   s   | |  _  | |  _ d  S(   N(   RR   RS   (   R   R   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRU      s    	c         C   sI  d d  l  } g  } d  } xy | j   } Wn | j k
 rB Pn X| j d k rh | j t |   q | j d k r t d | j | j	 | j
  } | j |  q | j d k r t | j | j
  } | j |  q | j d k r | j } | j d k r| d	 k rPn  | j t |   q q t j d
 d j |  j    S(   NiR\   t	   entityrefs   &%s;t   charreft   starttagRW   RX   t   titlet    t    (   Ry   s   endtags   startendtag(   RM   R9   t	   get_tokent   NoMoreTokensErrorR[   R	   t   strt   unescapeR\   t   _entitydefsR   t   unescape_charreft   COMPRESS_REt   subt   joint   strip(   R   t   parserRM   R?   t   tokt   tt   tag_name(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   _get_title_text   s.    	c         C   s   d d  l  } | j |  j d |  j } y: y | j d  Wn | j k
 rR d  SX|  j |  SWn% t j	 k
 r } t
 j |   n Xd  S(   NiR   Rz   (   RM   RN   RR   RS   t   get_tagR~   R9   R   R`   Ra   Rb   Rc   (   R   RM   Rd   Rg   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRz     s    (   R   R   R   RU   R   Rz   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRv      s   			c            sA   |  d  k s d |  k r |  S   f d   } t j d | |   S(   Nt   &c            s   |  j    } | d d k r0 t | d d !   S j | d d ! } | d  k	 r t |  } t |  t d  k r y | j    } Wq t k
 r | } q Xq n | } | S(   Ni   t   #i   iR|   (   t   groupR   R]   R9   t   unichrR[   t   encodet   UnicodeError(   t   matcht   entt   repl(   R   t   entities(    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   replace_entities&  s    s   &#?[A-Za-z0-9]+?;(   R9   t   reR   (   R\   R   R   R   (    (   R   R   s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   "  s    c         C   s   |  d } } | j  d  r0 | d d } } n  t t | |   } | d  k rU | Sy | j |  } Wn t k
 r d |  } n X| Sd  S(   Ni
   t   xi   i   s   &#%s;(   t
   startswithR   t   intR9   R   R   (   R\   R   RC   RV   t   ucR   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   9  s    t   MechanizeBsc           B   sn   e  Z e j Z e j d   d   f e j d  d   f g Z d e	 e	 d  Z
 d   Z d   Z d   Z RS(	   s   (<[^<>]*)/>c         C   s   |  j  d  d S(   Ni   s    />(   R   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   <lambda>L  s    s   <!\s+([^<>]*)>c         C   s   d |  j  d  d S(   Ns   <!i   t   >(   R   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   N  s    c         C   s&   | |  _  t j j |  | | |  d  S(   N(   RS   t   _beautifulsoupt   BeautifulSoupR   (   R   R   R?   t   avoidParserProblemst   initialTextIsEverything(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   Q  s    		c         C   s-   t  d | |  j |  j  } |  j |  d  S(   Ns   &#%s;(   R   R   RS   t   handle_data(   R   t   refR   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   handle_charrefW  s    c         C   s-   t  d | |  j |  j  } |  j |  d  S(   Ns   &%s;(   R   R   RS   R   (   R   R   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   handle_entityrefZ  s    c         C   sL   g  } x? | D]7 \ } } t  | |  j |  j  } | j | | f  q W| S(   N(   R   R   RS   R	   (   R   RA   t   escaped_attrsR-   t   val(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   unescape_attrs]  s
    N(   R   R   t   htmlentitydefst   name2codepointR   R   t   compilet   PARSER_MASSAGER9   t   TrueR   R   R   R   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   H  s   				t   RobustLinksFactoryc           B   s2   e  Z e Z d e d d   Z d   Z d   Z RS(   c         C   s   | d  k r t } n  | |  _ | |  _ | d  k rX i d d 6d d 6d d 6d d 6} n  | |  _ d  |  _ d  |  _ d  |  _ d  S(   NRG   RH   RI   RJ   RK   RL   (   R9   R   RO   RP   RQ   t   _bsRS   RT   (   R   RO   RP   RQ   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   h  s    						c         C   s   | |  _  | |  _ | |  _ d  S(   N(   R   RT   RS   (   R   t   soupR;   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   set_soup}  s    		c         c   s{  |  j  } |  j } |  j } xY| j   D]K} t | t j  r( | j |  j j	   d g k r( | } | j
 | j  } t |  } | j d k r | j d  } | d  k	 r( | } q( q( n  |  j | j }	 | j |	  }
 |
 s q( n  t j |
 |  }
 | j d    } | s2| j d k r)d } qVd  } n$ |  j j d d j |  j    } t | |
 | | j |  Vq( q( Wd  S(   NRV   RG   c         S   s   t  S(   N(   R   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s    RH   R|   R{   (   R   RT   RS   t   recursiveChildGeneratort
   isinstanceR   t   TagRC   RQ   RZ   R   RA   R'   R]   R9   R<   R^   t	   fetchTextt   compress_reR   R   R   R8   (   R   t   bsR;   R   t   cht   linkRA   t
   attrs_dictRf   t   url_attrR$   R?   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRh     s4    						$N(	   R   R   R   R   R9   R8   R   R   Rh   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   d  s   	t   RobustFormsFactoryc           B   s   e  Z d    Z d   Z RS(   c         O   sD   t  | |   } | j d  k r- t j | _ n  t j |  | j  d  S(   N(   R7   R4   R9   Rb   t   RobustFormParserRi   R   R&   (   R   t   argst   kwds(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s    c         C   s   | |  _  | |  _ d  S(   N(   RR   R   (   R   R   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRU     s    	(   R   R   R   RU   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s   	t   RobustTitleFactoryc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s   d  |  _ |  _ d  S(   N(   R9   R   RS   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s    c         C   s   | |  _  | |  _ d  S(   N(   R   RS   (   R   R   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s    	c         C   sj   |  j  j d  } | t j k r% d  Sd j g  | j D] } t |  ^ q5  } t j	 d | j
    Sd  S(   NRz   R|   R{   (   R   t   firstR   t   NullR9   R   t   contentsR   R   R   R   (   R   Rz   t   nodet
   inner_html(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRz     s
    +(   R   R   R   R   Rz   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s   		t   Factoryc           B   sk   e  Z d  Z d d d d g Z e e  e d e  d  Z d   Z	 d   Z
 d	   Z d
   Z d   Z RS(   s"  Factory for forms, links, etc.

    This interface may expand in future.

    Public methods:

    set_request_class(request_class)
    set_response(response)
    forms()
    links()

    Public attributes:

    Note that accessing these attributes may raise ParseError.

    encoding: string specifying the encoding of response if it contains a text
     document (this value is left unspecified for documents that do not have
     an encoding, e.g. an image file)
    is_html: true if response contains an HTML document (XHTML may be
     regarded as HTML too)
    title: page title, or None if no title or not HTML
    global_form: form object containing all controls that are not descendants
     of any FORM element, or None if the forms_factory does not support
     supplying a global form

    R   R   Rz   Rm   R    c         C   s>   | |  _  | |  _ | |  _ | |  _ | |  _ |  j d  d S(   s  

        Pass keyword arguments only.

        default_encoding: character encoding to use if encoding cannot be
         determined (or guessed) from the response.  You should turn on
         HTTP-EQUIV handling if you want the best chance of getting this right
         without resorting to this default.  The default value of this
         parameter (currently latin-1) may change in future.

        N(   t   _forms_factoryt   _links_factoryt   _title_factoryt   _encoding_findert   _response_type_finderRU   R9   (   R   t   forms_factoryt   links_factoryt   title_factoryt   encoding_findert   response_type_finder(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s    					c         C   s   | |  j  _ d S(   s   Set request class (mechanize.Request by default).

        HTMLForm instances returned by .forms() will return instances of this
        class when .click()ed.

        N(   R   R5   (   R   R5   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   set_request_class  s    c         C   s_   | |  _  d |  _ |  _ d |  _ x6 |  j D]+ } y t |  |  Wq, t k
 rV q, Xq, Wd S(   s   Set response.

        The response must either be None or implement the same interface as
        objects returned by mechanize.urlopen().

        N(   RR   R9   t   _forms_genft   _links_genft
   _get_titlet
   LAZY_ATTRSt   delattrR/   (   R   R   RC   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRU     s    		c         C   s   | |  j  k r t |  j |  S| d k rS |  j j t j |  j   |  _ |  j S| d k r |  j j t j |  j  |  j  |  _ |  j S| d k r |  j r |  j	 j
   |  _
 n	 d  |  _
 |  j
 S| d k r |  j   |  j Sd  S(   NR   R   Rz   Rm   (   R   R+   R,   R   R   t   copyRR   R   R   R   Rz   R9   Rt   Rm   (   R   RC   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR.     s$    				
c         C   sm   |  j  d k rc y t |  j j    |  _  Wn |  j |  j    n Xt |  j d d  |  _ n  |  j    S(   se   Return iterable over HTMLForm-like objects.

        Raises mechanize.ParseError on failure.
        Rm   N(	   R   R9   R   R   Rt   RU   RR   R+   Rm   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRt   #  s    c         C   sU   |  j  d k rK y t |  j j    |  _  WqK |  j |  j    qK Xn  |  j    S(   sk   Return iterable over mechanize.Link-like objects.

        Raises mechanize.ParseError on failure.
        N(   R   R9   R   R   Rh   RU   RR   (   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRh   5  s    
(   R   R   R   R   R   t   DEFAULT_ENCODINGR   Ru   R   R   RU   R.   Rt   Rh   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR     s   						t   DefaultFactoryc           B   s#   e  Z d  Z e d  Z d   Z RS(   s   Based on sgmllib.c         C   s;   t  j |  d t   d t   d t   d t d |  d  S(   NR   R   R   R   R    (   R   R   Ri   RF   Rv   R   (   R   t   i_want_broken_xhtml_support(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   E  s    			c         C   s   t  j |  |  | d  k	 r |  j j t j |  |  j  |  j j t j |  | j   |  j  |  j j t j |  |  j  n  d  S(   N(	   R   RU   R9   R   R   R   R   R!   R   (   R   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRU   O  s    			(   R   R   R   Ru   R   RU   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   C  s   
t   RobustFactoryc           B   s&   e  Z d  Z e d d  Z d   Z RS(   sa   Based on BeautifulSoup, hopefully a bit more robust to bad HTML than is
    DefaultFactory.

    c         C   sY   t  j |  d t   d t   d t   d t d |  | d  k rL t } n  | |  _ d  S(   NR   R   R   R   R    (	   R   R   R   R   R   R   R9   R   t   _soup_class(   R   R   t
   soup_class(    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   ^  s    			
	c         C   s   t  j |  |  | d  k	 r | j   } |  j |  j |  } |  j j t j |  |  j  |  j j	 | | j
   |  j  |  j j	 | |  j  n  d  S(   N(   R   RU   R9   t   readR   R   R   R   R   R   R!   R   (   R   R   R\   R   (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyRU   l  s    		N(   R   R   R   Ru   R9   R   RU   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyR   Y  s   (    (    (    (    (    (    (    (    (    ((   R   R   R   R   R   t   _sgmllib_copyR`   R   Rb   t   _headersutilR    R   R"   Rk   R<   R   R   R   t   objectR   R   R   R%   Ru   R9   R7   R8   RF   Ri   Rv   R   R   R   R   R   R   R   R   R   R   (    (    (    s4   /scratch/rashmi/Condor_Script/src/mechanize/_html.pyt   <module>	   sB   
F00		>