ó
ÎrOc           @   sK  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z y d  d l	 m
 Z
 Wn  e k
 r† e e e f Z n Xe e e e
 f Z d e j f d „  ƒ  YZ e j d ƒ Z e j e ƒ  ƒ d „  Z e d	 „ Z d d
 „ Z d „  Z d d „ Z e d „ Z d „  Z y e Wn e k
 r@d „  Z n Xe Z d S(   iÿÿÿÿ(   t   version_infoN(   t
   ExpatError(   t   Decimalt   NullHandlerc           B   s   e  Z d  „  Z RS(   c         C   s   d  S(   N(    (   t   selft   record(    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   emit   s    (   t   __name__t
   __module__R   (    (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyR      s   t   geopyc         c   s?   x8 t  d t |  ƒ d ƒ D] } |  | |  | d f Vq Wd  S(   Ni    i   (   t   ranget   len(   t   seqt   i(    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   pairwise   s     c         C   s2   |  j  g  | D] } | | ƒ r t | ƒ ^ q ƒ S(   N(   t   joint   unicode(   t   sepR   t   predR   (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   join_filter   s    c         C   s„   t  d k  r' |  j j d ƒ p! d  } n |  j j d ƒ p< d  } | rI | S| r€ y t j j j | ƒ j	 SWq€ t
 k
 r| q€ Xn  d  S(   Ni   i    t   charset(   i   i    (   R    t   headerst   getparamt   Nonet	   get_paramt   xmlt   domt   minidomt   parseStringt   encodingR   (   t   paget   contentsR   (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   get_encoding   s    c         C   sZ   |  j  ƒ  } t |  | ƒ p d } t d k  rF t | d | ƒj d ƒ St | d | ƒSd  S(   Ns
   iso-8859-1i   i    R   s   utf-8(   i   i    (   t   readR    R    R   t   encodet   str(   R   R   R   (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   decode_page,   s
    c         C   sv   t  | t ƒ r | g } n  |  rr xN | rn |  j | j d ƒ ƒ } | r$ | d j } | oj | j j | ƒ Sq$ Wn  d  S(   Ni    (   t
   isinstancet
   basestringt   getElementsByTagNamet   popt
   firstChildt	   nodeValuet   strip(   t   nodet	   tag_namesR+   t   nodest   child(    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   get_first_text6   s    	c         C   sJ   |  j  g  | D] } | | ƒ r+ t | ƒ ^ q ƒ Sd d  l } d d  l } (   Niÿÿÿÿ(   R   R   t   ret   htmlentitydefs(   R   R   R   R   R1   R2   (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyR   @   s    2c         C   s   d „  } t  j d | |  ƒ S(   sX   
    Removes HTML or XML character references and entities from a text string.
    
    c         S   s±   |  j  d ƒ } | d  d k r{ yE | d  d k rL t t | d d !d ƒ ƒ St t | d d !ƒ ƒ SWq­ t k
 rw q­ Xn2 y t t j | d d !ƒ } Wn t k
 r¬ n X| S(	   Ni    i   s   &#i   s   &#xiÿÿÿÿi   i   (   t   groupt   unichrt   intt
   ValueErrorR2   t   name2codepointt   KeyError(   t   mt   text(    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   fixupJ   s    s   &#?\w+;(   R1   t   sub(   R:   R;   (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   unescapeE   s    	c         c   s6   t  |  ƒ } x# | d k r1 | d 8} |  | Vq Wd  S(   Ni    i   (   R   (   R   R   (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   reverseda   s    
(   t   sysR    R1   t   loggingR2   t   xml.dom.minidomR   t   xml.parsers.expatR   t   decimalR   t   ImportErrorR5   t   longt   floatt   NUMBER_TYPESt   HandlerR   t	   getLoggert   loggert
   addHandlerR   t   boolR   R   R    R$   R0   R=   R>   t	   NameError(    (    (    s)   /var/www/python/geopy-trunk/geopy/util.pyt   <module>   s2   		

	