Source code for wisefood.entities.articles

# entities/articles.py
from typing import Any, Dict, List, Optional, Union

from .base import BaseEntity, BaseCollectionProxy, Field


[docs] class Article(BaseEntity): """ Schema for /articles entities. All attributes here are thin accessors over `self.data`. """ ENDPOINT = "articles" URN_PREFIX = "urn:article:" # Core metadata id: str = Field("id", read_only=True) title: str = Field("title", default="") description: Optional[str] = Field("description") status: str = Field("status", default="active") type: str = Field("type", default="article") # Annotation / targeting keywords: List[str] = Field("keywords", default_factory=list) reader_group: Optional[str] = Field("reader_group") age_group: Optional[str] = Field("age_group") population_group: Optional[str] = Field("population_group") geographic_context: Optional[Dict[str, Any]] = Field("geographic_context") biological_model: Optional[str] = Field("biological_model") topics: List[str] = Field("topics", default_factory=list) study_type: Optional[str] = Field("study_type") hard_exclusion_flags: List[str] = Field("hard_exclusion_flags", default_factory=list) annotation_confidence: Optional[int] = Field("annotation_confidence") # Links / identifiers url: Optional[str] = Field("url") license: Optional[str] = Field("license") external_id: Optional[str] = Field("external_id") doi: Optional[str] = Field("doi") organization_urn: Optional[str] = Field("organization_urn") # Content-ish fields abstract: Optional[str] = Field("abstract") category: Optional[str] = Field("category") content: str = Field("content", default="") venue: Optional[str] = Field("venue") publication_year: Optional[Union[int, str]] = Field("publication_year") open_access: Optional[bool] = Field("open_access") citation_count: Optional[int] = Field("citation_count") reference_count: Optional[int] = Field("reference_count") influential_citation_count: Optional[int] = Field("influential_citation_count") # Authorship & tags authors: List[str] = Field("authors", default_factory=list) tags: List[str] = Field("tags", default_factory=list) ai_tags: List[str] = Field("ai_tags", default_factory=list) language: Optional[str] = Field("language") # Classification region: Optional[str] = Field("region") ai_category: Optional[str] = Field("ai_category") # Key takeaways key_takeaways: List[str] = Field("key_takeaways", default_factory=list) ai_key_takeaways: List[str] = Field("ai_key_takeaways", default_factory=list) # Timestamps / system fields creator: Optional[str] = Field("creator", read_only=True) created_at: Optional[str] = Field("created_at", read_only=True) updated_at: Optional[str] = Field("updated_at", read_only=True) embedded_at: Optional[str] = Field("embedded_at") # Extra metadata extras: Dict[str, Any] = Field("extras", default_factory=dict)
[docs] class ArticlesProxy(BaseCollectionProxy): ENTITY_CLS = Article ENDPOINT = "articles"