o
    Ʋa                  	   @   s   d Z eZg dZzddlmZ W n ey   ddlmZ Y nw ddlZddlm	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ee
e
eeeeedZeeeeeeeedZdd Zdd Zdd Zdd ZdS )zLaunchpad-specific URIs and convenience lookup functions.

The code in this module lets users say "staging" when they mean
"https://api.staging.launchpad.net/".
)lookup_service_rootlookup_web_rootweb_root_for_service_root    )urlparseN)URIzhttps://api.launchpad.net/z$https://api.qastaging.launchpad.net/z"https://api.staging.launchpad.net/zhttps://api.launchpad.test/zhttps://api.dogfood.paddev.net/zhttp://api.launchpad.test:8085/zhttps://launchpad.net/z https://qastaging.launchpad.net/zhttps://staging.launchpad.net/zhttps://launchpad.test/zhttps://dogfood.paddev.net/zhttp://launchpad.test:8085/zhttps://api.edge.launchpad.net/zhttps://edge.launchpad.net/)
productionedge	qastagingstagingdogfooddevtest_devc                 C   sX   | dkr
t dt | |v r||  S t| \}}}}}}|dkr&|dkr&| S td|  )z3Dereference what might a URL or an alias for a URL.r   zCLaunchpad edge server no longer exists. Using 'production' instead. z:%s is not a valid URL or an alias for any Launchpad server)warningswarnDeprecationWarningr   
ValueError)rootaliasesschemenetlocpath
parametersqueryfragment r   3/usr/lib/python3/dist-packages/launchpadlib/uris.py_dereference_aliasO   s   r   c                 C      | t krd} t| tS )zDereference an alias to a service root.

    A recognized server alias such as "staging" gets turned into the
    appropriate URI. A URI gets returned as is. Any other string raises a
    ValueError.
    r   )EDGE_SERVICE_ROOTr   service_roots)service_rootr   r   r   r   g      
r   c                 C   r   )zDereference an alias to a website root.

    A recognized server alias such as "staging" gets turned into the
    appropriate URI. A URI gets returned as is. Any other string raises a
    ValueError.
    r   )EDGE_WEB_ROOTr   	web_roots)web_rootr   r   r   r   t   r"   r   c                 C   s8   t | } t| }d|_|jddd|_t| }|S )zeTurn a service root URL into a web root URL.

    This is done heuristically, not with a lookup.
    r   zapi.   )r   r   r   hostreplacestrensureSlash)r!   web_root_urir%   r   r   r   r      s   r   )__doc__type__metaclass____all__urllib.parser   ImportErrorr   lazr.urir   LPNET_SERVICE_ROOTQASTAGING_SERVICE_ROOTSTAGING_SERVICE_ROOTDEV_SERVICE_ROOTDOGFOOD_SERVICE_ROOTTEST_DEV_SERVICE_ROOTLPNET_WEB_ROOTQASTAGING_WEB_ROOTSTAGING_WEB_ROOTDEV_WEB_ROOTDOGFOOD_WEB_ROOTTEST_DEV_WEB_ROOTr   r#   dictr    r$   r   r   r   r   r   r   r   r   <module>   s\   