import logging
logger = logging.getLogger(__name__)
def read_config_value(path, default):
try:
with open(path) as f:
return f.read().strip()
except Exception:
pass
return default
def load_settings(paths_and_defaults):
results = []
for path, default in paths_and_defaults:
results.append(read_config_value(path, default))
return results
[
{
"args": [
[
[
"/no/such/path/act-sample-a.cfg",
"fallback_a"
]
]
],
"expected_output": [
"fallback_a"
],
"expect_log_call": true
},
{
"args": [
[
[
"/no/such/path/act-sample-b.cfg",
42
],
[
"/no/such/path/act-sample-c.cfg",
7
]
]
],
"expected_output": [
42,
7
],
"expect_log_call": true
},
{
"args": [
[]
],
"expected_output": []
},
{
"args": [
[
[
"/no/such/path/act-sample-d.cfg",
null
]
]
],
"expected_output": [
null
],
"expect_log_call": true
}
]In a settings-file loader that silently swallows read failures, replace the bare except Exception: pass with a real logging call while still falling back to the caller-supplied default.
import logging
logger = logging.getLogger(__name__)
def read_config_value(path, default):
try:
with open(path) as f:
return f.read().strip()
except Exception:
logger.exception("failed to read config file %s", path)
return default
def load_settings(paths_and_defaults):
results = []
for path, default in paths_and_defaults:
results.append(read_config_value(path, default))
return results
transformation_typeexcept_pass_to_logging
{
"entry_point_original": "load_settings",
"entry_point_transformed": "load_settings",
"min_conversions": 1
}