diff --git a/src/bluesearch/database/article.py b/src/bluesearch/database/article.py index 6c95360a1..ebe76c94f 100644 --- a/src/bluesearch/database/article.py +++ b/src/bluesearch/database/article.py @@ -25,10 +25,10 @@ import string import unicodedata from abc import ABC, abstractmethod -from dataclasses import dataclass +from dataclasses import dataclass, field from io import StringIO from pathlib import Path -from typing import IO, Generator, Iterable, Optional, Sequence, Tuple +from typing import IO, Dict, Generator, Iterable, List, Optional, Sequence, Tuple from xml.etree.ElementTree import Element # nosec from zipfile import ZipFile @@ -1071,6 +1071,7 @@ class Article(DataClassJSONMixin): arxiv_id: Optional[str] = None doi: Optional[str] = None uid: Optional[str] = None + topics: Dict[str, Dict[str, List[str]]] = field(default_factory=dict) @classmethod def parse(cls, parser: ArticleParser) -> Article: diff --git a/tests/unit/database/test_article.py b/tests/unit/database/test_article.py index 73f8777ee..0079ef2c1 100644 --- a/tests/unit/database/test_article.py +++ b/tests/unit/database/test_article.py @@ -581,6 +581,11 @@ def test_parse(self): ): assert text == text_want + assert article.topics == {} + test_dict = {"article": {"topic_type": ["this", "is", "a", "list"]}} + article.topics.update(test_dict) + assert article.topics == test_dict + def test_str(self): parser = SimpleTestParser() article = Article.parse(parser)