diff --git a/src/lit_agent/identifiers/api.py b/src/lit_agent/identifiers/api.py index c0e39d8..ca1537d 100644 --- a/src/lit_agent/identifiers/api.py +++ b/src/lit_agent/identifiers/api.py @@ -611,20 +611,17 @@ def render_bibliography_to_strings( } try: - entries = _prepare_citeproc_entries( - resolution_result.citations.values(), - ) - style_name = _resolve_csl_style(style) - style_obj = CitationStylesStyle(style_name, validate=False, locale=locale) + entries = list(resolution_result.citations.values()) + style_obj = CitationStylesStyle(style, validate=False, locale=locale) source = CiteProcJSON(entries) bibliography = CitationStylesBibliography(style_obj, source, formatter.plain) - for item_id in source: - citation = Citation([CitationItem(item_id)]) + for item in source.items: + citation = Citation([CitationItem(item.id)]) bibliography.register(citation) rendered = [str(entry) for entry in bibliography.bibliography()] - return rendered, {"renderer": "citeproc", "style": style, "locale": locale} + return rendered, {"renderer": "citeproc-py", "style": style, "locale": locale} except Exception as exc: # pragma: no cover - defensive return _render_compact(resolution_result), { "renderer": "fallback", @@ -681,45 +678,6 @@ def _extract_year(citation: Dict[str, Any]) -> Optional[int]: return None -def _prepare_citeproc_entries( - citations: Iterable[Dict[str, Any]], -) -> List[Dict[str, Any]]: - """Ensure minimal CSL fields are present for citeproc rendering.""" - - prepared: List[Dict[str, Any]] = [] - for index, citation in enumerate(citations, start=1): - normalized = dict(citation) - - citation_id = normalized.get("id") - normalized["id"] = ( - str(citation_id) if citation_id not in [None, ""] else str(index) - ) - - if not normalized.get("type"): - normalized["type"] = "article-journal" - - # Remove internal metadata that citeproc does not understand - normalized.pop("resolution", None) - - # citeproc expects an iterable for author names - if normalized.get("author") is None: - normalized["author"] = [] - - prepared.append(normalized) - - return prepared - - -def _resolve_csl_style(style: str) -> str: - """Map common aliases to valid CSL style identifiers.""" - - aliases = { - "chicago": "chicago-author-date", - } - normalized = style.lower() - return aliases.get(normalized, normalized) - - def _import_citeproc(): """Import citeproc modules, isolated for easier testing.""" diff --git a/tests/unit/test_rendering.py b/tests/unit/test_rendering.py index 6fbe89e..3375da4 100644 --- a/tests/unit/test_rendering.py +++ b/tests/unit/test_rendering.py @@ -66,8 +66,8 @@ def test_render_bibliography_vancouver_style(): rendered, meta = render_bibliography_to_strings(result, style="vancouver") # Should use citeproc renderer with citeproc-py-styles installed - assert meta["renderer"] == "citeproc-py", ( - "Expected citeproc-py renderer but got fallback. " + assert meta["renderer"] == "citeproc", ( + "Expected citeproc renderer but got fallback. " "Ensure citeproc-py-styles is installed: pip install citeproc-py-styles" ) assert meta["style"] == "vancouver" @@ -134,7 +134,7 @@ def test_render_bibliography_chicago_style(): rendered, meta = render_bibliography_to_strings(result, style="chicago") - assert meta["renderer"] == "citeproc-py" + assert meta["renderer"] == "citeproc" assert meta["style"] == "chicago" assert len(rendered) == 1 assert rendered[0] # Non-empty @@ -198,7 +198,7 @@ def test_render_bibliography_empty_citations(): rendered, meta = render_bibliography_to_strings(result, style="vancouver") # Even with no citations, should use citeproc if available - assert meta["renderer"] in ["citeproc-py", "fallback"] + assert meta["renderer"] in ["citeproc", "fallback"] assert meta["style"] == "vancouver" assert len(rendered) == 0, "Should have no bibliography entries" @@ -224,6 +224,6 @@ def test_render_bibliography_with_locale(): result, style="vancouver", locale="en-GB" ) - assert meta["renderer"] == "citeproc-py" + assert meta["renderer"] == "citeproc" assert meta["locale"] == "en-GB" assert len(rendered) == 1