MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / _build_paper_dict

Function _build_paper_dict

skills/storage-helper/scripts/db_ops.py:67–104  ·  view source on GitHub ↗

Convert a joined paper row into a normalized dict.

(
    row: sqlite3.Row,
    metadata_key: str = "metadata",
    extra_metadata_keys: Optional[List[str]] = None,
)

Source from the content-addressed store, hash-verified

65
66
67def _build_paper_dict(
68 row: sqlite3.Row,
69 metadata_key: str = "metadata",
70 extra_metadata_keys: Optional[List[str]] = None,
71) -> Dict[str, Any]:
72 """Convert a joined paper row into a normalized dict."""
73 paper = dict(row)
74 paper["authors"] = _deserialize_json_list(paper.get("authors"))
75 paper["embedding"] = _deserialize_json_list(paper.get("embedding"))
76
77 metadata: Dict[str, Any] = {}
78 for extra_key in extra_metadata_keys or []:
79 metadata.update(_load_json_metadata(paper.get(extra_key)))
80
81 metadata.update(_load_json_metadata(paper.get(metadata_key)))
82
83 if metadata_key != "metadata":
84 paper.pop(metadata_key, None)
85 for extra_key in extra_metadata_keys or []:
86 if extra_key != "metadata":
87 paper.pop(extra_key, None)
88
89 if metadata:
90 paper["metadata"] = metadata
91 if "category" in metadata:
92 paper["category"] = metadata["category"]
93 if "score" in metadata:
94 paper["score"] = metadata["score"]
95 if "rank" in metadata:
96 paper["rank"] = metadata["rank"]
97 for key, value in metadata.items():
98 if key not in paper or paper.get(key) in (None, "", [], {}):
99 paper[key] = value
100
101 for list_key in ("categories", "keywords", "topics"):
102 paper[list_key] = _deserialize_json_list(paper.get(list_key))
103
104 return paper
105
106
107def _derive_push_metadata_from_papers(papers: List[Dict[str, Any]]) -> Dict[str, Any]:

Callers 9

get_paper_by_arxiv_idFunction · 0.85
get_paper_by_arxivFunction · 0.85
get_paper_by_doiFunction · 0.85
get_recent_pushesFunction · 0.85
get_latest_pushFunction · 0.85
get_push_for_dateFunction · 0.85
get_push_papersFunction · 0.85

Calls 3

_deserialize_json_listFunction · 0.85
_load_json_metadataFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected