File size: 935 Bytes
50231a8
 
 
 
 
 
 
 
 
 
 
 
2571402
 
 
 
 
 
 
 
50231a8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from pydantic import BaseModel, ConfigDict, Field


class BaseSchema(BaseModel):
    model_config = ConfigDict(extra="forbid")


class TextInput(BaseSchema):
    text: str = Field(min_length=1)


class LabelUpdateInput(BaseSchema):
    labels: list[str] = Field(
        min_length=1,
        description="Direct list of labels. Items are trimmed and empty values are removed.",
        examples=[["news", "sport", "finance"]],
    )

    def get_normalized_labels(self) -> list[str]:
        return [label.strip() for label in self.labels if isinstance(label, str) and label.strip()]


class ClassifierResponse(BaseSchema):
    label: str


class LanguageResponse(BaseSchema):
    language: str


class FileTransformResponse(BaseSchema):
    filename: str
    content: str


class FileClassifyResponse(BaseSchema):
    label: str
    language: str
    type: str | None = None


class LabelsResponse(BaseSchema):
    labels: list[str]