ó
h€
\c           @   s¯   d  d l  Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l	 m
 Z
 d  d l m Z d e j f d „  ƒ  YZ d d d	 „ Z d d d
 „ Z d „  Z d „  Z d S(   iÿÿÿÿN(   t
   fromstring(   t   etree(   t   urljoint   urlparse(   t   XMLSyntaxError(   t   Settingst   ImportResolverc           B   s    e  Z d  Z d „  Z d „  Z RS(   s/   Custom lxml resolve to use the transport objectc         C   s   | |  _  d  S(   N(   t	   transport(   t   selfR   (    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyt   __init__   s    c         C   s;   t  | ƒ j d k r7 |  j j | ƒ } |  j | | ƒ Sd  S(   Nt   httpt   https(   R
   R   (   R   t   schemeR   t   loadt   resolve_string(   R   t   urlt   pubidt   contextt   content(    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyt   resolve   s    (   t   __name__t
   __module__t   __doc__R	   R   (    (    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyR      s   	c         C   s¸   | p t  ƒ  } | j } t j d t d t d | d | j ƒ } | j j t	 | ƒ ƒ y, t
 |  d | d | d | j d | j ƒSWn/ t j k
 r³ } t d	 | j d
 |  ƒ‚ n Xd S(   s  Parse an XML string and return the root Element.

    :param content: The XML string
    :type content: str
    :param transport: The transport instance to load imported documents
    :type transport: zeep.transports.Transport
    :param base_url: The base url of the document, used to make relative
      lookups absolute.
    :type base_url: str
    :param settings: A zeep.settings.Settings object containing parse settings.
    :type settings: zeep.settings.Settings
    :returns: The document root
    :rtype: lxml.etree._Element

    t   remove_commentst   resolve_entitiest   recovert	   huge_treet   parsert   base_urlt
   forbid_dtdt   forbid_entitiess!   Invalid XML content received (%s)R   N(   R   t   strictR   t	   XMLParsert   Truet   Falset   xml_huge_treet	   resolverst   addR   R    R   R   R   t   msg(   R   R   R   t   settingsR   R   t   exc(    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyt	   parse_xml   s"    
		c         C   sj   | p t  ƒ  } t |  d ƒ r- |  j ƒ  } n' | rE t |  | ƒ }  n  | j |  ƒ } t | | | d | ƒS(   sÛ   Load an external XML document.

    :param url:
    :param transport:
    :param base_url:
    :param settings: A zeep.settings.Settings object containing parse settings.
    :type settings: zeep.settings.Settings

    t   readR'   (   R   t   hasattrR*   t   absolute_locationR   R)   (   R   R   R   R'   R   (    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyt   load_external:   s    
c         C   sœ   |  | k r |  St  |  ƒ j d k r) |  S| rQ t  | ƒ j d k rQ t | |  ƒ St j j |  ƒ rg |  S| r˜ t j j t j j t j j | ƒ |  ƒ ƒ S|  S(   sí   Make an url absolute (if it is optional) via the passed base url.

    :param location: The (relative) url
    :type location: str
    :param base: The base location
    :type base: str
    :returns: An absolute URL
    :rtype: str

    R
   R   t   file(   s   https   httpss   file(   s   https   httpss   file(	   R   R   R   t   ost   patht   isabst   realpatht   joint   dirname(   t   locationt   base(    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyR,   O   s    	"c         C   s*   t  |  ƒ j d k r t St j j |  ƒ S(   sà   Check if the given value is a relative path

    :param value: The value
    :type value: str
    :returns: Boolean indicating if the url is relative. If it is absolute then
      False is returned.
    :rtype: boolean

    R
   R   R.   (   s   https   httpss   file(   R   R   R"   R/   R0   R1   (   t   value(    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyt   is_relative_pathk   s    
(   t   os.pathR/   t   defusedxml.lxmlR    t   lxmlR   t   six.moves.urllib.parseR   R   t   zeep.exceptionsR   t   zeep.settingsR   t   ResolverR   t   NoneR)   R-   R,   R8   (    (    (    s@   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/loader.pyt   <module>   s   $	