"""Locate tablet documents, including the parts of a large checked copy.""" from pathlib import Path from copienator.json_io import read_json MAX_HEIGHT_PX = 32000 def copy_documents(directory: Path) -> list[Path]: try: metadata = read_json(directory / "bnote.json", default={}) except (OSError, ValueError): # Ordinary documents need no manifest. Let the reader report bad metadata. return [directory] parts = metadata.get("parts", []) if isinstance(metadata, dict) else [] return [directory / name for name in parts] if parts else [directory] def tablet_documents(root: Path) -> list[tuple[str, Path]]: documents = [] for directory in sorted(root.iterdir()): if not directory.is_dir(): continue for part in copy_documents(directory): name = directory.name if part == directory else f"{directory.name} {part.name}" documents.append((name, part)) return documents