code: def _get_actual_reset_type(self, reset_type):
          
          
          # Default to reset_type session option if reset_type parameter is None. If the session
          # option isn't set, then use the core's default reset type.
          if reset_type is None:
              if 'reset_type' not in self.session.options:
                  reset_type = self.default_reset_type
              else:
                  try:
                      # Convert session option value to enum.
                      resetOption = self.session.options['reset_type']
                      reset_type = cmdline.convert_reset_type(resetOption)
                      
                      # The converted option will be None if the option value is 'default'.
                      if reset_type is None:
                          reset_type = self.default_reset_type
                  except ValueError:
                      reset_type = self.default_reset_type
          else:
              assert isinstance(reset_type, Target.ResetType)
          
          # If the reset type is just SW, then use our default software reset type.
          if reset_type is Target.ResetType.SW:
              reset_type = self.default_software_reset_type
          
          # Fall back to emulated sw reset if the vectreset is specified and the core doesn't support it.
          if (reset_type is Target.ResetType.SW_VECTRESET) and (not self._supports_vectreset):
              reset_type = Target.ResetType.SW_EMULATED
          
          return reset_type
docs: ! @brief Determine the reset type to use given defaults and passed in type.