Loading...
No commits yet
Not committed History
Blame
claim.py • 2.5 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File: src/scitex_writer/claim.py

"""Claim functions for traceable scientific assertions in manuscripts.

Usage::

    import scitex_writer as sw

    # Add a statistical claim
    sw.claim.add(
        "./my-paper", "group_comparison", "statistic",
        {"t": 4.23, "df": 34, "p": 0.00032, "d": 0.87},
        context="Group A vs B alpha power comparison",
    )

    # List all claims
    sw.claim.list("./my-paper")

    # Format for inline display
    sw.claim.format("./my-paper", "group_comparison", style="apa")

    # Render to LaTeX (auto-called before compile)
    sw.claim.render("./my-paper")

In LaTeX (after render):
    \\stxclaim{group_comparison}           % nature style: t(34) = 4.23, p < 0.001, d = 0.87
    \\stxclaim[apa]{group_comparison}      % APA style:    t(34) = 4.23, p < .001, Cohen's d = 0.87
    \\stxclaim[plain]{group_comparison}    % plain text:   t(34) = 4.23, p < 0.001, d = 0.87
"""

from ._mcp.handlers._claim import add_claim as _add_claim
from ._mcp.handlers._claim import format_claim as _format_claim
from ._mcp.handlers._claim import get_claim as _get_claim
from ._mcp.handlers._claim import list_claims as _list_claims
from ._mcp.handlers._claim import remove_claim as _remove_claim
from ._mcp.handlers._claim import render_claims as _render_claims


def add(
    project_dir,
    claim_id,
    claim_type,
    value,
    context=None,
    session_id=None,
    output_file=None,
    output_hash=None,
    test=None,
):
    """Add or update a claim in 00_shared/claims.json."""
    return _add_claim(
        project_dir,
        claim_id,
        claim_type,
        value,
        context,
        session_id,
        output_file,
        output_hash,
        test,
    )


def list(project_dir):  # noqa: A001
    """List all claims in the project."""
    return _list_claims(project_dir)


def get(project_dir, claim_id):
    """Get full details of a specific claim."""
    return _get_claim(project_dir, claim_id)


def remove(project_dir, claim_id):
    """Remove a claim from the project."""
    return _remove_claim(project_dir, claim_id)


def format(project_dir, claim_id, style="nature"):  # noqa: A001
    """Render a claim as a formatted LaTeX string."""
    return _format_claim(project_dir, claim_id, style)


def render(project_dir):
    """Generate 00_shared/claims_rendered.tex from claims.json."""
    return _render_claims(project_dir)


__all__ = ["add", "list", "get", "remove", "format", "render"]

# EOF