Fix crash on Python < 3.14 when paramiko is not installed
The return annotation of _ssh_connect referenced paramiko, which Python < 3.14 evaluates at class definition, raising NameError when paramiko (an optional dependency) is missing. Postpone evaluation of annotations, and mark the return type as Optional.
This commit is contained in:
@@ -11,6 +11,9 @@ Classes:
|
|||||||
Backup
|
Backup
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Avoid evaluating annotations at definition time, as they reference optional modules (paramiko)
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
# Import libraries
|
# Import libraries
|
||||||
import traceback
|
import traceback
|
||||||
import sys
|
import sys
|
||||||
@@ -327,7 +330,7 @@ class Backup:
|
|||||||
except IndexError:
|
except IndexError:
|
||||||
logger.info('No previous backups available')
|
logger.info('No previous backups available')
|
||||||
|
|
||||||
def _ssh_connect(self, homedir: str = '') -> paramiko.client.SSHClient:
|
def _ssh_connect(self, homedir: str = '') -> Optional[paramiko.client.SSHClient]:
|
||||||
try:
|
try:
|
||||||
ssh = paramiko.SSHClient()
|
ssh = paramiko.SSHClient()
|
||||||
except NameError:
|
except NameError:
|
||||||
|
|||||||
Reference in New Issue
Block a user