def add_run(self, run_config: RunConfig) -> Union[Run, None]:
        """add a new run to the snowflake App (if not already exists)

        Args:
            run_config (RunConfig):  Run config
            input_df (Optional[pd.DataFrame]): optional input dataset

        Returns:
            Run: Run instance
        """

        self._check_snowflake_dao()

        try:
            run_metadata_df = self.snowflake_run_dao.create_new_run(
                object_name=self.snowflake_object_name,
                object_type=self.snowflake_object_type,
                object_version=self.snowflake_object_version,
                run_name=run_config.run_name,
                dataset_name=run_config.dataset_name,
                source_type=run_config.source_type,
                dataset_spec=validate_dataset_spec(run_config.dataset_spec),
                description=run_config.description,
                label=run_config.label,
                llm_judge_name=run_config.llm_judge_name,
            )

            return Run.from_metadata_df(
                run_metadata_df,
                {
                    "app": self,
                    "main_method_name": self.main_method_name,
                    "run_dao": self.snowflake_run_dao,
                    "tru_session": self.session,
                },
            )

        except Exception as e:
            if "already exists." in str(e):
                logger.debug(f"Run {run_config.run_name} already exists.")
                return self.get_run(run_config.run_name)
            else:
                logger.error(f"Failed to add run {run_config.run_name}. {e}")
                raise
add a new run to the snowflake App (if not already exists)

        Args:
            run_config (RunConfig):  Run config
            input_df (Optional[pd.DataFrame]): optional input dataset

        Returns:
            Run: Run instance
        
src/core/trulens/core/app.py