luplo.core.captures =================== .. py:module:: luplo.core.captures .. autoapi-nested-parse:: CRUD operations for raw text captures. Captures are not curated items. They are private raw intake rows used as source material for later review and explicit promotion. Attributes ---------- .. autoapisummary:: luplo.core.captures.CAPTURE_STATES luplo.core.captures.SENSITIVITY_HINTS luplo.core.captures.DEFAULT_CAPTURE_STATE luplo.core.captures.DEFAULT_SENSITIVITY_HINT luplo.core.captures.CAPTURE_LIMIT_MAX luplo.core.captures.REDACTED_TEXT Functions --------- .. autoapisummary:: luplo.core.captures.add_capture luplo.core.captures.list_captures luplo.core.captures.get_capture luplo.core.captures.search_captures luplo.core.captures.set_capture_state luplo.core.captures.discard_capture luplo.core.captures.redact_capture luplo.core.captures.annotate_capture luplo.core.captures.promote_capture_to_item Module Contents --------------- .. py:data:: CAPTURE_STATES :value: ('captured', 'backlog', 'review', 'promoted', 'discarded', 'redacted') .. py:data:: SENSITIVITY_HINTS :value: ('none', 'possible', 'sensitive') .. py:data:: DEFAULT_CAPTURE_STATE :value: 'captured' .. py:data:: DEFAULT_SENSITIVITY_HINT :value: 'none' .. py:data:: CAPTURE_LIMIT_MAX :value: 1000 .. py:data:: REDACTED_TEXT :value: '[redacted]' .. py:function:: add_capture(conn: psycopg.AsyncConnection[Any], *, text: str, created_by: str | None = None, summary: str | None = None, sensitivity_hint: str = DEFAULT_SENSITIVITY_HINT, signals: dict[str, Any] | None = None, id: str | None = None) -> luplo.core.models.Capture :async: .. py:function:: list_captures(conn: psycopg.AsyncConnection[Any], *, review_state: str | None = None, include_discarded: bool = False, include_redacted: bool = False, since: datetime.datetime | None = None, until: datetime.datetime | None = None, limit: int = 100) -> list[luplo.core.models.Capture] :async: .. py:function:: get_capture(conn: psycopg.AsyncConnection[Any], capture_id: str) -> luplo.core.models.Capture | None :async: .. py:function:: search_captures(conn: psycopg.AsyncConnection[Any], *, query: str | None = None, review_state: str | None = None, include_discarded: bool = False, include_redacted: bool = False, since: datetime.datetime | None = None, until: datetime.datetime | None = None, limit: int = 50) -> list[luplo.core.models.Capture] :async: .. py:function:: set_capture_state(conn: psycopg.AsyncConnection[Any], capture_id: str, *, review_state: str, actor_id: str | None = None) -> luplo.core.models.Capture :async: .. py:function:: discard_capture(conn: psycopg.AsyncConnection[Any], capture_id: str, *, actor_id: str | None = None) -> luplo.core.models.Capture :async: .. py:function:: redact_capture(conn: psycopg.AsyncConnection[Any], capture_id: str, *, redacted_by: str | None = None) -> luplo.core.models.Capture :async: .. py:function:: annotate_capture(conn: psycopg.AsyncConnection[Any], capture_id: str, *, summary: str | None = None, sensitivity_hint: str | None = None, signals: dict[str, Any] | None = None) -> luplo.core.models.Capture :async: .. py:function:: promote_capture_to_item(conn: psycopg.AsyncConnection[Any], capture_id: str, data: luplo.core.models.ItemCreate) -> tuple[luplo.core.models.Capture, luplo.core.models.Item] :async: