From 27924013d9441147b1942aacebf706d5785b2e0d Mon Sep 17 00:00:00 2001 From: furtest Date: Thu, 1 Jan 2026 17:24:46 +0100 Subject: [PATCH] Bug fixes and small improvements Fix : - paths : true instead of True - paths : Path has no len convert to str first to get the number of characters Improvements : - Replace all PosixPath by Path --- src/unisync/config.py | 14 +++++++------- src/unisync/paths.py | 15 ++++++++------- src/unisync/synchroniser.py | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/unisync/config.py b/src/unisync/config.py index 0677fb9..e615c50 100644 --- a/src/unisync/config.py +++ b/src/unisync/config.py @@ -3,7 +3,7 @@ from configparser import UNNAMED_SECTION from dataclasses import dataclass, field -from pathlib import Path, PosixPath +from pathlib import Path import ipaddress import configparser @@ -13,10 +13,10 @@ class ServerConfig: Dataclass keeping the config for connecting to the server """ user: str - sshargs: list[str] | None = field(default_factory=list) + sshargs: str = "" hostname: str = "" ip: str = "" - port: int = 22 + port: int | None = 22 def __post_init__(self): """ @@ -52,7 +52,7 @@ class OtherConfig: """ Dataclass keeping miscellanous configuration options """ - cache_dir_path: PosixPath = Path("~/.unisync").expanduser() + cache_dir_path: Path = Path("~/.unisync").expanduser() @dataclass class Config: @@ -82,9 +82,9 @@ def load_config(config_path:str) -> Config: server_config = ServerConfig( config.get(server_section, "user"), - config.get(server_section, "sshargs", fallback=None), - config.get(server_section, "hostname", fallback=None), - config.get(server_section, "ip", fallback=None), + config.get(server_section, "sshargs", fallback=""), + config.get(server_section, "hostname", fallback=""), + config.get(server_section, "ip", fallback=""), config.getint(server_section, "port", fallback=None) ) roots_config = RootsConfig( diff --git a/src/unisync/paths.py b/src/unisync/paths.py index c06a15f..6048c46 100644 --- a/src/unisync/paths.py +++ b/src/unisync/paths.py @@ -4,12 +4,13 @@ import os.path import subprocess +import sys -from pathlib import Path, PosixPath +from pathlib import Path class PathsManager: - def __init__(self, local_dir:PosixPath, cache_dir:PosixPath): + def __init__(self, local_dir:Path, cache_dir:Path): """ Creates a PathsManager with the necessary data Args: @@ -24,7 +25,7 @@ class PathsManager: raise ValueError("Invalid cache directory") self.cache_dir = cache_dir - self.paths_file:PosixPath = self.cache_dir / "paths" + self.paths_file:Path = self.cache_dir / "paths" if not self.paths_file.is_file(): raise ValueError("The paths file does not exist") @@ -48,7 +49,7 @@ class PathsManager: "-p", "-", self.local_dir ] - nnn_process = subprocess.Popen(command, stdout=subprocess.PIPE) + nnn_process:subprocess.Popen = subprocess.Popen(command, stdout=subprocess.PIPE) try: ret_code = nnn_process.wait(timeout=choice_timeout) except subprocess.TimeoutExpired as e: @@ -57,18 +58,18 @@ class PathsManager: if ret_code != 0: print("File selection failed", file=sys.stderr) - raise subprocess.CalledProcessError("File selection failed") + raise subprocess.CalledProcessError(1, "File selection failed") paths_list:list[str] = [] while (next_path := nnn_process.stdout.readline()) != b'': next_path = next_path.decode().strip() # Make the path relative to the top directory - next_path = next_path[len(self.local_dir):].lstrip("/") + next_path = next_path[len(str(self.local_dir)):].lstrip("/") paths_list.append(next_path) return paths_list def add_files_to_sync(self): - while true: + while True: try: paths = self.user_select_files() break diff --git a/src/unisync/synchroniser.py b/src/unisync/synchroniser.py index fc07e76..8ece7d9 100644 --- a/src/unisync/synchroniser.py +++ b/src/unisync/synchroniser.py @@ -182,7 +182,7 @@ class Synchroniser: - subprocess.CalledProcessError: An error occured with sshfs """ # Get the absolute path to the correct .data directory resolving symlinks - path_to_mount:PosixPath = Path(f"{self.local}/../.data").resolve() + path_to_mount:Path = Path(f"{self.local}/../.data").resolve() if path_to_mount.is_mount(): raise RemoteMountedError # Check if it is an empty directory