docstr: Lists modules in the directory of this module (if this module is a
  package).
docstr_tok: ["Lists","modules","in","the","directory","of","this","module","(","if","this","module","is","a","package",")","."]
code: def _sub_modules_dict(self):
      """
      Lists modules in the directory of this module (if this module is a
      package).
      """
      names = {}
      try:
          method = self.py__path__
      except AttributeError:
          pass
      else:
          for path in method():
              mods = iter_modules([path])
              for module_loader, name, is_pkg in mods:
                  # It's obviously a relative import to the current module.
                  names[name] = SubModuleName(self, name)
  
      # TODO add something like this in the future, its cleaner than the
      #   import hacks.
      # ``os.path`` is a hardcoded exception, because it's a
      # ``sys.modules`` modification.
      # if str(self.name) == 'os':
      #     names.append(Name('path', parent_context=self))
  
      return names
  
imports: import re
  import os
  from parso import python_bytes_to_unicode
  from jedi.evaluate.cache import evaluator_method_cache
  from jedi._compatibility import iter_modules, all_suffixes
  from jedi.evaluate.filters import GlobalNameFilter, ContextNameMixin, AbstractNameDefinition, ParserTreeFilter, DictFilter, MergedFilter
  from jedi.evaluate import compiled
  from jedi.evaluate.base_context import TreeContext
  from jedi.evaluate.imports import SubModuleName, infer_import
label_desc: Use image node_id 13 for calling the ModuleContext obj's underlying member method code with example usage: obj._sub_modules_dict() and returns: names