weave-python 0.28.1__py3-none-any.whl → 0.30.3__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.
Files changed (105) hide show
  1. weave/weaveapi/auth/v1/service_pb2.py +194 -98
  2. weave/weaveapi/auth/v1/service_pb2.pyi +1288 -1134
  3. weave/weaveapi/auth/v1/service_pb2_grpc.pyi +248 -335
  4. weave/weaveapi/auth/v1/session_pb2.py +14 -6
  5. weave/weaveapi/auth/v1/session_pb2.pyi +109 -89
  6. weave/weaveapi/auth/v1/session_pb2_grpc.pyi +11 -10
  7. weave/weaveapi/auth/v1/usage_pb2.py +18 -14
  8. weave/weaveapi/auth/v1/usage_pb2.pyi +251 -197
  9. weave/weaveapi/auth/v1/usage_pb2_grpc.pyi +11 -10
  10. weave/weaveapi/auth/v1/user_pb2.py +60 -18
  11. weave/weaveapi/auth/v1/user_pb2.pyi +588 -505
  12. weave/weaveapi/auth/v1/user_pb2_grpc.pyi +11 -10
  13. weave/weaveapi/generate/v1/configuration_pb2.py +31 -19
  14. weave/weaveapi/generate/v1/configuration_pb2.pyi +277 -241
  15. weave/weaveapi/generate/v1/configuration_pb2_grpc.pyi +11 -10
  16. weave/weaveapi/generate/v1/generate_pb2.py +32 -6
  17. weave/weaveapi/generate/v1/generate_pb2.pyi +138 -40
  18. weave/weaveapi/generate/v1/generate_pb2_grpc.pyi +11 -10
  19. weave/weaveapi/generate/v1/service_pb2.py +52 -22
  20. weave/weaveapi/generate/v1/service_pb2.pyi +264 -135
  21. weave/weaveapi/generate/v1/service_pb2_grpc.py +47 -0
  22. weave/weaveapi/generate/v1/service_pb2_grpc.pyi +89 -78
  23. weave/weaveapi/llmx/v1/architecture_pb2.py +42 -42
  24. weave/weaveapi/llmx/v1/architecture_pb2.pyi +664 -555
  25. weave/weaveapi/llmx/v1/architecture_pb2_grpc.pyi +11 -10
  26. weave/weaveapi/llmx/v1/capabilities_pb2.py +88 -56
  27. weave/weaveapi/llmx/v1/capabilities_pb2.pyi +967 -852
  28. weave/weaveapi/llmx/v1/capabilities_pb2_grpc.pyi +11 -10
  29. weave/weaveapi/llmx/v1/model_pb2.py +56 -20
  30. weave/weaveapi/llmx/v1/model_pb2.pyi +533 -455
  31. weave/weaveapi/llmx/v1/model_pb2_grpc.pyi +11 -10
  32. weave/weaveapi/llmx/v1/pricing_pb2.py +24 -20
  33. weave/weaveapi/llmx/v1/pricing_pb2.pyi +194 -172
  34. weave/weaveapi/llmx/v1/pricing_pb2_grpc.pyi +11 -10
  35. weave/weaveapi/llmx/v1/provider_pb2.py +6 -6
  36. weave/weaveapi/llmx/v1/provider_pb2.pyi +84 -59
  37. weave/weaveapi/llmx/v1/provider_pb2_grpc.pyi +11 -10
  38. weave/weaveapi/llmx/v1/service_pb2.py +228 -90
  39. weave/weaveapi/llmx/v1/service_pb2.pyi +1651 -1403
  40. weave/weaveapi/llmx/v1/service_pb2_grpc.pyi +160 -203
  41. weave/weaveapi/mcpregistry/v1/server_pb2.py +16 -10
  42. weave/weaveapi/mcpregistry/v1/server_pb2.pyi +143 -121
  43. weave/weaveapi/mcpregistry/v1/server_pb2_grpc.pyi +11 -10
  44. weave/weaveapi/mcpregistry/v1/service_pb2.py +51 -31
  45. weave/weaveapi/mcpregistry/v1/service_pb2.pyi +132 -122
  46. weave/weaveapi/mcpregistry/v1/service_pb2_grpc.pyi +87 -112
  47. weave/weaveapi/payment/v1/invoice_pb2.py +38 -12
  48. weave/weaveapi/payment/v1/invoice_pb2.pyi +352 -291
  49. weave/weaveapi/payment/v1/invoice_pb2_grpc.pyi +11 -10
  50. weave/weaveapi/payment/v1/service_pb2.py +264 -98
  51. weave/weaveapi/payment/v1/service_pb2.pyi +1381 -1242
  52. weave/weaveapi/payment/v1/service_pb2_grpc.pyi +229 -319
  53. weave/weaveapi/payment/v1/subscription_pb2.py +99 -23
  54. weave/weaveapi/payment/v1/subscription_pb2.pyi +727 -611
  55. weave/weaveapi/payment/v1/subscription_pb2_grpc.pyi +11 -10
  56. weave/weaveapi/storage/v1/auth_pb2.py +6 -6
  57. weave/weaveapi/storage/v1/auth_pb2.pyi +42 -29
  58. weave/weaveapi/storage/v1/auth_pb2_grpc.pyi +11 -10
  59. weave/weaveapi/storage/v1/nosql_database_pb2.py +47 -23
  60. weave/weaveapi/storage/v1/nosql_database_pb2.pyi +438 -372
  61. weave/weaveapi/storage/v1/nosql_database_pb2_grpc.pyi +11 -10
  62. weave/weaveapi/storage/v1/object_store_pb2.py +27 -13
  63. weave/weaveapi/storage/v1/object_store_pb2.pyi +203 -187
  64. weave/weaveapi/storage/v1/object_store_pb2_grpc.pyi +11 -10
  65. weave/weaveapi/storage/v1/service_pb2.py +96 -36
  66. weave/weaveapi/storage/v1/service_pb2.pyi +414 -357
  67. weave/weaveapi/storage/v1/service_pb2_grpc.pyi +88 -107
  68. weave/weaveapi/storage/v1/sql_database_pb2.py +39 -23
  69. weave/weaveapi/storage/v1/sql_database_pb2.pyi +481 -400
  70. weave/weaveapi/storage/v1/sql_database_pb2_grpc.pyi +11 -10
  71. weave/weaveapi/storage/v1/storage_pb2.py +20 -6
  72. weave/weaveapi/storage/v1/storage_pb2.pyi +79 -70
  73. weave/weaveapi/storage/v1/storage_pb2_grpc.pyi +11 -10
  74. weave/weaveapi/synthesize/v1/dataset_pb2.py +14 -12
  75. weave/weaveapi/synthesize/v1/dataset_pb2.pyi +158 -128
  76. weave/weaveapi/synthesize/v1/dataset_pb2_grpc.pyi +11 -10
  77. weave/weaveapi/synthesize/v1/inline_data_pb2.py +9 -9
  78. weave/weaveapi/synthesize/v1/inline_data_pb2.pyi +31 -27
  79. weave/weaveapi/synthesize/v1/inline_data_pb2_grpc.pyi +11 -10
  80. weave/weaveapi/synthesize/v1/relationship_pb2.py +19 -11
  81. weave/weaveapi/synthesize/v1/relationship_pb2.pyi +67 -64
  82. weave/weaveapi/synthesize/v1/relationship_pb2_grpc.pyi +11 -10
  83. weave/weaveapi/synthesize/v1/service_pb2.py +42 -24
  84. weave/weaveapi/synthesize/v1/service_pb2.pyi +202 -168
  85. weave/weaveapi/synthesize/v1/service_pb2_grpc.pyi +67 -79
  86. weave/weaveapi/synthesize/v1/training_pb2.py +19 -13
  87. weave/weaveapi/synthesize/v1/training_pb2.pyi +119 -106
  88. weave/weaveapi/synthesize/v1/training_pb2_grpc.pyi +11 -10
  89. weave/weavesql/llmxdb/capabilities.py +487 -0
  90. weave/weavesql/llmxdb/changes.py +297 -0
  91. weave/weavesql/llmxdb/models.py +594 -0
  92. weave/weavesql/llmxdb/providers.py +348 -0
  93. weave/weavesql/llmxdb/scraper_runs.py +287 -0
  94. weave/weavesql/llmxdb/search.py +721 -0
  95. weave/weavesql/weavedb/dataset.py +75 -0
  96. weave/weavesql/weavedb/models.py +135 -0
  97. weave/weavesql/weavedb/relationships.py +72 -0
  98. weave/weavesql/weavedb/storage.py +113 -0
  99. weave/weavesql/weavedb/synthesizer.py +107 -0
  100. weave_python-0.30.3.dist-info/METADATA +52 -0
  101. weave_python-0.30.3.dist-info/RECORD +131 -0
  102. {weave_python-0.28.1.dist-info → weave_python-0.30.3.dist-info}/WHEEL +1 -1
  103. weave_python-0.30.3.dist-info/licenses/LICENSE +120 -0
  104. weave_python-0.28.1.dist-info/METADATA +0 -6
  105. weave_python-0.28.1.dist-info/RECORD +0 -119
@@ -0,0 +1,297 @@
1
+ # Code generated by sqlc. DO NOT EDIT.
2
+ # versions:
3
+ # sqlc v1.28.0
4
+ # source: changes.sql
5
+ import dataclasses
6
+ import datetime
7
+ from typing import AsyncIterator, Iterator, List, Optional
8
+ import uuid
9
+
10
+ import sqlalchemy
11
+ import sqlalchemy.ext.asyncio
12
+
13
+ from weave.weavesql.llmxdb import models
14
+
15
+
16
+ BATCH_INSERT_CHANGES = """-- name: batch_insert_changes \\:copyfrom
17
+ INSERT INTO model_changes (
18
+ model_id, field_name, old_value, new_value, change_type
19
+ ) VALUES (
20
+ :p1, :p2, :p3, :p4, :p5
21
+ )
22
+ """
23
+
24
+
25
+ @dataclasses.dataclass()
26
+ class BatchInsertChangesParams:
27
+ model_id: uuid.UUID
28
+ field_name: str
29
+ old_value: Optional[str]
30
+ new_value: Optional[str]
31
+ change_type: Optional[str]
32
+
33
+
34
+ GET_CHANGES_BY_MODEL = """-- name: get_changes_by_model \\:many
35
+ SELECT id, model_id, field_name, old_value, new_value, change_type, detected_at, created_at
36
+ FROM model_changes
37
+ WHERE model_id = :p1
38
+ ORDER BY detected_at DESC
39
+ LIMIT :p2
40
+ """
41
+
42
+
43
+ GET_CHANGES_BY_TYPE = """-- name: get_changes_by_type \\:many
44
+ SELECT mc.id, mc.model_id, mc.field_name, mc.old_value, mc.new_value, mc.change_type, mc.detected_at, mc.created_at,
45
+ lm.slug as model_slug,
46
+ lm.name as model_name
47
+ FROM model_changes mc
48
+ JOIN llm_models lm ON mc.model_id = lm.id
49
+ WHERE mc.change_type = :p1
50
+ AND mc.detected_at > :p2
51
+ ORDER BY mc.detected_at DESC
52
+ """
53
+
54
+
55
+ @dataclasses.dataclass()
56
+ class GetChangesByTypeRow:
57
+ id: uuid.UUID
58
+ model_id: uuid.UUID
59
+ field_name: str
60
+ old_value: Optional[str]
61
+ new_value: Optional[str]
62
+ change_type: Optional[str]
63
+ detected_at: Optional[datetime.datetime]
64
+ created_at: Optional[datetime.datetime]
65
+ model_slug: str
66
+ model_name: str
67
+
68
+
69
+ GET_RECENT_CHANGES = """-- name: get_recent_changes \\:many
70
+ SELECT id, model_id, field_name, old_value, new_value, change_type, detected_at, created_at
71
+ FROM model_changes
72
+ WHERE detected_at > NOW() - INTERVAL '24 hours'
73
+ ORDER BY detected_at DESC
74
+ LIMIT :p1
75
+ """
76
+
77
+
78
+ INSERT_MODEL_CHANGE = """-- name: insert_model_change \\:one
79
+ INSERT INTO model_changes (model_id, field_name, old_value, new_value, change_type)
80
+ VALUES (:p1, :p2, :p3, :p4, :p5)
81
+ RETURNING id, model_id, field_name, old_value, new_value, change_type, detected_at, created_at
82
+ """
83
+
84
+
85
+ @dataclasses.dataclass()
86
+ class InsertModelChangeParams:
87
+ model_id: uuid.UUID
88
+ field_name: str
89
+ old_value: Optional[str]
90
+ new_value: Optional[str]
91
+ change_type: Optional[str]
92
+
93
+
94
+ class Querier:
95
+ def __init__(self, conn: sqlalchemy.engine.Connection):
96
+ self._conn = conn
97
+
98
+ def batch_insert_changes(self, arg_list: List[BatchInsertChangesParams]) -> int:
99
+ data = list()
100
+ for item in arg_list:
101
+ data.append(
102
+ {
103
+ "p1": item.model_id,
104
+ "p2": item.field_name,
105
+ "p3": item.old_value,
106
+ "p4": item.new_value,
107
+ "p5": item.change_type,
108
+ }
109
+ )
110
+ result = self._conn.execute(sqlalchemy.text(BATCH_INSERT_CHANGES), data)
111
+ return result.rowcount
112
+
113
+ def get_changes_by_model(
114
+ self, *, model_id: uuid.UUID, limit_count: int
115
+ ) -> Iterator[models.ModelChange]:
116
+ result = self._conn.execute(
117
+ sqlalchemy.text(GET_CHANGES_BY_MODEL), {"p1": model_id, "p2": limit_count}
118
+ )
119
+ for row in result:
120
+ yield models.ModelChange(
121
+ id=row[0],
122
+ model_id=row[1],
123
+ field_name=row[2],
124
+ old_value=row[3],
125
+ new_value=row[4],
126
+ change_type=row[5],
127
+ detected_at=row[6],
128
+ created_at=row[7],
129
+ )
130
+
131
+ def get_changes_by_type(
132
+ self, *, change_type: Optional[str], since: Optional[datetime.datetime]
133
+ ) -> Iterator[GetChangesByTypeRow]:
134
+ result = self._conn.execute(
135
+ sqlalchemy.text(GET_CHANGES_BY_TYPE), {"p1": change_type, "p2": since}
136
+ )
137
+ for row in result:
138
+ yield GetChangesByTypeRow(
139
+ id=row[0],
140
+ model_id=row[1],
141
+ field_name=row[2],
142
+ old_value=row[3],
143
+ new_value=row[4],
144
+ change_type=row[5],
145
+ detected_at=row[6],
146
+ created_at=row[7],
147
+ model_slug=row[8],
148
+ model_name=row[9],
149
+ )
150
+
151
+ def get_recent_changes(self, *, limit_count: int) -> Iterator[models.ModelChange]:
152
+ result = self._conn.execute(
153
+ sqlalchemy.text(GET_RECENT_CHANGES), {"p1": limit_count}
154
+ )
155
+ for row in result:
156
+ yield models.ModelChange(
157
+ id=row[0],
158
+ model_id=row[1],
159
+ field_name=row[2],
160
+ old_value=row[3],
161
+ new_value=row[4],
162
+ change_type=row[5],
163
+ detected_at=row[6],
164
+ created_at=row[7],
165
+ )
166
+
167
+ def insert_model_change(
168
+ self, arg: InsertModelChangeParams
169
+ ) -> Optional[models.ModelChange]:
170
+ row = self._conn.execute(
171
+ sqlalchemy.text(INSERT_MODEL_CHANGE),
172
+ {
173
+ "p1": arg.model_id,
174
+ "p2": arg.field_name,
175
+ "p3": arg.old_value,
176
+ "p4": arg.new_value,
177
+ "p5": arg.change_type,
178
+ },
179
+ ).first()
180
+ if row is None:
181
+ return None
182
+ return models.ModelChange(
183
+ id=row[0],
184
+ model_id=row[1],
185
+ field_name=row[2],
186
+ old_value=row[3],
187
+ new_value=row[4],
188
+ change_type=row[5],
189
+ detected_at=row[6],
190
+ created_at=row[7],
191
+ )
192
+
193
+
194
+ class AsyncQuerier:
195
+ def __init__(self, conn: sqlalchemy.ext.asyncio.AsyncConnection):
196
+ self._conn = conn
197
+
198
+ async def batch_insert_changes(
199
+ self, arg_list: List[BatchInsertChangesParams]
200
+ ) -> int:
201
+ data = list()
202
+ for item in arg_list:
203
+ data.append(
204
+ {
205
+ "p1": item.model_id,
206
+ "p2": item.field_name,
207
+ "p3": item.old_value,
208
+ "p4": item.new_value,
209
+ "p5": item.change_type,
210
+ }
211
+ )
212
+ result = await self._conn.execute(sqlalchemy.text(BATCH_INSERT_CHANGES), data)
213
+ return result.rowcount
214
+
215
+ async def get_changes_by_model(
216
+ self, *, model_id: uuid.UUID, limit_count: int
217
+ ) -> AsyncIterator[models.ModelChange]:
218
+ result = await self._conn.stream(
219
+ sqlalchemy.text(GET_CHANGES_BY_MODEL), {"p1": model_id, "p2": limit_count}
220
+ )
221
+ async for row in result:
222
+ yield models.ModelChange(
223
+ id=row[0],
224
+ model_id=row[1],
225
+ field_name=row[2],
226
+ old_value=row[3],
227
+ new_value=row[4],
228
+ change_type=row[5],
229
+ detected_at=row[6],
230
+ created_at=row[7],
231
+ )
232
+
233
+ async def get_changes_by_type(
234
+ self, *, change_type: Optional[str], since: Optional[datetime.datetime]
235
+ ) -> AsyncIterator[GetChangesByTypeRow]:
236
+ result = await self._conn.stream(
237
+ sqlalchemy.text(GET_CHANGES_BY_TYPE), {"p1": change_type, "p2": since}
238
+ )
239
+ async for row in result:
240
+ yield GetChangesByTypeRow(
241
+ id=row[0],
242
+ model_id=row[1],
243
+ field_name=row[2],
244
+ old_value=row[3],
245
+ new_value=row[4],
246
+ change_type=row[5],
247
+ detected_at=row[6],
248
+ created_at=row[7],
249
+ model_slug=row[8],
250
+ model_name=row[9],
251
+ )
252
+
253
+ async def get_recent_changes(
254
+ self, *, limit_count: int
255
+ ) -> AsyncIterator[models.ModelChange]:
256
+ result = await self._conn.stream(
257
+ sqlalchemy.text(GET_RECENT_CHANGES), {"p1": limit_count}
258
+ )
259
+ async for row in result:
260
+ yield models.ModelChange(
261
+ id=row[0],
262
+ model_id=row[1],
263
+ field_name=row[2],
264
+ old_value=row[3],
265
+ new_value=row[4],
266
+ change_type=row[5],
267
+ detected_at=row[6],
268
+ created_at=row[7],
269
+ )
270
+
271
+ async def insert_model_change(
272
+ self, arg: InsertModelChangeParams
273
+ ) -> Optional[models.ModelChange]:
274
+ row = (
275
+ await self._conn.execute(
276
+ sqlalchemy.text(INSERT_MODEL_CHANGE),
277
+ {
278
+ "p1": arg.model_id,
279
+ "p2": arg.field_name,
280
+ "p3": arg.old_value,
281
+ "p4": arg.new_value,
282
+ "p5": arg.change_type,
283
+ },
284
+ )
285
+ ).first()
286
+ if row is None:
287
+ return None
288
+ return models.ModelChange(
289
+ id=row[0],
290
+ model_id=row[1],
291
+ field_name=row[2],
292
+ old_value=row[3],
293
+ new_value=row[4],
294
+ change_type=row[5],
295
+ detected_at=row[6],
296
+ created_at=row[7],
297
+ )