code: def copy(
      dataset: str, name_of_copy: str, workspace: Optional[str] = None
  ) -> None:
      """
      Creates a copy of a dataset including its tags and metadata
  
      Args:
          dataset: Name of the source dataset
          name_of_copy: Name of the copied dataset
          workspace: If provided, dataset will be copied to that workspace
  
      Examples:
          >>> import argilla as rg
          >>> rg.copy("my_dataset", name_of_copy="new_dataset")
          >>> rg.load("new_dataset")
      """
      ArgillaSingleton.get().copy(
          dataset=dataset,
          name_of_copy=name_of_copy,
          workspace=workspace,
      )
  
imports: import asyncio
  import warnings
  from asyncio import Future
  from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Tuple, Union
  from argilla.client.client import Argilla
  from argilla.client.datasets import Dataset
  from argilla.client.enums import DatasetType
  from argilla.client.feedback.dataset.local.dataset import FeedbackDataset
  from argilla.client.models import BulkResponse, Record
  from argilla.client.sdk.commons import errors
  from argilla.client.sdk.datasets.models import Dataset
  from argilla.client.sdk.v1.workspaces.models import WorkspaceModel
  from argilla.client.singleton import ArgillaSingleton
label_desc: Use image node_id 3 for calling a global function with example usage: copy(dataset, name_of_copy, workspace) without return types