docs: def getattr(self, tid, fh=None):
  
          """
          File attributes.
  
          Parameters
          ----------
          tid : str
              Path to file. Original `path` argument is converted to tuple identifier by ``_pathdec`` decorator.
          fh : int
              File descriptor. Unnecessary, therefore ignored.
  
          Returns
          -------
          st : dict
              Dictionary that contains file attributes. See: ``man 2 stat``.
          """
  
          if not self.__exists(tid):
              raise FuseOSError(errno.ENOENT)
  
          pt = self.PathType.get(tid)
  
          st = deepcopy(self.st)
          st['st_atime'] = int(time())
          st['st_mtime'] = st['st_atime']
          st['st_ctime'] = st['st_atime']
  
          if pt is self.PathType.file:
              st['st_mode'] = stat.S_IFREG | 0o444
              st['st_nlink'] = 1
  
              st['st_size'] = self.searches[ tid[0] ][ tid[1] ].filesize
  
              st['st_ctime'] = self.searches[ tid[0] ][ tid[1] ].ctime
              st['st_mtime'] = st['st_ctime']
              st['st_atime'] = self.searches[ tid[0] ][ tid[1] ].atime
  
          elif pt is self.PathType.ctrl:
  
              st['st_mode'] = stat.S_IFREG | 0o774
              st['st_nlink'] = 1
              st['st_size'] = len(self.__sh_script)
  
          elif pt is self.PathType.main:
              st['st_mode'] = stat.S_IFDIR | 0o774
  
          st['st_blocks'] = math.ceil(st['st_size'] / st['st_blksize'])
  
          return st