docstr: Update this ruleinfo with the given one (used for 'use rule' overrides).
docstr_tok: ["Update","this","ruleinfo","with","the","given","one","(","used","for","'use","rule","'","overrides",")","."]
code: def apply_modifier(
      self,
      modifier,
      prefix_replacables={"input", "output", "log", "benchmark"},
  ):
      """Update this ruleinfo with the given one (used for 'use rule' overrides)."""
      path_modifier = modifier.path_modifier
      skips = set()
  
      if modifier.ruleinfo_overwrite:
          for (
              key,
              value,
          ) in modifier.ruleinfo_overwrite.__dict__.items():
              if key != "func" and value is not None:
                  self.__dict__[key] = value
                  if key in prefix_replacables:
                      skips.add(key)
  
      if path_modifier.modifies_prefixes and skips:
          # use a specialized copy of the path modifier
          path_modifier = copy(path_modifier)
          path_modifier.skip_properties = skips
      # add path modifier
      self.path_modifier = path_modifier
  
      # modify wrapper if requested
      self.wrapper = modifier.modify_wrapper_uri(self.wrapper)
  
imports: from collections import namedtuple
  from copy import copy
label_desc: Use image node_id 3 for calling the RuleInfo obj's underlying member method code with example usage: obj.apply_modifier(modifier, prefix_replacables) without return types