Compare commits

...

2 Commits

View File

@ -29,12 +29,12 @@ def format_size(n: int) -> str:
return humanfriendly.format_size(n, keep_width=True, binary=True)
class Config:
roots: list[bytes]
roots: typing.List[bytes]
max_file_size: typing.Optional[int]
one_file_system: bool
exclude_caches: bool
exclude: list[bytes]
force_include: list[bytes]
exclude: typing.List[bytes]
force_include: typing.List[bytes]
notify_email: typing.Optional[str]
def __init__(self, configfile: str):
@ -93,8 +93,10 @@ class Config:
self.force_include_re = ([ re.compile(x) for x in a ],
[ re.compile(x) for x in b ])
def match_re(self, re: tuple[list[typing.Pattern],
list[typing.Pattern]], path: bytes):
def match_re(self,
re: typing.Tuple[typing.List[typing.Pattern],
typing.List[typing.Pattern]],
path: bytes):
# Path matches if it matches at least one regex in
# re[0] and no regex in re[1].
for a in re[0]:
@ -109,10 +111,10 @@ class Backup:
def __init__(self, config: Config, dry_run: bool):
self.config = config
self.dry_run = dry_run
self.root_seen: dict[bytes, bool] = {}
self.root_seen: typing.Dict[bytes, bool] = {}
# Saved log messages
self.logs: list[tuple[str, str]] = []
self.logs: typing.List[typing.Tuple[str, str]] = []
def out(self, path: bytes):
self.outfile.write(path + (b'\n' if self.dry_run else b'\0'))
@ -227,7 +229,7 @@ class Backup:
self.log('E', f"can't read {pstr(path)}: {str(e)}")
return
def main(argv: list[str]):
def main(argv: typing.List[str]):
import argparse
def humansize(string):
@ -275,7 +277,7 @@ def main(argv: list[str]):
backup.log('W', f"failed to parse variables from {args.vars}: {str(e)}")
# Run backup
captured_output: list[bytes] = []
captured_output: typing.List[bytes] = []
if args.dry_run:
if args.debug:
@ -309,6 +311,8 @@ def main(argv: list[str]):
# Use a thread to capture output
def reader_thread(fh):
nonlocal borg_saw_warnings
nonlocal borg_saw_errors
last_progress = 0
for line in fh:
try: