code: def define_evc_config(config):
      """Create and define the fields of the evc configuration."""
      evc_config = Configuration()
  
      # TODO: This should be built automatically like get_branching_args_group
      #       After this, the cmdline parser should be built based on config.
  
      evc_config.add_option(
          "enable",
          option_type=bool,
          default=False,
          env_var="ORION_EVC_ENABLE",
          help="Enable the Experiment Version Control. Defaults to False.",
      )
  
      evc_config.add_option(
          "auto_resolution",
          option_type=bool,
          default=True,
          deprecate=dict(
              version="v0.3",
              alternative="evc.manual_resolution",
              name="evc.auto_resolution",
          ),
          help="This argument will be removed in v0.3. "
          "Conflicts are now resolved automatically by default. "
          "See --manual-resolution to avoid auto-resolution.",
      )
  
      evc_config.add_option(
          "manual_resolution",
          option_type=bool,
          default=False,
          env_var="ORION_EVC_MANUAL_RESOLUTION",
          help=(
              "If ``True``, enter experiment version control conflict resolver for "
              "manual resolution on branching events. Otherwise, auto-resolution is "
              "attempted."
          ),
      )
  
      evc_config.add_option(
          "non_monitored_arguments",
          option_type=list,
          default=[],
          env_var="ORION_EVC_NON_MONITORED_ARGUMENTS",
          help=(
              "Ignore these commandline arguments when looking for differences in "
              "user's commandline call. "
              "Environment variable and commandline only supports one argument. "
              "Use global config or local config to pass a list of arguments to ignore."
          ),
      )
  
      evc_config.add_option(
          "ignore_code_changes",
          option_type=bool,
          default=False,
          env_var="ORION_EVC_IGNORE_CODE_CHANGES",
          help=(
              "If ``True``, ignore code changes when looking for differences."
          ),
      )
  
      evc_config.add_option(
          "algorithm_change",
          option_type=bool,
          default=False,
          env_var="ORION_EVC_ALGO_CHANGE",
          help=(
              "Set algorithm change as resolved if a branching event occur. "
              "Child and parent experiment have access to all trials from each other "
              "when the only difference between them is the algorithm configuration."
          ),
      )
  
      evc_config.add_option(
          "code_change_type",
          option_type=str,
          default="break",
          env_var="ORION_EVC_CODE_CHANGE",
          help=(
              "One of ``break``, ``unsure`` or ``noeffect``. "
              "Defines how trials should be filtered in Experiment Version Control tree "
              "if there is a change in the user's code repository. "
              "If the effect of the change is ``unsure``, "
              "the child experiment will access the trials of the parent but not "
              "the other way around. "
              "This is to ensure parent experiment does not get corrupted with possibly "
              "incompatible results. "
              "The child cannot access the trials from parent if ``code_change_type`` "
              "is ``break``. The parent cannot access trials from child if "
              "``code_change_type`` is ``unsure`` or ``break``."
          ),
      )
  
      evc_config.add_option(
          "cli_change_type",
          option_type=str,
          default="break",
          env_var="ORION_EVC_CMDLINE_CHANGE",
          help=(
              "One of ``break``, ``unsure`` or ``noeffect``. "
              "Defines how trials should be filtered in Experiment Version Control tree "
              "if there is a change in the user's commandline call. "
              "If the effect of the change is ``unsure``, "
              "the child experiment will access the trials of the parent but not "
              "the other way around. "
              "This is to ensure parent experiment does not get corrupted with possibly "
              "incompatible results. "
              "The child cannot access the trials from parent if ``cli_change_type`` "
              "is ``break``. The parent cannot access trials from child if "
              "``cli_change_type`` is ``unsure`` or ``break``."
          ),
      )
  
      evc_config.add_option(
          "config_change_type",
          option_type=str,
          default="break",
          env_var="ORION_EVC_CONFIG_CHANGE",
          help=(
              "One of ``break``, ``unsure`` or ``noeffect``. "
              "Defines how trials should be filtered in Experiment Version Control tree "
              "if there is a change in the user's script. "
              "If the effect of the change is ``unsure``, "
              "the child experiment will access the trials of the parent but not "
              "the other way around. "
              "This is to ensure parent experiment does not get corrupted with possibly "
              "incompatible results. "
              "The child cannot access the trials from parent if ``config_change_type`` "
              "is ``break``. The parent cannot access trials from child if "
              "``config_change_type`` is ``unsure`` or ``break``."
          ),
      )
  
      evc_config.add_option(
          "orion_version_change",
          option_type=bool,
          default=False,
          env_var="ORION_EVC_ORION_VERSION_CHANGE",
          help=(
              "Set orion version change as resolved if branching event occurred"
              "Child and parent experiment have access to all trials from each other "
              "when the only difference between them is the orion version used during execution."
          ),
      )
  
      config.evc = evc_config
  
file_path: orion/src/orion/core/__init__.py
imports: import logging
  import os
  import socket
  from appdirs import AppDirs
  from orion.core.io.config import Configuration
  from ._version import get_versions
label_desc: Use image node_id 7 for calling a global function with example usage: define_evc_config(config) without return types