Skip to content

Commit d6d2249

Browse files
authored
builtins: rename _LT (#4579)
Having an obscure type variable name is causing some pretty inscrutable errors. For instance: ``` xarray/core/utils.py:466: error: Value of type variable "_LT" of "sorted" cannot be "K" tornado/simple_httpclient.py:324: error: Value of type variable "_LT" of "min" cannot be "Optional[float]" ``` I think having a more descriptive type variable name here is better for user experience and helps address the "why" of an error.
1 parent c5cc223 commit d6d2249

File tree

2 files changed

+38
-30
lines changed

2 files changed

+38
-30
lines changed

stdlib/2/__builtin__.pyi

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ _T3 = TypeVar("_T3")
8282
_T4 = TypeVar("_T4")
8383
_T5 = TypeVar("_T5")
8484
_TT = TypeVar("_TT", bound="type")
85-
_LT = TypeVar("_LT", bound=_SupportsLessThan)
85+
_SupportsLessThanT = TypeVar("_SupportsLessThanT", bound=_SupportsLessThan)
8686
_TBE = TypeVar("_TBE", bound="BaseException")
8787

8888
class object:
@@ -962,7 +962,7 @@ class list(MutableSequence[_T], Generic[_T]):
962962
def reverse(self) -> None: ...
963963
if sys.version_info >= (3,):
964964
@overload
965-
def sort(self: List[_LT], *, key: None = ..., reverse: bool = ...) -> None: ...
965+
def sort(self: List[_SupportsLessThanT], *, key: None = ..., reverse: bool = ...) -> None: ...
966966
@overload
967967
def sort(self, *, key: Callable[[_T], _SupportsLessThan], reverse: bool = ...) -> None: ...
968968
else:
@@ -1440,17 +1440,19 @@ else:
14401440

14411441
if sys.version_info >= (3,):
14421442
@overload
1443-
def max(__arg1: _LT, __arg2: _LT, *_args: _LT, key: None = ...) -> _LT: ...
1443+
def max(
1444+
__arg1: _SupportsLessThanT, __arg2: _SupportsLessThanT, *_args: _SupportsLessThanT, key: None = ...
1445+
) -> _SupportsLessThanT: ...
14441446
@overload
1445-
def max(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _LT]) -> _T: ...
1447+
def max(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14461448
@overload
1447-
def max(__iterable: Iterable[_LT], *, key: None = ...) -> _LT: ...
1449+
def max(__iterable: Iterable[_SupportsLessThanT], *, key: None = ...) -> _SupportsLessThanT: ...
14481450
@overload
1449-
def max(__iterable: Iterable[_T], *, key: Callable[[_T], _LT]) -> _T: ...
1451+
def max(__iterable: Iterable[_T], *, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14501452
@overload
1451-
def max(__iterable: Iterable[_LT], *, key: None = ..., default: _T) -> Union[_LT, _T]: ...
1453+
def max(__iterable: Iterable[_SupportsLessThanT], *, key: None = ..., default: _T) -> Union[_SupportsLessThanT, _T]: ...
14521454
@overload
1453-
def max(__iterable: Iterable[_T1], *, key: Callable[[_T1], _LT], default: _T2) -> Union[_T1, _T2]: ...
1455+
def max(__iterable: Iterable[_T1], *, key: Callable[[_T1], _SupportsLessThanT], default: _T2) -> Union[_T1, _T2]: ...
14541456

14551457
else:
14561458
@overload
@@ -1460,17 +1462,19 @@ else:
14601462

14611463
if sys.version_info >= (3,):
14621464
@overload
1463-
def min(__arg1: _LT, __arg2: _LT, *_args: _LT, key: None = ...) -> _LT: ...
1465+
def min(
1466+
__arg1: _SupportsLessThanT, __arg2: _SupportsLessThanT, *_args: _SupportsLessThanT, key: None = ...
1467+
) -> _SupportsLessThanT: ...
14641468
@overload
1465-
def min(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _LT]) -> _T: ...
1469+
def min(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14661470
@overload
1467-
def min(__iterable: Iterable[_LT], *, key: None = ...) -> _LT: ...
1471+
def min(__iterable: Iterable[_SupportsLessThanT], *, key: None = ...) -> _SupportsLessThanT: ...
14681472
@overload
1469-
def min(__iterable: Iterable[_T], *, key: Callable[[_T], _LT]) -> _T: ...
1473+
def min(__iterable: Iterable[_T], *, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14701474
@overload
1471-
def min(__iterable: Iterable[_LT], *, key: None = ..., default: _T) -> Union[_LT, _T]: ...
1475+
def min(__iterable: Iterable[_SupportsLessThanT], *, key: None = ..., default: _T) -> Union[_SupportsLessThanT, _T]: ...
14721476
@overload
1473-
def min(__iterable: Iterable[_T1], *, key: Callable[[_T1], _LT], default: _T2) -> Union[_T1, _T2]: ...
1477+
def min(__iterable: Iterable[_T1], *, key: Callable[[_T1], _SupportsLessThanT], default: _T2) -> Union[_T1, _T2]: ...
14741478

14751479
else:
14761480
@overload
@@ -1671,7 +1675,7 @@ def setattr(__obj: Any, __name: Text, __value: Any) -> None: ...
16711675

16721676
if sys.version_info >= (3,):
16731677
@overload
1674-
def sorted(__iterable: Iterable[_LT], *, key: None = ..., reverse: bool = ...) -> List[_LT]: ...
1678+
def sorted(__iterable: Iterable[_SupportsLessThanT], *, key: None = ..., reverse: bool = ...) -> List[_SupportsLessThanT]: ...
16751679
@overload
16761680
def sorted(__iterable: Iterable[_T], *, key: Callable[[_T], _SupportsLessThan], reverse: bool = ...) -> List[_T]: ...
16771681

stdlib/2and3/builtins.pyi

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ _T3 = TypeVar("_T3")
8282
_T4 = TypeVar("_T4")
8383
_T5 = TypeVar("_T5")
8484
_TT = TypeVar("_TT", bound="type")
85-
_LT = TypeVar("_LT", bound=_SupportsLessThan)
85+
_SupportsLessThanT = TypeVar("_SupportsLessThanT", bound=_SupportsLessThan)
8686
_TBE = TypeVar("_TBE", bound="BaseException")
8787

8888
class object:
@@ -962,7 +962,7 @@ class list(MutableSequence[_T], Generic[_T]):
962962
def reverse(self) -> None: ...
963963
if sys.version_info >= (3,):
964964
@overload
965-
def sort(self: List[_LT], *, key: None = ..., reverse: bool = ...) -> None: ...
965+
def sort(self: List[_SupportsLessThanT], *, key: None = ..., reverse: bool = ...) -> None: ...
966966
@overload
967967
def sort(self, *, key: Callable[[_T], _SupportsLessThan], reverse: bool = ...) -> None: ...
968968
else:
@@ -1440,17 +1440,19 @@ else:
14401440

14411441
if sys.version_info >= (3,):
14421442
@overload
1443-
def max(__arg1: _LT, __arg2: _LT, *_args: _LT, key: None = ...) -> _LT: ...
1443+
def max(
1444+
__arg1: _SupportsLessThanT, __arg2: _SupportsLessThanT, *_args: _SupportsLessThanT, key: None = ...
1445+
) -> _SupportsLessThanT: ...
14441446
@overload
1445-
def max(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _LT]) -> _T: ...
1447+
def max(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14461448
@overload
1447-
def max(__iterable: Iterable[_LT], *, key: None = ...) -> _LT: ...
1449+
def max(__iterable: Iterable[_SupportsLessThanT], *, key: None = ...) -> _SupportsLessThanT: ...
14481450
@overload
1449-
def max(__iterable: Iterable[_T], *, key: Callable[[_T], _LT]) -> _T: ...
1451+
def max(__iterable: Iterable[_T], *, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14501452
@overload
1451-
def max(__iterable: Iterable[_LT], *, key: None = ..., default: _T) -> Union[_LT, _T]: ...
1453+
def max(__iterable: Iterable[_SupportsLessThanT], *, key: None = ..., default: _T) -> Union[_SupportsLessThanT, _T]: ...
14521454
@overload
1453-
def max(__iterable: Iterable[_T1], *, key: Callable[[_T1], _LT], default: _T2) -> Union[_T1, _T2]: ...
1455+
def max(__iterable: Iterable[_T1], *, key: Callable[[_T1], _SupportsLessThanT], default: _T2) -> Union[_T1, _T2]: ...
14541456

14551457
else:
14561458
@overload
@@ -1460,17 +1462,19 @@ else:
14601462

14611463
if sys.version_info >= (3,):
14621464
@overload
1463-
def min(__arg1: _LT, __arg2: _LT, *_args: _LT, key: None = ...) -> _LT: ...
1465+
def min(
1466+
__arg1: _SupportsLessThanT, __arg2: _SupportsLessThanT, *_args: _SupportsLessThanT, key: None = ...
1467+
) -> _SupportsLessThanT: ...
14641468
@overload
1465-
def min(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _LT]) -> _T: ...
1469+
def min(__arg1: _T, __arg2: _T, *_args: _T, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14661470
@overload
1467-
def min(__iterable: Iterable[_LT], *, key: None = ...) -> _LT: ...
1471+
def min(__iterable: Iterable[_SupportsLessThanT], *, key: None = ...) -> _SupportsLessThanT: ...
14681472
@overload
1469-
def min(__iterable: Iterable[_T], *, key: Callable[[_T], _LT]) -> _T: ...
1473+
def min(__iterable: Iterable[_T], *, key: Callable[[_T], _SupportsLessThanT]) -> _T: ...
14701474
@overload
1471-
def min(__iterable: Iterable[_LT], *, key: None = ..., default: _T) -> Union[_LT, _T]: ...
1475+
def min(__iterable: Iterable[_SupportsLessThanT], *, key: None = ..., default: _T) -> Union[_SupportsLessThanT, _T]: ...
14721476
@overload
1473-
def min(__iterable: Iterable[_T1], *, key: Callable[[_T1], _LT], default: _T2) -> Union[_T1, _T2]: ...
1477+
def min(__iterable: Iterable[_T1], *, key: Callable[[_T1], _SupportsLessThanT], default: _T2) -> Union[_T1, _T2]: ...
14741478

14751479
else:
14761480
@overload
@@ -1671,7 +1675,7 @@ def setattr(__obj: Any, __name: Text, __value: Any) -> None: ...
16711675

16721676
if sys.version_info >= (3,):
16731677
@overload
1674-
def sorted(__iterable: Iterable[_LT], *, key: None = ..., reverse: bool = ...) -> List[_LT]: ...
1678+
def sorted(__iterable: Iterable[_SupportsLessThanT], *, key: None = ..., reverse: bool = ...) -> List[_SupportsLessThanT]: ...
16751679
@overload
16761680
def sorted(__iterable: Iterable[_T], *, key: Callable[[_T], _SupportsLessThan], reverse: bool = ...) -> List[_T]: ...
16771681

0 commit comments

Comments
 (0)