Zճc9dZdZdZgZdZdZddlZgdZdZ d Z e d kr(ddl Z Gd d e j Ze jdSdS) zConverts an IRI to a URI.z!Joe Gregorio (joe@bitworking.org)zCopyright 2006, Joe Gregorioz1.0.0MITN))i)ii)ii)ii)ii)ii)ii)ii)ii)ii)ii)ii)i i )i i )i i )i i )i i )ii)ii)iic|}t|}tD]M\}}||krnA||kr:||kr4dd|dD}nN|S)Ncg|]}d|zS)z%%%2X).0os 2/usr/lib/python3/dist-packages/httplib2/iri2uri.py zencode..7sEEEagkEEEutf-8)ord escape_rangejoinencode)cretvalilowhighs r rr0s{ F AA! T s77 E 88T WWEE188G3D3DEEEFFF E Mr cPt|trtj|\}}}}}|dd}tj|||||f}dd|D}|S)zConvert an IRI to a URI. Note that IRIs must be passed in a unicode strings. That is, do not utf-8 encode the IRI before passing it into the function.idnarrc,g|]}t|Sr)r)r rs r r ziri2uri..Gs...Qvayy...r ) isinstancestrurllibparseurlsplitrdecode urlunsplitr)urischeme authoritypathqueryfragments r iri2urir(<s#s05;\5J5J35O5O2D%$$V,,33G<< l%%vy$x&PQQgg..#...// Jr __main__ceZdZdZdZdS)Testc^gd}|D]%}||t|&dS)z6Test that URIs are invariant under the transformation.)z"ftp://ftp.is.co.za/rfc/rfc1808.txtz#http://www.ietf.org/rfc/rfc2396.txtz)ldap://[2001:db8::7]/c=GB?objectClass?onezmailto:John.Doe@example.comz&news:comp.infosystems.www.servers.unixztel:+1-816-555-1212ztelnet://192.0.2.16:80/z3urn:oasis:names:specification:docbook:dtd:xml:4.1.2N) assertEqualr()self invariantr"s r test_uriszTest.test_urisOsM   I! 4 4  gcll3333 4 4r c0|dtd|dtd|dtd|dtd|d td |d ttd |d td d d S) zFTest that the right type of escaping is done for each part of the URI.zhttp://xn--o3h.com/%E2%98%84uhttp://☄.com/☄z%http://bitworking.org/?fred=%E2%98%84uhttp://bitworking.org/?fred=☄z http://bitworking.org/#%E2%98%84uhttp://bitworking.org/#☄z #%E2%98%84u#☄z/fred?bar=%E2%98%9A#%E2%98%84u/fred?bar=☚#☄rN)r-r(assertNotEqualr)r.s r test_iriz Test.test_iri^s8   .899      7?@@      2:;;      \7<+@+@ A A A   /KLL      / STTUU      /GNNwWW     r N)__name__ __module__ __qualname__r0r3rr r r+r+Ns2 4 4 4     r r+)__doc__ __author__ __copyright____contributors__ __version__ __license__ urllib.parserrrr(r4unittestTestCaser+mainrr r rAs 0 .    0       zOOO,,,,,x ,,,\HMOOOOOcr