ciyidogan commited on
Commit
bbc337b
·
verified ·
1 Parent(s): b8d4d62

Update config_models.py

Browse files
Files changed (1) hide show
  1. config_models.py +24 -18
config_models.py CHANGED
@@ -5,16 +5,22 @@ from typing import Optional, List, Dict, Any
5
  from datetime import datetime
6
  from pydantic import BaseModel, Field
7
 
 
 
 
 
 
 
8
 
9
  # ===================== User & Auth =====================
10
- class UserConfig(BaseModel):
11
  username: str
12
  password_hash: str
13
  salt: Optional[str] = None
14
 
15
 
16
  # ===================== Provider Models =====================
17
- class ProviderDefinition(BaseModel):
18
  type: str # llm, tts, stt
19
  name: str
20
  display_name: str
@@ -24,7 +30,7 @@ class ProviderDefinition(BaseModel):
24
  description: str
25
 
26
 
27
- class ProviderSettings(BaseModel):
28
  name: str
29
  api_key: Optional[str] = None
30
  endpoint: Optional[str] = None
@@ -32,7 +38,7 @@ class ProviderSettings(BaseModel):
32
 
33
 
34
  # ===================== Global Config =====================
35
- class GlobalConfig(BaseModel):
36
  llm_provider: ProviderSettings
37
  tts_provider: ProviderSettings
38
  stt_provider: ProviderSettings
@@ -53,18 +59,18 @@ class GlobalConfig(BaseModel):
53
 
54
 
55
  # ===================== Localization Models =====================
56
- class LocalizedExample(BaseModel):
57
  locale_code: str
58
  example: str
59
 
60
 
61
- class LocalizedCaption(BaseModel):
62
  locale_code: str
63
  caption: str
64
 
65
 
66
  # ===================== Parameter Models =====================
67
- class ParameterConfig(BaseModel):
68
  name: str
69
  caption: List[LocalizedCaption]
70
  type: str # str, int, float, bool, date
@@ -89,7 +95,7 @@ class ParameterConfig(BaseModel):
89
 
90
 
91
  # ===================== Intent Models =====================
92
- class IntentConfig(BaseModel):
93
  name: str
94
  caption: str
95
  requiresApproval: Optional[bool] = False
@@ -103,7 +109,7 @@ class IntentConfig(BaseModel):
103
 
104
 
105
  # ===================== LLM Configuration =====================
106
- class GenerationConfig(BaseModel):
107
  max_new_tokens: int = 512
108
  temperature: float = 0.7
109
  top_p: float = 0.9
@@ -115,7 +121,7 @@ class GenerationConfig(BaseModel):
115
  early_stopping: Optional[bool] = None
116
 
117
 
118
- class LLMConfiguration(BaseModel):
119
  repo_id: str
120
  generation_config: GenerationConfig = Field(default_factory=GenerationConfig)
121
  use_fine_tune: bool = False
@@ -123,7 +129,7 @@ class LLMConfiguration(BaseModel):
123
 
124
 
125
  # ===================== Version Models =====================
126
- class VersionConfig(BaseModel):
127
  no: int
128
  caption: str
129
  description: Optional[str] = None
@@ -140,7 +146,7 @@ class VersionConfig(BaseModel):
140
 
141
 
142
  # ===================== Project Models =====================
143
- class ProjectConfig(BaseModel):
144
  id: int
145
  name: str
146
  caption: str
@@ -161,13 +167,13 @@ class ProjectConfig(BaseModel):
161
 
162
 
163
  # ===================== API Models =====================
164
- class RetryConfig(BaseModel):
165
  retry_count: int = 3
166
  backoff_seconds: int = 2
167
  strategy: str = "static" # static, exponential
168
 
169
 
170
- class AuthConfig(BaseModel):
171
  enabled: bool
172
  token_endpoint: Optional[str] = None
173
  response_token_path: Optional[str] = None
@@ -176,14 +182,14 @@ class AuthConfig(BaseModel):
176
  token_refresh_body: Optional[Dict[str, Any]] = None
177
 
178
 
179
- class ResponseMapping(BaseModel):
180
  variable_name: str
181
  type: str # str, int, float, bool, date
182
  json_path: str
183
  caption: List[LocalizedCaption]
184
 
185
 
186
- class APIConfig(BaseModel):
187
  name: str
188
  url: str
189
  method: str = "POST"
@@ -203,7 +209,7 @@ class APIConfig(BaseModel):
203
 
204
 
205
  # ===================== Activity Log =====================
206
- class ActivityLogEntry(BaseModel):
207
  id: int
208
  timestamp: datetime
209
  username: str
@@ -215,7 +221,7 @@ class ActivityLogEntry(BaseModel):
215
 
216
 
217
  # ===================== Root Configuration =====================
218
- class ServiceConfig(BaseModel):
219
  global_config: GlobalConfig = Field(alias="config")
220
  projects: List[ProjectConfig] = Field(default_factory=list)
221
  apis: List[APIConfig] = Field(default_factory=list)
 
5
  from datetime import datetime
6
  from pydantic import BaseModel, Field
7
 
8
+ class BaseModelWithDatetime(BaseModel):
9
+ """Base model with datetime serialization support"""
10
+ class Config:
11
+ json_encoders = {
12
+ datetime: lambda v: v.isoformat() if v else None
13
+ }
14
 
15
  # ===================== User & Auth =====================
16
+ class UserConfig(BaseModelWithDatetime):
17
  username: str
18
  password_hash: str
19
  salt: Optional[str] = None
20
 
21
 
22
  # ===================== Provider Models =====================
23
+ class ProviderDefinition(BaseModelWithDatetime):
24
  type: str # llm, tts, stt
25
  name: str
26
  display_name: str
 
30
  description: str
31
 
32
 
33
+ class ProviderSettings(BaseModelWithDatetime):
34
  name: str
35
  api_key: Optional[str] = None
36
  endpoint: Optional[str] = None
 
38
 
39
 
40
  # ===================== Global Config =====================
41
+ class GlobalConfig(BaseModelWithDatetime):
42
  llm_provider: ProviderSettings
43
  tts_provider: ProviderSettings
44
  stt_provider: ProviderSettings
 
59
 
60
 
61
  # ===================== Localization Models =====================
62
+ class LocalizedExample(BaseModelWithDatetime):
63
  locale_code: str
64
  example: str
65
 
66
 
67
+ class LocalizedCaption(BaseModelWithDatetime):
68
  locale_code: str
69
  caption: str
70
 
71
 
72
  # ===================== Parameter Models =====================
73
+ class ParameterConfig(BaseModelWithDatetime):
74
  name: str
75
  caption: List[LocalizedCaption]
76
  type: str # str, int, float, bool, date
 
95
 
96
 
97
  # ===================== Intent Models =====================
98
+ class IntentConfig(BaseModelWithDatetime):
99
  name: str
100
  caption: str
101
  requiresApproval: Optional[bool] = False
 
109
 
110
 
111
  # ===================== LLM Configuration =====================
112
+ class GenerationConfig(BaseModelWithDatetime):
113
  max_new_tokens: int = 512
114
  temperature: float = 0.7
115
  top_p: float = 0.9
 
121
  early_stopping: Optional[bool] = None
122
 
123
 
124
+ class LLMConfiguration(BaseModelWithDatetime):
125
  repo_id: str
126
  generation_config: GenerationConfig = Field(default_factory=GenerationConfig)
127
  use_fine_tune: bool = False
 
129
 
130
 
131
  # ===================== Version Models =====================
132
+ class VersionConfig(BaseModelWithDatetime):
133
  no: int
134
  caption: str
135
  description: Optional[str] = None
 
146
 
147
 
148
  # ===================== Project Models =====================
149
+ class ProjectConfig(BaseModelWithDatetime):
150
  id: int
151
  name: str
152
  caption: str
 
167
 
168
 
169
  # ===================== API Models =====================
170
+ class RetryConfig(BaseModelWithDatetime):
171
  retry_count: int = 3
172
  backoff_seconds: int = 2
173
  strategy: str = "static" # static, exponential
174
 
175
 
176
+ class AuthConfig(BaseModelWithDatetime):
177
  enabled: bool
178
  token_endpoint: Optional[str] = None
179
  response_token_path: Optional[str] = None
 
182
  token_refresh_body: Optional[Dict[str, Any]] = None
183
 
184
 
185
+ class ResponseMapping(BaseModelWithDatetime):
186
  variable_name: str
187
  type: str # str, int, float, bool, date
188
  json_path: str
189
  caption: List[LocalizedCaption]
190
 
191
 
192
+ class APIConfig(BaseModelWithDatetime):
193
  name: str
194
  url: str
195
  method: str = "POST"
 
209
 
210
 
211
  # ===================== Activity Log =====================
212
+ class ActivityLogEntry(BaseModelWithDatetime):
213
  id: int
214
  timestamp: datetime
215
  username: str
 
221
 
222
 
223
  # ===================== Root Configuration =====================
224
+ class ServiceConfig(BaseModelWithDatetime):
225
  global_config: GlobalConfig = Field(alias="config")
226
  projects: List[ProjectConfig] = Field(default_factory=list)
227
  apis: List[APIConfig] = Field(default_factory=list)