An immutable URL class for easy URL-building and manipulation
Project description
A simple, immutable URL class with a clean API for interrogation and manipulation.
Install
From PyPI (stable):
pip install purl
From Github (unstable):
pip install git+git://github.com/codeinthehole/purl.git#egg=purl
Use
Construct:
from purl import URL # Explicit constructor u = URL(scheme='https', host='www.google.com', path='/search', query='q=testing') # Use factory u = URL.from_string('https://www.google.com/search?q=testing') # Combine u = URL.from_string('http://www.google.com').path('search') \ .query_param('q', 'testing')
URL objects are immutable - all mutator methods return a new instance.
Interrogate:
u.scheme() # 'https' u.host() # 'www.google.com' u.domain() # 'www.google.com' - alias of host u.port() # None - only returns value if explicitly set u.path() # '/search' u.query() # 'q=testing' u.fragment() # 'q=testing' u.path_segment(0) # 'search' u.path_segments() # ('search',) u.query_param('q') # 'testing' u.query_param('q', as_list=True) # ['testing'] u.query_param('lang', default='GB') # 'GB' u.query_params() # {'q': 'testing'} u.subdomains() # ['www', 'google', 'com'] u.subdomain(0) # 'www'
Note that each accessor method is overloaded to be a mutator method too, similar to the jQuery API. Eg:
u = URL.from_string('https://github.com/codeinthehole') # Access u.path_segment(0) # returns 'codeinthehole' # Mutate (creates a new instance) new_url = u.path_segment(0, 'tangentlabs') # returns new URL object
Couple of other things:
Since the URL class is immutable it can be used as a key in a dictionary
It can be picked and restored
It supports equality operations
Changelog
v0.3.2
Fixed bug port number in string when using from_string constructor
v0.3.1
Fixed bug with passing lists to query param setter methods
v0.3
Added support for comparison and equality
Added support for pickling
Added __slots__ so instances can be used as keys within dictionaries
Contribute
Clone and install testing dependencies:
pip install -r requirements.txt
Ensure tests pass:
nosetests
Hack away
Build status
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file purl-0.3.2.tar.gz
.
File metadata
- Download URL: purl-0.3.2.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66db82932c77b8d5bbaf7e5f7c8800d86014b3cefa58dfbb09a8bc11097d10e8 |
|
MD5 | a4b769580a7d319a8a458f66933c2a7f |
|
BLAKE2b-256 | 2823a70ab095abadc8e41fb647f7d45327bd0118fb298fb48c589ef4095acf9a |