Message 232799 - Python tracker
I think a global registry seems like overkill. Here is a patch to make urljoin() treat schemes more equally and work with arbitrary schemes automatically. I haven’t heard any arguments against this option yet, and it didn’t break any tests. Another option, still simpler than a registry, would be an extra parameter, say urljoin(a, b, any_scheme=True).