diff --git a/asyncssh/agent.py b/asyncssh/agent.py index d44a7e0..df65912 100644 --- a/asyncssh/agent.py +++ b/asyncssh/agent.py @@ -24,8 +24,12 @@ import os import sys from types import TracebackType -from typing import TYPE_CHECKING, List, Optional, Sequence, Tuple, Type, Union -from typing_extensions import Protocol, Self +from typing import TYPE_CHECKING, List, Optional, Protocol, Sequence, Tuple +from typing import Type, Union +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from .listener import SSHForwardListener from .misc import async_context_manager, maybe_wait_closed diff --git a/asyncssh/connection.py b/asyncssh/connection.py index 93427c4..477e69a 100644 --- a/asyncssh/connection.py +++ b/asyncssh/connection.py @@ -38,9 +38,12 @@ from pathlib import Path from types import TracebackType from typing import TYPE_CHECKING, Any, AnyStr, Awaitable, Callable, Dict -from typing import Generic, List, Mapping, Optional, Sequence, Set, Tuple -from typing import Type, TypeVar, Union, cast -from typing_extensions import Protocol, Self +from typing import Generic, List, Mapping, Optional, Protocol, Sequence, Set +from typing import Tuple, Type, TypeVar, Union, cast +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from .agent import SSHAgentClient, SSHAgentListener diff --git a/asyncssh/forward.py b/asyncssh/forward.py index 8470c00..b691d05 100644 --- a/asyncssh/forward.py +++ b/asyncssh/forward.py @@ -22,10 +22,14 @@ import asyncio import socket +import sys from types import TracebackType from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional from typing import Type, cast -from typing_extensions import Self +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from .misc import ChannelOpenError, SockAddr diff --git a/asyncssh/kex_dh.py b/asyncssh/kex_dh.py index ab0dc87..25a0920 100644 --- a/asyncssh/kex_dh.py +++ b/asyncssh/kex_dh.py @@ -21,8 +21,8 @@ """SSH Diffie-Hellman, ECDH, and Edwards DH key exchange handlers""" from hashlib import sha1, sha224, sha256, sha384, sha512 -from typing import TYPE_CHECKING, Callable, Mapping, Optional, Type, cast -from typing_extensions import Protocol +from typing import TYPE_CHECKING, Callable, Mapping, Optional, Protocol, Type +from typing import cast from .constants import DEFAULT_LANG from .crypto import Curve25519DH, Curve448DH, DH, ECDH, PQClass, MLKEM, SNTRUP diff --git a/asyncssh/listener.py b/asyncssh/listener.py index e9cc475..97e03fe 100644 --- a/asyncssh/listener.py +++ b/asyncssh/listener.py @@ -23,10 +23,14 @@ import asyncio import errno import socket +import sys from types import TracebackType from typing import TYPE_CHECKING, AnyStr, Callable, Generic, List, Optional from typing import Sequence, Set, Tuple, Type, Union -from typing_extensions import Self +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from .forward import SSHForwarderCoro from .forward import SSHLocalPortForwarder, SSHLocalPathForwarder diff --git a/asyncssh/misc.py b/asyncssh/misc.py index e9f0d18..47badb9 100644 --- a/asyncssh/misc.py +++ b/asyncssh/misc.py @@ -37,9 +37,9 @@ from random import SystemRandom from types import TracebackType from typing import Any, AsyncContextManager, Awaitable, Callable, Dict -from typing import Generator, Generic, IO, Iterator, List, Mapping, Optional -from typing import Sequence, Tuple, Type, TypeVar, Union, cast, overload -from typing_extensions import Literal, Protocol +from typing import Generator, Generic, IO, Iterator, List, Literal, Mapping +from typing import Optional, Protocol, Sequence, Tuple, Type, TypeVar, Union +from typing import cast, overload from .constants import DEFAULT_LANG from .constants import DISC_COMPRESSION_ERROR, DISC_CONNECTION_LOST diff --git a/asyncssh/process.py b/asyncssh/process.py index 5e10998..c31c1ce 100644 --- a/asyncssh/process.py +++ b/asyncssh/process.py @@ -29,11 +29,15 @@ from pathlib import PurePath import socket import stat +import sys from types import TracebackType from typing import Any, AnyStr, Awaitable, Callable, Dict, Generic, IO -from typing import Iterable, List, Mapping, Optional, Set, TextIO +from typing import Iterable, List, Mapping, Optional, Protocol, Set, TextIO from typing import Tuple, Type, TypeVar, Union, cast -from typing_extensions import Protocol, Self +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from .channel import SSHChannel, SSHClientChannel, SSHServerChannel diff --git a/asyncssh/public_key.py b/asyncssh/public_key.py index b466498..5e8637c 100644 --- a/asyncssh/public_key.py +++ b/asyncssh/public_key.py @@ -29,9 +29,8 @@ from hashlib import md5, sha1, sha256, sha384, sha512 from pathlib import Path, PurePath -from typing import Callable, Dict, List, Mapping, Optional, Sequence, Set -from typing import Tuple, Type, Union, cast -from typing_extensions import Protocol +from typing import Callable, Dict, List, Mapping, Optional, Protocol +from typing import Sequence, Set, Tuple, Type, Union, cast from .crypto import ed25519_available, ed448_available from .encryption import Encryption diff --git a/asyncssh/saslprep.py b/asyncssh/saslprep.py index 9b73661..4b2563b 100644 --- a/asyncssh/saslprep.py +++ b/asyncssh/saslprep.py @@ -33,8 +33,7 @@ # pylint: enable=deprecated-module import unicodedata -from typing import Callable, Optional, Sequence -from typing_extensions import Literal +from typing import Callable, Literal, Optional, Sequence class SASLPrepError(ValueError): diff --git a/asyncssh/scp.py b/asyncssh/scp.py index f3b69c7..3ecafbd 100644 --- a/asyncssh/scp.py +++ b/asyncssh/scp.py @@ -32,8 +32,11 @@ import sys from types import TracebackType from typing import TYPE_CHECKING, AsyncIterator, List, NoReturn, Optional -from typing import Sequence, Tuple, Type, Union, cast -from typing_extensions import Protocol, Self +from typing import Protocol, Sequence, Tuple, Type, Union, cast +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from .constants import DEFAULT_LANG from .constants import FILEXFER_TYPE_REGULAR, FILEXFER_TYPE_DIRECTORY diff --git a/asyncssh/sftp.py b/asyncssh/sftp.py index 75d8df7..e496f9e 100644 --- a/asyncssh/sftp.py +++ b/asyncssh/sftp.py @@ -35,9 +35,13 @@ import time from types import TracebackType from typing import TYPE_CHECKING, AnyStr, AsyncIterator, Awaitable, Callable -from typing import Dict, Generic, IO, Iterable, List, Mapping, Optional -from typing import Sequence, Set, Tuple, Type, TypeVar, Union, cast, overload -from typing_extensions import Literal, Protocol, Self +from typing import Dict, Generic, IO, Iterable, List, Literal, Mapping +from typing import Optional, Protocol, Sequence, Set, Tuple, Type, TypeVar +from typing import Union, cast, overload +if sys.version_info >= (3, 11): + from typing import Self +else: + from typing_extensions import Self from . import constants from .constants import DEFAULT_LANG diff --git a/pyproject.toml b/pyproject.toml index dd2f82b..7adcdd0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ classifiers = [ requires-python = '>= 3.10' dependencies = [ 'cryptography >= 48.0.1', - 'typing_extensions >= 4.0.0', + "typing-extensions (>= 4.0.0); python_version < '3.11'", ] dynamic = ['version']