| 57 | |
| 58 | @classmethod |
| 59 | def diff_from_uri(cls, uri1: str, uri2: str) -> Tuple[URIHandler, URIHandler]: |
| 60 | cls.load_handlers() |
| 61 | parsed1 = urllib.parse.urlparse(uri1) |
| 62 | parsed2 = urllib.parse.urlparse(uri2) |
| 63 | |
| 64 | for handler1, handler2 in product(HANDLERS.values(), repeat=2): |
| 65 | if handler1.is_supported(parsed1) and handler2.is_supported(parsed2): |
| 66 | return (handler1(parsed1), handler2(parsed2)) |
| 67 | |
| 68 | return (cls.default(parsed1), cls.default(parsed2)) |
| 69 | |
| 70 | @classmethod |
| 71 | def load_handlers(cls, ignore_disabled=True): |