url-normalize
URI Normalization function:
- Take care of IDN domains.
- Always provide the URI scheme in lowercase characters.
- Always provide the host, if any, in lowercase characters.
- Only perform percent-encoding where it is essential.
- Always use uppercase A-through-F characters when percent-encoding.
- Prevent dot-segments appearing in non-relative URI paths.
- For schemes that define a default authority, use an empty authority if the default is desired.
- For schemes that define an empty path to be equivalent to a path of "/", use "/".
- For schemes that define a port, use an empty port if the default is desired
- All portions of the URI must be utf-8 encoded NFC from Unicode strings
Inspired by Sam Ruby's urlnorm.py: http://intertwingly.net/blog/2004/08/04/Urlnorm
Example:
$ pip install url-normalize
Collecting url-normalize
...
Successfully installed future-0.16.0 url-normalize-1.3.3
$ python
Python 3.6.1 (default, Jul 8 2017, 05:00:20)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
> from url_normalize import url_normalize
> print(url_normalize('www.foo.com:80/foo'))
> https://www.foo.com/foo
History:
- 1.4.0: A bit of code refactoring and cleanup
- 1.3.2: Support empty string and double slash urls (//domain.tld)
- 1.3.1: Same code support both Python 3 and Python 2.
- 1.3: Python 3 compatibility
- 1.2: PEP8, setup.py
- 1.1.2: support for shebang (#!) urls
- 1.1.1: using 'http' schema by default when appropriate
- 1.1: added handling of IDN domains
- 1.0: code pep8-zation
- 0.1: forked from Sam Ruby's urlnorm.py
License: "Python" (PSF) License
Metadata
Release files for url-normalize 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| url-normalize-1.4.0.tar.gz | 5.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| url_normalize-1.4.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 17.4 kB
Release files / url-normalize-1.4.0.tar.gz
| Download URL | url-normalize-1.4.0.tar.gz |
|---|---|
| Size | 5.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ed30fb5fb5bdf16f9321b43fac13ab507e75a1caed2c0e21de8c27714ecdca3
|
|
BLAKE2b-256 checksum How to use checksums |
15a0f45fea8189984f3e3aec83473e8f3516b729efb68b9e546c206f929bca1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/0.12.6 CPython/3.7.1 Darwin/18.2.0
|
Release files / url_normalize-1.4.0-py2.py3-none-any.whl
| Download URL | url_normalize-1.4.0-py2.py3-none-any.whl |
|---|---|
| Size | 12.4 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
61a28f7aa7ed7825764c57b64d977eba04a9da7ec5e3564dea6671acd61e4ac3
|
|
BLAKE2b-256 checksum How to use checksums |
8226389f2d3424f52fb3e858235f7a35d8ebcc9ebefab449078f9ab4e996c795
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/0.12.6 CPython/3.7.1 Darwin/18.2.0
|