docstr: Setup Sentry SDK.
  
  We use lower-level APIs (i.e., not sentry_sdk.init) here
  to avoid the possibility of interfering with the user's
  own Sentry SDK setup.
docstr_tok: ["Setup","Sentry","SDK",".","We","use","lower-level","APIs","(","i.e.",",","not","sentry_sdk.init",")","here","to","avoid","the","possibility","of","interfering","with","the","user's","own","Sentry","SDK","setup","."]
code: def setup(self) -> None:
      """Setup Sentry SDK.
  
      We use lower-level APIs (i.e., not sentry_sdk.init) here
      to avoid the possibility of interfering with the user's
      own Sentry SDK setup.
      """
      client = sentry_sdk.Client(
          dsn=self.dsn,
          default_integrations=False,
          environment=self.environment,
          release=wandb.__version__,
      )
      self.hub = sentry_sdk.Hub(client)
  
imports: import atexit
  import functools
  import os
  import pathlib
  import sys
  from types import TracebackType
  from typing import TYPE_CHECKING, Any, Callable, Dict, Optional, Tuple, Type, Union
  from urllib.parse import quote
  import sentry_sdk
  import sentry_sdk.utils
  import wandb
  import wandb.env
  import wandb.util
label_desc: Use image node_id 3 for calling the Sentry obj's underlying member method code with example usage: obj.setup() without return types