chore: Fix strict pyright analysis errors
This commit is contained in:
parent
8093259551
commit
6b35b2f918
4 changed files with 30 additions and 16 deletions
|
@ -1,6 +1,6 @@
|
|||
import math
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Optional
|
||||
from typing import Any, Optional, cast
|
||||
|
||||
import chevron
|
||||
import papis.config
|
||||
|
@ -127,7 +127,7 @@ class Annotation:
|
|||
"""
|
||||
rawvalue: Any = papis.config.general_get(key, section=section)
|
||||
if isinstance(rawvalue, dict):
|
||||
return rawvalue
|
||||
return cast(dict[str, str], rawvalue)
|
||||
try:
|
||||
rawvalue = eval(rawvalue)
|
||||
except Exception:
|
||||
|
@ -142,4 +142,4 @@ class Annotation:
|
|||
)
|
||||
)
|
||||
|
||||
return rawvalue
|
||||
return cast(dict[str, str], rawvalue)
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# pyright: strict, reportMissingTypeStubs=false, reportUnknownMemberType=false
|
||||
from pathlib import Path
|
||||
from typing import cast
|
||||
|
||||
import fitz
|
||||
import Levenshtein
|
||||
import magic
|
||||
import papis.config
|
||||
import papis.logging
|
||||
import pymupdf as mu
|
||||
|
||||
from papis_extract.annotation import Annotation
|
||||
from papis_extract.extractors import ExtractionError
|
||||
|
@ -30,7 +32,9 @@ class PdfExtractor:
|
|||
annotations: list[Annotation] = []
|
||||
try:
|
||||
with mu.Document(filename) as doc:
|
||||
for page in doc: # pyright: ignore [reportUnknownVariableType] - missing stub
|
||||
for (
|
||||
page
|
||||
) in doc: # pyright: ignore [reportUnknownVariableType] - missing stub
|
||||
page = cast(mu.Page, page)
|
||||
annot: mu.Annot
|
||||
for annot in page.annots():
|
||||
|
@ -61,7 +65,7 @@ class PdfExtractor:
|
|||
f"{'annotation' if len(annotations) == 1 else 'annotations'} for {filename}."
|
||||
)
|
||||
|
||||
except mu.FileDataError as e:
|
||||
except mu.FileDataError:
|
||||
raise ExtractionError
|
||||
|
||||
return annotations
|
||||
|
@ -82,7 +86,7 @@ class PdfExtractor:
|
|||
should both be included or are the same, using
|
||||
Levenshtein distance.
|
||||
"""
|
||||
content = annotation.info["content"].replace("\n", " ")
|
||||
content = cast(str, annotation.info["content"].replace("\n", " "))
|
||||
written = page.get_textbox(annotation.rect).replace("\n", " ")
|
||||
|
||||
# highlight with selection in note
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# pyright: strict, reportUnknownMemberType=false
|
||||
from pathlib import Path
|
||||
|
||||
import magic
|
||||
|
@ -42,9 +43,18 @@ class PocketBookExtractor:
|
|||
|
||||
annotations: list[Annotation] = []
|
||||
for bm in html.select("div.bookmark"):
|
||||
content = (bm.select_one("div.bm-text>p") or html.new_string("")).text
|
||||
note = (bm.select_one("div.bm-note>p") or html.new_string("")).text
|
||||
page = (bm.select_one("p.bm-page") or html.new_string("")).text
|
||||
content = str(
|
||||
(bm.select_one("div.bm-text>p") or html.new_string("")).text
|
||||
or "" # pyright: ignore [reportUnknownArgumentType]
|
||||
)
|
||||
note = str(
|
||||
(bm.select_one("div.bm-note>p") or html.new_string("")).text
|
||||
or "" # pyright: ignore [reportUnknownArgumentType]
|
||||
)
|
||||
page = int(
|
||||
(bm.select_one("p.bm-page") or html.new_string("")).text
|
||||
or 0 # pyright: ignore [reportUnknownArgumentType]
|
||||
)
|
||||
|
||||
el_classes = bm.attrs.get("class", "").split(" ")
|
||||
color = (0, 0, 0)
|
||||
|
@ -55,11 +65,11 @@ class PocketBookExtractor:
|
|||
|
||||
a = Annotation(
|
||||
file=str(filename),
|
||||
content=content or "",
|
||||
note=note or "",
|
||||
content=content,
|
||||
note=note,
|
||||
color=color,
|
||||
type="Highlight",
|
||||
page=int(page),
|
||||
page=page,
|
||||
)
|
||||
annotations.append(a)
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ from papis_extract.annotation import Annotation
|
|||
),
|
||||
],
|
||||
)
|
||||
def test_formatting_replacements(fmt_string, expected):
|
||||
def test_formatting_replacements(fmt_string: str, expected: str):
|
||||
sut = Annotation(
|
||||
"myfile",
|
||||
content="I am the text value",
|
||||
|
@ -36,7 +36,7 @@ def test_formatting_replacements(fmt_string, expected):
|
|||
("{{quote}} ({{doc.author}})", "I am the text value (document-author)"),
|
||||
],
|
||||
)
|
||||
def test_formatting_document_access(fmt_string, expected):
|
||||
def test_formatting_document_access(fmt_string: str, expected: str):
|
||||
sut = Annotation(
|
||||
"myfile",
|
||||
content="I am the text value",
|
||||
|
@ -64,7 +64,7 @@ def test_colorname_matches_exact():
|
|||
(0.51, 0.0, 0.0),
|
||||
],
|
||||
)
|
||||
def test_matches_inexact_colorname(color_value):
|
||||
def test_matches_inexact_colorname(color_value: tuple[float, float, float]):
|
||||
sut = Annotation("testfile", color=color_value, minimum_similarity_color=0.833)
|
||||
c_name = sut.colorname
|
||||
assert c_name == "red"
|
||||
|
|
Loading…
Reference in a new issue