code: def test_set_local_config(self, mocker: MockerFixture) -> None:
      client = ApiWorkflowClient(token="abc", dataset_id="dataset-id")
      mocker.patch.object(
          client._datasources_api,
          "update_datasource_by_dataset_id",
      )
      client.set_local_config(
          web_server_location="http://localhost:1234",
          relative_path="path/to/my/data",
          thumbnail_suffix=".lightly/thumbnails/[filename]-thumb-[extension]",
          purpose=DatasourcePurpose.INPUT,
      )
      kwargs = client._datasources_api.update_datasource_by_dataset_id.call_args[
          1
      ]
      datasource_config = kwargs["datasource_config"].actual_instance
      assert isinstance(datasource_config, DatasourceConfigLOCAL)
      assert datasource_config.type == "LOCAL"
      assert (
          datasource_config.web_server_location
          == "http://localhost:1234"
      )
      assert datasource_config.full_path == "path/to/my/data"
      assert (
          datasource_config.thumb_suffix
          == ".lightly/thumbnails/[filename]-thumb-[extension]"
      )
      assert datasource_config.purpose == DatasourcePurpose.INPUT
  
      # Test defaults
      client.set_local_config()
      kwargs = client._datasources_api.update_datasource_by_dataset_id.call_args[
          1
      ]
      datasource_config = kwargs["datasource_config"].actual_instance
      assert isinstance(datasource_config, DatasourceConfigLOCAL)
      assert datasource_config.type == "LOCAL"
      assert (
          datasource_config.web_server_location
          == "http://localhost:3456"
      )
      assert datasource_config.full_path == ""
      assert (
          datasource_config.thumb_suffix
          == ".lightly/thumbnails/[filename]_thumb.[extension]"
      )
      assert datasource_config.purpose == DatasourcePurpose.INPUT_OUTPUT
  
imports: import pytest
  import tqdm
  from pytest_mock import MockerFixture
  from lightly.api import ApiWorkflowClient, api_workflow_datasources
  from lightly.openapi_generated.swagger_client.models import DatasourceConfigAzure, DatasourceConfigGCS, DatasourceConfigLOCAL, DatasourceConfigS3, DatasourceConfigS3DelegatedAccess, DatasourcePurpose, DatasourceRawSamplesDataRow
  from lightly.openapi_generated.swagger_client.models.datasource_config_verify_data import DatasourceConfigVerifyData
  from lightly.openapi_generated.swagger_client.models.datasource_config_verify_data_errors import DatasourceConfigVerifyDataErrors
  from lightly.openapi_generated.swagger_client.models.datasource_processed_until_timestamp_response import DatasourceProcessedUntilTimestampResponse
  from lightly.openapi_generated.swagger_client.models.datasource_raw_samples_data import DatasourceRawSamplesData
label_desc: Use image node_id 14 for calling the TestDatasourcesMixin obj's underlying member method code with example usage: obj.test_set_local_config(mocker) without return types