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:
parent
caf654366c
commit
ce6daff12f
1 changed files with 12 additions and 12 deletions
|
@ -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')
|
||||||
|
|
Loading…
Reference in a new issue