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>
This commit is contained in:
Felix Kaechele 2023-05-23 17:18:46 -04:00
parent caf654366c
commit ce6daff12f

View file

@ -16,16 +16,16 @@ def schema_filename():
''' '''
Path to the installed YAML configuration schema file, used to validate and parse the Path to the installed YAML configuration schema file, used to validate and parse the
configuration. configuration.
Raise FileNotFoundError when the schema path does not exist.
''' '''
files = importlib_metadata.files('borgmatic')
if files is not None:
try: try:
return next( return next(str(path.locate()) for path in files if path.match('config/schema.yaml'))
str(path.locate())
for path in importlib_metadata.files('borgmatic')
if path.match('config/schema.yaml')
)
except StopIteration: 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 # 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. # install, so try a different approach to get the schema.
return os.path.join(os.path.dirname(borgmatic.config.__file__), 'schema.yaml') return os.path.join(os.path.dirname(borgmatic.config.__file__), 'schema.yaml')