Source code for wheezy.core.url
""" ``url`` module
"""
from wheezy.core.comp import urlunsplit
[docs]def urlparts(parts=None, scheme=None, netloc=None, path=None,
query=None, fragment=None):
""" Factory function for :py:class:`~wheezy.core.url.UrlParts` that
create an instance :py:class:`~wheezy.core.url.UrlParts` with
partial content.
``parts`` must be a 5-tuple:
(scheme, netloc, path, query, fragment)
>>> from wheezy.core.comp import urlsplit
>>> parts = urlsplit('http://www.python.org/dev/peps/pep-3333')
>>> urlparts(parts)
urlparts('http', 'www.python.org', '/dev/peps/pep-3333', '', '')
>>> urlparts(scheme='https', path='/test')
urlparts('https', None, '/test', None, None)
Otherwise raise assertion error
>>> urlparts(('https', )) # doctest: +ELLIPSIS
Traceback (most recent call last):
...
AssertionError: ...
"""
if not parts:
parts = (scheme, netloc, path, query, fragment)
return UrlParts(parts)
[docs]class UrlParts(tuple):
""" Concrete class for :func:`urlparse.urlsplit` results.
"""
def __init__(self, parts):
assert len(parts) == 5, '`parts` must be a tupple of length 6'
super(UrlParts, self).__init__()
def __repr__(self):
return 'urlparts' + super(UrlParts, self).__repr__()
[docs] def geturl(self):
""" Return the re-combined version of the original URL as a string.
>>> from wheezy.core.comp import urlsplit
>>> parts = urlsplit('http://www.python.org/dev/peps/pep-3333')
>>> parts = urlparts(parts)
>>> parts.geturl()
'http://www.python.org/dev/peps/pep-3333'
"""
return urlunsplit(self)
[docs] def join(self, other):
""" Joins with another ``UrlParts`` instance by taking
none-empty values from ``other``. Returns new ``UrlParts``
instance.
Query and Fragment parts are taken unconditionally from ``other``.
>>> from wheezy.core.comp import urlsplit
>>> parts = urlsplit('http://www.python.org/dev/peps/pep-3333')
>>> parts = urlparts(parts)
>>> parts = parts.join(urlparts(scheme='https', path='/test'))
>>> parts.geturl()
'https://www.python.org/test'
"""
parts = (
other[0] or self[0],
other[1] or self[1],
other[2] or self[2],
other[3],
other[4])
return UrlParts(parts)