'URL parser and manipulator based on the WHAT WG URL standard'
Project description
This is ada_url, a Python library for working with URLs based on the Ada URL parser.
Installation
Install from PyPI:
pip install ada_url
Usage examples
Parsing URLs
The URL class is intended to match the one described in the WHATWG URL spec:.
>>> from ada_url import URL
>>> urlobj = URL('https://example.org/path/../file.txt')
>>> urlobj.href
'https://example.org/path/file.txt'
The parse_url function returns a dictionary of all URL elements:
>>> from ada_url import parse_url
>>> parse_url('https://user:pass@example.org:80/api?q=1#2')
{
'href': 'https://user:pass@example.org:80/api?q=1#2',
'username': 'user',
'password': 'pass',
'protocol': 'https:',
'port': '80',
'hostname': 'example.org',
'host': 'example.org:80',
'pathname': '/api',
'search': '?q=1',
'hash': '#2',
'origin': 'https://example.org:80',
'host_type': <HostType.DEFAULT: 0>,
'scheme_type': <SchemeType.HTTPS: 2>
}
Altering URLs
Replacing URL components with the URL class:
>>> from ada_url import URL
>>> urlobj = URL('https://example.org/path/../file.txt')
>>> urlobj.host = 'example.com'
>>> urlobj.href
'https://example.com/path/file.txt'
Replacing URL components with the replace_url function:
>>> from ada_url import replace_url >>> replace_url('https://example.org/path/../file.txt', host='example.com') 'https://example.com/file.txt'
Search parameters
The URLSearchParams class is intended to match the one described in the WHATWG URL spec.
>>> from ada_url import URLSearchParams
>>> obj = URLSearchParams('key1=value1&key2=value2')
>>> list(obj.items())
[('key1', 'value1'), ('key2', 'value2')]
The parse_search_params function returns a dictionary of search keys mapped to value lists:
>>> from ada_url import parse_search_params
>>> parse_search_params('key1=value1&key2=value2')
{'key1': ['value1'], 'key2': ['value2']}
Internationalized domain names
The idna class can encode and decode IDNs:
>>> from ada_url import idna
>>> idna.encode('Bücher.example')
b'xn--bcher-kva.example'
>>> idna.decode(b'xn--bcher-kva.example')
'bücher.example'
WHATWG URL compliance
This library is compliant with the WHATWG URL spec. This means, among other things, that it properly encodes IDNs and resolves paths:
>>> from ada_url import URL
>>> parsed_url = URL('https://www.GOoglé.com/./path/../path2/')
>>> parsed_url.hostname
'www.xn--googl-fsa.com'
>>> parsed_url.pathname
'/path2/'
Contrast that with the Python standard library’s urlib.parse module:
>>> from urllib.parse import urlparse
>>> parsed_url = urlparse()
>>> parsed_url.hostname
'www.googlé.com'
>>> parsed_url.path
'/./path/../path2/'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for ada_url-1.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e215d0e896be87fa8b8959c54a775fd9fc677f48e23cfa8b19d33f76e2cf8898 |
|
MD5 | 7f67c7ccf82ae22d65234fac70bf35ba |
|
BLAKE2b-256 | de5cabc1afbf89f1a74875debb2b8f7298d55e2d0babd6e81a3e112d14509e57 |
Hashes for ada_url-1.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f496d6d8fbd0db72e994b523d4153130a0c4a82b87d8fce6171371f5fa11907 |
|
MD5 | 9e6960ff6698e7608e1588d77a4ca6eb |
|
BLAKE2b-256 | d1ed48f36109deaf653c9df93206f6acf34022fa336870c54d6aa6609153ccfb |
Hashes for ada_url-1.7.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 134ded0193a2f3fbcf4c63d8910daf3dc0e8ba856463aa3e2cff654cd7e1cc28 |
|
MD5 | 5665745937abe88e1385caac857293b8 |
|
BLAKE2b-256 | d556851331311cd1d77a8a986dbbf2fd6748f5e9133c84c9b362984747f12266 |
Hashes for ada_url-1.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4ab68d6495ee55353eb83f247889fa941db849a94c8b9b6f1b9f9979217de07 |
|
MD5 | c7d77add8ce355081318a3ee853e523d |
|
BLAKE2b-256 | 11bbac1e96bfaa29727bc54bda804e74ccfa9301c22472c5235821ba9a930c18 |
Hashes for ada_url-1.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7f0b6ea2ff9d5adafece88754ad3d2bf8671876e94eb2954a75ed6c50bd2148 |
|
MD5 | 041523f1a57caa39ec7878eb306dc9ab |
|
BLAKE2b-256 | 5b37904a22e97363ad96236d0a80f86ab4e9881a9966f12d508cb9d1294c5020 |
Hashes for ada_url-1.7.0-pp38-pypy38_pp73-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cc5cd75932733b424a62a06be046f3822a0f9f7ee187445b68efecd4a50bc83 |
|
MD5 | 378bd9641f36284446ef244cd875c6b9 |
|
BLAKE2b-256 | 2288c22fc87d577deff0886496804f3db768bf880b1d09b7a463db2ffafb3dd5 |
Hashes for ada_url-1.7.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9825a6fd549f88eb17d9e7a7ec6a91f488901558bfd451552715cfbdfb7bd28 |
|
MD5 | 2540f10df6532dfad8d97dee91c7be93 |
|
BLAKE2b-256 | ed08d76e7ca439978bd01d77cb04cdf54be84fe01f41b2898ba9d1dab98dba35 |
Hashes for ada_url-1.7.0-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5550090477c1d9a6ec0870d5da69bbffe31aef85e160095942a05d11080ecf87 |
|
MD5 | 3b30b7afcc2a026e0deb9cca3b5d7b48 |
|
BLAKE2b-256 | b7224c8a6463d784c5be0a15e6b1376a20c4ab6a49441940949c7993bcfbd923 |
Hashes for ada_url-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 517e3552db1f7d6fb63538ad9e20ce556df5c4b9780f6060ec785ae73c732ad3 |
|
MD5 | b2d8de4bbb6346154043b32212d58293 |
|
BLAKE2b-256 | fccc1143dd25c6126e7c52a0997be12b599abe37f9ac148172907c379e68ac40 |
Hashes for ada_url-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2db9cc3cd37b5e42df644dae30cd8d96ad982cb3865883367dd994b302f184e2 |
|
MD5 | b0987a81537d6fb17be1092676388e3e |
|
BLAKE2b-256 | 31c68869681e8c6e7338637437f8d1b70b51e25d3246396d0ddaaeb3e127e437 |
Hashes for ada_url-1.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9bf7c2a3527db9060572f50a6594918298cd49af29ce3f06c69baa7ee5598ac |
|
MD5 | f116db67f00121b5a16e186dcefe14d7 |
|
BLAKE2b-256 | 953626e7c2eb1da8f32d36d86fd9cdf3529f141eaee0e0ec11907269786be81d |
Hashes for ada_url-1.7.0-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95e24199a2bdce6deaead2fca8883cf973e8b45aad9aac90abbae69d85e4f6a5 |
|
MD5 | 1b0bd97d87a0da8de6a91c69b29d99dc |
|
BLAKE2b-256 | 51c722c6ac49f036e062bedb4c020945ba4a8cf34d120f34b59fe0d04b8aaf7d |
Hashes for ada_url-1.7.0-cp312-cp312-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fc6a9eee6ef2f2fc929501328c81da09caddb51a993b3299784519dbbf5fc29 |
|
MD5 | 26ae65478fecfe6474f319906e850c77 |
|
BLAKE2b-256 | cca4eb0be35cd522479cbb775f4fc1d6abacbc7d860943ebafa6d348ca52192e |
Hashes for ada_url-1.7.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53fc09b6613c7df0b68a59e5fc8ab3c41ef99fa1325e4f4725ab0d4e08449228 |
|
MD5 | f07dd602a29ef5a4d08ffc3f7217b422 |
|
BLAKE2b-256 | 7628f86f8c61b91234a30f0aef8ed3eca5594a074bb112656987446794a49cf6 |
Hashes for ada_url-1.7.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c2e99a136728e97e0247ab97162aaf42be365a250773f809afbc33b4eab3a0b |
|
MD5 | 6300e10b17d74b79add4d15c9f84338b |
|
BLAKE2b-256 | 96a19e70c373a6ea835a343adbbf5e50f9fbe752b798a64c91508abccd3126f0 |
Hashes for ada_url-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 502e77a7ebdf09c402718e3b0c5c8be0129c09699f4bef2cee4e74fa38442b73 |
|
MD5 | 8e290db03fdddb8db68e67d969eb1b7c |
|
BLAKE2b-256 | 7053c051267a94c539b14b76593a20204517a102ba8034b296d4607297c305bb |
Hashes for ada_url-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff217a59d3241c60f62337e74e7bb8db3c1ab273a0b8737b67307b479b2ff442 |
|
MD5 | c7ee3f08ec5470793025a54cb744c127 |
|
BLAKE2b-256 | 72ca0bd20b2f852827b340d838780af45696a98497b9003a4ae433f0db967f2c |
Hashes for ada_url-1.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c96a63a91312ad24024dd9784739e996b189b786880ea963d2707b1fd9681356 |
|
MD5 | 6eed911a06fa7dad122e32b81bfc8f39 |
|
BLAKE2b-256 | f2fe13308a7c2e6a5e97ca423d8c866a84befe03993caf109db4ae124848eba8 |
Hashes for ada_url-1.7.0-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fd3037c4625e6e8dd49b5b74e1b71105ffd1e2f65cd655c39e2f43be3308556 |
|
MD5 | beed401263e2ab7423560ba712f80af3 |
|
BLAKE2b-256 | 0b680f0c45538fd762ea42f2ebbec87053bfa268dbae672e79884e640987c283 |
Hashes for ada_url-1.7.0-cp311-cp311-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf2a25e70e56cb50a3a298d84db865c46ffcc5058ec074bbaa893baa037e387b |
|
MD5 | 81e17015e582d025981fbcc8bc03f622 |
|
BLAKE2b-256 | c2407658ebb69ac99f8f3ca1d055888b87146e009ee289a2ec3edba892d0fa4a |
Hashes for ada_url-1.7.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7513d39cac3e28e251ea303940e30d9fc8cf171c7d684c9304eb8c902f588b1f |
|
MD5 | 9535849f5e21834aa8f7393c71cf528f |
|
BLAKE2b-256 | e5e058a2c8b6856f32186e7944bc032fdb951e972d4ccc737dee5aaf35153373 |
Hashes for ada_url-1.7.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 655dbbd55696328b7345182bfee4cdb4d0a66f3c400bc1a6f91f8d789099da75 |
|
MD5 | 58bcd00d91c1796714670b0756a14280 |
|
BLAKE2b-256 | 7d0d5b0973bc5573d0e492ed36bacb2e8363d86c376361201c7a0174d5a81ccf |
Hashes for ada_url-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84cb1650b5d4e5857bcb2bb1d43c5b67a008d04d6ba83ac9594656f6dae067df |
|
MD5 | 7a38a2f9d8f0a8b2d2f2f18a1b916a6b |
|
BLAKE2b-256 | 9b136dad4d312b0d1bbf5bb48d10ac6891949865be9ad8bfd0eef3528118d13f |
Hashes for ada_url-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 666c69b9df51cad99f17e1a342c49ef2173e0cf2bfadbfb354db9f9e703d6665 |
|
MD5 | c4c162b673370478f67edf2ab1649f98 |
|
BLAKE2b-256 | d3f97ae690c42c2f3cd8b1ac966ebfaed19432c12948ee404c18ddce08a757d9 |
Hashes for ada_url-1.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a0474c644c990917781bead3ae0a5bd489fdd611cd172ed2523d2eb7ce2b300 |
|
MD5 | 20132a0b8d962fd6fb1fcee26ff65f9d |
|
BLAKE2b-256 | f09810091f62b9e9bc1e36185145ca8a88ba87ac20ccb8ff40dcadb01e478972 |
Hashes for ada_url-1.7.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0d300eae791d5259a87a037d361726d8006aa50453f01906ecef3c17b96de1f |
|
MD5 | e6da5b921f808f1fad5015c94f15f2e8 |
|
BLAKE2b-256 | a02eaa6e2215ad565575d56e1fdcb3bbcd127f84f54454c7105f03335d02c4a7 |
Hashes for ada_url-1.7.0-cp310-cp310-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ffb8832332ab6321333a9ff5c72f037e25927f5275205f80ad379a02ff538b4 |
|
MD5 | fef189adee3fcfa7e222e9f852b53330 |
|
BLAKE2b-256 | 7658ab850b896b6ac980f0c443a2c52b297995ac7244a81ff2d90c5d30e634c3 |
Hashes for ada_url-1.7.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92444e449a4df62ffd32c7ddb1319e79b24efff1d646bb803fafe6c51f1d8b06 |
|
MD5 | ea695df4e78230997570077c9910f159 |
|
BLAKE2b-256 | eed0d387e1a76b46372008c1b74952f8985f3d7613ed800f953fcfbcdd37a804 |
Hashes for ada_url-1.7.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f12ed90d15822092b17448932f51a23bad22f22bc9fbbbaf09cf24f1493705f |
|
MD5 | e43d5fe5fb4425a97ded8f3ee1976053 |
|
BLAKE2b-256 | 2d2b0b23029393d72c590c93404655511a2c2047a234db6c1b1ab942a302f1fc |
Hashes for ada_url-1.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d2d7f4310d1a02e50a82fae6f7e986f428444dd4157bc0286d66200ee7c33e3 |
|
MD5 | 02cf56d22765ba6e97a09235f5b1a134 |
|
BLAKE2b-256 | f42ea26755907dc6f43c9c1e928cc6ef3eb46be17eed667569163a07dc22eaf5 |
Hashes for ada_url-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 841a959acc6ddd9646d57d1fc3c5569aa829a07c58ad02b693aaf2425deffac2 |
|
MD5 | 6791ca2a610a41956c2e2c58d45f8b32 |
|
BLAKE2b-256 | 1a6a7baa2ac596cb0390b810c6fb4a8f16eea712b11c99a64c9c0a02e05a93d3 |
Hashes for ada_url-1.7.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6f9088510715f1695b0a822a08d445c6069f4247ce92a9e12c1ad446b9b9f1b |
|
MD5 | 606f5430ed1e5741dcadd863d2f024e6 |
|
BLAKE2b-256 | 96d5113b0ebf8e0d36d32291bf5f2fb7d2e5382a29954d78a620b8bc0f2e174b |
Hashes for ada_url-1.7.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | efcdc29c40f7a63b718e784e1a71ce95959d6a28c27f1b07f7345e217db480c1 |
|
MD5 | 8cd4fb129c754f9f88552f5db8de1158 |
|
BLAKE2b-256 | ff24a3dd892cebbd55cd306b2afc1a3ef2753605bec404334b504c1df14ef37c |
Hashes for ada_url-1.7.0-cp39-cp39-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34d5b18f1884d8d2988fa03a718465caae66d2c329c3f666f1c799de57421646 |
|
MD5 | b90bd28f979697a6bf929dd78169cd8e |
|
BLAKE2b-256 | 98102f63738911b8d015aa8eeaac893a0c75a8d005db6825446ed510877f8537 |
Hashes for ada_url-1.7.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f58eac0ef14addc21504b2478ac20d4a57b9ca750a5987d24394ed6fe1dbf1ca |
|
MD5 | 01a7de68defbde79aa8447bb2197def6 |
|
BLAKE2b-256 | 6843f745b7098837cfbb9a36651bcea412a9dfc82bbab93c58ff7f54ef9e1edb |
Hashes for ada_url-1.7.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 261dbbf90263d7eccf47ec6f8f7e6ea047e87d71da328e85b4cdbeb4a992d2fc |
|
MD5 | 2471a9564c726f00dcd8ca95ad4fd681 |
|
BLAKE2b-256 | 1a537e6559663d9a6dc320a4350ad01ec6e1c1da2ce18dd91e522738811b0185 |
Hashes for ada_url-1.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd2bbaf2329d20e009684ece1226a036078158f16c268edd8949ed58591e3887 |
|
MD5 | 12561f0e5d750048c9d90342aca6d4e2 |
|
BLAKE2b-256 | 12d98eefd7ffdbc6e66fee160f83a7f7f93325eed60d1f5d270d8997276835cf |
Hashes for ada_url-1.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85124df2c063a88888acce355fdefe8d4f52aa3718434e341f2291dfde848252 |
|
MD5 | 3a95f841d05b786bd9765c2366466fa7 |
|
BLAKE2b-256 | 51f9aebf8056217f189d38e8bfb7a191898419f0c765e072a93d227aef75926e |
Hashes for ada_url-1.7.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40288d31e2052558eebda55f7311fdcd52ae15fee6dbbfe20954e4a263d28219 |
|
MD5 | 8e9710e93dd645e665472e22d1181996 |
|
BLAKE2b-256 | a7495377e1ca088e6a517b4ad9ac89fe12997f3df4c893e482b8411c366e3bbc |
Hashes for ada_url-1.7.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f475408836df5a3317d85f6da208dd0d1268c112a54daf01d826d71231b36004 |
|
MD5 | dde289515718f17d1a50f8407963de2c |
|
BLAKE2b-256 | 7ecd090586f693a8a17cd9d4ba3970315c3b8bb9a8f6c665b3f42f1cc9cd7e38 |
Hashes for ada_url-1.7.0-cp38-cp38-macosx_10_15_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d4ee77f602598d96b8872eac6ed15191bb3e477761326dd020b5cafd28f916f |
|
MD5 | 2da4294d52a4cca4d0e9fa60884d65fa |
|
BLAKE2b-256 | b9dfd21cbbaceb01b0cab3494eb96e3bbc5a167f676d72262f1ae44382e70a8c |