Source code for compass.utilities.io

"""COMPASS I/O utilities"""

import pprint
import logging

from elm.web.file_loader import AsyncLocalFileLoader


logger = logging.getLogger(__name__)


[docs] async def load_local_docs(fps, **kwargs): """Load a document for each input filepath Parameters ---------- fps : iterable of path-like Iterable of paths representing documents to load. kwargs Keyword-argument pairs to initialize :class:`elm.web.file_loader.AsyncLocalFileLoader`. Returns ------- list List of non-empty document instances containing information from the local documents. If a file could not be loaded (i.e. document instance is empty), it will not be included in the output list. """ logger.trace("Loading docs for the following paths:\n%r", fps) logger.trace( "kwargs for AsyncLocalFileLoader:\n%s", pprint.PrettyPrinter().pformat(kwargs), ) file_loader = AsyncLocalFileLoader(**kwargs) docs = await file_loader.fetch_all(*fps) page_lens = { doc.attrs.get("source_fp", "Unknown"): len(doc.pages) for doc in docs } logger.debug( "Loaded the following number of pages for docs:\n%s", pprint.PrettyPrinter().pformat(page_lens), ) return [doc for doc in docs if not doc.empty]