diff --git a/src/ptulsconv/pdf/__init__.py b/src/ptulsconv/pdf/__init__.py index 49d6fa6..df9bb92 100644 --- a/src/ptulsconv/pdf/__init__.py +++ b/src/ptulsconv/pdf/__init__.py @@ -284,15 +284,10 @@ class GRect: return self.inset_xy(d, d) def __repr__(self): - return "" % ( - self.x, - self.y, - self.width, - self.height, - ) + return f"" def divide_x(self, x_list, direction="l"): - ret_list = list() + ret_list = [] rem = self for item in x_list: @@ -302,7 +297,7 @@ class GRect: return ret_list, rem def divide_y(self, y_list, direction="u"): - ret_list = list() + ret_list = [] rem = self for item in y_list: diff --git a/src/ptulsconv/reporting.py b/src/ptulsconv/reporting.py index 8fc3b70..7ea7b9c 100644 --- a/src/ptulsconv/reporting.py +++ b/src/ptulsconv/reporting.py @@ -9,30 +9,30 @@ import sys def print_banner_style(message): if sys.stderr.isatty(): - sys.stderr.write("\n\033[1m%s\033[0m\n\n" % message) + sys.stderr.write(f"\n\033[1m{message}\033[0m\n\n") else: - sys.stderr.write("\n%s\n\n" % message) + sys.stderr.write(f"\n{message}\n\n") def print_section_header_style(message): if sys.stderr.isatty(): - sys.stderr.write("\n\033[4m%s\033[0m\n\n" % message) + sys.stderr.write(f"\n\033[4m{message}\033[0m\n\n") else: - sys.stderr.write("%s\n\n" % message) + sys.stderr.write(f"{message}\n\n") def print_status_style(message): if sys.stderr.isatty(): - sys.stderr.write("\033[3m - %s\033[0m\n" % message) + sys.stderr.write(f"\033[3m - {message}\033[0m\n") else: - sys.stderr.write(" - %s\n" % message) + sys.stderr.write(f" - {message}\n") def print_warning(warning_string): if sys.stderr.isatty(): - sys.stderr.write("\033[3m - %s\033[0m\n" % warning_string) + sys.stderr.write(f"\033[3m - {warning_string}\033[0m\n") else: - sys.stderr.write(" - %s\n" % warning_string) + sys.stderr.write(f" - {warning_string}\n") def print_advisory_tagging_error( @@ -44,30 +44,30 @@ def print_advisory_tagging_error( ok_string = failed_string[:position] not_ok_string = failed_string[position:] sys.stderr.write( - '\033[32m"%s\033[31;1m%s"\033[0m\n' % (ok_string, not_ok_string) + f'\033[32m"{ok_string}\033[31;1m{not_ok_string}"\033[0m\n' ) if parent_track_name is not None: - sys.stderr.write(' ! > On track "%s"\n' % parent_track_name) + sys.stderr.write(f' ! > On track "{parent_track_name}"\n') if clip_time is not None: - sys.stderr.write(" ! > In clip name at %s\n" % clip_time) + sys.stderr.write(f" ! > In clip name at {clip_time}\n") else: sys.stderr.write("\n") - sys.stderr.write(' ! Tagging error: "%s"\n' % failed_string) + sys.stderr.write(f' ! Tagging error: "{failed_string}"\n') sys.stderr.write(" ! %s _______________⬆\n" % (" " * position)) if parent_track_name is not None: - sys.stderr.write(' ! > On track "%s"\n' % parent_track_name) + sys.stderr.write(f' ! > On track "{parent_track_name}"\n') if clip_time is not None: - sys.stderr.write(" ! > In clip name at %s\n" % clip_time) + sys.stderr.write(f" ! > In clip name at {clip_time}\n") sys.stderr.write("\n") def print_fatal_error(message): if sys.stderr.isatty(): - sys.stderr.write("\n\033[5;31;1m*** %s ***\033[0m\n" % message) + sys.stderr.write(f"\n\033[5;31;1m*** {message} ***\033[0m\n") else: - sys.stderr.write("\n%s\n" % message) + sys.stderr.write(f"\n{message}\n") diff --git a/src/ptulsconv/validations.py b/src/ptulsconv/validations.py index 8b525a8..e7890f1 100644 --- a/src/ptulsconv/validations.py +++ b/src/ptulsconv/validations.py @@ -2,9 +2,10 @@ Validation logic for enforcing various consistency rules. """ +from __future__ import annotations + from collections.abc import Iterator from dataclasses import dataclass -from typing import Optional from ptulsconv.docparser.adr_entity import ADRLine @@ -12,7 +13,7 @@ from ptulsconv.docparser.adr_entity import ADRLine @dataclass class ValidationError: message: str - event: Optional[ADRLine] = None + event: ADRLine | None = None def report_message(self): if self.event is not None: @@ -25,7 +26,7 @@ class ValidationError: def validate_unique_count(input_lines: Iterator[ADRLine], field="title", count=1): - values = set(list(map(lambda e: getattr(e, field), input_lines))) + values = {getattr(e, field) for e in input_lines} if len(values) > count: yield ValidationError( message=f"Field {field} has too many values (max={count}): {values}" @@ -36,15 +37,13 @@ def validate_value(input_lines: Iterator[ADRLine], key_field, predicate): for event in input_lines: val = getattr(event, key_field) if not predicate(val): - yield ValidationError( - message=f"Field {val} not in range", event=event - ) + yield ValidationError(message=f"Field {val} not in range", event=event) def validate_unique_field( input_lines: Iterator[ADRLine], field="cue_number", scope=None ): - values = dict() + values = {} for event in input_lines: this = getattr(event, field) if scope is not None: @@ -72,7 +71,7 @@ def validate_dependent_value( Validates that two events with the same value in `key_field` always have the same value in `dependent_field` """ - key_values = set(getattr(x, key_field) for x in input_lines) + key_values = {getattr(x, key_field) for x in input_lines} for key_value in key_values: rows = [