The class ll.url.URL
supports many common schemes and one additional special scheme named
root that deserves an explanation.
A root URL is supposed to be an URL that is relative
to a “project” directory instead to a base URL of the document that contains
the URL.
Suppose we have the following document with the following base URL:
>>> from ll import url
>>> base = url.URL("root:company/it/about/index.html")
Now, if we have the following relative URL in this document:
>>> url1 = url.URL("images/logos/spam.png")
the combined URL will be:
>>> base/url1
URL('root:company/it/about/images/logos/spam.png')
Now it we use this combined URL and interpret it relative to the base URL we get back our original relative URL:
>>> (base/url1).relative(base)
URL('images/logos/spam.png')
Let's try a root URL now:
>>> url2 = url.URL("root:images/logos/spam.png")
Combining this URL with the base URL gives us
the same as url2:
>>> base/url2
URL('root:images/logos/spam.png')
But if we interpret this result relative to base, we'll get:
>>> (base/url2).relative(base)
URL('../../../images/logos/spam.png')
I.e. this gives us a relative URL that references url2
from base when both URLs are relative to the same root directory.