from typing import overload
from urllib.parse import ParseResult, SplitResult

class URL:
    def __init__(self, url: str | ParseResult | SplitResult) -> None: ...
    def __bool__(self) -> bool: ...
    def __ne__(self, other: object) -> bool: ...
    def __eq__(self, other: object) -> bool: ...
    def __hash__(self) -> int: ...
    @overload
    @classmethod
    def objectify(cls, url: None) -> None: ...
    @overload
    @classmethod
    def objectify(cls, url: URL | str | ParseResult | SplitResult) -> URL: ...
    def __getattr__(self, attr: str): ...
    def __unicode__(self) -> str: ...
    def strip_trailing_slash(self) -> URL: ...
    def is_auth(self) -> bool: ...
    def unauth(self) -> URL: ...
    def canonical(self) -> URL: ...
    def join(self, path: object) -> URL: ...

@overload
def make(url: None) -> None: ...
@overload
def make(url: URL | str | ParseResult | SplitResult) -> URL: ...
