wandb 0.22.1__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.
- wandb/__init__.py +1 -1
- wandb/__init__.pyi +7 -4
- wandb/_pydantic/__init__.py +8 -1
- wandb/_pydantic/base.py +54 -18
- wandb/_pydantic/field_types.py +8 -3
- wandb/_pydantic/pagination.py +46 -0
- wandb/_pydantic/utils.py +2 -2
- wandb/apis/public/api.py +24 -19
- wandb/apis/public/artifacts.py +259 -270
- wandb/apis/public/registries/_utils.py +40 -54
- wandb/apis/public/registries/registries_search.py +70 -85
- wandb/apis/public/registries/registry.py +173 -156
- wandb/apis/public/runs.py +27 -6
- wandb/apis/public/utils.py +43 -20
- wandb/automations/_generated/create_automation.py +2 -2
- wandb/automations/_generated/create_generic_webhook_integration.py +4 -4
- wandb/automations/_generated/delete_automation.py +2 -2
- wandb/automations/_generated/fragments.py +31 -52
- wandb/automations/_generated/generic_webhook_integrations_by_entity.py +3 -3
- wandb/automations/_generated/get_automations.py +3 -3
- wandb/automations/_generated/get_automations_by_entity.py +3 -3
- wandb/automations/_generated/input_types.py +9 -9
- wandb/automations/_generated/integrations_by_entity.py +3 -3
- wandb/automations/_generated/operations.py +6 -6
- wandb/automations/_generated/slack_integrations_by_entity.py +3 -3
- wandb/automations/_generated/update_automation.py +2 -2
- wandb/automations/_utils.py +3 -3
- wandb/automations/actions.py +3 -3
- wandb/automations/automations.py +6 -5
- wandb/bin/gpu_stats.exe +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/beta.py +23 -3
- wandb/cli/beta_leet.py +75 -0
- wandb/cli/beta_sync.py +1 -1
- wandb/cli/cli.py +34 -7
- wandb/errors/term.py +8 -8
- wandb/jupyter.py +0 -51
- wandb/old/settings.py +6 -6
- wandb/proto/v3/wandb_api_pb2.py +86 -0
- wandb/proto/v3/wandb_server_pb2.py +38 -37
- wandb/proto/v3/wandb_settings_pb2.py +2 -2
- wandb/proto/v3/wandb_sync_pb2.py +19 -6
- wandb/proto/v4/wandb_api_pb2.py +37 -0
- wandb/proto/v4/wandb_server_pb2.py +38 -37
- wandb/proto/v4/wandb_settings_pb2.py +2 -2
- wandb/proto/v4/wandb_sync_pb2.py +10 -6
- wandb/proto/v5/wandb_api_pb2.py +38 -0
- wandb/proto/v5/wandb_server_pb2.py +38 -37
- wandb/proto/v5/wandb_settings_pb2.py +2 -2
- wandb/proto/v5/wandb_sync_pb2.py +10 -6
- wandb/proto/v6/wandb_api_pb2.py +48 -0
- wandb/proto/v6/wandb_server_pb2.py +38 -37
- wandb/proto/v6/wandb_settings_pb2.py +2 -2
- wandb/proto/v6/wandb_sync_pb2.py +10 -6
- wandb/proto/wandb_api_pb2.py +18 -0
- wandb/proto/wandb_generate_proto.py +1 -0
- wandb/sdk/artifacts/_generated/__init__.py +96 -40
- wandb/sdk/artifacts/_generated/add_aliases.py +3 -3
- wandb/sdk/artifacts/_generated/add_artifact_collection_tags.py +26 -0
- wandb/sdk/artifacts/_generated/artifact_by_id.py +2 -2
- wandb/sdk/artifacts/_generated/artifact_by_name.py +3 -3
- wandb/sdk/artifacts/_generated/artifact_collection_membership_file_urls.py +27 -8
- wandb/sdk/artifacts/_generated/artifact_collection_membership_files.py +27 -8
- wandb/sdk/artifacts/_generated/artifact_created_by.py +7 -20
- wandb/sdk/artifacts/_generated/artifact_file_urls.py +19 -6
- wandb/sdk/artifacts/_generated/artifact_membership_by_name.py +26 -0
- wandb/sdk/artifacts/_generated/artifact_type.py +5 -5
- wandb/sdk/artifacts/_generated/artifact_used_by.py +8 -17
- wandb/sdk/artifacts/_generated/artifact_version_files.py +19 -8
- wandb/sdk/artifacts/_generated/delete_aliases.py +3 -3
- wandb/sdk/artifacts/_generated/delete_artifact.py +4 -4
- wandb/sdk/artifacts/_generated/delete_artifact_collection_tags.py +23 -0
- wandb/sdk/artifacts/_generated/delete_artifact_portfolio.py +4 -4
- wandb/sdk/artifacts/_generated/delete_artifact_sequence.py +4 -4
- wandb/sdk/artifacts/_generated/delete_registry.py +21 -0
- wandb/sdk/artifacts/_generated/fetch_artifact_manifest.py +8 -20
- wandb/sdk/artifacts/_generated/fetch_linked_artifacts.py +13 -35
- wandb/sdk/artifacts/_generated/fetch_org_info_from_entity.py +28 -0
- wandb/sdk/artifacts/_generated/fetch_registries.py +18 -8
- wandb/sdk/{projects → artifacts}/_generated/fetch_registry.py +4 -4
- wandb/sdk/artifacts/_generated/fragments.py +183 -333
- wandb/sdk/artifacts/_generated/input_types.py +133 -7
- wandb/sdk/artifacts/_generated/link_artifact.py +5 -5
- wandb/sdk/artifacts/_generated/operations.py +1053 -548
- wandb/sdk/artifacts/_generated/project_artifact_collection.py +9 -77
- wandb/sdk/artifacts/_generated/project_artifact_collections.py +21 -9
- wandb/sdk/artifacts/_generated/project_artifact_type.py +3 -3
- wandb/sdk/artifacts/_generated/project_artifact_types.py +19 -6
- wandb/sdk/artifacts/_generated/project_artifacts.py +7 -8
- wandb/sdk/artifacts/_generated/registry_collections.py +21 -9
- wandb/sdk/artifacts/_generated/registry_versions.py +20 -9
- wandb/sdk/artifacts/_generated/rename_registry.py +25 -0
- wandb/sdk/artifacts/_generated/run_input_artifacts.py +5 -9
- wandb/sdk/artifacts/_generated/run_output_artifacts.py +5 -9
- wandb/sdk/artifacts/_generated/type_info.py +2 -2
- wandb/sdk/artifacts/_generated/unlink_artifact.py +3 -5
- wandb/sdk/artifacts/_generated/update_artifact.py +3 -3
- wandb/sdk/artifacts/_generated/update_artifact_collection_type.py +28 -0
- wandb/sdk/artifacts/_generated/update_artifact_portfolio.py +7 -16
- wandb/sdk/artifacts/_generated/update_artifact_sequence.py +7 -16
- wandb/sdk/artifacts/_generated/upsert_registry.py +25 -0
- wandb/sdk/artifacts/_gqlutils.py +170 -6
- wandb/sdk/artifacts/_models/__init__.py +9 -0
- wandb/sdk/artifacts/_models/artifact_collection.py +109 -0
- wandb/sdk/artifacts/_models/manifest.py +26 -0
- wandb/sdk/artifacts/_models/pagination.py +26 -0
- wandb/sdk/artifacts/_models/registry.py +100 -0
- wandb/sdk/artifacts/_validators.py +45 -27
- wandb/sdk/artifacts/artifact.py +249 -244
- wandb/sdk/artifacts/artifact_file_cache.py +1 -1
- wandb/sdk/artifacts/artifact_manifest.py +37 -32
- wandb/sdk/artifacts/artifact_manifest_entry.py +82 -133
- wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +43 -61
- wandb/sdk/artifacts/storage_handler.py +18 -12
- wandb/sdk/artifacts/storage_handlers/azure_handler.py +11 -6
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py +17 -12
- wandb/sdk/artifacts/storage_handlers/http_handler.py +9 -4
- wandb/sdk/artifacts/storage_handlers/local_file_handler.py +10 -6
- wandb/sdk/artifacts/storage_handlers/multi_handler.py +5 -4
- wandb/sdk/artifacts/storage_handlers/s3_handler.py +10 -8
- wandb/sdk/artifacts/storage_handlers/tracking_handler.py +6 -4
- wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +24 -21
- wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +4 -2
- wandb/sdk/artifacts/storage_policies/_multipart.py +187 -0
- wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +61 -242
- wandb/sdk/artifacts/storage_policy.py +25 -12
- wandb/sdk/data_types/image.py +2 -2
- wandb/sdk/data_types/object_3d.py +67 -2
- wandb/sdk/interface/interface.py +72 -64
- wandb/sdk/interface/interface_queue.py +27 -18
- wandb/sdk/interface/interface_shared.py +61 -23
- wandb/sdk/interface/interface_sock.py +9 -5
- wandb/sdk/internal/_generated/server_features_query.py +4 -4
- wandb/sdk/internal/job_builder.py +27 -10
- wandb/sdk/internal/sender.py +4 -1
- wandb/sdk/launch/create_job.py +2 -1
- wandb/sdk/launch/inputs/schema.py +13 -10
- wandb/sdk/lib/apikey.py +8 -12
- wandb/sdk/lib/asyncio_compat.py +1 -1
- wandb/sdk/lib/asyncio_manager.py +5 -5
- wandb/sdk/lib/console_capture.py +38 -30
- wandb/sdk/lib/progress.py +151 -125
- wandb/sdk/lib/retry.py +3 -2
- wandb/sdk/lib/service/service_connection.py +2 -2
- wandb/sdk/lib/wb_logging.py +2 -1
- wandb/sdk/mailbox/mailbox.py +1 -1
- wandb/sdk/wandb_init.py +11 -14
- wandb/sdk/wandb_run.py +14 -48
- wandb/sdk/wandb_settings.py +114 -30
- {wandb-0.22.1.dist-info → wandb-0.22.3.dist-info}/METADATA +2 -1
- {wandb-0.22.1.dist-info → wandb-0.22.3.dist-info}/RECORD +154 -146
- wandb/sdk/artifacts/_generated/artifact_via_membership_by_name.py +0 -26
- wandb/sdk/artifacts/_generated/create_artifact_collection_tag_assignments.py +0 -36
- wandb/sdk/artifacts/_generated/delete_artifact_collection_tag_assignments.py +0 -25
- wandb/sdk/artifacts/_generated/move_artifact_collection.py +0 -35
- wandb/sdk/projects/_generated/__init__.py +0 -26
- wandb/sdk/projects/_generated/delete_project.py +0 -22
- wandb/sdk/projects/_generated/enums.py +0 -4
- wandb/sdk/projects/_generated/fragments.py +0 -41
- wandb/sdk/projects/_generated/input_types.py +0 -13
- wandb/sdk/projects/_generated/operations.py +0 -88
- wandb/sdk/projects/_generated/rename_project.py +0 -27
- wandb/sdk/projects/_generated/upsert_registry_project.py +0 -27
- {wandb-0.22.1.dist-info → wandb-0.22.3.dist-info}/WHEEL +0 -0
- {wandb-0.22.1.dist-info → wandb-0.22.3.dist-info}/entry_points.txt +0 -0
- {wandb-0.22.1.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
|
|
10
|
+
from wandb._pydantic import GQLResult, Typename
|
|
11
11
|
|
|
12
12
|
from .fragments import GenericWebhookIntegrationFields
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class CreateGenericWebhookIntegration(
|
|
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(
|
|
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
|
-
|
|
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
|
|
6
|
+
from wandb._pydantic import GQLResult
|
|
7
7
|
|
|
8
8
|
from .fragments import DeleteAutomationResult
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
class DeleteAutomation(
|
|
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
|
|
12
|
+
from wandb._pydantic import GQLId, GQLResult, Typename
|
|
13
13
|
|
|
14
14
|
from .enums import AlertSeverity, EventTriggeringConditionType
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class ArtifactPortfolioScopeFields(
|
|
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(
|
|
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(
|
|
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(
|
|
36
|
+
class DeleteAutomationResult(GQLResult):
|
|
37
37
|
typename__: Typename[Literal["DeleteTriggerPayload"]] = "DeleteTriggerPayload"
|
|
38
38
|
success: bool
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class FilterEventFields(
|
|
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(
|
|
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(
|
|
60
|
+
class GenericWebhookActionFieldsIntegrationIntegration(GQLResult):
|
|
61
61
|
typename__: Typename[
|
|
62
62
|
Literal["GitHubOAuthIntegration", "Integration", "SlackIntegration"]
|
|
63
63
|
]
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
class GenericWebhookIntegrationConnectionFields(
|
|
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(
|
|
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(
|
|
85
|
+
class GenericWebhookIntegrationConnectionFieldsEdgesNodeIntegration(GQLResult):
|
|
86
86
|
typename__: Typename[
|
|
87
87
|
Literal["GitHubOAuthIntegration", "Integration", "SlackIntegration"]
|
|
88
88
|
]
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
class GenericWebhookIntegrationFields(
|
|
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(
|
|
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(
|
|
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(
|
|
120
|
+
class IntegrationConnectionFieldsEdgesNodeIntegration(GQLResult):
|
|
121
121
|
typename__: Typename[Literal["GitHubOAuthIntegration", "Integration"]]
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
class NoOpActionFields(
|
|
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(
|
|
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(
|
|
141
|
+
class NotificationActionFieldsIntegrationIntegration(GQLResult):
|
|
142
142
|
typename__: Typename[
|
|
143
143
|
Literal["GenericWebhookIntegration", "GitHubOAuthIntegration", "Integration"]
|
|
144
144
|
]
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
class PageInfoFields(
|
|
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(
|
|
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(
|
|
158
|
+
class ProjectConnectionFieldsEdges(GQLResult):
|
|
159
159
|
cursor: str
|
|
160
160
|
node: Optional[ProjectConnectionFieldsEdgesNode]
|
|
161
161
|
|
|
162
162
|
|
|
163
|
-
class ProjectConnectionFieldsEdgesNode(
|
|
163
|
+
class ProjectConnectionFieldsEdgesNode(GQLResult):
|
|
164
164
|
triggers: List[TriggerFields]
|
|
165
165
|
|
|
166
166
|
|
|
167
|
-
class ProjectScopeFields(
|
|
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(
|
|
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(
|
|
179
|
+
class QueueJobActionFieldsQueue(GQLResult):
|
|
180
180
|
id: GQLId
|
|
181
181
|
name: str
|
|
182
182
|
|
|
183
183
|
|
|
184
|
-
class SlackIntegrationConnectionFields(
|
|
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(
|
|
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(
|
|
203
|
+
class SlackIntegrationConnectionFieldsEdgesNodeIntegration(GQLResult):
|
|
204
204
|
typename__: Typename[
|
|
205
205
|
Literal["GenericWebhookIntegration", "GitHubOAuthIntegration", "Integration"]
|
|
206
206
|
]
|
|
207
207
|
|
|
208
208
|
|
|
209
|
-
class SlackIntegrationFields(
|
|
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(
|
|
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(
|
|
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
|
|
8
|
+
from wandb._pydantic import GQLResult
|
|
9
9
|
|
|
10
10
|
from .fragments import GenericWebhookIntegrationConnectionFields
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class GenericWebhookIntegrationsByEntity(
|
|
13
|
+
class GenericWebhookIntegrationsByEntity(GQLResult):
|
|
14
14
|
entity: Optional[GenericWebhookIntegrationsByEntityEntity]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class GenericWebhookIntegrationsByEntityEntity(
|
|
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
|
|
10
|
+
from wandb._pydantic import GQLResult
|
|
11
11
|
|
|
12
12
|
from .fragments import ProjectConnectionFields
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class GetAutomations(
|
|
15
|
+
class GetAutomations(GQLResult):
|
|
16
16
|
search_scope: Optional[GetAutomationsSearchScope] = Field(alias="searchScope")
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
class GetAutomationsSearchScope(
|
|
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
|
|
10
|
+
from wandb._pydantic import GQLResult
|
|
11
11
|
|
|
12
12
|
from .fragments import ProjectConnectionFields
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class GetAutomationsByEntity(
|
|
15
|
+
class GetAutomationsByEntity(GQLResult):
|
|
16
16
|
search_scope: Optional[GetAutomationsByEntitySearchScope] = Field(
|
|
17
17
|
alias="searchScope"
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class GetAutomationsByEntitySearchScope(
|
|
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
|
|
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(
|
|
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(
|
|
29
|
+
class QueueJobActionInput(GQLInput):
|
|
30
30
|
queue_id: GQLId = Field(alias="queueID")
|
|
31
31
|
template: str
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
class NotificationActionInput(
|
|
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(
|
|
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(
|
|
46
|
+
class NoOpTriggeredActionInput(GQLInput):
|
|
47
47
|
no_op: Optional[bool] = Field(alias="noOp", default=None)
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
class TriggeredActionConfig(
|
|
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(
|
|
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(
|
|
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
|
|
8
|
+
from wandb._pydantic import GQLResult
|
|
9
9
|
|
|
10
10
|
from .fragments import IntegrationConnectionFields
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class IntegrationsByEntity(
|
|
13
|
+
class IntegrationsByEntity(GQLResult):
|
|
14
14
|
entity: Optional[IntegrationsByEntityEntity]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class IntegrationsByEntityEntity(
|
|
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($
|
|
276
|
-
result: createFilterTrigger(input: $
|
|
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($
|
|
390
|
-
result: updateFilterTrigger(input: $
|
|
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($
|
|
633
|
-
createGenericWebhookIntegration(input: $
|
|
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
|
|
8
|
+
from wandb._pydantic import GQLResult
|
|
9
9
|
|
|
10
10
|
from .fragments import SlackIntegrationConnectionFields
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class SlackIntegrationsByEntity(
|
|
13
|
+
class SlackIntegrationsByEntity(GQLResult):
|
|
14
14
|
entity: Optional[SlackIntegrationsByEntityEntity]
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class SlackIntegrationsByEntityEntity(
|
|
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
|
|
8
|
+
from wandb._pydantic import GQLResult
|
|
9
9
|
|
|
10
10
|
from .fragments import UpdateAutomationResult
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class UpdateAutomation(
|
|
13
|
+
class UpdateAutomation(GQLResult):
|
|
14
14
|
result: Optional[UpdateAutomationResult]
|
|
15
15
|
|
|
16
16
|
|
wandb/automations/_utils.py
CHANGED
|
@@ -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
|
|
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(
|
|
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(
|
|
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
|
|
wandb/automations/actions.py
CHANGED
|
@@ -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=
|
|
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
|
wandb/automations/automations.py
CHANGED
|
@@ -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
|
|
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
|
-
|
|
20
|
-
|
|
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(
|
|
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,16 +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
|
-
# this is the future that requires wandb-core!
|
|
20
|
-
import wandb.env
|
|
19
|
+
"""Beta versions of wandb CLI commands.
|
|
21
20
|
|
|
21
|
+
These commands may change or even completely break in any release of wandb.
|
|
22
|
+
"""
|
|
22
23
|
wandb._sentry.configure_scope(process_context="wandb_beta")
|
|
23
24
|
|
|
24
25
|
try:
|
|
@@ -32,6 +33,21 @@ def beta():
|
|
|
32
33
|
)
|
|
33
34
|
|
|
34
35
|
|
|
36
|
+
@beta.command()
|
|
37
|
+
@click.argument("path", nargs=1, type=click.Path(exists=True), required=False)
|
|
38
|
+
def leet(path: str | None = None) -> None:
|
|
39
|
+
"""Launch W&B LEET: the Lightweight Experiment Exploration Tool.
|
|
40
|
+
|
|
41
|
+
LEET is a terminal UI for viewing a W&B run specified by an optional PATH.
|
|
42
|
+
|
|
43
|
+
PATH can include a .wandb file or a run directory containing a .wandb file.
|
|
44
|
+
If PATH is not provided, the command will look for the latest run.
|
|
45
|
+
"""
|
|
46
|
+
from . import beta_leet
|
|
47
|
+
|
|
48
|
+
beta_leet.launch(path)
|
|
49
|
+
|
|
50
|
+
|
|
35
51
|
@beta.command()
|
|
36
52
|
@click.argument("paths", type=click.Path(exists=True), nargs=-1)
|
|
37
53
|
@click.option(
|
|
@@ -67,6 +83,10 @@ def sync(
|
|
|
67
83
|
) -> None:
|
|
68
84
|
"""Upload .wandb files specified by PATHS.
|
|
69
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
|
+
|
|
70
90
|
PATHS can include .wandb files, run directories containing .wandb files,
|
|
71
91
|
and "wandb" directories containing run directories.
|
|
72
92
|
|