updating and refactoring codebase for improved performance and maintainability
This commit is contained in:
+33
-33
@@ -40,49 +40,49 @@ except ImportError:
|
||||
PdfWriter = None
|
||||
PdfReader = None
|
||||
|
||||
try:
|
||||
from SYS.metadata import (
|
||||
read_tags_from_file,
|
||||
merge_multiple_tag_lists,
|
||||
)
|
||||
# Stub fallbacks used before SYS.metadata is lazily imported (or if unavailable).
|
||||
HAS_METADATA_API: bool = False
|
||||
_metadata_loaded: bool = False
|
||||
|
||||
HAS_METADATA_API = True
|
||||
except ImportError:
|
||||
HAS_METADATA_API = False
|
||||
|
||||
def read_tags_from_file(file_path: Path) -> List[str]:
|
||||
return []
|
||||
def read_tags_from_file(file_path: Path) -> List[str]:
|
||||
return []
|
||||
|
||||
def write_tags_to_file(
|
||||
file_path: Path,
|
||||
tags: List[str],
|
||||
source_hashes: Optional[List[str]] = None,
|
||||
url: Optional[List[str]] = None,
|
||||
append: bool = False,
|
||||
) -> bool:
|
||||
return False
|
||||
|
||||
def dedup_tags_by_namespace(tags: List[str]) -> List[str]:
|
||||
return tags
|
||||
def merge_multiple_tag_lists(sources: List[List[str]],
|
||||
strategy: str = "first") -> List[str]:
|
||||
out: List[str] = []
|
||||
seen: set[str] = set()
|
||||
for src in sources:
|
||||
for t in src or []:
|
||||
s = str(t)
|
||||
if s and s not in seen:
|
||||
out.append(s)
|
||||
seen.add(s)
|
||||
return out
|
||||
|
||||
def merge_multiple_tag_lists(sources: List[List[str]],
|
||||
strategy: str = "first") -> List[str]:
|
||||
out: List[str] = []
|
||||
seen: set[str] = set()
|
||||
for src in sources:
|
||||
for t in src or []:
|
||||
s = str(t)
|
||||
if s and s not in seen:
|
||||
out.append(s)
|
||||
seen.add(s)
|
||||
return out
|
||||
|
||||
def write_metadata(*_args: Any, **_kwargs: Any) -> None:
|
||||
return None
|
||||
def _ensure_metadata_imports() -> None:
|
||||
"""Lazily import SYS.metadata to avoid loading Cryptodome (~1s) at startup."""
|
||||
global _metadata_loaded, HAS_METADATA_API, read_tags_from_file, merge_multiple_tag_lists
|
||||
if _metadata_loaded:
|
||||
return
|
||||
_metadata_loaded = True
|
||||
try:
|
||||
from SYS.metadata import ( # type: ignore[assignment]
|
||||
read_tags_from_file as _rtf,
|
||||
merge_multiple_tag_lists as _mml,
|
||||
)
|
||||
read_tags_from_file = _rtf # type: ignore[assignment]
|
||||
merge_multiple_tag_lists = _mml # type: ignore[assignment]
|
||||
HAS_METADATA_API = True
|
||||
except ImportError:
|
||||
HAS_METADATA_API = False
|
||||
|
||||
|
||||
def _run(result: Any, args: Sequence[str], config: Dict[str, Any]) -> int:
|
||||
"""Merge multiple files into one."""
|
||||
_ensure_metadata_imports()
|
||||
|
||||
# Parse help
|
||||
if should_show_help(args):
|
||||
|
||||
Reference in New Issue
Block a user