code: def _expand_typestr(type_str):
      """
      Attempts to interpret the possible types in `type_str`
      """
      # Check if alternative types are specified with 'or'
      if re.search(r"\bor\b", type_str):
          for t in type_str.split("or"):
              yield t.split("of")[0].strip()
      # Check if like "list of `type`" and set type to list
      elif re.search(r"\bof\b", type_str):
          yield type_str.split("of")[0]
      # Check if type has is a set of valid literal values eg: {'C', 'F', 'A'}
      elif type_str.startswith("{"):
          node = parse(type_str, version="3.6").children[0]
          if node.type == "atom":
              for leaf in node.children[1].children:
                  if leaf.type == "number":
                      if "." in leaf.value:
                          yield "float"
                      else:
                          yield "int"
                  elif leaf.type == "string":
                      if "b" in leaf.string_prefix.lower():
                          yield "bytes"
                      else:
                          yield "str"
                  # Ignore everything else.
  
      # Otherwise just work with what we have.
      else:
          yield type_str
  
file_path: catboost/contrib/python/jedi/py3/jedi/evaluate/docstrings.py
imports: import re
  from textwrap import dedent
  from parso import parse, ParserSyntaxError
  from jedi._compatibility import u
  from jedi.evaluate.utils import indent_block
  from jedi.evaluate.cache import evaluator_method_cache
  from jedi.evaluate.base_context import iterator_to_context_set, ContextSet, NO_CONTEXTS
  from jedi.evaluate.lazy_context import LazyKnownContexts
label_desc: Use image node_id 4 for calling a global function with example usage: _expand_typestr(type_str) without return types