code: def parse(name):
          
          match = NodeNamingPolicy._NODE_NAME_RE.match(name)
          if match:
              return match.groupdict()
          else:
              raise ValueError(
                  "Cannot parse node name `{name}`"
                      .format(name=name))
docs: Return dict of parts forming `name`.  Raise `ValueError` if string
          `name` cannot be correctly parsed.
  
          The default implementation uses
          `NodeNamingPolicy._NODE_NAME_RE` to parse the name back into
          constituent parts.
  
          This is ideally the inverse of :meth:`format` -- it should be
          able to parse a node name string into the parameter values
          that were used to form it.