def METHOD_NAME(self) -> str:
    """Validate PackageConfig.
    Returns:
        String that the config is valid.
    Raises:
        PackitConfigException: when the config is not valid
    """
    schema_errors: Union[List[Any], Dict[Any, Any]] = None
    config = None
    try:
        config = PackageConfig.get_from_dict(
            self.content,
            config_file_path=str(self.config_file_path),
            search_specfile=get_local_specfile_path,
            dir=self.config_file_path.parent,
            repo_name=self.project_path.name,
        )
    except ValidationError as e:
        schema_errors = e.messages
    specfile_path = self.content.get("specfile_path", None)
    if specfile_path and not (self.project_path / specfile_path).is_file():
        logger.warning(
            f"The spec file you defined ({specfile_path}) is not "
            f"present in the repository. If it's being generated "
            f"dynamically, you can verify the functionality by "
            f"running `packit srpm` to create an SRPM "
            f"from the current checkout. If it's not being generated, "
            f"please make sure the path is correct and "
            f"the file is present."
        )
    synced_files_errors = []
    if config:
        for package_config in config.get_package_config_views().values():
            synced_files_errors = [
                f
                for f in iter_srcs(package_config.files_to_sync)
                if not (
                    (self.project_path / package_config.paths[0] / f).exists()
                    or any(self.project_path.glob(f))
                )
            ]  # right now we use just the first path in a monorepo package
    output = f"{self.config_file_path.name} does not pass validation:\n"
    if schema_errors:
        if isinstance(schema_errors, list):
            output += "\n".join(map(str, schema_errors))
        else:
            for field_name, errors in schema_errors.items():
                output += self.validate_get_field_output(errors, field_name)
    if synced_files_errors:
        output += (
            "The following {} configured to be synced but "
            "{} not present in the repository: {}\n"
        ).format(
            *(
                (
                    "paths are",
                    "are",
                )
                if (len(synced_files_errors) > 1)
                else ("path is", "is")
            ),
            ", ".join(synced_files_errors),
        )
    if schema_errors or synced_files_errors:
        raise PackitConfigException(output)
    else:
        return f"{self.config_file_path.name} is valid and ready to be used"