code: def use_rules(
      self,
      rules=None,
      name_modifier=None,
      exclude_rules=None,
      ruleinfo=None,
      skip_global_report_caption=False,
  ):
      snakefile = self.get_snakefile()
      modifier = WorkflowModifier(
          self.workflow,
          config=self.config,
          base_snakefile=snakefile,
          skip_configfile=self.config is not None,
          skip_validation=self.skip_validation,
          skip_global_report_caption=skip_global_report_caption,
          rule_exclude_list=exclude_rules,
          rule_whitelist=self.get_rule_whitelist(rules),
          resolved_rulename_modifier=get_name_modifier_func(
              rules, name_modifier, parent_modifier=self.parent_modifier
          ),
          local_rulename_modifier=get_name_modifier_func(
              rules, name_modifier
          ),
          ruleinfo_overwrite=ruleinfo,
          allow_rule_overwrite=True,
          namespace=self.name,
          replace_prefix=self.replace_prefix,
          prefix=self.prefix,
          replace_wrapper_tag=self.get_wrapper_tag(),
          rule_proxies=self.rule_proxies,
      )
      with modifier:
          self.workflow.include(
              snakefile, overwrite_default_target=True
          )
          self.parent_modifier.inherit_rule_proxies(modifier)
  
imports: from pathlib import Path
  import types
  import re
  from snakemake.common import Rules
  from snakemake.exceptions import WorkflowError
  from snakemake.path_modifier import PathModifier
  from snakemake import wrapper
label_desc: Use image node_id 2 for calling the ModuleInfo obj's underlying member method code with example usage: obj.use_rules(rules, name_modifier, exclude_rules, ruleinfo, skip_global_report_caption) without return types