Drop importlib_metadata entirely

The fallback option using the dirname of the config module location
seems to be more robust in a number of cases.

Signed-off-by: Felix Kaechele <felix@kaechele.ca>
This commit is contained in:
Felix Kaechele 2023-06-02 21:35:33 -04:00
parent ce6daff12f
commit 15cabb93ca
2 changed files with 1 additions and 34 deletions

View File

@ -3,11 +3,6 @@ import os
import jsonschema import jsonschema
import ruamel.yaml import ruamel.yaml
try:
import importlib_metadata
except ModuleNotFoundError: # pragma: nocover
import importlib.metadata as importlib_metadata
import borgmatic.config import borgmatic.config
from borgmatic.config import environment, load, normalize, override from borgmatic.config import environment, load, normalize, override
@ -17,17 +12,6 @@ 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.
''' '''
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') return os.path.join(os.path.dirname(borgmatic.config.__file__), 'schema.yaml')

View File

@ -5,24 +5,7 @@ from borgmatic.config import validate as module
def test_schema_filename_finds_schema_path(): def test_schema_filename_finds_schema_path():
schema_path = '/var/borgmatic/config/schema.yaml' module.schema_filename().endswith('/borgmatic/config/schema.yaml')
flexmock(module.importlib_metadata).should_receive('files').and_return(
flexmock(match=lambda path: False, locate=lambda: None),
flexmock(match=lambda path: True, locate=lambda: schema_path),
flexmock(match=lambda path: False, locate=lambda: None),
)
assert module.schema_filename() == schema_path
def test_schema_filename_with_missing_schema_path_in_package_still_finds_it_in_config_directory():
flexmock(module.importlib_metadata).should_receive('files').and_return(
flexmock(match=lambda path: False, locate=lambda: None),
flexmock(match=lambda path: False, locate=lambda: None),
)
assert module.schema_filename().endswith('/borgmatic/config/schema.yaml')
def test_format_json_error_path_element_formats_array_index(): def test_format_json_error_path_element_formats_array_index():