From ce6daff12f624dfa44132115aa3b519f1e3ab748 Mon Sep 17 00:00:00 2001 From: Felix Kaechele Date: Tue, 23 May 2023 17:18:46 -0400 Subject: [PATCH] Fix importlib.metadata.files workaround Some distributions, such as Fedora, do not install the RECORDS file as part of a package's dist-info. As a result importlib.metadata.files will return None. Use the workaround for these cases as well. Signed-off-by: Felix Kaechele --- borgmatic/config/validate.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/borgmatic/config/validate.py b/borgmatic/config/validate.py index b39199fe..1c9b1050 100644 --- a/borgmatic/config/validate.py +++ b/borgmatic/config/validate.py @@ -16,19 +16,19 @@ def schema_filename(): ''' Path to the installed YAML configuration schema file, used to validate and parse the configuration. - - Raise FileNotFoundError when the schema path does not exist. ''' - try: - return next( - str(path.locate()) - for path in importlib_metadata.files('borgmatic') - if path.match('config/schema.yaml') - ) - except StopIteration: - # If the schema wasn't found in the package's files, this is probably a pip editable - # install, so try a different approach to get the schema. - return os.path.join(os.path.dirname(borgmatic.config.__file__), 'schema.yaml') + + files = importlib_metadata.files('borgmatic') + if files is not None: + try: + return next(str(path.locate()) for path in files if path.match('config/schema.yaml')) + except StopIteration: + # schema not found in package, fall through to the approach below + pass + + # If the schema wasn't found in the package's files, this is probably a pip editable + # install, so try a different approach to get the schema. + return os.path.join(os.path.dirname(borgmatic.config.__file__), 'schema.yaml') def format_json_error_path_element(path_element):