pyuri

Better URI Handling


License
MIT
Install
pip install pyuri==0.3.1

Documentation

Python URI

Build Status Coverage Status PyPI version

Better URI handling

Tested with Python 2.7 and 3.5


Install

pip install python-uri

Usage

Raw URI string parsing:

from uri import URI

uri = URI('http://localhost:80/path/to/file?query=value#/fragment/path')

assert uri.scheme == 'http'
assert uri.host == 'localhost'
assert uri.port == 80
assert uri.path == '/path/to/file'
assert uri.query == 'query=value'
assert uri.fragment == '/fragment/path'

Composition by parts

from uri import URI

uri = URI(scheme='ftp', host='localhost', port=8000, query='key=value')

assert str(uri) == 'ftp://localhost:8000?key=value'

Modification and comparison

from uri import URI

uri1 = URI('https://example.com:80')
uri2 = URI('https://example.com:443/new/path')

assert uri1 != uri2

uri1.port = 443
uri1.path = '/new/path'

assert str(uri1) == 'https://example.com:443/new/path'

assert uri1 == uri2

Additional helpers

from uri import URI

uri = URI('http://localhost:80/path/to/file?repeat=value1&repeat=value2&escape=escaped%20value#/fragment/path')

# Access query parameters as dictionary
assert uri.query_dict() == {
    'repeat': ['value1', 'value2'],
    'escape': ['escaped value']
}