Marco Ricci commited on 2025-12-26 12:25:39
Zeige 1 geänderte Dateien mit 8 Einfügungen und 7 Löschungen.
Use parametric types to allow better introspection into decorated classes.
| ... | ... |
@@ -28,10 +28,15 @@ if TYPE_CHECKING: |
| 28 | 28 |
from collections.abc import Callable |
| 29 | 29 |
from typing import ClassVar |
| 30 | 30 |
|
| 31 |
- from typing_extensions import Any, Buffer, Literal, Self |
|
| 31 |
+ from typing_extensions import Any, Buffer, Literal, Self, TypeVar |
|
| 32 | 32 |
|
| 33 | 33 |
from derivepassphrase import _types |
| 34 | 34 |
|
| 35 |
+ SSHAgentSocketProviderT = TypeVar( |
|
| 36 |
+ "SSHAgentSocketProviderT", bound=_types.SSHAgentSocketProvider |
|
| 37 |
+ ) |
|
| 38 |
+ """A parametrized SSH agent socket provider.""" |
|
| 39 |
+ |
|
| 35 | 40 |
kernel32: ctypes.WinDLL # type: ignore[name-defined] |
| 36 | 41 |
crypt32: ctypes.WinDLL # type: ignore[name-defined] |
| 37 | 42 |
|
| ... | ... |
@@ -605,9 +610,7 @@ class SocketProvider: |
| 605 | 610 |
cls, |
| 606 | 611 |
name: str, |
| 607 | 612 |
*aliases: str, |
| 608 |
- ) -> Callable[ |
|
| 609 |
- [_types.SSHAgentSocketProvider], _types.SSHAgentSocketProvider |
|
| 610 |
- ]: |
|
| 613 |
+ ) -> Callable[[SSHAgentSocketProviderT], SSHAgentSocketProviderT]: |
|
| 611 | 614 |
"""Register a callable as an SSH agent socket provider (decorator). |
| 612 | 615 |
|
| 613 | 616 |
Attempting to re-register an existing alias, or a name with an |
| ... | ... |
@@ -626,9 +629,7 @@ class SocketProvider: |
| 626 | 629 |
|
| 627 | 630 |
""" |
| 628 | 631 |
|
| 629 |
- def decorator( |
|
| 630 |
- f: _types.SSHAgentSocketProvider, |
|
| 631 |
- ) -> _types.SSHAgentSocketProvider: |
|
| 632 |
+ def decorator(f: SSHAgentSocketProviderT) -> SSHAgentSocketProviderT: |
|
| 632 | 633 |
"""Register a callable as an SSH agent socket provider. |
| 633 | 634 |
|
| 634 | 635 |
Attempting to re-register an existing alias, or a name with |
| 635 | 636 |