--- /dev/null
+from stat import S_IMODE as S_IMODE
+from types import TracebackType
+from typing import IO, Any, Callable, ContextManager, Sequence, Text, Type, Union
+from typing_extensions import Literal
+
+import paramiko
+from paramiko import AuthenticationException as AuthenticationException
+from pysftp.exceptions import (
+ ConnectionException as ConnectionException,
+ CredentialException as CredentialException,
+ HostKeysException as HostKeysException,
+)
+from pysftp.helpers import (
+ WTCallbacks as WTCallbacks,
+ _PathCallback,
+ cd as cd,
+ known_hosts as known_hosts,
+ path_advance as path_advance,
+ path_retreat as path_retreat,
+ reparent as reparent,
+ st_mode_to_int as st_mode_to_int,
+ walktree as walktree,
+)
+
+class CnOpts:
+ log: bool = ...
+ compression: bool = ...
+ ciphers: Sequence[str] | None = ...
+ hostkeys: paramiko.HostKeys = ...
+ def __init__(self, knownhosts: str | None = ...) -> None: ...
+ def get_hostkey(self, host: str) -> paramiko.PKey: ...
+
+_Callback = Callable[[int, int], Any]
+_Path = Union[Text, bytes]
+
+class Connection:
+ def __init__(
+ self,
+ host: str,
+ username: str | None = ...,
+ private_key: str | paramiko.RSAKey | paramiko.AgentKey | None = ...,
+ password: str | None = ...,
+ port: int = ...,
+ private_key_pass: str | None = ...,
+ ciphers: Sequence[str] | None = ...,
+ log: bool = ...,
+ cnopts: CnOpts | None = ...,
+ default_path: _Path | None = ...,
+ ) -> None: ...
+ @property
+ def pwd(self) -> str: ...
+ def get(
+ self, remotepath: _Path, localpath: _Path | None = ..., callback: _Callback | None = ..., preserve_mtime: bool = ...
+ ) -> None: ...
+ def get_d(self, remotedir: _Path, localdir: _Path, preserve_mtime: bool = ...) -> None: ...
+ def get_r(self, remotedir: _Path, localdir: _Path, preserve_mtime: bool = ...) -> None: ...
+ def getfo(self, remotepath: _Path, flo: IO[bytes], callback: _Callback | None = ...) -> int: ...
+ def put(
+ self,
+ localpath: _Path,
+ remotepath: _Path | None = ...,
+ callback: _Callback | None = ...,
+ confirm: bool = ...,
+ preserve_mtime: bool = ...,
+ ) -> paramiko.SFTPAttributes: ...
+ def put_d(self, localpath: _Path, remotepath: _Path, confirm: bool = ..., preserve_mtime: bool = ...) -> None: ...
+ def put_r(self, localpath: _Path, remotepath: _Path, confirm: bool = ..., preserve_mtime: bool = ...) -> None: ...
+ def putfo(
+ self,
+ flo: IO[bytes],
+ remotepath: _Path | None = ...,
+ file_size: int = ...,
+ callback: _Callback | None = ...,
+ confirm: bool = ...,
+ ) -> paramiko.SFTPAttributes: ...
+ def execute(self, command: str) -> list[str]: ...
+ def cd(self, remotepath: _Path | None = ...) -> ContextManager[None]: ... # noqa: F811
+ def chdir(self, remotepath: _Path) -> None: ...
+ def cwd(self, remotepath: _Path) -> None: ...
+ def chmod(self, remotepath: _Path, mode: int = ...) -> None: ...
+ def chown(self, remotepath: _Path, uid: int | None = ..., gid: int | None = ...) -> None: ...
+ def getcwd(self) -> str: ...
+ def listdir(self, remotepath: _Path = ...) -> list[str]: ...
+ def listdir_attr(self, remotepath: _Path = ...) -> list[paramiko.SFTPAttributes]: ...
+ def mkdir(self, remotepath: _Path, mode: int = ...) -> None: ...
+ def normalize(self, remotepath: _Path) -> str: ...
+ def isdir(self, remotepath: _Path) -> bool: ...
+ def isfile(self, remotepath: _Path) -> bool: ...
+ def makedirs(self, remotedir: _Path, mode: int = ...) -> None: ...
+ def readlink(self, remotelink: _Path) -> str: ...
+ def remove(self, remotefile: _Path) -> None: ...
+ def unlink(self, remotefile: _Path) -> None: ...
+ def rmdir(self, remotepath: _Path) -> None: ...
+ def rename(self, remote_src: _Path, remote_dest: _Path) -> None: ...
+ def stat(self, remotepath: _Path) -> paramiko.SFTPAttributes: ...
+ def lstat(self, remotepath: _Path) -> paramiko.SFTPAttributes: ...
+ def close(self) -> None: ...
+ def open(self, remote_file: _Path, mode: str = ..., bufsize: int = ...) -> paramiko.SFTPFile: ...
+ def exists(self, remotepath: _Path) -> bool: ...
+ def lexists(self, remotepath: _Path) -> bool: ...
+ def symlink(self, remote_src: _Path, remote_dest: _Path) -> None: ...
+ def truncate(self, remotepath: _Path, size: int) -> int: ...
+ def walktree( # noqa: F811
+ self, remotepath: _Path, fcallback: _PathCallback, dcallback: _PathCallback, ucallback: _PathCallback, recurse: bool = ...
+ ) -> None: ...
+ @property
+ def sftp_client(self) -> paramiko.SFTPClient: ...
+ @property
+ def active_ciphers(self) -> tuple[str, str]: ...
+ @property
+ def active_compression(self) -> tuple[str, str]: ...
+ @property
+ def security_options(self) -> paramiko.SecurityOptions: ...
+ @property
+ def logfile(self) -> str | Literal[False]: ...
+ @property
+ def timeout(self) -> float | None: ...
+ @timeout.setter
+ def timeout(self, val: float | None) -> None: ...
+ @property
+ def remote_server_key(self) -> paramiko.PKey: ...
+ def __del__(self) -> None: ...
+ def __enter__(self) -> "Connection": ...
+ def __exit__(
+ self, etype: Type[BaseException] | None, value: BaseException | None, traceback: TracebackType | None
+ ) -> None: ...