Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
)
csl_items = list()
failures = list()
for standard_citekey in citekeys_df.standard_citekey.unique():
if standard_citekey in manual_refs:
csl_items.append(manual_refs[standard_citekey])
continue
elif standard_citekey.startswith("raw:"):
logging.error(
f"CSL JSON Data with a standard_citekey of {standard_citekey!r} not found in manual-references.json. "
"Metadata must be provided for raw citekeys."
)
failures.append(standard_citekey)
try:
csl_item = citekey_to_csl_item(standard_citekey)
csl_items.append(csl_item)
except Exception:
logging.exception(f"Citeproc retrieval failure for {standard_citekey!r}")
failures.append(standard_citekey)
logging.info(
f"requests-cache finished with {len(cache.responses)} cached responses"
)
requests_cache.uninstall_cache()
if failures:
message = "CSL JSON Data retrieval failed for the following standardized citation keys:\n{}".format(
"\n".join(failures)
)
logging.error(message)
def citation_to_citeproc(*args, **kwargs):
import warnings
warnings.warn(
"'citation_to_citeproc' has been renamed to 'citekey_to_csl_item'"
" and will be removed in a future release.",
category=FutureWarning,
)
return citekey_to_csl_item(*args, **kwargs)
def cli_cite(args):
"""
Main function for the manubot cite command-line interface.
Does not allow user to directly specify Pandoc's --to argument, due to
inconsistent citaiton rendering by output format. See
https://github.com/jgm/pandoc/issues/4834
"""
# generate CSL JSON data
csl_list = list()
for citekey in args.citekeys:
try:
if not is_valid_citekey(citekey):
continue
citekey = standardize_citekey(citekey)
csl_item = citekey_to_csl_item(citekey, prune=args.prune_csl)
csl_list.append(csl_item)
except Exception as error:
logging.error(
f"citekey_to_csl_item for {citekey!r} failed "
f"due to a {error.__class__.__name__}:\n{error}"
)
logging.info(error, exc_info=True)
# output CSL JSON data, if --render is False
if not args.render:
write_file = (
args.output.open("w", encoding="utf-8") if args.output else sys.stdout
)
with write_file:
json.dump(csl_list, write_file, ensure_ascii=False, indent=2)
write_file.write("\n")