Query and analyze data logged to W&B.
This is the multi-page printable view of this section. Click here to print.
Analytics and Query API
- 1: api
- 2: artifacts
- 3: automations
- 4: files
- 5: history
- 6: integrations
- 7: jobs
- 8: projects
- 9: query_generator
- 10: reports
- 11: runs
- 12: sweeps
- 13: teams
- 14: users
1 - api
module wandb.apis.public
Use the Public API to export or update data that you have saved to W&B.
Before using this API, you’ll want to log data from your script — check the Quickstart for more details.
You might use the Public API to
- update metadata or metrics for an experiment after it has been completed,
- pull down your results as a dataframe for post-hoc analysis in a Jupyter notebook, or
- check your saved model artifacts for those tagged as
ready-to-deploy
.
For more on using the Public API, check out our guide.
class RetryingClient
method RetryingClient.__init__
__init__(client: wandb_gql.client.Client)
property RetryingClient.app_url
property RetryingClient.server_info
method RetryingClient.execute
execute(*args, **kwargs)
method RetryingClient.version_supported
version_supported(min_version: str) → bool
class Api
Used for querying the W&B server.
Examples:
import wandb
wandb.Api()
method Api.__init__
__init__(
overrides: Optional[Dict[str, Any]] = None,
timeout: Optional[int] = None,
api_key: Optional[str] = None
) → None
Initialize the API.
Args:
overrides
(dict[str, Any] | None): You can setbase_url
if you areusing a W&B server other than
https: //api.wandb.ai
. You can also set defaults forentity
,project
, andrun
.timeout
(int | None): HTTP timeout in seconds for API requests. If not specified, the default timeout will be used.api_key
(str | None): API key to use for authentication. If not provided, the API key from the current environment or configuration will be used.
property Api.api_key
Returns W&B API key.
property Api.client
Returns the client object.
property Api.default_entity
Returns the default W&B entity.
property Api.user_agent
Returns W&B public user agent.
property Api.viewer
Returns the viewer object.
method Api.artifact
artifact(name: str, type: Optional[str] = None)
Returns a single artifact.
Args:
name
: The artifact’s name. The name of an artifact resembles a filepath that consists, at a minimum, the name of the project the artifact was logged to, the name of the artifact, and the artifact’s version or alias. Optionally append the entity that logged the artifact as a prefix followed by a forward slash. If no entity is specified in the name, the Run or API setting’s entity is used.type
: The type of artifact to fetch.
Returns:
An Artifact
object.
Raises:
ValueError
: If the artifact name is not specified.ValueError
: If the artifact type is specified but does not match the type of the fetched artifact.
Examples: In the proceeding code snippets “entity”, “project”, “artifact”, “version”, and “alias” are placeholders for your W&B entity, name of the project the artifact is in, the name of the artifact, and artifact’s version, respectively.
import wandb
# Specify the project, artifact's name, and the artifact's alias
wandb.Api().artifact(name="project/artifact:alias")
# Specify the project, artifact's name, and a specific artifact version
wandb.Api().artifact(name="project/artifact:version")
# Specify the entity, project, artifact's name, and the artifact's alias
wandb.Api().artifact(name="entity/project/artifact:alias")
# Specify the entity, project, artifact's name, and a specific artifact version
wandb.Api().artifact(name="entity/project/artifact:version")
Note:
This method is intended for external use only. Do not call
api.artifact()
within the wandb repository code.
method Api.artifact_collection
artifact_collection(type_name: str, name: str) → public.ArtifactCollection
Returns a single artifact collection by type.
You can use the returned ArtifactCollection
object to retrieve information about specific artifacts in that collection, and more.
Args:
type_name
: The type of artifact collection to fetch.name
: An artifact collection name. Optionally append the entity that logged the artifact as a prefix followed by a forward slash.
Returns:
An ArtifactCollection
object.
Examples: In the proceeding code snippet “type”, “entity”, “project”, and “artifact_name” are placeholders for the collection type, your W&B entity, name of the project the artifact is in, and the name of the artifact, respectively.
import wandb
collections = wandb.Api().artifact_collection(
type_name="type", name="entity/project/artifact_name"
)
# Get the first artifact in the collection
artifact_example = collections.artifacts()[0]
# Download the contents of the artifact to the specified root directory.
artifact_example.download()
method Api.artifact_collection_exists
artifact_collection_exists(name: str, type: str) → bool
Whether an artifact collection exists within a specified project and entity.
Args:
name
: An artifact collection name. Optionally append the entity that logged the artifact as a prefix followed by a forward slash. If entity or project is not specified, infer the collection from the override params if they exist. Otherwise, entity is pulled from the user settings and project will default to “uncategorized”.type
: The type of artifact collection.
Returns: True if the artifact collection exists, False otherwise.
Examples: In the proceeding code snippet “type”, and “collection_name” refer to the type of the artifact collection and the name of the collection, respectively.
import wandb
wandb.Api.artifact_collection_exists(type="type", name="collection_name")
method Api.artifact_collections
artifact_collections(
project_name: str,
type_name: str,
per_page: int = 50
) → public.ArtifactCollections
Returns a collection of matching artifact collections.
Args:
project_name
: The name of the project to filter on.type_name
: The name of the artifact type to filter on.per_page
: Sets the page size for query pagination. None will use the default size. Usually there is no reason to change this.
Returns:
An iterable ArtifactCollections
object.
method Api.artifact_exists
artifact_exists(name: str, type: Optional[str] = None) → bool
Whether an artifact version exists within the specified project and entity.
Args:
name
: The name of artifact. Add the artifact’s entity and project as a prefix. Append the version or the alias of the artifact with a colon. If the entity or project is not specified, W&B uses override parameters if populated. Otherwise, the entity is pulled from the user settings and the project is set to “Uncategorized”.type
: The type of artifact.
Returns: True if the artifact version exists, False otherwise.
Examples: In the proceeding code snippets “entity”, “project”, “artifact”, “version”, and “alias” are placeholders for your W&B entity, name of the project the artifact is in, the name of the artifact, and artifact’s version, respectively.
import wandb
wandb.Api().artifact_exists("entity/project/artifact:version")
wandb.Api().artifact_exists("entity/project/artifact:alias")
method Api.artifact_type
artifact_type(
type_name: str,
project: Optional[str] = None
) → public.ArtifactType
Returns the matching ArtifactType
.
Args:
type_name
: The name of the artifact type to retrieve.project
: If given, a project name or path to filter on.
Returns:
An ArtifactType
object.
method Api.artifact_types
artifact_types(project: Optional[str] = None) → public.ArtifactTypes
Returns a collection of matching artifact types.
Args:
project
: The project name or path to filter on.
Returns:
An iterable ArtifactTypes
object.
method Api.artifact_versions
artifact_versions(type_name, name, per_page=50)
Deprecated. Use Api.artifacts(type_name, name)
method instead.
method Api.artifacts
artifacts(
type_name: str,
name: str,
per_page: int = 50,
tags: Optional[List[str]] = None
) → public.Artifacts
Return an Artifacts
collection.
Args:
type_name: The type of artifacts to fetch. name: The artifact’s collection name. Optionally append the entity that logged the artifact as a prefix followed by a forward slash. per_page: Sets the page size for query pagination. If set to None
, use the default size. Usually there is no reason to change this. tags: Only return artifacts with all of these tags.
Returns:
An iterable Artifacts
object.
Examples: In the proceeding code snippet, “type”, “entity”, “project”, and “artifact_name” are placeholders for the artifact type, W&B entity, name of the project the artifact was logged to, and the name of the artifact, respectively.
import wandb
wandb.Api().artifacts(type_name="type", name="entity/project/artifact_name")
method Api.automation
automation(name: str, entity: Optional[str] = None) → Automation
Returns the only Automation matching the parameters.
Args:
name
: The name of the automation to fetch.entity
: The entity to fetch the automation for.
Raises:
ValueError
: If zero or multiple Automations match the search criteria.
Examples: Get an existing automation named “my-automation”:
import wandb
api = wandb.Api()
automation = api.automation(name="my-automation")
```
Get an existing automation named "other-automation", from the entity "my-team":
```python
automation = api.automation(name="other-automation", entity="my-team")
```
---
### <kbd>method</kbd> `Api.automations`
```python
automations(
entity: Optional[str] = None,
name: Optional[str] = None,
per_page: int = 50
) → Iterator[ForwardRef('Automation')]
Returns an iterator over all Automations that match the given parameters.
If no parameters are provided, the returned iterator will contain all Automations that the user has access to.
Args:
entity
: The entity to fetch the automations for.name
: The name of the automation to fetch.per_page
: The number of automations to fetch per page. Defaults to 50. Usually there is no reason to change this.
Returns: A list of automations.
Examples: Fetch all existing automations for the entity “my-team”:
import wandb
api = wandb.Api()
automations = api.automations(entity="my-team")
```
---
### <kbd>method</kbd> `Api.create_automation`
```python
create_automation(
obj: 'NewAutomation',
fetch_existing: bool = False,
**kwargs: typing_extensions.Unpack[ForwardRef('WriteAutomationsKwargs')]
) → Automation
Create a new Automation.
Args:
obj: The automation to create. fetch_existing: If True, and a conflicting automation already exists, attempt to fetch the existing automation instead of raising an error. **kwargs: Any additional values to assign to the automation before creating it. If given, these will override any values that may already be set on the automation:
- name
: The name of the automation.
- description
: The description of the automation.
- enabled
: Whether the automation is enabled.
- scope
: The scope of the automation.
- event
: The event that triggers the automation.
- action
: The action that is triggered by the automation.
Returns: The saved Automation.
Examples: Create a new automation named “my-automation” that sends a Slack notification when a run within a specific project logs a metric exceeding a custom threshold:
import wandb
from wandb.automations import OnRunMetric, RunEvent, SendNotification
api = wandb.Api()
project = api.project("my-project", entity="my-team")
# Use the first Slack integration for the team
slack_hook = next(api.slack_integrations(entity="my-team"))
event = OnRunMetric(
scope=project,
filter=RunEvent.metric("custom-metric") > 10,
)
action = SendNotification.from_integration(slack_hook)
automation = api.create_automation(
event >> action,
name="my-automation",
description="Send a Slack message whenever 'custom-metric' exceeds 10.",
)
```
---
### <kbd>method</kbd> `Api.create_project`
```python
create_project(name: str, entity: str) → None
Create a new project.
Args:
name
: The name of the new project.entity
: The entity of the new project.
method Api.create_registry
create_registry(
name: str,
visibility: Literal['organization', 'restricted'],
organization: Optional[str] = None,
description: Optional[str] = None,
artifact_types: Optional[List[str]] = None
) → Registry
Create a new registry.
Args:
name
: The name of the registry. Name must be unique within the organization.visibility
: The visibility of the registry.organization
: Anyone in the organization can view this registry. You can edit their roles later from the settings in the UI.restricted
: Only invited members via the UI can access this registry. Public sharing is disabled.organization
: The organization of the registry. If no organization is set in the settings, the organization will be fetched from the entity if the entity only belongs to one organization.description
: The description of the registry.artifact_types
: The accepted artifact types of the registry. A type is nomore than 128 characters and do not include characters
/or ``:
. If not specified, all types are accepted. Allowed types added to the registry cannot be removed later.
Returns: A registry object.
Examples:
import wandb
api = wandb.Api()
registry = api.create_registry(
name="my-registry",
visibility="restricted",
organization="my-org",
description="This is a test registry",
artifact_types=["model"],
)
```
---
### <kbd>method</kbd> `Api.create_run`
```python
create_run(
run_id: Optional[str] = None,
project: Optional[str] = None,
entity: Optional[str] = None
) → public.Run
Create a new run.
Args:
run_id
: The ID to assign to the run. If not specified, W&B creates a random ID.project
: The project where to log the run to. If no project is specified, log the run to a project called “Uncategorized”.entity
: The entity that owns the project. If no entity is specified, log the run to the default entity.
Returns:
The newly created Run
.
method Api.create_run_queue
create_run_queue(
name: str,
type: 'public.RunQueueResourceType',
entity: Optional[str] = None,
prioritization_mode: Optional[ForwardRef('public.RunQueuePrioritizationMode')] = None,
config: Optional[dict] = None,
template_variables: Optional[dict] = None
) → public.RunQueue
Create a new run queue in W&B Launch.
Args:
name
: Name of the queue to createtype
: Type of resource to be used for the queue. One of “local-container”, “local-process”, “kubernetes”,“sagemaker”, or “gcp-vertex”.entity
: Name of the entity to create the queue. IfNone
, use the configured or default entity.prioritization_mode
: Version of prioritization to use. Either “V0” orNone
.config
: Default resource configuration to be used for the queue. Use handlebars (eg.{{var}}
) to specify template variables.template_variables
: A dictionary of template variable schemas to use with the config.
Returns:
The newly created RunQueue
.
Raises:
ValueError
if any of the parameters are invalid wandb.Error
on wandb API errors
method Api.create_team
create_team(team: str, admin_username: Optional[str] = None) → public.Team
Create a new team.
Args:
team
: The name of the teamadmin_username
: Username of the admin user of the team. Defaults to the current user.
Returns:
A Team
object.
method Api.create_user
create_user(email: str, admin: Optional[bool] = False)
Create a new user.
Args:
email
: The email address of the user.admin
: Set user as a global instance administrator.
Returns:
A User
object.
method Api.delete_automation
delete_automation(obj: Union[ForwardRef('Automation'), str]) → Literal[True]
Delete an automation.
Args:
obj
: The automation to delete, or its ID.
Returns: True if the automation was deleted successfully.
method Api.flush
flush()
Flush the local cache.
The api object keeps a local cache of runs, so if the state of the run may change while executing your script you must clear the local cache with api.flush()
to get the latest values associated with the run.
method Api.from_path
from_path(path: str)
Return a run, sweep, project or report from a path.
Args:
path
: The path to the project, run, sweep or report
Returns:
A Project
, Run
, Sweep
, or BetaReport
instance.
Raises:
wandb.Error
if path is invalid or the object doesn’t exist.
Examples: In the proceeding code snippets “project”, “team”, “run_id”, “sweep_id”, and “report_name” are placeholders for the project, team, run ID, sweep ID, and the name of a specific report, respectively.
import wandb
api = wandb.Api()
project = api.from_path("project")
team_project = api.from_path("team/project")
run = api.from_path("team/project/runs/run_id")
sweep = api.from_path("team/project/sweeps/sweep_id")
report = api.from_path("team/project/reports/report_name")
method Api.integrations
integrations(
entity: Optional[str] = None,
per_page: int = 50
) → Iterator[ForwardRef('Integration')]
Return an iterator of all integrations for an entity.
Args:
entity
: The entity (e.g. team name) for which to fetch integrations. If not provided, the user’s default entity will be used.per_page
: Number of integrations to fetch per page. Defaults to 50. Usually there is no reason to change this.
Yields:
Iterator[SlackIntegration | WebhookIntegration]
: An iterator of any supported integrations.
method Api.job
job(name: Optional[str], path: Optional[str] = None) → public.Job
Return a Job
object.
Args:
name
: The name of the job.path
: The root path to download the job artifact.
Returns:
A Job
object.
method Api.list_jobs
list_jobs(entity: str, project: str) → List[Dict[str, Any]]
Return a list of jobs, if any, for the given entity and project.
Args:
entity
: The entity for the listed jobs.project
: The project for the listed jobs.
Returns: A list of matching jobs.
method Api.project
project(name: str, entity: Optional[str] = None) → public.Project
Return the Project
with the given name (and entity, if given).
Args:
name
: The project name.entity
: Name of the entity requested. If None, will fall back to the default entity passed toApi
. If no default entity, will raise aValueError
.
Returns:
A Project
object.
method Api.projects
projects(entity: Optional[str] = None, per_page: int = 200) → public.Projects
Get projects for a given entity.
Args:
entity
: Name of the entity requested. If None, will fall back to the default entity passed toApi
. If no default entity, will raise aValueError
.per_page
: Sets the page size for query pagination. If set toNone
, use the default size. Usually there is no reason to change this.
Returns:
A Projects
object which is an iterable collection of Project
objects.
method Api.queued_run
queued_run(
entity: str,
project: str,
queue_name: str,
run_queue_item_id: str,
project_queue=None,
priority=None
)
Return a single queued run based on the path.
Parses paths of the form entity/project/queue_id/run_queue_item_id
.
method Api.registries
registries(
organization: Optional[str] = None,
filter: Optional[Dict[str, Any]] = None
) → Registries
Returns a Registry iterator.
Use the iterator to search and filter registries, collections, or artifact versions across your organization’s registry.
Examples: Find all registries with the names that contain “model” ```python import wandb
api = wandb.Api() # specify an org if your entity belongs to multiple orgs
api.registries(filter={"name": {"$regex": "model"}})
```
Find all collections in the registries with the name “my_collection” and the tag “my_tag” python api.registries().collections(filter={"name": "my_collection", "tag": "my_tag"})
Find all artifact versions in the registries with a collection name that contains “my_collection” and a version that has the alias “best” python api.registries().collections( filter={"name": {"$regex": "my_collection"}} ).versions(filter={"alias": "best"})
Find all artifact versions in the registries that contain “model” and have the tag “prod” or alias “best” python api.registries(filter={"name": {"$regex": "model"}}).versions( filter={"$or": [{"tag": "prod"}, {"alias": "best"}]} )
Args:
organization
: (str, optional) The organization of the registry to fetch. If not specified, use the organization specified in the user’s settings.filter
: (dict, optional) MongoDB-style filter to apply to each object in the registry iterator. Fields available to filter for collections arename
,description
,created_at
,updated_at
. Fields available to filter for collections arename
,tag
,description
,created_at
,updated_at
Fields available to filter for versions aretag
,alias
,created_at
,updated_at
,metadata
Returns: A registry iterator.
method Api.registry
registry(name: str, organization: Optional[str] = None) → Registry
Return a registry given a registry name.
Args:
name
: The name of the registry. This is without thewandb-registry-
prefix.organization
: The organization of the registry. If no organization is set in the settings, the organization will be fetched from the entity if the entity only belongs to one organization.
Returns: A registry object.
Examples: Fetch and update a registry ```python import wandb
api = wandb.Api()
registry = api.registry(name="my-registry", organization="my-org")
registry.description = "This is an updated description"
registry.save()
```
method Api.reports
reports(
path: str = '',
name: Optional[str] = None,
per_page: int = 50
) → public.Reports
Get reports for a given project path.
Note: wandb.Api.reports()
API is in beta and will likely change in future releases.
Args:
path
: The path to project the report resides in. Specify the entity that created the project as a prefix followed by a forward slash.name
: Name of the report requested.per_page
: Sets the page size for query pagination. If set toNone
, use the default size. Usually there is no reason to change this.
Returns:
A Reports
object which is an iterable collection of BetaReport
objects.
Examples:
import wandb
wandb.Api.reports("entity/project")
method Api.run
run(path='')
Return a single run by parsing path in the form entity/project/run_id
.
Args:
path
: Path to run in the formentity/project/run_id
. Ifapi.entity
is set, this can be in the formproject/run_id
and ifapi.project
is set this can just be the run_id.
Returns:
A Run
object.
method Api.run_queue
run_queue(entity: str, name: str)
Return the named RunQueue
for entity.
See Api.create_run_queue
for more information on how to create a run queue.
method Api.runs
runs(
path: Optional[str] = None,
filters: Optional[Dict[str, Any]] = None,
order: str = '+created_at',
per_page: int = 50,
include_sweeps: bool = True
)
Return a set of runs from a project that match the filters provided.
Fields you can filter by include:
createdAt
: The timestamp when the run was created. (in ISO 8601 format, e.g. “2023-01-01T12:00:00Z”)displayName
: The human-readable display name of the run. (e.g. “eager-fox-1”)duration
: The total runtime of the run in seconds.group
: The group name used to organize related runs together.host
: The hostname where the run was executed.jobType
: The type of job or purpose of the run.name
: The unique identifier of the run. (e.g. “a1b2cdef”)state
: The current state of the run.tags
: The tags associated with the run.username
: The username of the user who initiated the run
Additionally, you can filter by items in the run config or summary metrics. Such as config.experiment_name
, summary_metrics.loss
, etc.
For more complex filtering, you can use MongoDB query operators. For details, see: https://docs.mongodb.com/manual/reference/operator/query The following operations are supported:
$and
$or
$nor
$eq
$ne
$gt
$gte
$lt
$lte
$in
$nin
$exists
$regex
Args:
path
: (str) path to project, should be in the form: “entity/project”filters
: (dict) queries for specific runs using the MongoDB query language. You can filter by run properties such as config.key, summary_metrics.key, state, entity, createdAt, etc.For example
:{"config.experiment_name": "foo"}
would find runs with a config entry of experiment name set to “foo”order
: (str) Order can becreated_at
,heartbeat_at
,config.*.value
, orsummary_metrics.*
. If you prepend order with a + order is ascending. If you prepend order with a - order is descending (default). The default order is run.created_at from oldest to newest.per_page
: (int) Sets the page size for query pagination.include_sweeps
: (bool) Whether to include the sweep runs in the results.
Returns:
A Runs
object, which is an iterable collection of Run
objects.
Examples:
# Find runs in project where config.experiment_name has been set to "foo"
api.runs(path="my_entity/project", filters={"config.experiment_name": "foo"})
# Find runs in project where config.experiment_name has been set to "foo" or "bar"
api.runs(
path="my_entity/project",
filters={
"$or": [
{"config.experiment_name": "foo"},
{"config.experiment_name": "bar"},
]
},
)
# Find runs in project where config.experiment_name matches a regex
# (anchors are not supported)
api.runs(
path="my_entity/project",
filters={"config.experiment_name": {"$regex": "b.*"}},
)
# Find runs in project where the run name matches a regex
# (anchors are not supported)
api.runs(
path="my_entity/project", filters={"display_name": {"$regex": "^foo.*"}}
)
# Find runs in project sorted by ascending loss
api.runs(path="my_entity/project", order="+summary_metrics.loss")
method Api.slack_integrations
slack_integrations(
entity: Optional[str] = None,
per_page: int = 50
) → Iterator[ForwardRef('SlackIntegration')]
Returns an iterator of Slack integrations for an entity.
Args:
entity
: The entity (e.g. team name) for which to fetch integrations. If not provided, the user’s default entity will be used.per_page
: Number of integrations to fetch per page. Defaults to 50. Usually there is no reason to change this.
Yields:
Iterator[SlackIntegration]
: An iterator of Slack integrations.
Examples: Get all registered Slack integrations for the team “my-team”: ```python import wandb
api = wandb.Api()
slack_integrations = api.slack_integrations(entity="my-team")
```
Find only Slack integrations that post to channel names starting with “team-alerts-”: python slack_integrations = api.slack_integrations(entity="my-team") team_alert_integrations = [ ig for ig in slack_integrations if ig.channel_name.startswith("team-alerts-") ]
method Api.sweep
sweep(path='')
Return a sweep by parsing path in the form entity/project/sweep_id
.
Args:
path
: Path to sweep in the form entity/project/sweep_id. Ifapi.entity
is set, this can be in the form project/sweep_id and ifapi.project
is set this can just be the sweep_id.
Returns:
A Sweep
object.
method Api.sync_tensorboard
sync_tensorboard(root_dir, run_id=None, project=None, entity=None)
Sync a local directory containing tfevent files to wandb.
method Api.team
team(team: str) → public.Team
Return the matching Team
with the given name.
Args:
team
: The name of the team.
Returns:
A Team
object.
method Api.update_automation
update_automation(
obj: 'Automation',
create_missing: bool = False,
**kwargs: typing_extensions.Unpack[ForwardRef('WriteAutomationsKwargs')]
) → Automation
Update an existing automation.
Args:
obj
: The automation to update. Must be an existing automation. create_missing (bool): If True, and the automation does not exist, create it. **kwargs: Any additional values to assign to the automation before updating it. If given, these will override any values that may already be set on the automation: -name
: The name of the automation. -description
: The description of the automation. -enabled
: Whether the automation is enabled. -scope
: The scope of the automation. -event
: The event that triggers the automation. -action
: The action that is triggered by the automation.
Returns: The updated automation.
Examples: Disable and edit the description of an existing automation (“my-automation”):
import wandb
api = wandb.Api()
automation = api.automation(name="my-automation")
automation.enabled = False
automation.description = "Kept for reference, but no longer used."
updated_automation = api.update_automation(automation)
```
OR:
```python
import wandb
api = wandb.Api()
automation = api.automation(name="my-automation")
updated_automation = api.update_automation(
automation,
enabled=False,
description="Kept for reference, but no longer used.",
)
```
---
### <kbd>method</kbd> `Api.upsert_run_queue`
```python
upsert_run_queue(
name: str,
resource_config: dict,
resource_type: 'public.RunQueueResourceType',
entity: Optional[str] = None,
template_variables: Optional[dict] = None,
external_links: Optional[dict] = None,
prioritization_mode: Optional[ForwardRef('public.RunQueuePrioritizationMode')] = None
)
Upsert a run queue in W&B Launch.
Args:
name
: Name of the queue to createentity
: Optional name of the entity to create the queue. IfNone
, use the configured or default entity.resource_config
: Optional default resource configuration to be used for the queue. Use handlebars (eg.{{var}}
) to specify template variables.resource_type
: Type of resource to be used for the queue. One of “local-container”, “local-process”, “kubernetes”, “sagemaker”, or “gcp-vertex”.template_variables
: A dictionary of template variable schemas to be used with the config.external_links
: Optional dictionary of external links to be used with the queue.prioritization_mode
: Optional version of prioritization to use. Either “V0” or None
Returns:
The upserted RunQueue
.
Raises: ValueError if any of the parameters are invalid wandb.Error on wandb API errors
method Api.user
user(username_or_email: str) → Optional[ForwardRef('public.User')]
Return a user from a username or email address.
This function only works for local administrators. Use api.viewer
to get your own user object.
Args:
username_or_email
: The username or email address of the user.
Returns:
A User
object or None if a user is not found.
method Api.users
users(username_or_email: str) → List[ForwardRef('public.User')]
Return all users from a partial username or email address query.
This function only works for local administrators. Use api.viewer
to get your own user object.
Args:
username_or_email
: The prefix or suffix of the user you want to find.
Returns:
An array of User
objects.
method Api.webhook_integrations
webhook_integrations(
entity: Optional[str] = None,
per_page: int = 50
) → Iterator[ForwardRef('WebhookIntegration')]
Returns an iterator of webhook integrations for an entity.
Args:
entity
: The entity (e.g. team name) for which to fetch integrations. If not provided, the user’s default entity will be used.per_page
: Number of integrations to fetch per page. Defaults to 50. Usually there is no reason to change this.
Yields:
Iterator[WebhookIntegration]
: An iterator of webhook integrations.
Examples: Get all registered webhook integrations for the team “my-team”: ```python import wandb
api = wandb.Api()
webhook_integrations = api.webhook_integrations(entity="my-team")
```
Find only webhook integrations that post requests to “https://my-fake-url.com”: python webhook_integrations = api.webhook_integrations(entity="my-team") my_webhooks = [ ig for ig in webhook_integrations if ig.url_endpoint.startswith("https://my-fake-url.com") ]
2 - artifacts
module wandb.apis.public
W&B Public API for Artifact objects.
This module provides classes for interacting with W&B artifacts and their collections.
function server_supports_artifact_collections_gql_edges
server_supports_artifact_collections_gql_edges(
client: 'RetryingClient',
warn: 'bool' = False
) → bool
Check if W&B server supports GraphQL edges for artifact collections.
class ArtifactTypes
method ArtifactTypes.__init__
__init__(client: 'Client', entity: 'str', project: 'str', per_page: 'int' = 50)
property ArtifactTypes.cursor
Returns the cursor for the next page of results.
property ArtifactTypes.length
Returns None
.
property ArtifactTypes.more
Returns whether there are more artifact types to fetch.
method ArtifactTypes.convert_objects
convert_objects() → list[ArtifactType]
Convert the raw response data into a list of ArtifactType objects.
method ArtifactTypes.update_variables
update_variables() → None
Update the cursor variable for pagination.
class ArtifactType
An artifact object that satisfies query based on the specified type.
Args:
client
: The client instance to use for querying W&B.entity
: The entity (user or team) that owns the project.project
: The name of the project to query for artifact types.type_name
: The name of the artifact type.attrs
: Optional mapping of attributes to initialize the artifact type. If not provided, the object will load its attributes from W&B upon initialization.
method ArtifactType.__init__
__init__(
client: 'Client',
entity: 'str',
project: 'str',
type_name: 'str',
attrs: 'Mapping[str, Any] | None' = None
)
property ArtifactType.id
The unique identifier of the artifact type.
property ArtifactType.name
The name of the artifact type.
method ArtifactType.collection
collection(name: 'str') → ArtifactCollection
Get a specific artifact collection by name.
Args:
name
(str): The name of the artifact collection to retrieve.
method ArtifactType.collections
collections(per_page: 'int' = 50) → ArtifactCollections
Get all artifact collections associated with this artifact type.
Args:
per_page
(int): The number of artifact collections to fetch per page. Default is 50.
method ArtifactType.load
load() → Mapping[str, Any]
Load the artifact type attributes from W&B.
class ArtifactCollections
Artifact collections of a specific type in a project.
Args:
client
: The client instance to use for querying W&B.entity
: The entity (user or team) that owns the project.project
: The name of the project to query for artifact collections.type_name
: The name of the artifact type for which to fetch collections.per_page
: The number of artifact collections to fetch per page. Default is 50.
method ArtifactCollections.__init__
__init__(
client: 'Client',
entity: 'str',
project: 'str',
type_name: 'str',
per_page: 'int' = 50
)
property ArtifactCollections.cursor
Returns the cursor for the next page of results.
property ArtifactCollections.length
property ArtifactCollections.more
Returns whether there are more artifacts to fetch.
method ArtifactCollections.convert_objects
convert_objects() → list[ArtifactCollection]
Convert the raw response data into a list of ArtifactCollection objects.
method ArtifactCollections.update_variables
update_variables() → None
Update the cursor variable for pagination.
class ArtifactCollection
An artifact collection that represents a group of related artifacts.
Args:
client
: The client instance to use for querying W&B.entity
: The entity (user or team) that owns the project.project
: The name of the project to query for artifact collections.name
: The name of the artifact collection.type
: The type of the artifact collection (e.g., “dataset”, “model”).organization
: Optional organization name if applicable.attrs
: Optional mapping of attributes to initialize the artifact collection. If not provided, the object will load its attributes from W&B upon initialization.
method ArtifactCollection.__init__
__init__(
client: 'Client',
entity: 'str',
project: 'str',
name: 'str',
type: 'str',
organization: 'str | None' = None,
attrs: 'Mapping[str, Any] | None' = None,
is_sequence: 'bool | None' = None
)
property ArtifactCollection.aliases
Artifact Collection Aliases.
property ArtifactCollection.created_at
The creation date of the artifact collection.
property ArtifactCollection.description
A description of the artifact collection.
property ArtifactCollection.id
The unique identifier of the artifact collection.
property ArtifactCollection.name
The name of the artifact collection.
property ArtifactCollection.tags
The tags associated with the artifact collection.
property ArtifactCollection.type
Returns the type of the artifact collection.
method ArtifactCollection.artifacts
artifacts(per_page: 'int' = 50) → Artifacts
Get all artifacts in the collection.
method ArtifactCollection.change_type
change_type(new_type: 'str') → None
Deprecated, change type directly with save
instead.
method ArtifactCollection.delete
delete() → None
Delete the entire artifact collection.
method ArtifactCollection.is_sequence
is_sequence() → bool
Return whether the artifact collection is a sequence.
method ArtifactCollection.load
load()
Load the artifact collection attributes from W&B.
method ArtifactCollection.save
save() → None
Persist any changes made to the artifact collection.
class Artifacts
An iterable collection of artifact versions associated with a project.
Optionally pass in filters to narrow down the results based on specific criteria.
Args:
client
: The client instance to use for querying W&B.entity
: The entity (user or team) that owns the project.project
: The name of the project to query for artifacts.collection_name
: The name of the artifact collection to query.type
: The type of the artifacts to query. Common examples include “dataset” or “model”.filters
: Optional mapping of filters to apply to the query.order
: Optional string to specify the order of the results.per_page
: The number of artifact versions to fetch per page. Default is 50.tags
: Optional string or list of strings to filter artifacts by tags.
method Artifacts.__init__
__init__(
client: 'Client',
entity: 'str',
project: 'str',
collection_name: 'str',
type: 'str',
filters: 'Mapping[str, Any] | None' = None,
order: 'str | None' = None,
per_page: 'int' = 50,
tags: 'str | list[str] | None' = None
)
property Artifacts.cursor
Returns the cursor for the next page of results.
property Artifacts.length
Returns the total number of artifacts in the collection.
property Artifacts.more
Returns whether there are more files to fetch.
method Artifacts.convert_objects
convert_objects() → list[Artifact]
Convert the raw response data into a list of wandb.Artifact objects.
class RunArtifacts
method RunArtifacts.__init__
__init__(
client: 'Client',
run: 'Run',
mode: "Literal['logged', 'used']" = 'logged',
per_page: 'int' = 50
)
property RunArtifacts.cursor
Returns the cursor for the next page of results.
property RunArtifacts.length
Returns the total number of artifacts in the collection.
property RunArtifacts.more
Returns whether there are more artifacts to fetch.
method RunArtifacts.convert_objects
convert_objects() → list[Artifact]
Convert the raw response data into a list of wandb.Artifact objects.
class ArtifactFiles
method ArtifactFiles.__init__
__init__(
client: 'Client',
artifact: 'Artifact',
names: 'Sequence[str] | None' = None,
per_page: 'int' = 50
)
property ArtifactFiles.cursor
Returns the cursor for the next page of results.
property ArtifactFiles.length
Returns the total number of files in the artifact.
property ArtifactFiles.more
Returns whether there are more files to fetch.
property ArtifactFiles.path
Returns the path of the artifact.
method ArtifactFiles.convert_objects
convert_objects() → list[public.File]
Convert the raw response data into a list of public.File objects.
method ArtifactFiles.update_variables
update_variables() → None
Update the variables dictionary with the cursor.
3 - automations
module wandb.apis.public
W&B Public API for Automation objects.
class Automations
An iterable collection of Automation
objects.
method Automations.__init__
__init__(
client: '_Client',
variables: 'Mapping[str, Any]',
per_page: 'int' = 50,
_query: 'Document | None' = None
)
property Automations.cursor
The start cursor to use for the next page.
property Automations.more
Whether there are more items to fetch.
method Automations.convert_objects
convert_objects() → Iterable[Automation]
Parse the page data into a list of objects.
4 - files
module wandb.apis.public
W&B Public API for File objects.
This module provides classes for interacting with files stored in W&B.
Example:
from wandb.apis.public import Api
# Initialize API
api = Api()
# Get files from a specific run
run = api.run("entity/project/run_id")
files = run.files()
# Work with files
for file in files:
print(f"File: {file.name}")
print(f"Size: {file.size} bytes")
print(f"Type: {file.mimetype}")
# Download file
if file.size < 1000000: # Less than 1MB
file.download(root="./downloads")
# Get S3 URI for large files
if file.size >= 1000000:
print(f"S3 URI: {file.path_uri}")
Note:
This module is part of the W&B Public API and provides methods to access, download, and manage files stored in W&B. Files are typically associated with specific runs and can include model weights, datasets, visualizations, and other artifacts.
class Files
An iterable collection of File
objects.
Access and manage files uploaded to W&B during a run. Handles pagination automatically when iterating through large collections of files.
Args:
client
: The run object that contains the filesrun
: The run object that contains the filesnames
(list, optional): A list of file names to filter the filesper_page
(int, optional): The number of files to fetch per pageupload
(bool, optional): IfTrue
, fetch the upload URL for each file
Example:
from wandb.apis.public.files import Files
from wandb.apis.public.api import Api
# Initialize the API client
api = Api()
# Example run object
run = api.run("entity/project/run-id")
# Create a Files object to iterate over files in the run
files = Files(api.client, run)
# Iterate over files
for file in files:
print(file.name)
print(file.url)
print(file.size)
# Download the file
file.download(root="download_directory", replace=True)
method Files.__init__
__init__(client, run, names=None, per_page=50, upload=False)
property Files.cursor
Returns the cursor position for pagination of file results.
property Files.length
The number of files saved to the specified run.
property Files.more
Returns whether there are more files to fetch.
method Files.convert_objects
convert_objects()
Converts GraphQL edges to File objects.
method Files.update_variables
update_variables()
Updates the GraphQL query variables for pagination.
class File
File saved to W&B.
Represents a single file stored in W&B. Includes access to file metadata. Files are associated with a specific run and can include text files, model weights, datasets, visualizations, and other artifacts. You can download the file, delete the file, and access file properties.
Specify one or more attributes in a dictionary to fine a specific file logged to a specific run. You can search using the following keys:
- id (str): The ID of the run that contains the file
- name (str): Name of the file
- url (str): path to file
- direct_url (str): path to file in the bucket
- sizeBytes (int): size of file in bytes
- md5 (str): md5 of file
- mimetype (str): mimetype of file
- updated_at (str): timestamp of last update
- path_uri (str): path to file in the bucket, currently only available for files stored in S3
Args:
client
: The run object that contains the fileattrs
(dict): A dictionary of attributes that define the filerun
: The run object that contains the file
Example:
from wandb.apis.public.files import File
from wandb.apis.public.api import Api
# Initialize the API client
api = Api()
# Example attributes dictionary
file_attrs = {
"id": "file-id",
"name": "example_file.txt",
"url": "https://example.com/file",
"direct_url": "https://example.com/direct_file",
"sizeBytes": 1024,
"mimetype": "text/plain",
"updated_at": "2025-03-25T21:43:51Z",
"md5": "d41d8cd98f00b204e9800998ecf8427e",
}
# Example run object
run = api.run("entity/project/run-id")
# Create a File object
file = File(api.client, file_attrs, run)
# Access some of the attributes
print("File ID:", file.id)
print("File Name:", file.name)
print("File URL:", file.url)
print("File MIME Type:", file.mimetype)
print("File Updated At:", file.updated_at)
# Access File properties
print("File Size:", file.size)
print("File Path URI:", file.path_uri)
# Download the file
file.download(root="download_directory", replace=True)
# Delete the file
file.delete()
method File.__init__
__init__(client, attrs, run=None)
property File.path_uri
Returns the URI path to the file in the storage bucket.
property File.size
Returns the size of the file in bytes.
method File.delete
delete()
Delete the file from the W&B server.
method File.download
download(
root: str = '.',
replace: bool = False,
exist_ok: bool = False,
api: Optional[wandb.apis.public.api.Api] = None
) → TextIOWrapper
Downloads a file previously saved by a run from the wandb server.
Args:
root
: Local directory to save the file. Defaults to “.”.replace
: IfTrue
, download will overwrite a local file if it exists. Defaults toFalse
.exist_ok
: IfTrue
, will not raise ValueError if file already exists and will not re-download unless replace=True. Defaults toFalse
.api
: If specified, theApi
instance used to download the file.
Raises:
ValueError
if file already exists, replace=False
and exist_ok=False
.
5 - history
module wandb.apis.public
W&B Public API for Run History.
This module provides classes for efficiently scanning and sampling run history data.
Note:
This module is part of the W&B Public API and provides methods to access run history data. It handles pagination automatically and offers both complete and sampled access to metrics logged during training runs.
class HistoryScan
Iterator for scanning complete run history.
Args:
client
: (wandb.apis.internal.Api
) The client instance to userun
: (wandb.sdk.internal.Run
) The run object to scan history formin_step
: (int) The minimum step to start scanning frommax_step
: (int) The maximum step to scan up topage_size
: (int) Number of samples per page (default is 1000)
method HistoryScan.__init__
__init__(client, run, min_step, max_step, page_size=1000)
class SampledHistoryScan
Iterator for sampling run history data.
Args:
client
: (wandb.apis.internal.Api
) The client instance to userun
: (wandb.sdk.internal.Run
) The run object to sample history fromkeys
: (list) List of keys to sample from the historymin_step
: (int) The minimum step to start sampling frommax_step
: (int) The maximum step to sample up topage_size
: (int) Number of samples per page (default is 1000)
method SampledHistoryScan.__init__
__init__(client, run, keys, min_step, max_step, page_size=1000)
6 - integrations
module wandb.apis.public
W&B Public API for integrations.
This module provides classes for interacting with W&B integrations.
class Integrations
method Integrations.__init__
__init__(client: '_Client', variables: 'dict[str, Any]', per_page: 'int' = 50)
property Integrations.cursor
The start cursor to use for the next page.
property Integrations.more
Whether there are more Integrations to fetch.
method Integrations.convert_objects
convert_objects() → Iterable[Integration]
Parse the page data into a list of integrations.
class WebhookIntegrations
method WebhookIntegrations.__init__
__init__(client: '_Client', variables: 'dict[str, Any]', per_page: 'int' = 50)
property WebhookIntegrations.cursor
The start cursor to use for the next page.
property WebhookIntegrations.more
Whether there are more webhook integrations to fetch.
method WebhookIntegrations.convert_objects
convert_objects() → Iterable[WebhookIntegration]
Parse the page data into a list of webhook integrations.
class SlackIntegrations
method SlackIntegrations.__init__
__init__(client: '_Client', variables: 'dict[str, Any]', per_page: 'int' = 50)
property SlackIntegrations.cursor
The start cursor to use for the next page.
property SlackIntegrations.more
Whether there are more Slack integrations to fetch.
method SlackIntegrations.convert_objects
convert_objects() → Iterable[SlackIntegration]
Parse the page data into a list of Slack integrations.
7 - jobs
module wandb.apis.public
W&B Public API for management Launch Jobs and Launch Queues.
This module provides classes for managing W&B jobs, queued runs, and run queues.
class Job
method Job.__init__
__init__(api: 'Api', name, path: Optional[str] = None) → None
property Job.name
The name of the job.
method Job.call
call(
config,
project=None,
entity=None,
queue=None,
resource='local-container',
resource_args=None,
template_variables=None,
project_queue=None,
priority=None
)
Call the job with the given configuration.
Args:
config
(dict): The configuration to pass to the job. This should be a dictionary containing key-value pairs that match the input types defined in the job.project
(str, optional): The project to log the run to. Defaults to the job’s project.entity
(str, optional): The entity to log the run under. Defaults to the job’s entity.queue
(str, optional): The name of the queue to enqueue the job to. Defaults to None.resource
(str, optional): The resource type to use for execution. Defaults to “local-container”.resource_args
(dict, optional): Additional arguments for the resource type. Defaults to None.template_variables
(dict, optional): Template variables to use for the job. Defaults to None.project_queue
(str, optional): The project that manages the queue. Defaults to None.priority
(int, optional): The priority of the queued run. Defaults to None.
method Job.set_entrypoint
set_entrypoint(entrypoint: List[str])
Set the entrypoint for the job.
class QueuedRun
A single queued run associated with an entity and project.
Args:
entity
: The entity associated with the queued run.project
(str): The project where runs executed by the queue are logged to.queue_name
(str): The name of the queue.run_queue_item_id
(int): The id of the run queue item.project_queue
(str): The project that manages the queue.priority
(str): The priority of the queued run.
Call run = queued_run.wait_until_running()
or run = queued_run.wait_until_finished()
to access the run.
method QueuedRun.__init__
__init__(
client,
entity,
project,
queue_name,
run_queue_item_id,
project_queue='model-registry',
priority=None
)
property QueuedRun.entity
The entity associated with the queued run.
property QueuedRun.id
The id of the queued run.
property QueuedRun.project
The project associated with the queued run.
property QueuedRun.queue_name
The name of the queue.
property QueuedRun.state
The state of the queued run.
method QueuedRun.delete
delete(delete_artifacts=False)
Delete the given queued run from the wandb backend.
method QueuedRun.wait_until_finished
wait_until_finished()
Wait for the queued run to complete and return the finished run.
method QueuedRun.wait_until_running
wait_until_running()
Wait until the queued run is running and return the run.
class RunQueue
Class that represents a run queue in W&B.
Args:
client
: W&B API client instance.name
: Name of the run queueentity
: The entity (user or team) that owns this queueprioritization_mode
: Queue priority mode Can be “DISABLED” or “V0”. Defaults toNone
._access
: Access level for the queue Can be “project” or “user”. Defaults toNone
._default_resource_config_id
: ID of default resource config_default_resource_config
: Default resource configuration
method RunQueue.__init__
__init__(
client: 'RetryingClient',
name: str,
entity: str,
prioritization_mode: Optional[Literal['DISABLED', 'V0']] = None,
_access: Optional[Literal['project', 'user']] = None,
_default_resource_config_id: Optional[int] = None,
_default_resource_config: Optional[dict] = None
) → None
property RunQueue.access
The access level of the queue.
property RunQueue.default_resource_config
The default configuration for resources.
property RunQueue.entity
The entity that owns the queue.
property RunQueue.external_links
External resource links for the queue.
property RunQueue.id
The id of the queue.
property RunQueue.items
Up to the first 100 queued runs. Modifying this list will not modify the queue or any enqueued items!
property RunQueue.name
The name of the queue.
property RunQueue.prioritization_mode
The prioritization mode of the queue.
Can be set to “DISABLED” or “V0”.
property RunQueue.template_variables
Variables for resource templates.
property RunQueue.type
The resource type for execution.
classmethod RunQueue.create
create(
name: str,
resource: 'RunQueueResourceType',
entity: Optional[str] = None,
prioritization_mode: Optional[ForwardRef('RunQueuePrioritizationMode')] = None,
config: Optional[dict] = None,
template_variables: Optional[dict] = None
) → RunQueue
Create a RunQueue.
Args:
name
: The name of the run queue to create.resource
: The resource type for execution.entity
: The entity (user or team) that will own the queue. Defaults to the default entity of the API client.prioritization_mode
: The prioritization mode for the queue. Can be “DISABLED” or “V0”. Defaults to None.config
: Optional dictionary for the default resource configuration. Defaults to None.template_variables
: Optional dictionary for template variables used in the resource configuration.
method RunQueue.delete
delete()
Delete the run queue from the wandb backend.
8 - projects
module wandb.apis.public
W&B Public API for Project objects.
This module provides classes for interacting with W&B projects and their associated data.
Example:
from wandb.apis.public import Api
# Initialize API
api = Api()
# Get all projects for an entity
projects = api.projects("entity")
# Access project data
for project in projects:
print(f"Project: {project.name}")
print(f"URL: {project.url}")
# Get artifact types
for artifact_type in project.artifacts_types():
print(f"Artifact Type: {artifact_type.name}")
# Get sweeps
for sweep in project.sweeps():
print(f"Sweep ID: {sweep.id}")
print(f"State: {sweep.state}")
Note:
This module is part of the W&B Public API and provides methods to access and manage projects. For creating new projects, use wandb.init() with a new project name.
class Projects
An iterable collection of Project
objects.
An iterable interface to access projects created and saved by the entity.
Args:
client
(wandb.apis.internal.Api
): The API client instance to use.entity
(str): The entity name (username or team) to fetch projects for.per_page
(int): Number of projects to fetch per request (default is 50).
Example:
from wandb.apis.public.api import Api
# Initialize the API client
api = Api()
# Find projects that belong to this entity
projects = api.projects(entity="entity")
# Iterate over files
for project in projects:
print(f"Project: {project.name}")
print(f"- URL: {project.url}")
print(f"- Created at: {project.created_at}")
print(f"- Is benchmark: {project.is_benchmark}")
method Projects.__init__
__init__(client, entity, per_page=50)
property Projects.cursor
Returns the cursor position for pagination of project results.
property Projects.length
Returns the total number of projects.
Note: This property is not available for projects.
property Projects.more
Returns True
if there are more projects to fetch. Returns False
if there are no more projects to fetch.
method Projects.convert_objects
convert_objects()
Converts GraphQL edges to File objects.
class Project
A project is a namespace for runs.
Args:
client
: W&B API client instance.name
(str): The name of the project.entity
(str): The entity name that owns the project.
method Project.__init__
__init__(client, entity, project, attrs)
property Project.id
property Project.path
Returns the path of the project. The path is a list containing the entity and project name.
property Project.url
Returns the URL of the project.
method Project.artifacts_types
artifacts_types(per_page=50)
Returns all artifact types associated with this project.
method Project.sweeps
sweeps()
Fetches all sweeps associated with the project.
9 - query_generator
module wandb.apis.public
method QueryGenerator.filter_to_mongo
filter_to_mongo(filter)
Returns dictionary with filter format converted to MongoDB filter.
classmethod QueryGenerator.format_order_key
format_order_key(key: str)
Format a key for sorting.
method QueryGenerator.key_to_server_path
key_to_server_path(key)
Convert a key dictionary to the corresponding server path string.
method QueryGenerator.keys_to_order
keys_to_order(keys)
Convert a list of key dictionaries to an order string.
method QueryGenerator.mongo_to_filter
mongo_to_filter(filter)
Returns dictionary with MongoDB filter converted to filter format.
method QueryGenerator.order_to_keys
order_to_keys(order)
Convert an order string to a list of key dictionaries.
method QueryGenerator.server_path_to_key
server_path_to_key(path)
Convert a server path string to the corresponding key dictionary.
10 - reports
module wandb.apis.public
W&B Public API for Report objects.
This module provides classes for interacting with W&B reports and managing report-related data.
class Reports
Reports is an iterable collection of BetaReport
objects.
Args:
client
(wandb.apis.internal.Api
): The API client instance to use.project
(wandb.sdk.internal.Project
): The project to fetch reports from.name
(str, optional): The name of the report to filter by. IfNone
, fetches all reports.entity
(str, optional): The entity name for the project. Defaults to the project entity.per_page
(int): Number of reports to fetch per page (default is 50).
method Reports.__init__
__init__(client, project, name=None, entity=None, per_page=50)
property Reports.cursor
Returns the cursor position for pagination of file results.
property Reports.length
The number of reports in the project.
property Reports.more
Returns whether there are more files to fetch.
method Reports.convert_objects
convert_objects()
Converts GraphQL edges to File objects.
method Reports.update_variables
update_variables()
Updates the GraphQL query variables for pagination.
class BetaReport
BetaReport is a class associated with reports created in W&B.
WARNING: this API will likely change in a future release
Attributes:
name
(string): The name of the report.description
(string): Report description.user
(User): The user that created the report.spec
(dict): The spec off the report.updated_at
(string): timestamp of last update.
method BetaReport.__init__
__init__(client, attrs, entity=None, project=None)
property BetaReport.sections
Get the panel sections (groups) from the report.
property BetaReport.updated_at
Timestamp of last update
property BetaReport.url
URL of the report.
Contains the entity, project, display name, and id.
method BetaReport.runs
runs(section, per_page=50, only_selected=True)
Get runs associated with a section of the report.
method BetaReport.to_html
to_html(height=1024, hidden=False)
Generate HTML containing an iframe displaying this report.
11 - runs
module wandb.apis.public
W&B Public API for Runs.
This module provides classes for interacting with W&B runs and their associated data.
Example:
from wandb.apis.public import Api
# Initialize API
api = Api()
# Get runs matching filters
runs = api.runs(
path="entity/project", filters={"state": "finished", "config.batch_size": 32}
)
# Access run data
for run in runs:
print(f"Run: {run.name}")
print(f"Config: {run.config}")
print(f"Metrics: {run.summary}")
# Get history with pandas
history_df = run.history(keys=["loss", "accuracy"], pandas=True)
# Work with artifacts
for artifact in run.logged_artifacts():
print(f"Artifact: {artifact.name}")
Note:
This module is part of the W&B Public API and provides read/write access to run data. For logging new runs, use the wandb.init() function from the main wandb package.
class Runs
An iterable collection of runs associated with a project and optional filter.
This is generally used indirectly using the Api.runs
namespace.
Args:
client
: (wandb.apis.public.RetryingClient
) The API client to use for requests.entity
: (str) The entity (username or team) that owns the project.project
: (str) The name of the project to fetch runs from.filters
: (Optional[Dict[str, Any]]) A dictionary of filters to apply to the runs query.order
: (Optional[str]) The order of the runs, can be “asc” or “desc” Defaults to “desc”.per_page
: (int) The number of runs to fetch per request (default is 50).include_sweeps
: (bool) Whether to include sweep information in the runs. Defaults to True.
Examples:
from wandb.apis.public.runs import Runs
from wandb.apis.public import Api
# Initialize the API client
api = Api()
# Get all runs from a project that satisfy the filters
filters = {"state": "finished", "config.optimizer": "adam"}
runs = Runs(
client=api.client,
entity="entity",
project="project_name",
filters=filters,
)
# Iterate over runs and print details
for run in runs:
print(f"Run name: {run.name}")
print(f"Run ID: {run.id}")
print(f"Run URL: {run.url}")
print(f"Run state: {run.state}")
print(f"Run config: {run.config}")
print(f"Run summary: {run.summary}")
print(f"Run history (samples=5): {run.history(samples=5)}")
print("----------")
# Get histories for all runs with specific metrics
histories_df = runs.histories(
samples=100, # Number of samples per run
keys=["loss", "accuracy"], # Metrics to fetch
x_axis="_step", # X-axis metric
format="pandas", # Return as pandas DataFrame
)
method Runs.__init__
__init__(
client: 'RetryingClient',
entity: str,
project: str,
filters: Optional[Dict[str, Any]] = None,
order: Optional[str] = None,
per_page: int = 50,
include_sweeps: bool = True
)
property Runs.cursor
Returns the cursor position for pagination of runs results.
property Runs.length
Returns the total number of runs.
property Runs.more
Returns whether there are more runs to fetch.
method Runs.convert_objects
convert_objects()
Converts GraphQL edges to Runs objects.
method Runs.histories
histories(
samples: int = 500,
keys: Optional[List[str]] = None,
x_axis: str = '_step',
format: Literal['default', 'pandas', 'polars'] = 'default',
stream: Literal['default', 'system'] = 'default'
)
Return sampled history metrics for all runs that fit the filters conditions.
Args:
samples
: The number of samples to return per runkeys
: Only return metrics for specific keysx_axis
: Use this metric as the xAxis defaults to _stepformat
: Format to return data in, options are “default”, “pandas”, “polars”stream
: “default” for metrics, “system” for machine metrics
Returns:
pandas.DataFrame
: Ifformat="pandas"
, returns apandas.DataFrame
of history metrics.polars.DataFrame
: Ifformat="polars"
, returns apolars.DataFrame
of history metrics.list of dicts
: Ifformat="default"
, returns a list of dicts containing history metrics with arun_id
key.
class Run
A single run associated with an entity and project.
Args:
client
: The W&B API client.entity
: The entity associated with the run.project
: The project associated with the run.run_id
: The unique identifier for the run.attrs
: The attributes of the run.include_sweeps
: Whether to include sweeps in the run.
Attributes:
tags
([str]): a list of tags associated with the runurl
(str): the url of this runid
(str): unique identifier for the run (defaults to eight characters)name
(str): the name of the runstate
(str): one of: running, finished, crashed, killed, preempting, preemptedconfig
(dict): a dict of hyperparameters associated with the runcreated_at
(str): ISO timestamp when the run was startedsystem_metrics
(dict): the latest system metrics recorded for the runsummary
(dict): A mutable dict-like property that holds the current summary. Calling update will persist any changes.project
(str): the project associated with the runentity
(str): the name of the entity associated with the runproject_internal_id
(int): the internal id of the projectuser
(str): the name of the user who created the runpath
(str): Unique identifier [entity]/[project]/[run_id]notes
(str): Notes about the runread_only
(boolean): Whether the run is editablehistory_keys
(str): Keys of the history metrics that have been loggedwith
wandb.log({key: value})
metadata
(str): Metadata about the run from wandb-metadata.json
method Run.__init__
__init__(
client: 'RetryingClient',
entity: str,
project: str,
run_id: str,
attrs: Optional[Mapping] = None,
include_sweeps: bool = True
)
Initialize a Run object.
Run is always initialized by calling api.runs() where api is an instance of wandb.Api.
method Run.delete
delete(delete_artifacts=False)
Delete the given run from the wandb backend.
Args:
delete_artifacts
(bool, optional): Whether to delete the artifacts associated with the run.
method Run.file
file(name)
Return the path of a file with a given name in the artifact.
Args:
name
(str): name of requested file.
Returns:
A File
matching the name argument.
method Run.files
files(names=None, per_page=50)
Return a file path for each file named.
Args:
names
(list): names of the requested files, if empty returns all filesper_page
(int): number of results per page.
Returns:
A Files
object, which is an iterator over File
objects.
method Run.history
history(samples=500, keys=None, x_axis='_step', pandas=True, stream='default')
Return sampled history metrics for a run.
This is simpler and faster if you are ok with the history records being sampled.
Args:
samples
: (int, optional) The number of samples to returnpandas
: (bool, optional) Return a pandas dataframekeys
: (list, optional) Only return metrics for specific keysx_axis
: (str, optional) Use this metric as the xAxis defaults to _stepstream
: (str, optional) “default” for metrics, “system” for machine metrics
Returns:
pandas.DataFrame
: If pandas=True returns apandas.DataFrame
of history metrics.list of dicts
: If pandas=False returns a list of dicts of history metrics.
method Run.load
load(force=False)
Fetch and update run data from GraphQL database.
Ensures run data is up to date.
Args:
force
(bool): Whether to force a refresh of the run data.
method Run.log_artifact
log_artifact(
artifact: 'wandb.Artifact',
aliases: Optional[Collection[str]] = None,
tags: Optional[Collection[str]] = None
)
Declare an artifact as output of a run.
Args:
artifact
(Artifact
): An artifact returned fromwandb.Api().artifact(name)
.aliases
(list, optional): Aliases to apply to this artifact.tags
: (list, optional) Tags to apply to this artifact, if any.
Returns:
A Artifact
object.
method Run.logged_artifacts
logged_artifacts(per_page: int = 100) → RunArtifacts
Fetches all artifacts logged by this run.
Retrieves all output artifacts that were logged during the run. Returns a paginated result that can be iterated over or collected into a single list.
Args:
per_page
: Number of artifacts to fetch per API request.
Returns: An iterable collection of all Artifact objects logged as outputs during this run.
Example:
import wandb
import tempfile
with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".txt") as tmp:
tmp.write("This is a test artifact")
tmp_path = tmp.name
run = wandb.init(project="artifact-example")
artifact = wandb.Artifact("test_artifact", type="dataset")
artifact.add_file(tmp_path)
run.log_artifact(artifact)
run.finish()
api = wandb.Api()
finished_run = api.run(f"{run.entity}/{run.project}/{run.id}")
for logged_artifact in finished_run.logged_artifacts():
print(logged_artifact.name)
method Run.save
save()
Persist changes to the run object to the W&B backend.
method Run.scan_history
scan_history(keys=None, page_size=1000, min_step=None, max_step=None)
Returns an iterable collection of all history records for a run.
Args:
keys
([str], optional): only fetch these keys, and only fetch rows that have all of keys defined.page_size
(int, optional): size of pages to fetch from the api.min_step
(int, optional): the minimum number of pages to scan at a time.max_step
(int, optional): the maximum number of pages to scan at a time.
Returns: An iterable collection over history records (dict).
Example: Export all the loss values for an example run
run = api.run("entity/project-name/run-id")
history = run.scan_history(keys=["Loss"])
losses = [row["Loss"] for row in history]
method Run.to_html
to_html(height=420, hidden=False)
Generate HTML containing an iframe displaying this run.
method Run.update
update()
Persist changes to the run object to the wandb backend.
method Run.upload_file
upload_file(path, root='.')
Upload a local file to W&B, associating it with this run.
Args:
path
(str): Path to the file to upload. Can be absolute or relative.root
(str): The root path to save the file relative to. For example, if you want to have the file saved in the run as “my_dir/file.txt” and you’re currently in “my_dir” you would set root to “../”. Defaults to current directory (".").
Returns:
A File
object representing the uploaded file.
method Run.use_artifact
use_artifact(artifact, use_as=None)
Declare an artifact as an input to a run.
Args:
artifact
(Artifact
): An artifact returned fromwandb.Api().artifact(name)
use_as
(string, optional): A string identifying how the artifact is used in the script. Used to easily differentiate artifacts used in a run, when using the beta wandb launch feature’s artifact swapping functionality.
Returns:
An Artifact
object.
method Run.used_artifacts
used_artifacts(per_page: int = 100) → RunArtifacts
Fetches artifacts explicitly used by this run.
Retrieves only the input artifacts that were explicitly declared as used during the run, typically via run.use_artifact()
. Returns a paginated result that can be iterated over or collected into a single list.
Args:
per_page
: Number of artifacts to fetch per API request.
Returns: An iterable collection of Artifact objects explicitly used as inputs in this run.
Example:
import wandb
run = wandb.init(project="artifact-example")
run.use_artifact("test_artifact:latest")
run.finish()
api = wandb.Api()
finished_run = api.run(f"{run.entity}/{run.project}/{run.id}")
for used_artifact in finished_run.used_artifacts():
print(used_artifact.name)
test_artifact
method Run.wait_until_finished
wait_until_finished()
Check the state of the run until it is finished.
12 - sweeps
module wandb.apis.public
W&B Public API for Sweeps.
This module provides classes for interacting with W&B hyperparameter optimization sweeps.
Example:
from wandb.apis.public import Api
# Initialize API
api = Api()
# Get a specific sweep
sweep = api.sweep("entity/project/sweep_id")
# Access sweep properties
print(f"Sweep: {sweep.name}")
print(f"State: {sweep.state}")
print(f"Best Loss: {sweep.best_loss}")
# Get best performing run
best_run = sweep.best_run()
print(f"Best Run: {best_run.name}")
print(f"Metrics: {best_run.summary}")
Note:
This module is part of the W&B Public API and provides read-only access to sweep data. For creating and controlling sweeps, use the wandb.sweep() and wandb.agent() functions from the main wandb package.
class Sweep
The set of runs associated with the sweep.
Attributes:
runs
(Runs): List of runsid
(str): Sweep IDproject
(str): The name of the project the sweep belongs toconfig
(dict): Dictionary containing the sweep configurationstate
(str): The state of the sweep. Can be “Finished”, “Failed”, “Crashed”, or “Running”.expected_run_count
(int): The number of expected runs for the sweep
method Sweep.__init__
__init__(client, entity, project, sweep_id, attrs=None)
property Sweep.config
The sweep configuration used for the sweep.
property Sweep.entity
The entity associated with the sweep.
property Sweep.expected_run_count
Return the number of expected runs in the sweep or None for infinite runs.
property Sweep.name
The name of the sweep.
If the sweep has a name, it will be returned. Otherwise, the sweep ID will be returned.
property Sweep.order
Return the order key for the sweep.
property Sweep.path
Returns the path of the project.
The path is a list containing the entity, project name, and sweep ID.
property Sweep.url
The URL of the sweep.
The sweep URL is generated from the entity, project, the term “sweeps”, and the sweep ID.run_id. For SaaS users, it takes the form of https://wandb.ai/entity/project/sweeps/sweeps_ID
.
property Sweep.username
Deprecated. Use Sweep.entity
instead.
method Sweep.best_run
best_run(order=None)
Return the best run sorted by the metric defined in config or the order passed in.
classmethod Sweep.get
get(
client,
entity=None,
project=None,
sid=None,
order=None,
query=None,
**kwargs
)
Execute a query against the cloud backend.
method Sweep.load
load(force: bool = False)
Fetch and update sweep data logged to the run from GraphQL database.
method Sweep.to_html
to_html(height=420, hidden=False)
Generate HTML containing an iframe displaying this sweep.
13 - teams
module wandb.apis.public
W&B Public API for managing teams and team members.
This module provides classes for managing W&B teams and their members.
Note:
This module is part of the W&B Public API and provides methods to manage teams and their members. Team management operations require appropriate permissions.
class Member
A member of a team.
Args:
client
(wandb.apis.internal.Api
): The client instance to useteam
(str): The name of the team this member belongs toattrs
(dict): The member attributes
method Member.__init__
__init__(client, team, attrs)
method Member.delete
delete()
Remove a member from a team.
Returns: Boolean indicating success
class Team
A class that represents a W&B team.
This class provides methods to manage W&B teams, including creating teams, inviting members, and managing service accounts. It inherits from Attrs to handle team attributes.
Args:
client
(wandb.apis.public.Api
): The api instance to usename
(str): The name of the teamattrs
(dict): Optional dictionary of team attributes
Note:
Team management requires appropriate permissions.
method Team.__init__
__init__(client, name, attrs=None)
classmethod Team.create
create(api, team, admin_username=None)
Create a new team.
Args:
api
: (Api
) The api instance to useteam
: (str) The name of the teamadmin_username
: (str) optional username of the admin user of the team, defaults to the current user.
Returns:
A Team
object
method Team.create_service_account
create_service_account(description)
Create a service account for the team.
Args:
description
: (str) A description for this service account
Returns:
The service account Member
object, or None on failure
method Team.invite
invite(username_or_email, admin=False)
Invite a user to a team.
Args:
username_or_email
: (str) The username or email address of the user you want to invite.admin
: (bool) Whether to make this user a team admin. Defaults toFalse
.
Returns:
True on success, False
if user was already invited or didn’t exist.
method Team.load
load(force=False)
Return members that belong to a team.
14 - users
module wandb.apis.public
W&B Public API for managing users and API keys.
This module provides classes for managing W&B users and their API keys.
Note:
This module is part of the W&B Public API and provides methods to manage users and their authentication. Some operations require admin privileges.
class User
A class representing a W&B user with authentication and management capabilities.
This class provides methods to manage W&B users, including creating users, managing API keys, and accessing team memberships. It inherits from Attrs to handle user attributes.
Args:
client
: (wandb.apis.internal.Api
) The client instance to useattrs
: (dict) The user attributes
Note:
Some operations require admin privileges
method User.__init__
__init__(client, attrs)
property User.api_keys
List of API key names associated with the user.
Returns:
list[str]
: Names of API keys associated with the user. Empty list if user has no API keys or if API key data hasn’t been loaded.
property User.teams
List of team names that the user is a member of.
Returns:
list
(list): Names of teams the user belongs to. Empty list if user has no team memberships or if teams data hasn’t been loaded.
property User.user_api
An instance of the api using credentials from the user.
classmethod User.create
create(api, email, admin=False)
Create a new user.
Args:
api
(Api
): The api instance to useemail
(str): The name of the teamadmin
(bool): Whether this user should be a global instance admin
Returns:
A User
object
method User.delete_api_key
delete_api_key(api_key)
Delete a user’s api key.
Args:
api_key
(str): The name of the API key to delete. This should be one of the names returned by theapi_keys
property.
Returns: Boolean indicating success
Raises: ValueError if the api_key couldn’t be found
method User.generate_api_key
generate_api_key(description=None)
Generate a new api key.
Args:
description
(str, optional): A description for the new API key. This can be used to identify the purpose of the API key.
Returns: The new api key, or None on failure