Explorar el Código

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 <felix@kaechele.ca>
Felix Kaechele hace 2 años
padre
commit
ce6daff12f
Se han modificado 1 ficheros con 12 adiciones y 12 borrados
  1. 12 12
      borgmatic/config/validate.py

+ 12 - 12
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):