code: def du(
      self, path, total=True, maxdepth=None, withdirs=False, **kwargs
  ):
      if maxdepth is not None:
          raise NotImplementedError
  
      sizes = {}
      dus = {}
      todo = deque([self.info(path)])
      while todo:
          info = todo.popleft()
          isdir = info["type"] == "directory"
          size = info["size"] or 0
          name = info["name"]
  
          if not isdir:
              sizes[name] = size
              continue
  
          dvc_info = info.get("dvc_info") or {}
          fs_info = info.get("fs_info")
          entry = dvc_info.get("entry")
          if (
              dvc_info
              and not fs_info
              and entry is not None
              and entry.size is not None
          ):
              dus[name] = entry.size
              continue
  
          if withdirs:
              sizes[name] = size
  
          todo.extend(self.ls(info["name"], detail=True))
  
      if total:
          return sum(sizes.values()) + sum(dus.values())
  
      return sizes
  
imports: import errno
  import functools
  import ntpath
  import os
  import posixpath
  import threading
  from collections import deque
  from contextlib import ExitStack, suppress
  from typing import TYPE_CHECKING, Any, Callable, Dict, Optional, Tuple, Type, Union
  from fsspec.spec import AbstractFileSystem
  from funcy import wrap_with
  from dvc.log import logger
  from dvc_objects.fs.base import FileSystem
  from .data import DataFileSystem
label_desc: Use image node_id 29 for calling the _DVCFileSystem obj's underlying member method code with example usage: obj.du(path, total, maxdepth, withdirs) and returns: sizes, unknown