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.2: Added an optional param sort_query_params (True by default)
- 1.4.1: Added an optional param default_scheme to the url_normalize
- 1.4.0: A bit of code refactoring and cleanup
- 1.3.3: Support empty string and double slash urls (//domain.tld)
- 1.3.2: Same code support both Python 3 and Python 2.
- 1.3.1: Python 3 compatibility
- 1.2.1: PEP8, setup.py
- 1.1.2: support for shebang (#!) urls
- 1.1.1: using 'http' schema by default when appropriate
- 1.1.0: added handling of IDN domains
- 1.0.0: code pep8
- 0.1.0: forked from Sam Ruby's urlnorm.py
License: "Python" (PSF) License
Metadata
Release files for url-normalize 1.4.2
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.2.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| url_normalize-1.4.2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 11.2 kB
Release files / url-normalize-1.4.2.tar.gz
| Download URL | url-normalize-1.4.2.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1709cb4739e496f9f807a894e361915792f273538e250b1ab7da790544a665c3
|
|
BLAKE2b-256 checksum How to use checksums |
b7da6909a3e11555b985b11889047705c879336aaf416f17ecb26082512238ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.5 CPython/3.7.7 Darwin/19.3.0
|
Release files / url_normalize-1.4.2-py2.py3-none-any.whl
| Download URL | url_normalize-1.4.2-py2.py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
1bd7085349dcdf06e52194d0f75ff99fff2eeed0da85a50e4cc2346452c1b8bc
|
|
BLAKE2b-256 checksum How to use checksums |
6d6fea35e59b39a007c3c242038490dd6ac21cb3570ccbf397a4396fe58bf2ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.5 CPython/3.7.7 Darwin/19.3.0
|