diff --git a/paperoni/cli_helper.py b/paperoni/cli_helper.py index 29234ab..bc12d7e 100644 --- a/paperoni/cli_helper.py +++ b/paperoni/cli_helper.py @@ -173,6 +173,11 @@ class ExtendAttr(): def __init__(self, search_result) -> None: self._search_result = search_result + # TODO: make this class fake it's type so it works with the Ovld package + @property + def __class__(self): + return self._search_result.__class__ + def __getattribute__(self, __name: str) -> Any: try: attr = super().__getattribute__(__name) @@ -250,6 +255,7 @@ def query_papers( # [negate] allow_download: Option & bool = True, ): + excerpt = r"[^\w](Milaâ?|Quebec AI Institute|Montreal Institute for Learning Algorithms|Québec AI Institute Université de Montréal)[^\w]" yield from search( title=title, author=author, diff --git a/paperoni/db/model_export.py b/paperoni/db/model_export.py index ed1f856..3097fb6 100644 --- a/paperoni/db/model_export.py +++ b/paperoni/db/model_export.py @@ -1,5 +1,6 @@ from ovld import ovld +from ..cli_helper import ExtendAttr from .. import model as M from . import schema as sch @@ -86,3 +87,8 @@ def export(venue: sch.Venue): volume=venue.volume, quality=venue.quality, ) + + +@ovld +def export(extattr: ExtendAttr): + return export(extattr._search_result) diff --git a/paperoni/display.py b/paperoni/display.py index 8a58b1b..84a458b 100644 --- a/paperoni/display.py +++ b/paperoni/display.py @@ -7,6 +7,7 @@ from hrepr import H from ovld import ovld +from .cli_helper import ExtendAttr from .db import schema as sch from .model import Author, DatePrecision, Paper, Venue, from_dict @@ -91,7 +92,7 @@ def display(d: dict): @ovld -def display(paper: Union[Paper, sch.Paper]): +def display(paper: Union[Paper, sch.Paper], excerpt=None): """Print the paper in long form on the terminal. Long form includes abstract, affiliations, keywords, number of @@ -119,7 +120,9 @@ def display(paper: Union[Paper, sch.Paper]): print(f" {T.bold_green(typ)} {link}") print_field("Citations", paper.citation_count) if hasattr(paper, "excerpt"): - before, match, after = paper.excerpt + excerpt = paper.excerpt + if excerpt: + before, match, after = excerpt print_field("Excerpt", before + T.bold_red(match) + after) @@ -157,6 +160,13 @@ def display(venue: Venue): print(f" {T.bold_green(typ):20} {link}") +@ovld +def display(extattr: ExtendAttr): + attrs = {**extattr.__dict__} + del attrs["_search_result"] + return display(extattr._search_result, **attrs) + + def join(elems, sep=", ", lastsep=None): """Create a list using the given separators.