-
-
Notifications
You must be signed in to change notification settings - Fork 202
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Application.load_config_file loads all files with same basename as given file #850
Comments
Example without the errors, just showing that two files are loaded: from pathlib import Path
from traitlets import Integer
from traitlets.config import Application
from tempfile import TemporaryDirectory
class Foo(Application):
bar = Integer(0).tag(config=True)
def start(self):
print(self.bar)
if __name__ == "__main__":
with TemporaryDirectory() as tmpdir:
tmpdir = Path(tmpdir)
json_path = tmpdir / "foo.json"
py_path = tmpdir / "foo.py"
# valid python, invalid
py_path.write_text("c.Foo.bar = 10")
json_path.write_text('{"Foo": {"bar": 11}}')
app = Foo()
app.load_config_file(py_path)
print(app.loaded_config_files)
app.start() |
The file extension returned by splittext is completely unused here traitlets/traitlets/config/application.py Lines 946 to 956 in c2d04ba
Maybe add a keyword argument to the function if ignore_ext:
new_config.merge(config)
elif fname == filename:
new_config.merge(config) |
@StFroese that would still load the config though. Better just not remove the extension in that case. |
Even if
load_config_file
is given an absolute path to a config file, it will load all files that have the same basename that are in that directory.This is highly surprising and potentially a security issue.
Example:
The text was updated successfully, but these errors were encountered: