code: def assert_series_equal(
      left,
      right,
      check_dtype=True,
      check_index_type="equiv",
      check_series_type=True,
      check_less_precise=False,
      check_names=True,
      check_exact=False,
      check_datetimelike_compat=False,
      check_categorical=True,
      check_category_order=True,
      rtol=1e-5,
      atol=1e-8,
      obj="Series",
  ):
      """
      Check that left and right Series are equal
  
      This function is intended to compare two Series and output
      any differences. Additional parameters allow varying the strictness
      of the equality checks performed.
  
      Parameters
      ----------
      left : Series
          left Series to compare
      right : Series
          right Series to compare
      check_dtype : bool, default True
          Whether to check the Series dtype is identical.
      check_index_type : bool or {'equiv'}, default 'equiv'
          Whether to check the Index class, dtype and inferred_type
          are identical.
      check_series_type : bool, default True
          Whether to check the series class, dtype and
          inferred_type are identical. Currently it is idle,
          and similar to pandas.
      check_less_precise : bool or int, default False
          Not yet supported
      check_names : bool, default True
          Whether to check that the names attribute for both the index
          and column attributes of the Series is identical.
      check_exact : bool, default False
          Whether to compare number exactly.
      check_datetime_like_compat : bool, default False
          Compare datetime-like which is comparable ignoring dtype.
      check_categorical : bool, default True
          Whether to compare internal Categorical exactly.
      check_category_order : bool, default True
          Whether to compare category order of internal Categoricals
      rtol : float, default 1e-5
          Relative tolerance. Only used when `check_exact` is False.
      atol : float, default 1e-8
          Absolute tolerance. Only used when `check_exact` is False.
      obj : str, default 'Series'
          Specify object name being compared, internally used to
          show appropriate assertion message.
  
      Examples
      --------
      >>> import cudf
      >>> sr1 = cudf.Series([1, 2, 3, 4], name="a")
      >>> sr2 = cudf.Series([1, 2, 3, 5], name="b")
      >>> cudf.testing.assert_series_equal(sr1, sr2)
      ......
      ......
      AssertionError: ColumnBase are different
      <BLANKLINE>
      values are different (25.0 %)
      [left]:  [1 2 3 4]
      [right]: [1 2 3 5]
  
      >>> sr2 = cudf.Series([1, 2, 3, 4], name="b")
      >>> cudf.testing.assert_series_equal(sr1, sr2)
      ......
      ......
      AssertionError: Series are different
      <BLANKLINE>
      name mismatch
      [left]:  a
      [right]: b
  
      This will pass without any hitch:
  
      >>> sr2 = cudf.Series([1, 2, 3, 4], name="a")
      >>> cudf.testing.assert_series_equal(sr1, sr2)
      """
  
      # instance validation
      _check_isinstance(left, right, cudf.Series)
  
      if len(left) != len(right):
          msg1 = f"{len(left)}, {left.index}"
          msg2 = f"{len(right)}, {right.index}"
          raise_assert_detail(
              obj, "Series length are different", msg1, msg2
          )
  
      # index comparison
      assert_index_equal(
          left.index,
          right.index,
          exact=check_index_type,
          check_names=check_names,
          check_less_precise=check_less_precise,
          check_exact=check_exact,
          check_categorical=check_categorical,
          rtol=rtol,
          atol=atol,
          obj=f"{obj}.index",
      )
  
      assert_column_equal(
          left._column,
          right._column,
          check_dtype=check_dtype,
          check_column_type=check_series_type,
          check_less_precise=check_less_precise,
          check_exact=check_exact,
          check_datetimelike_compat=check_datetimelike_compat,
          check_categorical=check_categorical,
          check_category_order=check_category_order,
          rtol=rtol,
          atol=atol,
      )
  
      # metadata comparison
      if check_names and (left.name != right.name):
          raise_assert_detail(
              obj, "name mismatch", f"{left.name}", f"{right.name}"
          )
  
file_path: cudf/python/cudf/cudf/testing/testing.py
imports: from __future__ import annotations
  from typing import Union
  import cupy
  import numpy
  import pandas
  import cudf
  from cudf._lib.unary import is_nan
  from cudf.api.types import is_categorical_dtype, is_numeric_dtype, is_string_dtype
  from cudf.core.missing import NA, NaT
label_desc: Use image node_id 8 for calling a global function with example usage: assert_series_equal(left, right, check_dtype, check_index_type, check_series_type, check_less_precise, check_names, check_exact, check_datetimelike_compat, check_categorical, check_category_order, rtol, atol, obj) without return types