code: def _promote_types(t1, t2):
      if not _is_valid_dtype(t1):
          raise ValueError(f"{t1} is not a valid dtype")
      if not _is_valid_dtype(t2):
          raise ValueError(f"{t2} is not a valid dtype")
      if result := _promotion_table.get((t1, t2), None):
          return result
      else:
          raise ValueError("No promotion path for {t1} & {t2}")
  
file_path: jax/jax/experimental/array_api/_data_type_functions.py
imports: import functools
  from typing import NamedTuple
  import jax
  import jax.numpy
  from jax.experimental.array_api._dtypes import bool, int8, int16, int32, int64, uint8, uint16, uint32, uint64, float32, float64, complex64, complex128
label_desc: Use image node_id 2 for calling a global function with example usage: _promote_types(t1, t2) and returns: result