When the imported file calling config is for example on the D: drive, the recurrent function that searches its parent folders will eventually reach D:/. Unfortunately, the check that's meant to stop the recursion considers the drive of the working directory (say, C:/) to be the top folder in some circumstances. The offending lines are these:
|
# search the parent |
|
parent = os.path.dirname(path) |
|
if parent and os.path.normcase(parent) != os.path.normcase(os.path.abspath(os.sep)): |
|
return self._find_file(parent) |
This results in a silent crash of whatever code is running, but only when the working directory is on a drive different than the drive where the file using config is, I think? It also only happens in IPython, which may be handling working directories differently. This made it quite amusing to diagnose (I was using a different library that imports decouple), and I presume it may make it difficult to reproduce easily.
I suggest replacing the check with:
os.path.normcase(parent) != os.path.normcase(path)
which will catch if the parent is the same as the current path more explicitly.
When the imported file calling
configis for example on the D: drive, the recurrent function that searches its parent folders will eventually reach D:/. Unfortunately, the check that's meant to stop the recursion considers the drive of the working directory (say, C:/) to be the top folder in some circumstances. The offending lines are these:python-decouple/decouple.py
Lines 220 to 223 in 0573e6f
This results in a silent crash of whatever code is running, but only when the working directory is on a drive different than the drive where the file using
configis, I think? It also only happens in IPython, which may be handling working directories differently. This made it quite amusing to diagnose (I was using a different library that importsdecouple), and I presume it may make it difficult to reproduce easily.I suggest replacing the check with:
which will catch if the parent is the same as the current path more explicitly.