projectdavid-common 0.21.4__py3-none-any.whl → 0.21.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67,12 +67,17 @@ TOGETHER_AI_MODELS = {
67
67
  # Misc
68
68
  "together-ai/Qwen/Qwen-Image": "Qwen/Qwen-Image",
69
69
  "together-ai/Qwen/Qwen2-7B": "Qwen/Qwen2-7B",
70
+ # OpenAI
71
+ "together-ai/openai/gpt-oss-120b": "openai/gpt-oss-120b",
72
+ "together-ai/openai/gpt-oss-20b": "openai/gpt-oss-20b",
70
73
  }
71
74
 
72
75
 
73
76
  HYPERBOLIC_MODELS = {
74
77
  # DeepSeek
75
78
  "hyperbolic/deepseek-ai/DeepSeek-V3-0324": "deepseek-ai/DeepSeek-V3-0324",
79
+ # new
80
+ "hyperbolic/deepseek-ai/DeepSeek-R1-0528": "deepseek-ai/DeepSeek-R1-0528",
76
81
  "hyperbolic/deepseek-ai/DeepSeek-R1": "deepseek-ai/DeepSeek-R1",
77
82
  "hyperbolic/deepseek-ai/DeepSeek-V3": "deepseek-ai/DeepSeek-V3",
78
83
  # llama
@@ -84,6 +89,7 @@ HYPERBOLIC_MODELS = {
84
89
  "hyperbolic/meta-llama/Meta-Llama-3-70B-Instruct": "meta-llama/Meta-Llama-3-70B-Instruct",
85
90
  # Quen
86
91
  "hyperbolic/Qwen/QwQ-32B": "Qwen/QwQ-32B",
92
+ "hyperbolic/Qwen/Qwen2.5-VL-7B-Instruct": "Qwen/Qwen2.5-VL-7B-Instruct",
87
93
  "hyperbolic/Qwen/Qwen2.5-Coder-32B-Instruct": "Qwen/Qwen2.5-Coder-32B-Instruct",
88
94
  "hyperbolic/Qwen/Qwen2.5-72B-Instruct": "Qwen/Qwen2.5-72B-Instruct",
89
95
  "hyperbolic/Qwen/Qwen3-Next-80B-A3B-Thinking": "Qwen/Qwen3-Next-80B-A3B-Thinking",
@@ -93,6 +99,8 @@ HYPERBOLIC_MODELS = {
93
99
  # OpenAI
94
100
  "hyperbolic/openai/gpt-oss-120b": "openai/gpt-oss-120b",
95
101
  "hyperbolic/openai/gpt-oss-20b": "openai/gpt-oss-20b",
102
+ # New
103
+ "hyperbolic/openai/gpt-oss-120b-turbo": "openai/gpt-oss-120b-turbo",
96
104
  }
97
105
 
98
106
 
@@ -9,7 +9,6 @@ from typing import Any, Dict, List, Literal, Optional
9
9
  from pydantic import BaseModel, ConfigDict, Field
10
10
 
11
11
  from projectdavid_common.schemas.actions_schema import ActionRead
12
- from projectdavid_common.schemas.tools_schema import Tool, ToolRead
13
12
 
14
13
 
15
14
  # --------------------------------------------------------------------------- #
@@ -65,7 +64,6 @@ class Run(BaseModel):
65
64
  status: RunStatus
66
65
  thread_id: str
67
66
  tool_choice: str
68
- tools: List[Tool]
69
67
  # Accept 'auto' or None on read
70
68
  truncation_strategy: Optional[TruncationStrategy] = None
71
69
  usage: Optional[Any]
@@ -106,7 +104,6 @@ class RunCreate(BaseModel):
106
104
  status: RunStatus = RunStatus.pending
107
105
  thread_id: str
108
106
  tool_choice: str = "none"
109
- tools: List[Tool] = Field(default_factory=list)
110
107
  # Optional so callers can omit and let DB default 'auto' apply
111
108
  truncation_strategy: Optional[TruncationStrategy] = None
112
109
  usage: Optional[Any] = None
@@ -143,7 +140,6 @@ class RunReadDetailed(BaseModel):
143
140
  status: RunStatus
144
141
  thread_id: str
145
142
  tool_choice: Optional[str] = None
146
- tools: List[ToolRead]
147
143
  # Accept 'auto' or None on read
148
144
  truncation_strategy: Optional[TruncationStrategy] = None
149
145
  usage: Optional[Any] = None
@@ -1,23 +1,34 @@
1
1
  from typing import Optional
2
2
 
3
- from pydantic import BaseModel, validator
3
+ from pydantic import ( # Added ConfigDict and field_validator
4
+ BaseModel,
5
+ ConfigDict,
6
+ field_validator,
7
+ )
4
8
 
5
9
  from projectdavid_common.constants.ai_model_map import MODEL_MAP
6
10
 
7
11
 
8
12
  class StreamRequest(BaseModel):
13
+ # 1. FIX: Tell Pydantic to allow fields starting with "model_"
14
+ model_config = ConfigDict(protected_namespaces=())
15
+
9
16
  provider: str
10
17
  model: str
11
- api_key: Optional[str]
18
+ api_key: Optional[str] = None # Added default None
12
19
  thread_id: str
13
20
  message_id: str
14
21
  run_id: str
15
22
  assistant_id: str
16
23
  content: Optional[str] = None
17
24
 
18
- @validator("model")
19
- def validate_model_key(cls, v):
25
+ # 2. UPDATED: Using Pydantic v2 field_validator
26
+ @field_validator("model")
27
+ @classmethod
28
+ def validate_model_key(cls, v: str) -> str:
20
29
  if v not in MODEL_MAP:
30
+ # Note: Ensure MODEL_MAP contains "hyperbolic/deepseek-ai/DeepSeek-V3-0324"
31
+ # as seen in your logs, or this will throw a 422 error.
21
32
  raise ValueError(f"Invalid model '{v}'. Must be one of: {', '.join(MODEL_MAP.keys())}")
22
33
  return v
23
34
 
@@ -53,14 +53,6 @@ from projectdavid_common.schemas.threads_schema import (
53
53
  ThreadReadDetailed,
54
54
  ThreadUpdate,
55
55
  )
56
- from projectdavid_common.schemas.tools_schema import (
57
- Tool,
58
- ToolCreate,
59
- ToolFunction,
60
- ToolList,
61
- ToolRead,
62
- ToolUpdate,
63
- )
64
56
  from projectdavid_common.schemas.users_schema import (
65
57
  UserBase,
66
58
  UserCreate,
@@ -159,12 +151,6 @@ class ValidationInterface:
159
151
  ThreadDeleted = ThreadDeleted
160
152
 
161
153
  # Tools schemas
162
- ToolFunction = ToolFunction
163
- Tool = Tool
164
- ToolCreate = ToolCreate
165
- ToolRead = ToolRead
166
- ToolUpdate = ToolUpdate
167
- ToolList = ToolList
168
154
 
169
155
  # Users schemas
170
156
  UserBase = UserBase
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid_common
3
- Version: 0.21.4
3
+ Version: 0.21.6
4
4
  Summary: Common shared custom packages
5
5
  Author-email: "Francis N." <francis.neequaye@projectdavid.co.uk>
6
6
  License: MIT
@@ -1,8 +1,8 @@
1
1
  projectdavid_common/__init__.py,sha256=qGbd7vBnhtG4f3ppij8IEMbmzSDSHoIYLIEB_u5weaE,142
2
2
  projectdavid_common/utils.py,sha256=Q-GpA6R4QbStLFxNNft_sYEA25bVzYqOcsNy8VRHrxs,657
3
- projectdavid_common/validation.py,sha256=kKfmdWsMBRjK8gLKgMMW1zs0PDdMJ4c0xNr2GAxReeE,5787
3
+ projectdavid_common/validation.py,sha256=81CsNp7LeEHXKk7pdtxeHmRs6bxKqKAXlH-T1xyhIdg,5490
4
4
  projectdavid_common/constants/__init__.py,sha256=i2JnKwAKnlH8A49bQErfbZHP-PtSdJMl3TMTnup9x1M,250
5
- projectdavid_common/constants/ai_model_map.py,sha256=7Pn_r9VblbvKnmPi55NYWbttfPMHsQw0rI-f3Es6zKM,5854
5
+ projectdavid_common/constants/ai_model_map.py,sha256=UMSXnVdQvBqBtha1WHDfUVSSDBkC1DNkpR_XQAbN054,6238
6
6
  projectdavid_common/constants/assistant_map.py,sha256=sKCC5Rxm5HnsrkzlbLystRJUOVMQQxhq4OVeFZ9p7vo,141
7
7
  projectdavid_common/constants/mime_types.py,sha256=vvuCYP_oreoRkP1D80eRgv8mQTNsQ_huoqO3fLUSviA,1729
8
8
  projectdavid_common/constants/platform.py,sha256=ATXfVuEigWmhl0WRXLhObFlUegNPKdNHGLp4zBjKs04,2679
@@ -16,18 +16,17 @@ projectdavid_common/schemas/enums.py,sha256=pQdkz_hmfU_vcZdn4XOvcPOcQihaX_iuQIFk
16
16
  projectdavid_common/schemas/files_schema.py,sha256=hNMqVDRc5lsdhxyPWO79QjIpE7NKmKzdQ6hJG8L6LfA,3025
17
17
  projectdavid_common/schemas/inference_schema.py,sha256=LPjKDCq7jBPbQCgwlM97rxO477v3vWwb6RYh4DW0KIs,228
18
18
  projectdavid_common/schemas/messages_schema.py,sha256=4Zes5on7VJubq_02wkEkb29M3CdNPxCdMkSNS6KOyC8,3631
19
- projectdavid_common/schemas/runs_schema.py,sha256=UwshWUBIKa8M8hDisue8speKubcOiRnZLmKyxFoN7XQ,5687
20
- projectdavid_common/schemas/stream_schema.py,sha256=4CtzlQD7Jxhmww_jGNCvbspj8fe42tS7kpr_0tU7nxg,638
19
+ projectdavid_common/schemas/runs_schema.py,sha256=BK2HHVKxv5jTvULeC8POCrk6sdSSFFiW5mV5nIlRdnU,5519
20
+ projectdavid_common/schemas/stream_schema.py,sha256=s-50zeCTIl4PKtzKrG1f8psTXxaGki_OLW_uj-CUOsY,1108
21
21
  projectdavid_common/schemas/threads_schema.py,sha256=tnGGOZ52xmel2DaWiFtCbfMkEW056xI-WMt4yotmmHI,1533
22
- projectdavid_common/schemas/tools_schema.py,sha256=RywLJk1a1-liPnqpf8s9IfTaMBG6uqj3YtV52H7U18g,1815
23
22
  projectdavid_common/schemas/users_schema.py,sha256=777ul1Kg7yxqLZnEtd8rtIHXfZnUzldJx4qYS5brD14,3206
24
23
  projectdavid_common/schemas/vector_search_envelope.py,sha256=uFctv-8lwfebzHk84_ZfDce7p3ub5h0uuZ4YXsXnZig,946
25
24
  projectdavid_common/schemas/vectors_schema.py,sha256=KG4HSa6yVgBLe01iSdXKoU3UxRS21azbw9m-83qDQ6E,7615
26
25
  projectdavid_common/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
26
  projectdavid_common/utilities/identifier_service.py,sha256=7hL4_i7pGs6bibCSkXQIwpMSUCFASFE0VPm6gqMv4sk,2950
28
27
  projectdavid_common/utilities/logging_service.py,sha256=ONKy3PRjIrxIrTJ_X3iv7v9HA0wyejyw4WrQYlJy7Oc,2614
29
- projectdavid_common-0.21.4.dist-info/METADATA,sha256=7YUyESktwshiwbbhFoNyLzH520ytliH9LXk1IFV8gyc,1642
30
- projectdavid_common-0.21.4.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
31
- projectdavid_common-0.21.4.dist-info/entry_points.txt,sha256=Y8HAIUW0ifCKcAzAqR21wu1ATHNFWWWiUB33UYv095o,74
32
- projectdavid_common-0.21.4.dist-info/top_level.txt,sha256=lJ-jkZ0n0jWktoMJFcw-DzLoMTY2juuw5fgMIqYu1UU,20
33
- projectdavid_common-0.21.4.dist-info/RECORD,,
28
+ projectdavid_common-0.21.6.dist-info/METADATA,sha256=m4n1wDRDNIRP2T9P2JQI1fkbK9o3dmw6wrMbnqiymIg,1642
29
+ projectdavid_common-0.21.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
30
+ projectdavid_common-0.21.6.dist-info/entry_points.txt,sha256=Y8HAIUW0ifCKcAzAqR21wu1ATHNFWWWiUB33UYv095o,74
31
+ projectdavid_common-0.21.6.dist-info/top_level.txt,sha256=lJ-jkZ0n0jWktoMJFcw-DzLoMTY2juuw5fgMIqYu1UU,20
32
+ projectdavid_common-0.21.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.10.1)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,65 +0,0 @@
1
- from typing import List, Optional
2
-
3
- from pydantic import BaseModel, ConfigDict, Field, field_validator
4
-
5
-
6
- class ToolFunction(BaseModel):
7
- function: Optional[dict] = Field(default=None, description="Tool function definition")
8
-
9
- @field_validator("function", mode="before")
10
- @classmethod
11
- def parse_function(cls, v):
12
- if isinstance(v, dict) and "name" in v and "description" in v:
13
- return v
14
- elif isinstance(v, dict) and "function" in v:
15
- return v["function"]
16
- raise ValueError("Invalid function format")
17
-
18
-
19
- class Tool(BaseModel):
20
- id: str
21
- type: str
22
- name: Optional[str] = Field(default=None)
23
- function: Optional[ToolFunction] = Field(default=None)
24
-
25
- model_config = ConfigDict(from_attributes=True)
26
-
27
-
28
- class ToolCreate(BaseModel):
29
- name: str
30
- type: str
31
- function: Optional[ToolFunction] = Field(default=None)
32
-
33
- @field_validator("function", mode="before")
34
- @classmethod
35
- def parse_function(cls, v):
36
- if isinstance(v, ToolFunction):
37
- return v
38
- if isinstance(v, dict) and "function" in v:
39
- return ToolFunction(function=v["function"])
40
- return ToolFunction(**v)
41
-
42
-
43
- class ToolRead(Tool):
44
- @field_validator("function", mode="before")
45
- @classmethod
46
- def parse_function(cls, v):
47
- if isinstance(v, dict):
48
- return ToolFunction(**v)
49
- elif v is None:
50
- return None
51
- raise ValueError("Invalid function format")
52
-
53
- model_config = ConfigDict(from_attributes=True)
54
-
55
-
56
- class ToolUpdate(BaseModel):
57
- type: Optional[str] = Field(default=None)
58
- name: Optional[str] = Field(default=None)
59
- function: Optional[ToolFunction] = Field(default=None)
60
-
61
-
62
- class ToolList(BaseModel):
63
- tools: List[ToolRead]
64
-
65
- model_config = ConfigDict(from_attributes=True)