A discussion on Slack prompted @erykoff to wonder why he could not use __file__
inside a pex_config
configuration file given that they are python files. I looked at the code and it turned out to be easy to add support for this and this morning I merged it.
The main use case is the case where you want to load a secondary config from the same directory. At the moment our config files look like this:
import os.path
from lsst.utils import getPackageDir
config.load(os.path.join(getPackageDir("obs_lsst"), "config", "latiss", "latiss.py"))
but now you can do something more explicitly requesting the latiss.py
from the same directory:
import os.path
config.load(os.path.join(os.path.dirname(__file__), "latiss.py"))
Before making any changes it’s important to understand that the two approaches are different. The first one allows you to reference another config location through a setup package and that location might be unrelated to where the original file is situated (which can happen if you have forgotten to setup a local package and then get confused when it picks up the second file from an installed stack location). The second option absolutely requires that you treat the collection of configs as a self-consistent unit that should move around together and that should be kept in sync together.