B
    Ø‹d]  ã               @   s8   d Z ddlZedd„ edƒD ƒƒZddd„Zd	d
„ ZdS )až  
Useful tools for manipulating pieces of the URL according to the various RFCs.

Original implementation is from the following repo:

   https://github.com/rbaier/python-urltools

and used here with the MIT License, as posted here:

   https://github.com/rbaier/python-urltools/blob/master/LICENSE

Copyright is Roderick Baier, 2014.
The implementations are from git SHA-1 76bf599aeb4cb463df8e38367aa40a7d8ec7d9a1
é    Nc             c   s   | ]}d | t |ƒfV  qdS )z%02xN)Úchr)Ú.0Úi© r   ú_/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/scitokens/urltools.pyú	<genexpr>   s    r   é   Ú c             C   s¶   | s| dkrt dƒ‚n| S d| kr&| S |  d¡}|d g}xp|dd… D ]`}t |dd… ¡}|rš||kršt|ƒdkrŽ| ||dd…  ¡ q¨| |¡ qH| d| ¡ qHW d |¡S )zUnquote a text but ignore the exceptions.
    >>> unquote('foo%23bar')
    'foo#bar'
    >>> unquote('foo%23bar', ['#'])
    'foo%23bar'
    NzNone object cannot be unquotedú%r   é   é   r	   )Ú	TypeErrorÚsplitÚ	_HEXTOCHRÚgetÚlenÚappendÚjoin)ÚtextÚ
exceptionsZsplit_sÚresZhexcharÚcharr   r   r   Úunquote   s     


r   c             C   sZ   | dkrdS t  t| dd¡}| d dkr:|dkr:|d7 }x| d¡rT|dd… }q<W |S )	zRNormalize path: collapse etc.
    >>> normalize_path('/a/b///c')
    '/a/b/c'
    )z//ú/r	   r   z/?+#)r   éÿÿÿÿz//r   N)Ú	posixpathÚnormpathr   Ú
startswith)ÚpathÚnpathr   r   r   Únormalize_path3   s    r    )r	   )Ú__doc__r   ÚdictÚranger   r   r    r   r   r   r   Ú<module>   s   
