You are viewing an outdated version of the documentation.

This documentation is for an older version (1.4.7) of Dagster. You can view the version of this page from our latest release below.

Source code for dagster_wandb.resources

from typing import Any, Dict

import wandb
from dagster import Field, InitResourceContext, String, StringSource, resource
from dagster._core.definitions.resource_definition import dagster_maintained_resource
from wandb.sdk.internal.internal_api import Api

WANDB_CLOUD_HOST: str = "https://api.wandb.ai"


[docs]@dagster_maintained_resource @resource( config_schema={ "api_key": Field( StringSource, description="W&B API key necessary to communicate with the W&B API.", is_required=True, ), "host": Field( String, description=( "API host server you wish to use. Only required if you are using W&B Server." ), is_required=False, default_value=WANDB_CLOUD_HOST, ), }, description="Resource for interacting with Weights & Biases", ) def wandb_resource(context: InitResourceContext) -> Dict[str, Any]: """Dagster resource used to communicate with the W&B API. It's useful when you want to use the wandb client within your ops and assets. It's a required resources if you are using the W&B IO Manager. It automatically authenticates using the provided API key. For a complete set of documentation, see `Dagster integration <https://docs.wandb.ai/guides/integrations/dagster>`_. To configure this resource, we recommend using the `configured <https://docs.dagster.io/concepts/configuration/configured>`_ method. **Example:** .. code-block:: python from dagster import job from dagster_wandb import wandb_resource my_wandb_resource = wandb_resource.configured({"api_key": {"env": "WANDB_API_KEY"}}) @job(resource_defs={"wandb_resource": my_wandb_resource}) def my_wandb_job(): ... """ api_key = context.resource_config["api_key"] host = context.resource_config["host"] wandb.login( key=api_key, host=host, anonymous="never", ) client_settings = wandb.Settings( api_key=api_key, base_url=host, anonymous="never", launch=True, ) api = Api(default_settings=client_settings, load_settings=False) return {"sdk": wandb, "api": api, "host": host}