mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 04:54:47 +08:00
PR #3887 changed some `str` types to `Union[str, unicode]`. The `str` types were too narrow, but the new types are too general, resulting in around 80 false positives in a Dropbox internal repository. I think that it's better to narrow down the types back some to avoid the false positives, as these are commonly used functions. Test cases: ``` from urlparse import urlunparse, urlunsplit, urljoin, urlparse, urlsplit reveal_type(urlunparse(('1', '2', '3', '4', '5', '6'))) # str reveal_type(urlunparse(['1', '2', '3', '4', '5', '6'])) # str reveal_type(urlunparse((u'1', '2', '3', '4', '5', '6'))) # unicode reveal_type(urlunparse([u'1', '2', '3', '4', '5', '6'])) # unicode reveal_type(urlunsplit(('1', '2', '3', '4', '5'))) # str reveal_type(urlunsplit(['1', '2', '3', '4', '5'])) # str reveal_type(urlunsplit((u'1', '2', '3', '4', '5'))) # unicode reveal_type(urlunsplit([u'1', '2', '3', '4', '5'])) # unicode reveal_type(urljoin('x', 'y')) # str reveal_type(urljoin(u'x', 'y')) # unicode reveal_type(urljoin('x', u'y')) # unicode reveal_type(urlparse('x').path) # str reveal_type(urlparse(u'x').path) # str reveal_type(urlparse(u'x').username) # Optional[str] reveal_type(urlsplit('x').path) # str reveal_type(urlsplit(u'x').path) # str ```
64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
# Stubs for urlparse (Python 2)
|
|
|
|
from typing import AnyStr, Dict, List, NamedTuple, Optional, Sequence, Tuple, Union, overload
|
|
|
|
_String = Union[str, unicode]
|
|
|
|
uses_relative: List[str]
|
|
uses_netloc: List[str]
|
|
uses_params: List[str]
|
|
non_hierarchical: List[str]
|
|
uses_query: List[str]
|
|
uses_fragment: List[str]
|
|
scheme_chars: str
|
|
MAX_CACHE_SIZE: int
|
|
|
|
def clear_cache() -> None: ...
|
|
|
|
class ResultMixin(object):
|
|
@property
|
|
def username(self) -> Optional[str]: ...
|
|
@property
|
|
def password(self) -> Optional[str]: ...
|
|
@property
|
|
def hostname(self) -> Optional[str]: ...
|
|
@property
|
|
def port(self) -> Optional[int]: ...
|
|
|
|
class _SplitResult(NamedTuple):
|
|
scheme: str
|
|
netloc: str
|
|
path: str
|
|
query: str
|
|
fragment: str
|
|
|
|
class SplitResult(_SplitResult, ResultMixin):
|
|
def geturl(self) -> str: ...
|
|
|
|
class _ParseResult(NamedTuple):
|
|
scheme: str
|
|
netloc: str
|
|
path: str
|
|
params: str
|
|
query: str
|
|
fragment: str
|
|
|
|
class ParseResult(_ParseResult, ResultMixin):
|
|
def geturl(self) -> _String: ...
|
|
|
|
def urlparse(url: _String, scheme: _String = ..., allow_fragments: bool = ...) -> ParseResult: ...
|
|
def urlsplit(url: _String, scheme: _String = ..., allow_fragments: bool = ...) -> SplitResult: ...
|
|
@overload
|
|
def urlunparse(data: Tuple[AnyStr, AnyStr, AnyStr, AnyStr, AnyStr, AnyStr]) -> AnyStr: ...
|
|
@overload
|
|
def urlunparse(data: Sequence[AnyStr]) -> AnyStr: ...
|
|
@overload
|
|
def urlunsplit(data: Tuple[AnyStr, AnyStr, AnyStr, AnyStr, AnyStr]) -> AnyStr: ...
|
|
@overload
|
|
def urlunsplit(data: Sequence[AnyStr]) -> AnyStr: ...
|
|
def urljoin(base: AnyStr, url: AnyStr, allow_fragments: bool = ...) -> AnyStr: ...
|
|
def urldefrag(url: AnyStr) -> Tuple[AnyStr, AnyStr]: ...
|
|
def unquote(s: AnyStr) -> AnyStr: ...
|
|
def parse_qs(qs: AnyStr, keep_blank_values: bool = ..., strict_parsing: bool = ...) -> Dict[AnyStr, List[AnyStr]]: ...
|
|
def parse_qsl(qs: AnyStr, keep_blank_values: int = ..., strict_parsing: bool = ...) -> List[Tuple[AnyStr, AnyStr]]: ...
|