fix: resolve pyright errors in processing modules
- add Abstract type annotation and import in metadata.py - add type annotations for list variables to fix unknown append types - fix is_doi return type by wrapping with bool() in validation.py All tests continue to pass and type checking is now clean across all processing and validation modules.
This commit is contained in:
parent
e003592430
commit
34c81750ce
4 changed files with 12 additions and 9 deletions
|
@ -6,12 +6,15 @@ including license processing and abstract extraction/cleaning.
|
|||
"""
|
||||
|
||||
import re
|
||||
from typing import Any
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from rich.console import Console
|
||||
|
||||
from ..core.models import Abstract, License
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .client import APIClient
|
||||
|
||||
|
||||
class LicenseProcessor:
|
||||
"""
|
||||
|
@ -68,12 +71,12 @@ class AbstractProcessor:
|
|||
# Icons for console output - TODO: should be moved to a constants module
|
||||
ICONS = {"info": "ℹ️", "warning": "⚠️", "error": "❌"}
|
||||
|
||||
def __init__(self, api_client, console: Console | None = None):
|
||||
def __init__(self, api_client: "APIClient", console: Console | None = None):
|
||||
"""
|
||||
Initialize with an APIClient instance.
|
||||
|
||||
Args:
|
||||
api_client: The API client to use for requests.
|
||||
api_client (APIClient): The API client to use for requests.
|
||||
console (Console | None): Rich console instance for output.
|
||||
"""
|
||||
self.api_client = api_client
|
||||
|
|
|
@ -21,7 +21,7 @@ from ..core.metadata_fields import (
|
|||
ControlledVocabularyMetadataField,
|
||||
PrimitiveMetadataField,
|
||||
)
|
||||
from ..core.models import Person
|
||||
from ..core.models import Abstract, Person
|
||||
from ..processing.citation import CitationBuilder
|
||||
from ..processing.utils import NameProcessor, PIFinder, SubjectMapper
|
||||
|
||||
|
@ -335,13 +335,13 @@ class MetadataProcessor:
|
|||
|
||||
return return_dict
|
||||
|
||||
def _build_description(self, data: dict[str, Any], abstract) -> str:
|
||||
def _build_description(self, data: dict[str, Any], abstract: Abstract) -> str:
|
||||
"""
|
||||
Build the description field by combining a header and the abstract.
|
||||
|
||||
Args:
|
||||
data (dict[str, Any]): The metadata.
|
||||
abstract: The abstract object.
|
||||
abstract (Abstract): The abstract object.
|
||||
|
||||
Returns:
|
||||
str: The full description.
|
||||
|
@ -404,7 +404,7 @@ class MetadataProcessor:
|
|||
list[Person]: List of matching PIs for use as corresponding authors.
|
||||
"""
|
||||
involved_pis: list[Person] = []
|
||||
authors_in_publication = []
|
||||
authors_in_publication: list[Person] = []
|
||||
|
||||
# Build list of authors from publication
|
||||
for authorship in data.get("authorships", []):
|
||||
|
|
|
@ -223,7 +223,7 @@ class SubjectMapper:
|
|||
Returns:
|
||||
list[str]: List of mapped controlled vocabulary terms.
|
||||
"""
|
||||
mapped = []
|
||||
mapped: list[str] = []
|
||||
for subject in subjects:
|
||||
# Try exact match first
|
||||
if subject in cls.CONTROLLED_VOCAB:
|
||||
|
|
|
@ -29,7 +29,7 @@ def validate_doi(doi: str) -> bool:
|
|||
Returns:
|
||||
bool: True if the DOI is valid, False otherwise.
|
||||
"""
|
||||
return is_doi(doi)
|
||||
return bool(is_doi(doi))
|
||||
|
||||
|
||||
def normalize_doi(doi: str) -> str:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue