nodes: 0, module; 1, function_definition; 2, function_name:_parse_dependencies; 3, parameters; 4, block; 5, identifier:string; 6, expression_statement; 7, expression_statement; 8, expression_statement; 9, expression_statement; 10, expression_statement; 11, expression_statement; 12, for_statement; 13, expression_statement; 14, return_statement; 15, comment:"""
      This function actually parses the dependencies are sorts them into
      the buildable and given dependencies
      """; 16, assignment; 17, assignment; 18, call; 19, assignment; 20, assignment; 21, identifier:dependency; 22, identifier:unsorted_dependencies; 23, block; 24, assignment; 25, expression_list; 26, identifier:contents; 27, call; 28, identifier:unsorted_dependencies; 29, call; 30, identifier:_check_parameters; 31, argument_list; 32, identifier:buildable_dependencies; 33, list; 34, identifier:given_dependencies; 35, list; 36, if_statement; 37, identifier:string; 38, subscript; 39, identifier:buildable_dependencies; 40, identifier:given_dependencies; 41, identifier:string; 42, identifier:_get_contents_between; 43, argument_list; 44, attribute; 45, argument_list; 46, identifier:unsorted_dependencies; 47, tuple; 48, comparison_operator:dependency[0] == '?'; 49, block; 50, else_clause; 51, identifier:string; 52, slice; 53, identifier:string; 54, string; 55, string; 56, identifier:contents; 57, identifier:split; 58, string; 59, string; 60, subscript; 61, string; 62, expression_statement; 63, block; 64, binary_operator:string.index(')') + 1; 65, string_content:(; 66, string_content:); 67, string_content:,; 68, string_content:?; 69, identifier:dependency; 70, integer:0; 71, string_content:?; 72, call; 73, expression_statement; 74, call; 75, integer:1; 76, attribute; 77, argument_list; 78, call; 79, attribute; 80, argument_list; 81, identifier:given_dependencies; 82, identifier:append; 83, subscript; 84, attribute; 85, argument_list; 86, identifier:string; 87, identifier:index; 88, string; 89, identifier:dependency; 90, slice; 91, identifier:buildable_dependencies; 92, identifier:append; 93, identifier:dependency; 94, string_content:); 95, integer:1
code: def _parse_dependencies(string):
      """
      This function actually parses the dependencies are sorts them into
      the buildable and given dependencies
      """
      contents = _get_contents_between(string, '(', ')')
      unsorted_dependencies = contents.split(',')
      _check_parameters(unsorted_dependencies, ('?',))
  
      buildable_dependencies = []
      given_dependencies = []
      for dependency in unsorted_dependencies:
          if dependency[0] == '?':
              given_dependencies.append(dependency[1:])
          else:
              buildable_dependencies.append(dependency)
  
      string = string[string.index(')') + 1:]
      return buildable_dependencies, given_dependencies, string