# pylint: disable=fixme# FIXME: consider consolidating this logic upstream in towncrier
[docs]def_find_config_file(base:Path)->Path:"""Find the best config file."""candidate_names='towncrier.toml','pyproject.toml'candidates=list(map(base.joinpath,candidate_names))extant=filter(Path.is_file,candidates)returnnext(extant,candidates[-1])
# pylint: disable=fixme# FIXME: refactor `lookup_towncrier_fragments` to drop noqas
[docs]@lru_cache(maxsize=1,typed=True)# noqa: WPS210deflookup_towncrier_fragments(# noqa: WPS210working_dir:Optional[str]=None,config_path:Optional[str]=None,)->Set[Path]:"""Emit RST-formatted Towncrier changelog fragment paths."""project_path=Path.cwd()ifworking_dirisNoneelsePath(working_dir)final_config_path=(_resolve_spec_config(project_path,config_path)or_find_config_file(project_path))try:towncrier_config=get_towncrier_config(project_path,final_config_path,)exceptLookupErrorasconfig_lookup_err:logger.warning(str(config_lookup_err))returnset()try:fragment_filenames=find_towncrier_fragments(str(project_path),towncrier_config,)exceptLookupErroraschange_notes_lookup_err:logger.warning(str(change_notes_lookup_err))returnset()returnset(map(Path,fragment_filenames))