code: def __init__(
      self,
      workflow,
      name,
      snakefile=None,
      meta_wrapper=None,
      config=None,
      skip_validation=False,
      replace_prefix=None,
      prefix=None,
  ):
      self.workflow = workflow
      self.name = name
      self.snakefile = snakefile
      self.meta_wrapper = meta_wrapper
      self.config = config
      self.skip_validation = skip_validation
      self.parent_modifier = self.workflow.modifier
      self.rule_proxies = Rules()
  
      if prefix is not None:
          if isinstance(prefix, Path):
              prefix = str(prefix)
          if not isinstance(prefix, str):
              raise WorkflowError(
                  "Prefix definition in module statement must be string or Path."
              )
          if replace_prefix is not None:
              raise WorkflowError(
                  "Module definition contains both prefix and replace_prefix. "
                  "Only one at a time is allowed."
              )
  
      self.replace_prefix = replace_prefix
      self.prefix = prefix
  
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 1 to create a new ModuleInfo object  with example: obj = ModuleInfo(workflow, name, snakefile, meta_wrapper, config, skip_validation, replace_prefix, prefix)