class_docstr: An OptsSpec is a string specification that describes an
  OptionTree. It is a list of tree path specifications (using dotted
  syntax) separated by keyword lists for any of the style, plotting
  or normalization options. These keyword lists are denoted
  'plot(..)', 'style(...)' and 'norm(...)'  respectively.  These
  three groups may be specified even more concisely using keyword
  lists delimited by square brackets, parentheses and braces
  respectively.  All these sets are optional and may be supplied in
  any order.
  
  For instance, the following string:
  
  Image (interpolation=None) plot(show_title=False) Curve style(color='r')
  
  Would specify an OptionTree where Image has "interpolation=None"
  for style and 'show_title=False' for plot options. The Curve has a
  style set such that color='r'.
  
  The parser is fairly forgiving; commas between keywords are
  optional and additional spaces are often allowed. The only
  restriction is that keywords *must* be immediately followed by the
  '=' sign (no space).
docstr: Given a parsed options specification as a list of groups, combine
  groups without options with the first subsequent group which has
  options.
  A line of the form
      'A B C [opts] D E [opts_2]'
  results in
      [({A, B, C}, [opts]), ({D, E}, [opts_2])]
docstr_tok: ["Given","a","parsed","options","specification","as","a","list","of","groups",",","combine","groups","without","options","with","the","first","subsequent","group","which","has","options",".","A","line","of","the","form","'","A","B","C","[","opts","]","D","E","[","opts_2","]","'","results","in","[","(","{","A",",","B",",","C","}",",","[","opts","]",")",",","(","{","D",",","E","}",",","[","opts_2","]",")","]"]
code: def _group_paths_without_options(cls, line_parse_result):
      """
      Given a parsed options specification as a list of groups, combine
      groups without options with the first subsequent group which has
      options.
      A line of the form
          'A B C [opts] D E [opts_2]'
      results in
          [({A, B, C}, [opts]), ({D, E}, [opts_2])]
      """
      active_pathspecs = set()
      for group in line_parse_result:
          active_pathspecs.add(group["pathspec"])
  
          has_options = (
              "norm_options" in group
              or "plot_options" in group
              or "style_options" in group
          )
          if has_options:
              yield active_pathspecs, group
              active_pathspecs = set()
  
      if active_pathspecs:
          yield active_pathspecs, {}
  
imports: from itertools import groupby
  import numpy
  import param
  import pyparsing
  from ..core.options import Cycle, Options, Palette
  from ..core.util import merge_option_dicts
  from ..operation import Compositor
  from .transform import dim
label_desc: Use image node_id 2 for calling the OptsSpec obj's underlying member method code with example usage: obj._group_paths_without_options(cls, line_parse_result) without return types