Skip to main content

Fast quoting and unquoting of urls.

Project description

Urlquote

Fast percent encoding / decoding for python.

This library is not intended to be a replacement for urllib. urllib is part of the Python standard library and should be your go-to choice to quote and unquote URLs. However, should quoting or unquoting of URLs be known to be a performance bottleneck and you are fine with the encoding described below, then by all means have fun using this library.

Usage

from urlquote import quote

quoted = quote('/El Niño/')
assert(quoted == '/El%20Ni%C3%B1o/'.encode('utf-8'))

Compatibility

Since this library uses a cffi interface it should work fine with any version of Python. For Linux the wheel has to be build against a version of libc older or equal to the version of libc on the platform the wheel will be used on.

Installation

pip install urlquote

quote operates on UTF-8-encoded bytes. If passed a string, it will encode it into UTF-8 first. It will always return UTF-8-encoded bytes. unquote behaves the same way.

Encoding

The following encodings are offered. DEFAULT_QUOTING is used in case the quoting parameter is not specified.

Name Additional encoded characters
SIMPLE_QUOTING
DEFAULT_QUOTING space, <,>,`,?,{,}
QUERY_QUOTING space, ",#,<,>
PATH_SEGMENT_QUOTING space, ",#,<,>,`,?,%,/
USERINFO_QUOTING space, ",#,<,>,`,?,{,},/,:,;,=,@,\,[,],^,|
PYTHON_3_7_QUOTING space, ",#,<,>,`,?,{,},$,%,&,\,(,),,,=,;,:,!,@,[,],^,|,+,*

Non printable and non standard ASCII characters are always quoted. The PYTHON_3_7_QUOTING is going to work the same way in every Python version the name is only refering to the urllib default encoding used in Python 3.7.

Development

This library is a thin wrapper around the Rust crate percent-encoding. It exposes part of its functionality to python via a C interface using cffi.

To build it you need to install Rust and Cargo. Than you can proceed to build the wheel with:

python -m pip install build

To setup the development environment run:

python -m pip install -e .[test]

To execute the tests run

pytest

There are also some Rust-only unit tests. To execute them change into the rust subdirectory and call.

cargo test

Links

Support

This tool is provided as is under an MIT license without any warranty or SLA. You are free to use it as part for any purpose, but the responsibility for operating it resides with you. We appreciate your feedback though. Contributions on GitHub are welcome.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

urlquote-2.1.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distributions

urlquote-2.1.0-py3-none-win_amd64.whl (63.7 kB view details)

Uploaded Python 3 Windows x86-64

urlquote-2.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (558.9 kB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

urlquote-2.1.0-py3-none-macosx_10_12_x86_64.whl (158.7 kB view details)

Uploaded Python 3 macOS 10.12+ x86-64

File details

Details for the file urlquote-2.1.0.tar.gz.

File metadata

  • Download URL: urlquote-2.1.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for urlquote-2.1.0.tar.gz
Algorithm Hash digest
SHA256 aa8ae411b1694a05c87f013130bf8b163cfc383268700493d4c743061aca5770
MD5 0b1947be52b257b807c832389cbc598b
BLAKE2b-256 8253c6f86bd396fa275a8d8575143f63265cd78a6b9d2209ee1bf01511de68bf

See more details on using hashes here.

File details

Details for the file urlquote-2.1.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: urlquote-2.1.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 63.7 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for urlquote-2.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d43d301aaca75f3297161ab69c4bb0ea8c583ecd5fa46c54584f42e4aa01fa70
MD5 4a344729dfaf8ee2a924abc47303d437
BLAKE2b-256 bc896b5246d4616f975edf489913a4ebfe3520d88dbad9f1eebaf8e2170d6539

See more details on using hashes here.

File details

Details for the file urlquote-2.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for urlquote-2.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dad03b11675859751ec802cbfaaf3ba7a4f4ce1162328df1075b30115f6a1eb6
MD5 fda17f77f1c378c198211d802cfc878a
BLAKE2b-256 e3b611c98a66eda2bf04bb68b0534a4a10e1c0f8649df59c1d6ccac97bf0dc8d

See more details on using hashes here.

File details

Details for the file urlquote-2.1.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for urlquote-2.1.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 09677643e9eb877bb36a70af289cbf5398993938759c98ce4e94b384f09eb565
MD5 444168ef55f76f968683fc103b2d3eac
BLAKE2b-256 0bcf2b39a2edc2e53c476cc8522e3f2a46b9b92cfe672d05a8a3db9fbba8a53e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page