code: def _validate_and_fill_defaults(
      retry_on_exception_types: Optional[Tuple[Type[Exception], ...]],
      no_retry_on_exception_types: Optional[
          Tuple[Type[Exception], ...]
      ],
      suppress_errors: bool,
      **kwargs: Any,
  ) -> Tuple[
      Tuple[Type[Exception], ...], Tuple[Type[Exception], ...], bool
  ]:
      if retry_on_exception_types is None:
          # If no exception type provided, we catch all errors.
          retry_on_exception_types = (Exception,)
      if not isinstance(retry_on_exception_types, tuple):
          raise ValueError("Expected a tuple of exception types.")
  
      if no_retry_on_exception_types is not None:
          if not isinstance(no_retry_on_exception_types, tuple):
              raise ValueError(
                  "Expected a tuple of non-retriable exception types."
              )
          if set(no_retry_on_exception_types).intersection(
              set(retry_on_exception_types)
          ):
              raise ValueError(
                  "Same exception type cannot appear in both "
                  "`exception_types` and `no_retry_on_exception_types`."
              )
  
      # `suppress_all_errors` could be a flag to the underlying function
      # when used on instance methods.
      suppress_errors = suppress_errors or kwargs.get(
          "suppress_all_errors", False
      )
      return (
          retry_on_exception_types,
          no_retry_on_exception_types or (),
          suppress_errors,
      )
  
file_path: Ax/ax/utils/common/executils.py
imports: import asyncio
  import functools
  import time
  from contextlib import contextmanager
  from logging import Logger
  from typing import Any, Generator, List, Optional, Tuple, Type
label_desc: Use image node_id 3 for calling a global function with example usage: _validate_and_fill_defaults(retry_on_exception_types, no_retry_on_exception_types, suppress_errors) and returns: retry_on_exception_types,  unknown,  suppress_errors