code: def _read(
      obj: FilePath | BaseBuffer, encoding: str | None
  ) -> str | bytes:
      """
      Try to read from a url, file or string.
  
      Parameters
      ----------
      obj : str, unicode, path object, or file-like object
  
      Returns
      -------
      raw_text : str
      """
      text: str | bytes
      if (
          is_url(obj)
          or hasattr(obj, "read")
          or (isinstance(obj, str) and file_exists(obj))
      ):
          with get_handle(obj, "r", encoding=encoding) as handles:
              text = handles.handle.read()
      elif isinstance(obj, (str, bytes)):
          text = obj
      else:
          raise TypeError(
              f"Cannot read object of type '{type(obj).__name__}'"
          )
      return text
  
imports: from __future__ import annotations
  from collections import abc
  import numbers
  import re
  from typing import TYPE_CHECKING, Iterable, Literal, Pattern, Sequence, cast
  from pandas._libs import lib
  from pandas._typing import BaseBuffer, DtypeBackend, FilePath, ReadBuffer
  from pandas.compat._optional import import_optional_dependency
  from pandas.errors import AbstractMethodError, EmptyDataError
  from pandas.util._validators import check_dtype_backend
  from pandas.core.dtypes.common import is_list_like
  from pandas import isna
  from pandas.core.indexes.base import Index
  from pandas.core.indexes.multi import MultiIndex
  from pandas.core.series import Series
  from pandas.io.common import file_exists, get_handle, is_url, stringify_path, urlopen, validate_header_arg
  from pandas.io.formats.printing import pprint_thing
  from pandas.io.parsers import TextParser
label_desc: Use image node_id 4 for calling a global function with example usage: _read(obj, encoding) and returns: text