docs: def stat(self, path=None, client_kwargs=None, header=None):
          """
          Get the status of an object.
  
          Args:
              path (str): File path or URL.
              client_kwargs (dict): Client arguments.
              header (dict): Object header.
  
          Returns:
              os.stat_result: Stat result object
          """
          # Should contain at least the strict minimum of os.stat_result
          stat = OrderedDict((
              ("st_mode", 0), ("st_ino", 0), ("st_dev", 0), ("st_nlink", 0),
              ("st_uid", 0), ("st_gid", 0), ("st_size", 0), ("st_atime", 0),
              ("st_mtime", 0), ("st_ctime", 0)))
  
          # Populate standard os.stat_result values with object header content
          header = self.head(path, client_kwargs, header)
          for key, method in (
                  ('st_size', self._getsize_from_header),
                  ('st_ctime', self._getctime_from_header),
                  ('st_mtime', self._getmtime_from_header),):
              try:
                  stat[key] = int(method(header))
              except UnsupportedOperation:
                  continue
  
          # File mode
          if self.islink(path=path, header=header):
              # Symlink
              stat['st_mode'] = S_IFLNK
          elif ((not path or path[-1] == '/' or self.is_locator(path)) and not
                  stat['st_size']):
              # Directory
              stat['st_mode'] = S_IFDIR
          else:
              # File
              stat['st_mode'] = S_IFREG
  
          # Add storage specific keys
          sub = self._CHAR_FILTER.sub
          for key, value in tuple(header.items()):
              stat['st_' + sub('', key.lower())] = value
  
          # Convert to "os.stat_result" like object
          stat_result = namedtuple('stat_result', tuple(stat))
          stat_result.__name__ = 'os.stat_result'
          stat_result.__module__ = 'pycosio'
          return stat_result(**stat)