docs: def consult(string_in):
      """
      provide file:consult/1 functionality with python types
      """
      # pylint: disable=eval-used
      # pylint: disable=too-many-branches
      # pylint: disable=too-many-statements
  
      # manually parse textual erlang data to avoid external dependencies
      list_out = []
      tuple_binary = False   # binaries become tuples of integers
      quoted_string = False  # strings become python string
      atom_string = False    # atoms become python string
      number = False
      whitespace = frozenset(('\n', '\t', ' '))
      i = 0
      while i < len(string_in):
          character = string_in[i]
          if character == ',':
              if atom_string:
                  list_out.append('"')
                  atom_string = False
              list_out.append(',')
              number = string_in[i + 1].isdigit()
          elif character == '{':
              list_out.append('(')
              number = string_in[i + 1].isdigit()
          elif character == '}':
              if atom_string:
                  list_out.append('"')
                  atom_string = False
              list_out.append(')')
              number = False
          elif character == '[':
              list_out.append('[')
              number = string_in[i + 1].isdigit()
          elif character == ']':
              if atom_string:
                  list_out.append('"')
                  atom_string = False
              list_out.append(']')
              number = False
          elif character == '<' and string_in[i + 1] == '<':
              list_out.append('(')
              tuple_binary = True
              i += 1
          elif character == '>' and string_in[i + 1] == '>':
              list_out.append(')')
              tuple_binary = False
              i += 1
          elif not quoted_string and not atom_string and character in whitespace:
              number = string_in[i + 1].isdigit()
          elif tuple_binary or number:
              list_out.append(character)
          elif character == '"':
              if quoted_string:
                  quoted_string = False
              else:
                  quoted_string = True
              list_out.append('"')
          elif character == "'":
              if atom_string:
                  atom_string = False
              else:
                  atom_string = True
              list_out.append('"')
          elif not quoted_string and not atom_string:
              atom_string = True
              list_out.append('"')
              list_out.append(character)
          else:
              list_out.append(character)
          i += 1
      return eval(''.join(list_out))