Skip to content

Latest commit

 

History

History
75 lines (48 loc) · 1.54 KB

README.md

File metadata and controls

75 lines (48 loc) · 1.54 KB

PyURI

Build Status Coverage Status PyPI version

Better URI handling

Tested with Python 2.7 and 3.6


Install

pip install pyuri

Usage

Raw URI string parsing:

from pyuri 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 pyuri 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 pyuri 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 pyuri 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']
}