Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def citekey_to_csl_item(citekey, prune=True):
"""
Generate a CSL Item (Python dictionary) for the input citekey.
"""
from manubot.cite.csl_item import CSL_Item
from manubot import __version__ as manubot_version
citekey == standardize_citekey(citekey, warn_if_changed=True)
source, identifier = citekey.split(":", 1)
if source not in citeproc_retrievers:
msg = f"Unsupported citation source {source!r} in {citekey!r}"
raise ValueError(msg)
citeproc_retriever = import_function(citeproc_retrievers[source])
csl_item = citeproc_retriever(identifier)
csl_item = CSL_Item(csl_item)
note_text = f"This CSL JSON Item was automatically generated by Manubot v{manubot_version} using citation-by-identifier."
note_dict = {"standard_id": citekey}
csl_item.note_append_text(note_text)
csl_item.note_append_dict(note_dict)
short_citekey = shorten_citekey(citekey)
csl_item.set_id(short_citekey)
csl_item.clean(prune=prune)
return csl_item
csl_items = []
for path in paths:
path = pathlib.Path(path)
if not path.is_file():
logging.warning(
f"process.load_bibliographies is skipping a non-existent path: {path}"
)
continue
for csl_item in load_bibliography(path):
csl_item.note_append_text(
f"This CSL JSON Item was loaded by Manubot v{manubot_version} from a manual reference file."
)
csl_item.note_append_dict({"manual_reference_filename": path.name})
csl_items.append(csl_item)
csl_items.extend(map(CSL_Item, extra_csl_items))
manual_refs = dict()
for csl_item in csl_items:
try:
csl_item.standardize_id()
except Exception:
csl_item_str = json.dumps(csl_item, indent=2)
logging.info(
f"Skipping csl_item where setting standard_id failed:\n{csl_item_str}",
exc_info=True,
)
continue
standard_id = csl_item["id"]
csl_item.set_id(shorten_citekey(standard_id))
csl_item.clean()
manual_refs[standard_id] = csl_item
return manual_refs
csl_items = []
if use_pandoc_citeproc:
from manubot.pandoc.bibliography import (
load_bibliography as load_bibliography_pandoc,
)
csl_items = load_bibliography_pandoc(path)
if not isinstance(csl_items, list):
logging.error(
f"process.load_bibliography: csl_items read from {path} are of type {type(csl_items)}. "
"Setting csl_items to an empty list."
)
csl_items = []
from manubot.cite.csl_item import CSL_Item
csl_items = [CSL_Item(csl_item) for csl_item in csl_items]
return csl_items
def assert_csl_item_type(x):
if not isinstance(x, CSL_Item):
raise TypeError(f"Expected CSL_Item object, got {type(x)}")