File size: 953 Bytes
300df0f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from __future__ import annotations

from dataclasses import dataclass
from typing import Any, Optional


@dataclass
class LegalCitation:
    display_text: str
    uid: str
    document_title: str = ""
    article: Optional[str] = None
    clause: Optional[str] = None
    point: Optional[str] = None
    verified: bool = False
    reason: str = ""

    @classmethod
    def from_context(cls, context: dict[str, Any]) -> "LegalCitation":
        return cls(
            display_text=context.get("display_citation", "") or context.get("uid", ""),
            uid=context.get("uid", ""),
            document_title=context.get("document_title", ""),
            article=str(context["article_index"]) if context.get("article_index") is not None else None,
            clause=str(context["clause_index"]) if context.get("clause_index") is not None else None,
            point=str(context["point_letter"]) if context.get("point_letter") else None,
        )