parameters: (obj)
return_statement: return obj
docstring: Cast non-pandas objects to pandas types to unify behavior of arithmetic
      and comparison operations.
  
      Parameters
      ----------
      obj: object
  
      Returns
      -------
      out : object
  
      Notes
      -----
      Be careful to call this *after* determining the `name` attribute to be
      attached to the result of the arithmetic operation.
docstring_summary: Cast non-pandas objects to pandas types to unify behavior of arithmetic
      and comparison operations.
docstring_tokens: Cast non - pandas objects to pandas types to unify behavior of arithmetic and comparison operations .
function: def maybe_upcast_for_op(obj):
      """
      Cast non-pandas objects to pandas types to unify behavior of arithmetic
      and comparison operations.
  
      Parameters
      ----------
      obj: object
  
      Returns
      -------
      out : object
  
      Notes
      -----
      Be careful to call this *after* determining the `name` attribute to be
      attached to the result of the arithmetic operation.
      """
      if type(obj) is datetime.timedelta:
          # GH#22390  cast up to Timedelta to rely on Timedelta
          # implementation; otherwise operation against numeric-dtype
          # raises TypeError
          return pd.Timedelta(obj)
      elif isinstance(obj, np.timedelta64) and not isna(obj):
          # In particular non-nanosecond timedelta64 needs to be cast to
          #  nanoseconds, or else we get undesired behavior like
          #  np.timedelta64(3, 'D') / 2 == np.timedelta64(1, 'D')
          # The isna check is to avoid casting timedelta64("NaT"), which would
          #  return NaT and incorrectly be treated as a datetime-NaT.
          return pd.Timedelta(obj)
      elif isinstance(obj, np.ndarray) and is_timedelta64_dtype(obj):
          # GH#22390 Unfortunately we need to special-case right-hand
          # timedelta64 dtypes because numpy casts integer dtypes to
          # timedelta64 when operating with timedelta64
          return pd.TimedeltaIndex(obj)
      return obj
function_tokens: def maybe_upcast_for_op ( obj ) : if type ( obj ) is datetime . timedelta : # GH#22390  cast up to Timedelta to rely on Timedelta # implementation; otherwise operation against numeric-dtype # raises TypeError return pd . Timedelta ( obj ) elif isinstance ( obj , np . timedelta64 ) and not isna ( obj ) : # In particular non-nanosecond timedelta64 needs to be cast to #  nanoseconds, or else we get undesired behavior like #  np.timedelta64(3, 'D') / 2 == np.timedelta64(1, 'D') # The isna check is to avoid casting timedelta64("NaT"), which would #  return NaT and incorrectly be treated as a datetime-NaT. return pd . Timedelta ( obj ) elif isinstance ( obj , np . ndarray ) and is_timedelta64_dtype ( obj ) : # GH#22390 Unfortunately we need to special-case right-hand # timedelta64 dtypes because numpy casts integer dtypes to # timedelta64 when operating with timedelta64 return pd . TimedeltaIndex ( obj ) return obj