wandb 0.22.2__py3-none-win_arm64.whl → 0.22.3__py3-none-win_arm64.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 (147) hide show
  1. wandb/__init__.py +1 -1
  2. wandb/__init__.pyi +2 -2
  3. wandb/_pydantic/__init__.py +8 -1
  4. wandb/_pydantic/base.py +54 -18
  5. wandb/_pydantic/field_types.py +8 -3
  6. wandb/_pydantic/pagination.py +46 -0
  7. wandb/_pydantic/utils.py +2 -2
  8. wandb/apis/public/api.py +24 -19
  9. wandb/apis/public/artifacts.py +259 -270
  10. wandb/apis/public/registries/_utils.py +40 -54
  11. wandb/apis/public/registries/registries_search.py +70 -85
  12. wandb/apis/public/registries/registry.py +173 -156
  13. wandb/apis/public/runs.py +27 -6
  14. wandb/apis/public/utils.py +43 -20
  15. wandb/automations/_generated/create_automation.py +2 -2
  16. wandb/automations/_generated/create_generic_webhook_integration.py +4 -4
  17. wandb/automations/_generated/delete_automation.py +2 -2
  18. wandb/automations/_generated/fragments.py +31 -52
  19. wandb/automations/_generated/generic_webhook_integrations_by_entity.py +3 -3
  20. wandb/automations/_generated/get_automations.py +3 -3
  21. wandb/automations/_generated/get_automations_by_entity.py +3 -3
  22. wandb/automations/_generated/input_types.py +9 -9
  23. wandb/automations/_generated/integrations_by_entity.py +3 -3
  24. wandb/automations/_generated/operations.py +6 -6
  25. wandb/automations/_generated/slack_integrations_by_entity.py +3 -3
  26. wandb/automations/_generated/update_automation.py +2 -2
  27. wandb/automations/_utils.py +3 -3
  28. wandb/automations/actions.py +3 -3
  29. wandb/automations/automations.py +6 -5
  30. wandb/bin/gpu_stats.exe +0 -0
  31. wandb/bin/wandb-core +0 -0
  32. wandb/cli/beta.py +8 -2
  33. wandb/cli/beta_leet.py +2 -1
  34. wandb/cli/beta_sync.py +1 -1
  35. wandb/errors/term.py +8 -8
  36. wandb/jupyter.py +0 -51
  37. wandb/old/settings.py +6 -6
  38. wandb/proto/v3/wandb_internal_pb2.py +351 -352
  39. wandb/proto/v3/wandb_server_pb2.py +38 -37
  40. wandb/proto/v3/wandb_settings_pb2.py +2 -2
  41. wandb/proto/v3/wandb_sync_pb2.py +19 -6
  42. wandb/proto/v4/wandb_internal_pb2.py +351 -352
  43. wandb/proto/v4/wandb_server_pb2.py +38 -37
  44. wandb/proto/v4/wandb_settings_pb2.py +2 -2
  45. wandb/proto/v4/wandb_sync_pb2.py +10 -6
  46. wandb/proto/v5/wandb_internal_pb2.py +351 -352
  47. wandb/proto/v5/wandb_server_pb2.py +38 -37
  48. wandb/proto/v5/wandb_settings_pb2.py +2 -2
  49. wandb/proto/v5/wandb_sync_pb2.py +10 -6
  50. wandb/proto/v6/wandb_internal_pb2.py +351 -352
  51. wandb/proto/v6/wandb_server_pb2.py +38 -37
  52. wandb/proto/v6/wandb_settings_pb2.py +2 -2
  53. wandb/proto/v6/wandb_sync_pb2.py +10 -6
  54. wandb/sdk/artifacts/_generated/__init__.py +96 -40
  55. wandb/sdk/artifacts/_generated/add_aliases.py +3 -3
  56. wandb/sdk/artifacts/_generated/add_artifact_collection_tags.py +26 -0
  57. wandb/sdk/artifacts/_generated/artifact_by_id.py +2 -2
  58. wandb/sdk/artifacts/_generated/artifact_by_name.py +3 -3
  59. wandb/sdk/artifacts/_generated/artifact_collection_membership_file_urls.py +27 -8
  60. wandb/sdk/artifacts/_generated/artifact_collection_membership_files.py +27 -8
  61. wandb/sdk/artifacts/_generated/artifact_created_by.py +7 -20
  62. wandb/sdk/artifacts/_generated/artifact_file_urls.py +19 -6
  63. wandb/sdk/artifacts/_generated/artifact_membership_by_name.py +26 -0
  64. wandb/sdk/artifacts/_generated/artifact_type.py +5 -5
  65. wandb/sdk/artifacts/_generated/artifact_used_by.py +8 -17
  66. wandb/sdk/artifacts/_generated/artifact_version_files.py +19 -8
  67. wandb/sdk/artifacts/_generated/delete_aliases.py +3 -3
  68. wandb/sdk/artifacts/_generated/delete_artifact.py +4 -4
  69. wandb/sdk/artifacts/_generated/delete_artifact_collection_tags.py +23 -0
  70. wandb/sdk/artifacts/_generated/delete_artifact_portfolio.py +4 -4
  71. wandb/sdk/artifacts/_generated/delete_artifact_sequence.py +4 -4
  72. wandb/sdk/artifacts/_generated/delete_registry.py +21 -0
  73. wandb/sdk/artifacts/_generated/fetch_artifact_manifest.py +8 -20
  74. wandb/sdk/artifacts/_generated/fetch_linked_artifacts.py +13 -35
  75. wandb/sdk/artifacts/_generated/fetch_org_info_from_entity.py +28 -0
  76. wandb/sdk/artifacts/_generated/fetch_registries.py +18 -8
  77. wandb/sdk/{projects → artifacts}/_generated/fetch_registry.py +4 -4
  78. wandb/sdk/artifacts/_generated/fragments.py +183 -333
  79. wandb/sdk/artifacts/_generated/input_types.py +133 -7
  80. wandb/sdk/artifacts/_generated/link_artifact.py +5 -5
  81. wandb/sdk/artifacts/_generated/operations.py +1053 -548
  82. wandb/sdk/artifacts/_generated/project_artifact_collection.py +9 -77
  83. wandb/sdk/artifacts/_generated/project_artifact_collections.py +21 -9
  84. wandb/sdk/artifacts/_generated/project_artifact_type.py +3 -3
  85. wandb/sdk/artifacts/_generated/project_artifact_types.py +19 -6
  86. wandb/sdk/artifacts/_generated/project_artifacts.py +7 -8
  87. wandb/sdk/artifacts/_generated/registry_collections.py +21 -9
  88. wandb/sdk/artifacts/_generated/registry_versions.py +20 -9
  89. wandb/sdk/artifacts/_generated/rename_registry.py +25 -0
  90. wandb/sdk/artifacts/_generated/run_input_artifacts.py +5 -9
  91. wandb/sdk/artifacts/_generated/run_output_artifacts.py +5 -9
  92. wandb/sdk/artifacts/_generated/type_info.py +2 -2
  93. wandb/sdk/artifacts/_generated/unlink_artifact.py +3 -5
  94. wandb/sdk/artifacts/_generated/update_artifact.py +3 -3
  95. wandb/sdk/artifacts/_generated/update_artifact_collection_type.py +28 -0
  96. wandb/sdk/artifacts/_generated/update_artifact_portfolio.py +7 -16
  97. wandb/sdk/artifacts/_generated/update_artifact_sequence.py +7 -16
  98. wandb/sdk/artifacts/_generated/upsert_registry.py +25 -0
  99. wandb/sdk/artifacts/_gqlutils.py +170 -6
  100. wandb/sdk/artifacts/_models/__init__.py +9 -0
  101. wandb/sdk/artifacts/_models/artifact_collection.py +109 -0
  102. wandb/sdk/artifacts/_models/manifest.py +26 -0
  103. wandb/sdk/artifacts/_models/pagination.py +26 -0
  104. wandb/sdk/artifacts/_models/registry.py +100 -0
  105. wandb/sdk/artifacts/_validators.py +45 -27
  106. wandb/sdk/artifacts/artifact.py +220 -215
  107. wandb/sdk/artifacts/artifact_file_cache.py +1 -1
  108. wandb/sdk/artifacts/artifact_manifest.py +37 -32
  109. wandb/sdk/artifacts/artifact_manifest_entry.py +80 -125
  110. wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +43 -61
  111. wandb/sdk/artifacts/storage_handlers/gcs_handler.py +8 -6
  112. wandb/sdk/data_types/image.py +2 -2
  113. wandb/sdk/interface/interface.py +72 -64
  114. wandb/sdk/interface/interface_queue.py +27 -18
  115. wandb/sdk/interface/interface_shared.py +61 -23
  116. wandb/sdk/interface/interface_sock.py +9 -5
  117. wandb/sdk/internal/_generated/server_features_query.py +4 -4
  118. wandb/sdk/launch/inputs/schema.py +13 -10
  119. wandb/sdk/lib/apikey.py +8 -12
  120. wandb/sdk/lib/asyncio_compat.py +1 -1
  121. wandb/sdk/lib/asyncio_manager.py +5 -5
  122. wandb/sdk/lib/console_capture.py +38 -30
  123. wandb/sdk/lib/progress.py +159 -64
  124. wandb/sdk/lib/retry.py +3 -2
  125. wandb/sdk/lib/service/service_connection.py +2 -2
  126. wandb/sdk/lib/wb_logging.py +2 -1
  127. wandb/sdk/mailbox/mailbox.py +1 -1
  128. wandb/sdk/wandb_init.py +10 -13
  129. wandb/sdk/wandb_run.py +9 -46
  130. wandb/sdk/wandb_settings.py +102 -19
  131. {wandb-0.22.2.dist-info → wandb-0.22.3.dist-info}/METADATA +2 -1
  132. {wandb-0.22.2.dist-info → wandb-0.22.3.dist-info}/RECORD +135 -134
  133. wandb/sdk/artifacts/_generated/artifact_via_membership_by_name.py +0 -26
  134. wandb/sdk/artifacts/_generated/create_artifact_collection_tag_assignments.py +0 -36
  135. wandb/sdk/artifacts/_generated/delete_artifact_collection_tag_assignments.py +0 -25
  136. wandb/sdk/artifacts/_generated/move_artifact_collection.py +0 -35
  137. wandb/sdk/projects/_generated/__init__.py +0 -26
  138. wandb/sdk/projects/_generated/delete_project.py +0 -22
  139. wandb/sdk/projects/_generated/enums.py +0 -4
  140. wandb/sdk/projects/_generated/fragments.py +0 -41
  141. wandb/sdk/projects/_generated/input_types.py +0 -13
  142. wandb/sdk/projects/_generated/operations.py +0 -88
  143. wandb/sdk/projects/_generated/rename_project.py +0 -27
  144. wandb/sdk/projects/_generated/upsert_registry_project.py +0 -27
  145. {wandb-0.22.2.dist-info → wandb-0.22.3.dist-info}/WHEEL +0 -0
  146. {wandb-0.22.2.dist-info → wandb-0.22.3.dist-info}/entry_points.txt +0 -0
  147. {wandb-0.22.2.dist-info → wandb-0.22.3.dist-info}/licenses/LICENSE +0 -0
@@ -7,18 +7,18 @@ from typing import Literal, Optional, Union
7
7
 
8
8
  from pydantic import Field
9
9
 
10
- from wandb._pydantic import GQLBase, Typename
10
+ from wandb._pydantic import GQLResult, Typename
11
11
 
12
12
  from .fragments import GenericWebhookIntegrationFields
13
13
 
14
14
 
15
- class CreateGenericWebhookIntegration(GQLBase):
15
+ class CreateGenericWebhookIntegration(GQLResult):
16
16
  create_generic_webhook_integration: Optional[
17
17
  CreateGenericWebhookIntegrationCreateGenericWebhookIntegration
18
18
  ] = Field(alias="createGenericWebhookIntegration")
19
19
 
20
20
 
21
- class CreateGenericWebhookIntegrationCreateGenericWebhookIntegration(GQLBase):
21
+ class CreateGenericWebhookIntegrationCreateGenericWebhookIntegration(GQLResult):
22
22
  integration: Union[
23
23
  CreateGenericWebhookIntegrationCreateGenericWebhookIntegrationIntegrationIntegration,
24
24
  GenericWebhookIntegrationFields,
@@ -26,7 +26,7 @@ class CreateGenericWebhookIntegrationCreateGenericWebhookIntegration(GQLBase):
26
26
 
27
27
 
28
28
  class CreateGenericWebhookIntegrationCreateGenericWebhookIntegrationIntegrationIntegration(
29
- GQLBase
29
+ GQLResult
30
30
  ):
31
31
  typename__: Typename[
32
32
  Literal["GitHubOAuthIntegration", "Integration", "SlackIntegration"]
@@ -3,12 +3,12 @@
3
3
 
4
4
  from __future__ import annotations
5
5
 
6
- from wandb._pydantic import GQLBase
6
+ from wandb._pydantic import GQLResult
7
7
 
8
8
  from .fragments import DeleteAutomationResult
9
9
 
10
10
 
11
- class DeleteAutomation(GQLBase):
11
+ class DeleteAutomation(GQLResult):
12
12
  result: DeleteAutomationResult
13
13
 
14
14
 
@@ -9,36 +9,36 @@ from typing import List, Literal, Optional, Union
9
9
  from pydantic import Field
10
10
  from typing_extensions import Annotated
11
11
 
12
- from wandb._pydantic import GQLBase, GQLId, Typename
12
+ from wandb._pydantic import GQLId, GQLResult, Typename
13
13
 
14
14
  from .enums import AlertSeverity, EventTriggeringConditionType
15
15
 
16
16
 
17
- class ArtifactPortfolioScopeFields(GQLBase):
17
+ class ArtifactPortfolioScopeFields(GQLResult):
18
18
  typename__: Typename[Literal["ArtifactPortfolio"]] = "ArtifactPortfolio"
19
19
  id: GQLId
20
20
  name: str
21
21
 
22
22
 
23
- class ArtifactSequenceScopeFields(GQLBase):
23
+ class ArtifactSequenceScopeFields(GQLResult):
24
24
  typename__: Typename[Literal["ArtifactSequence"]] = "ArtifactSequence"
25
25
  id: GQLId
26
26
  name: str
27
27
 
28
28
 
29
- class CreateAutomationResult(GQLBase):
29
+ class CreateAutomationResult(GQLResult):
30
30
  typename__: Typename[Literal["CreateFilterTriggerPayload"]] = (
31
31
  "CreateFilterTriggerPayload"
32
32
  )
33
33
  trigger: Optional[TriggerFields]
34
34
 
35
35
 
36
- class DeleteAutomationResult(GQLBase):
36
+ class DeleteAutomationResult(GQLResult):
37
37
  typename__: Typename[Literal["DeleteTriggerPayload"]] = "DeleteTriggerPayload"
38
38
  success: bool
39
39
 
40
40
 
41
- class FilterEventFields(GQLBase):
41
+ class FilterEventFields(GQLResult):
42
42
  typename__: Typename[Literal["FilterEventTriggeringCondition"]] = (
43
43
  "FilterEventTriggeringCondition"
44
44
  )
@@ -46,7 +46,7 @@ class FilterEventFields(GQLBase):
46
46
  filter: str
47
47
 
48
48
 
49
- class GenericWebhookActionFields(GQLBase):
49
+ class GenericWebhookActionFields(GQLResult):
50
50
  typename__: Typename[Literal["GenericWebhookTriggeredAction"]] = (
51
51
  "GenericWebhookTriggeredAction"
52
52
  )
@@ -57,19 +57,19 @@ class GenericWebhookActionFields(GQLBase):
57
57
  request_payload: Optional[str] = Field(alias="requestPayload")
58
58
 
59
59
 
60
- class GenericWebhookActionFieldsIntegrationIntegration(GQLBase):
60
+ class GenericWebhookActionFieldsIntegrationIntegration(GQLResult):
61
61
  typename__: Typename[
62
62
  Literal["GitHubOAuthIntegration", "Integration", "SlackIntegration"]
63
63
  ]
64
64
 
65
65
 
66
- class GenericWebhookIntegrationConnectionFields(GQLBase):
66
+ class GenericWebhookIntegrationConnectionFields(GQLResult):
67
67
  typename__: Typename[Literal["IntegrationConnection"]] = "IntegrationConnection"
68
68
  page_info: PageInfoFields = Field(alias="pageInfo")
69
69
  edges: List[GenericWebhookIntegrationConnectionFieldsEdges]
70
70
 
71
71
 
72
- class GenericWebhookIntegrationConnectionFieldsEdges(GQLBase):
72
+ class GenericWebhookIntegrationConnectionFieldsEdges(GQLResult):
73
73
  cursor: str
74
74
  node: Optional[
75
75
  Annotated[
@@ -82,13 +82,13 @@ class GenericWebhookIntegrationConnectionFieldsEdges(GQLBase):
82
82
  ]
83
83
 
84
84
 
85
- class GenericWebhookIntegrationConnectionFieldsEdgesNodeIntegration(GQLBase):
85
+ class GenericWebhookIntegrationConnectionFieldsEdgesNodeIntegration(GQLResult):
86
86
  typename__: Typename[
87
87
  Literal["GitHubOAuthIntegration", "Integration", "SlackIntegration"]
88
88
  ]
89
89
 
90
90
 
91
- class GenericWebhookIntegrationFields(GQLBase):
91
+ class GenericWebhookIntegrationFields(GQLResult):
92
92
  typename__: Typename[Literal["GenericWebhookIntegration"]] = (
93
93
  "GenericWebhookIntegration"
94
94
  )
@@ -97,13 +97,13 @@ class GenericWebhookIntegrationFields(GQLBase):
97
97
  url_endpoint: str = Field(alias="urlEndpoint")
98
98
 
99
99
 
100
- class IntegrationConnectionFields(GQLBase):
100
+ class IntegrationConnectionFields(GQLResult):
101
101
  typename__: Typename[Literal["IntegrationConnection"]] = "IntegrationConnection"
102
102
  page_info: PageInfoFields = Field(alias="pageInfo")
103
103
  edges: List[IntegrationConnectionFieldsEdges]
104
104
 
105
105
 
106
- class IntegrationConnectionFieldsEdges(GQLBase):
106
+ class IntegrationConnectionFieldsEdges(GQLResult):
107
107
  cursor: str
108
108
  node: Optional[
109
109
  Annotated[
@@ -117,16 +117,16 @@ class IntegrationConnectionFieldsEdges(GQLBase):
117
117
  ]
118
118
 
119
119
 
120
- class IntegrationConnectionFieldsEdgesNodeIntegration(GQLBase):
120
+ class IntegrationConnectionFieldsEdgesNodeIntegration(GQLResult):
121
121
  typename__: Typename[Literal["GitHubOAuthIntegration", "Integration"]]
122
122
 
123
123
 
124
- class NoOpActionFields(GQLBase):
124
+ class NoOpActionFields(GQLResult):
125
125
  typename__: Typename[Literal["NoOpTriggeredAction"]] = "NoOpTriggeredAction"
126
126
  no_op: Optional[bool] = Field(alias="noOp")
127
127
 
128
128
 
129
- class NotificationActionFields(GQLBase):
129
+ class NotificationActionFields(GQLResult):
130
130
  typename__: Typename[Literal["NotificationTriggeredAction"]] = (
131
131
  "NotificationTriggeredAction"
132
132
  )
@@ -138,56 +138,56 @@ class NotificationActionFields(GQLBase):
138
138
  severity: Optional[AlertSeverity]
139
139
 
140
140
 
141
- class NotificationActionFieldsIntegrationIntegration(GQLBase):
141
+ class NotificationActionFieldsIntegrationIntegration(GQLResult):
142
142
  typename__: Typename[
143
143
  Literal["GenericWebhookIntegration", "GitHubOAuthIntegration", "Integration"]
144
144
  ]
145
145
 
146
146
 
147
- class PageInfoFields(GQLBase):
147
+ class PageInfoFields(GQLResult):
148
148
  end_cursor: Optional[str] = Field(alias="endCursor")
149
149
  has_next_page: bool = Field(alias="hasNextPage")
150
150
 
151
151
 
152
- class ProjectConnectionFields(GQLBase):
152
+ class ProjectConnectionFields(GQLResult):
153
153
  typename__: Typename[Literal["ProjectConnection"]] = "ProjectConnection"
154
154
  page_info: PageInfoFields = Field(alias="pageInfo")
155
155
  edges: List[ProjectConnectionFieldsEdges]
156
156
 
157
157
 
158
- class ProjectConnectionFieldsEdges(GQLBase):
158
+ class ProjectConnectionFieldsEdges(GQLResult):
159
159
  cursor: str
160
160
  node: Optional[ProjectConnectionFieldsEdgesNode]
161
161
 
162
162
 
163
- class ProjectConnectionFieldsEdgesNode(GQLBase):
163
+ class ProjectConnectionFieldsEdgesNode(GQLResult):
164
164
  triggers: List[TriggerFields]
165
165
 
166
166
 
167
- class ProjectScopeFields(GQLBase):
167
+ class ProjectScopeFields(GQLResult):
168
168
  typename__: Typename[Literal["Project"]] = "Project"
169
169
  id: GQLId
170
170
  name: str
171
171
 
172
172
 
173
- class QueueJobActionFields(GQLBase):
173
+ class QueueJobActionFields(GQLResult):
174
174
  typename__: Typename[Literal["QueueJobTriggeredAction"]] = "QueueJobTriggeredAction"
175
175
  queue: Optional[QueueJobActionFieldsQueue]
176
176
  template: str
177
177
 
178
178
 
179
- class QueueJobActionFieldsQueue(GQLBase):
179
+ class QueueJobActionFieldsQueue(GQLResult):
180
180
  id: GQLId
181
181
  name: str
182
182
 
183
183
 
184
- class SlackIntegrationConnectionFields(GQLBase):
184
+ class SlackIntegrationConnectionFields(GQLResult):
185
185
  typename__: Typename[Literal["IntegrationConnection"]] = "IntegrationConnection"
186
186
  page_info: PageInfoFields = Field(alias="pageInfo")
187
187
  edges: List[SlackIntegrationConnectionFieldsEdges]
188
188
 
189
189
 
190
- class SlackIntegrationConnectionFieldsEdges(GQLBase):
190
+ class SlackIntegrationConnectionFieldsEdges(GQLResult):
191
191
  cursor: str
192
192
  node: Optional[
193
193
  Annotated[
@@ -200,20 +200,20 @@ class SlackIntegrationConnectionFieldsEdges(GQLBase):
200
200
  ]
201
201
 
202
202
 
203
- class SlackIntegrationConnectionFieldsEdgesNodeIntegration(GQLBase):
203
+ class SlackIntegrationConnectionFieldsEdgesNodeIntegration(GQLResult):
204
204
  typename__: Typename[
205
205
  Literal["GenericWebhookIntegration", "GitHubOAuthIntegration", "Integration"]
206
206
  ]
207
207
 
208
208
 
209
- class SlackIntegrationFields(GQLBase):
209
+ class SlackIntegrationFields(GQLResult):
210
210
  typename__: Typename[Literal["SlackIntegration"]] = "SlackIntegration"
211
211
  id: GQLId
212
212
  team_name: str = Field(alias="teamName")
213
213
  channel_name: str = Field(alias="channelName")
214
214
 
215
215
 
216
- class TriggerFields(GQLBase):
216
+ class TriggerFields(GQLResult):
217
217
  typename__: Typename[Literal["Trigger"]] = "Trigger"
218
218
  id: GQLId
219
219
  created_at: datetime = Field(alias="createdAt")
@@ -233,7 +233,7 @@ class TriggerFields(GQLBase):
233
233
  ] = Field(discriminator="typename__")
234
234
 
235
235
 
236
- class UpdateAutomationResult(GQLBase):
236
+ class UpdateAutomationResult(GQLResult):
237
237
  typename__: Typename[Literal["UpdateFilterTriggerPayload"]] = (
238
238
  "UpdateFilterTriggerPayload"
239
239
  )
@@ -270,24 +270,3 @@ SlackIntegrationConnectionFieldsEdgesNodeIntegration.model_rebuild()
270
270
  SlackIntegrationFields.model_rebuild()
271
271
  TriggerFields.model_rebuild()
272
272
  UpdateAutomationResult.model_rebuild()
273
- ArtifactPortfolioScopeFields.model_rebuild()
274
- ArtifactSequenceScopeFields.model_rebuild()
275
- FilterEventFields.model_rebuild()
276
- GenericWebhookActionFields.model_rebuild()
277
- GenericWebhookIntegrationFields.model_rebuild()
278
- GenericWebhookIntegrationFields.model_rebuild()
279
- GenericWebhookIntegrationFields.model_rebuild()
280
- NoOpActionFields.model_rebuild()
281
- NotificationActionFields.model_rebuild()
282
- PageInfoFields.model_rebuild()
283
- PageInfoFields.model_rebuild()
284
- PageInfoFields.model_rebuild()
285
- PageInfoFields.model_rebuild()
286
- ProjectScopeFields.model_rebuild()
287
- QueueJobActionFields.model_rebuild()
288
- SlackIntegrationFields.model_rebuild()
289
- SlackIntegrationFields.model_rebuild()
290
- SlackIntegrationFields.model_rebuild()
291
- TriggerFields.model_rebuild()
292
- TriggerFields.model_rebuild()
293
- TriggerFields.model_rebuild()
@@ -5,16 +5,16 @@ from __future__ import annotations
5
5
 
6
6
  from typing import Optional
7
7
 
8
- from wandb._pydantic import GQLBase
8
+ from wandb._pydantic import GQLResult
9
9
 
10
10
  from .fragments import GenericWebhookIntegrationConnectionFields
11
11
 
12
12
 
13
- class GenericWebhookIntegrationsByEntity(GQLBase):
13
+ class GenericWebhookIntegrationsByEntity(GQLResult):
14
14
  entity: Optional[GenericWebhookIntegrationsByEntityEntity]
15
15
 
16
16
 
17
- class GenericWebhookIntegrationsByEntityEntity(GQLBase):
17
+ class GenericWebhookIntegrationsByEntityEntity(GQLResult):
18
18
  integrations: Optional[GenericWebhookIntegrationConnectionFields]
19
19
 
20
20
 
@@ -7,16 +7,16 @@ from typing import Optional
7
7
 
8
8
  from pydantic import Field
9
9
 
10
- from wandb._pydantic import GQLBase
10
+ from wandb._pydantic import GQLResult
11
11
 
12
12
  from .fragments import ProjectConnectionFields
13
13
 
14
14
 
15
- class GetAutomations(GQLBase):
15
+ class GetAutomations(GQLResult):
16
16
  search_scope: Optional[GetAutomationsSearchScope] = Field(alias="searchScope")
17
17
 
18
18
 
19
- class GetAutomationsSearchScope(GQLBase):
19
+ class GetAutomationsSearchScope(GQLResult):
20
20
  projects: Optional[ProjectConnectionFields]
21
21
 
22
22
 
@@ -7,18 +7,18 @@ from typing import Optional
7
7
 
8
8
  from pydantic import Field
9
9
 
10
- from wandb._pydantic import GQLBase
10
+ from wandb._pydantic import GQLResult
11
11
 
12
12
  from .fragments import ProjectConnectionFields
13
13
 
14
14
 
15
- class GetAutomationsByEntity(GQLBase):
15
+ class GetAutomationsByEntity(GQLResult):
16
16
  search_scope: Optional[GetAutomationsByEntitySearchScope] = Field(
17
17
  alias="searchScope"
18
18
  )
19
19
 
20
20
 
21
- class GetAutomationsByEntitySearchScope(GQLBase):
21
+ class GetAutomationsByEntitySearchScope(GQLResult):
22
22
  projects: Optional[ProjectConnectionFields]
23
23
 
24
24
 
@@ -7,7 +7,7 @@ from typing import Optional
7
7
 
8
8
  from pydantic import Field
9
9
 
10
- from wandb._pydantic import GQLBase, GQLId
10
+ from wandb._pydantic import GQLId, GQLInput
11
11
 
12
12
  from .enums import (
13
13
  AlertSeverity,
@@ -17,7 +17,7 @@ from .enums import (
17
17
  )
18
18
 
19
19
 
20
- class CreateGenericWebhookIntegrationInput(GQLBase):
20
+ class CreateGenericWebhookIntegrationInput(GQLInput):
21
21
  entity_name: str = Field(alias="entityName")
22
22
  url_endpoint: str = Field(alias="urlEndpoint")
23
23
  name: str
@@ -26,28 +26,28 @@ class CreateGenericWebhookIntegrationInput(GQLBase):
26
26
  client_mutation_id: Optional[str] = Field(alias="clientMutationId", default=None)
27
27
 
28
28
 
29
- class QueueJobActionInput(GQLBase):
29
+ class QueueJobActionInput(GQLInput):
30
30
  queue_id: GQLId = Field(alias="queueID")
31
31
  template: str
32
32
 
33
33
 
34
- class NotificationActionInput(GQLBase):
34
+ class NotificationActionInput(GQLInput):
35
35
  integration_id: GQLId = Field(alias="integrationID")
36
36
  title: Optional[str] = None
37
37
  message: Optional[str] = None
38
38
  severity: Optional[AlertSeverity] = None
39
39
 
40
40
 
41
- class GenericWebhookActionInput(GQLBase):
41
+ class GenericWebhookActionInput(GQLInput):
42
42
  integration_id: GQLId = Field(alias="integrationID")
43
43
  request_payload: Optional[str] = Field(alias="requestPayload", default=None)
44
44
 
45
45
 
46
- class NoOpTriggeredActionInput(GQLBase):
46
+ class NoOpTriggeredActionInput(GQLInput):
47
47
  no_op: Optional[bool] = Field(alias="noOp", default=None)
48
48
 
49
49
 
50
- class TriggeredActionConfig(GQLBase):
50
+ class TriggeredActionConfig(GQLInput):
51
51
  queue_job_action_input: Optional[QueueJobActionInput] = Field(
52
52
  alias="queueJobActionInput", default=None
53
53
  )
@@ -62,7 +62,7 @@ class TriggeredActionConfig(GQLBase):
62
62
  )
63
63
 
64
64
 
65
- class CreateFilterTriggerInput(GQLBase):
65
+ class CreateFilterTriggerInput(GQLInput):
66
66
  name: str
67
67
  description: Optional[str] = None
68
68
  triggering_event_type: EventTriggeringConditionType = Field(
@@ -79,7 +79,7 @@ class CreateFilterTriggerInput(GQLBase):
79
79
  client_mutation_id: Optional[str] = Field(alias="clientMutationId", default=None)
80
80
 
81
81
 
82
- class UpdateFilterTriggerInput(GQLBase):
82
+ class UpdateFilterTriggerInput(GQLInput):
83
83
  id: GQLId
84
84
  name: Optional[str] = None
85
85
  description: Optional[str] = None
@@ -5,16 +5,16 @@ from __future__ import annotations
5
5
 
6
6
  from typing import Optional
7
7
 
8
- from wandb._pydantic import GQLBase
8
+ from wandb._pydantic import GQLResult
9
9
 
10
10
  from .fragments import IntegrationConnectionFields
11
11
 
12
12
 
13
- class IntegrationsByEntity(GQLBase):
13
+ class IntegrationsByEntity(GQLResult):
14
14
  entity: Optional[IntegrationsByEntityEntity]
15
15
 
16
16
 
17
- class IntegrationsByEntityEntity(GQLBase):
17
+ class IntegrationsByEntityEntity(GQLResult):
18
18
  integrations: Optional[IntegrationConnectionFields]
19
19
 
20
20
 
@@ -272,8 +272,8 @@ fragment TriggerFields on Trigger {
272
272
  """
273
273
 
274
274
  CREATE_AUTOMATION_GQL = """
275
- mutation CreateAutomation($params: CreateFilterTriggerInput!) {
276
- result: createFilterTrigger(input: $params) {
275
+ mutation CreateAutomation($input: CreateFilterTriggerInput!) {
276
+ result: createFilterTrigger(input: $input) {
277
277
  ...CreateAutomationResult
278
278
  }
279
279
  }
@@ -386,8 +386,8 @@ fragment TriggerFields on Trigger {
386
386
  """
387
387
 
388
388
  UPDATE_AUTOMATION_GQL = """
389
- mutation UpdateAutomation($params: UpdateFilterTriggerInput!) {
390
- result: updateFilterTrigger(input: $params) {
389
+ mutation UpdateAutomation($input: UpdateFilterTriggerInput!) {
390
+ result: updateFilterTrigger(input: $input) {
391
391
  ...UpdateAutomationResult
392
392
  }
393
393
  }
@@ -629,8 +629,8 @@ fragment PageInfoFields on PageInfo {
629
629
  """
630
630
 
631
631
  CREATE_GENERIC_WEBHOOK_INTEGRATION_GQL = """
632
- mutation CreateGenericWebhookIntegration($params: CreateGenericWebhookIntegrationInput!) {
633
- createGenericWebhookIntegration(input: $params) {
632
+ mutation CreateGenericWebhookIntegration($input: CreateGenericWebhookIntegrationInput!) {
633
+ createGenericWebhookIntegration(input: $input) {
634
634
  integration {
635
635
  __typename
636
636
  ...GenericWebhookIntegrationFields
@@ -5,16 +5,16 @@ from __future__ import annotations
5
5
 
6
6
  from typing import Optional
7
7
 
8
- from wandb._pydantic import GQLBase
8
+ from wandb._pydantic import GQLResult
9
9
 
10
10
  from .fragments import SlackIntegrationConnectionFields
11
11
 
12
12
 
13
- class SlackIntegrationsByEntity(GQLBase):
13
+ class SlackIntegrationsByEntity(GQLResult):
14
14
  entity: Optional[SlackIntegrationsByEntityEntity]
15
15
 
16
16
 
17
- class SlackIntegrationsByEntityEntity(GQLBase):
17
+ class SlackIntegrationsByEntityEntity(GQLResult):
18
18
  integrations: Optional[SlackIntegrationConnectionFields]
19
19
 
20
20
 
@@ -5,12 +5,12 @@ from __future__ import annotations
5
5
 
6
6
  from typing import Optional
7
7
 
8
- from wandb._pydantic import GQLBase
8
+ from wandb._pydantic import GQLResult
9
9
 
10
10
  from .fragments import UpdateAutomationResult
11
11
 
12
12
 
13
- class UpdateAutomation(GQLBase):
13
+ class UpdateAutomation(GQLResult):
14
14
  result: Optional[UpdateAutomationResult]
15
15
 
16
16
 
@@ -5,7 +5,7 @@ from typing import Any, Collection, Final, Optional, Protocol, TypedDict
5
5
  from pydantic import Field
6
6
  from typing_extensions import Annotated, Self, Unpack
7
7
 
8
- from wandb._pydantic import GQLBase, GQLId, computed_field, model_validator, to_json
8
+ from wandb._pydantic import GQLId, GQLInput, computed_field, model_validator, to_json
9
9
 
10
10
  from ._filters import MongoLikeFilter
11
11
  from ._generated import (
@@ -132,7 +132,7 @@ class WriteAutomationsKwargs(TypedDict, total=False):
132
132
  action: InputAction
133
133
 
134
134
 
135
- class ValidatedCreateInput(GQLBase, extra="forbid", frozen=True):
135
+ class ValidatedCreateInput(GQLInput, extra="forbid", frozen=True):
136
136
  """Validated automation parameters, prepared for creating a new automation.
137
137
 
138
138
  Note: Users should never need to instantiate this class directly.
@@ -205,7 +205,7 @@ def prepare_to_create(
205
205
  # "unset" value. If this proves insufficient, revisit in the future,
206
206
  # as it should be reasonably easy to implement a custom sentinel
207
207
  # type later on.
208
- obj_dict = {**obj.model_dump(exclude_none=True), **kwargs} if obj else kwargs
208
+ obj_dict = {**obj.model_dump(), **kwargs} if obj else kwargs
209
209
  validated = ValidatedCreateInput(**obj_dict)
210
210
  return CreateFilterTriggerInput.model_validate(validated)
211
211
 
@@ -74,12 +74,12 @@ class _SavedActionWebhookIntegration(GQLBase, extra="allow"):
74
74
  id: GQLId
75
75
 
76
76
 
77
- class SavedNotificationAction(NotificationActionFields):
77
+ class SavedNotificationAction(NotificationActionFields, frozen=False):
78
78
  action_type: Literal[ActionType.NOTIFICATION] = ActionType.NOTIFICATION
79
79
  integration: _SavedActionSlackIntegration
80
80
 
81
81
 
82
- class SavedWebhookAction(GenericWebhookActionFields):
82
+ class SavedWebhookAction(GenericWebhookActionFields, frozen=False):
83
83
  action_type: Literal[ActionType.GENERIC_WEBHOOK] = ActionType.GENERIC_WEBHOOK
84
84
  integration: _SavedActionWebhookIntegration
85
85
 
@@ -92,7 +92,7 @@ class SavedWebhookAction(GenericWebhookActionFields):
92
92
  ] = None # type: ignore[assignment]
93
93
 
94
94
 
95
- class SavedNoOpAction(NoOpActionFields, frozen=True):
95
+ class SavedNoOpAction(NoOpActionFields, frozen=False):
96
96
  action_type: Literal[ActionType.NO_OP] = ActionType.NO_OP
97
97
 
98
98
  no_op: Annotated[bool, BeforeValidator(default_if_none)] = True
@@ -6,7 +6,7 @@ from typing import Optional
6
6
  from pydantic import Field
7
7
  from typing_extensions import Annotated
8
8
 
9
- from wandb._pydantic import GQLBase, GQLId
9
+ from wandb._pydantic import GQLId, GQLInput
10
10
 
11
11
  from ._generated import TriggerFields
12
12
  from .actions import InputAction, SavedAction
@@ -15,9 +15,10 @@ from .scopes import AutomationScope
15
15
 
16
16
 
17
17
  # ------------------------------------------------------------------------------
18
- # Saved types: for parsing response data from saved automations
19
- class Automation(TriggerFields):
20
- """A local instance of a saved W&B automation."""
18
+ # Saved types: for parsing response data from saved automations while allowing
19
+ # local editing.
20
+ class Automation(TriggerFields, frozen=False):
21
+ """A local instance of a saved W&B automation that supports editing."""
21
22
 
22
23
  id: GQLId
23
24
 
@@ -48,7 +49,7 @@ class Automation(TriggerFields):
48
49
  """The action that will execute when this automation is triggered."""
49
50
 
50
51
 
51
- class NewAutomation(GQLBase, extra="forbid", validate_default=False):
52
+ class NewAutomation(GQLInput, extra="forbid", validate_default=False):
52
53
  """A new automation to be created."""
53
54
 
54
55
  name: Optional[str] = None
wandb/bin/gpu_stats.exe CHANGED
Binary file
wandb/bin/wandb-core CHANGED
Binary file
wandb/cli/beta.py CHANGED
@@ -9,15 +9,17 @@ import pathlib
9
9
 
10
10
  import click
11
11
 
12
+ import wandb
12
13
  from wandb.errors import WandbCoreNotAvailableError
13
14
  from wandb.util import get_core_path
14
15
 
15
16
 
16
17
  @click.group()
17
18
  def beta():
18
- """Beta versions of wandb CLI commands."""
19
- import wandb.env
19
+ """Beta versions of wandb CLI commands.
20
20
 
21
+ These commands may change or even completely break in any release of wandb.
22
+ """
21
23
  wandb._sentry.configure_scope(process_context="wandb_beta")
22
24
 
23
25
  try:
@@ -81,6 +83,10 @@ def sync(
81
83
  ) -> None:
82
84
  """Upload .wandb files specified by PATHS.
83
85
 
86
+ This is a beta re-implementation of `wandb sync`.
87
+ It is not feature complete, not guaranteed to work, and may change
88
+ in backward-incompatible ways in any release of wandb.
89
+
84
90
  PATHS can include .wandb files, run directories containing .wandb files,
85
91
  and "wandb" directories containing run directories.
86
92
 
wandb/cli/beta_leet.py CHANGED
@@ -55,7 +55,6 @@ def launch(path: str | None) -> Never:
55
55
  core_path = get_core_path()
56
56
 
57
57
  args = [core_path, "leet"]
58
- args.append(wandb_file)
59
58
 
60
59
  if not error_reporting_enabled():
61
60
  args.append("--no-observability")
@@ -63,6 +62,8 @@ def launch(path: str | None) -> Never:
63
62
  if is_debug(default="False"):
64
63
  args.extend(["--log-level", "-4"])
65
64
 
65
+ args.append(wandb_file)
66
+
66
67
  result = subprocess.run(
67
68
  args,
68
69
  env=os.environ,
wandb/cli/beta_sync.py CHANGED
@@ -141,7 +141,7 @@ class _SyncStatusLoop:
141
141
 
142
142
  for msg in response.new_messages:
143
143
  self._printer.display(msg.content, level=msg.severity)
144
- progress.update(response.stats)
144
+ progress.update(dict(response.stats))
145
145
 
146
146
  async def _rate_limit_check_done(self) -> bool:
147
147
  """Wait for rate limit and return whether _done is set."""