JDevlieghere added a comment.

In D89334#2341561 <https://reviews.llvm.org/D89334#2341561>, @labath wrote:

> In D89334#2339018 <https://reviews.llvm.org/D89334#2339018>, @JDevlieghere 
> wrote:
>
>> In D89334#2334881 <https://reviews.llvm.org/D89334#2334881>, @labath wrote:
>>
>>> In D89334#2332452 <https://reviews.llvm.org/D89334#2332452>, @JDevlieghere 
>>> wrote:
>>>
>>>> I don't think we can do that in the general case without breaking users 
>>>> (see below). I guess we could do it for imports not relative to the 
>>>> current working directory, as this has never worked before. It would then 
>>>> replace the logic described by the comment on line  2793.
>>>
>>> In general, we cannot impose any kind of natural structure on the path the 
>>> user gives us -- in an absolute path, the python root could be anywhere. 
>>> For cwd-relative imports, we could pretend that the cwd is the root, but 
>>> that seems somewhat unintuitive (and breaks users) (*). Even the usage of 
>>> the directory of the sourced file as root seems moderately unintuitive to 
>>> me, though I think it might be a good fit for the motivational use case for 
>>> this feature.
>>
>> The issue is that we "resolve" cwd-relative paths to absolute paths and 
>> treat the result as an absolute path and the "." is only in the system path 
>> to make relative imports from inside the module work. We could do the same 
>> for the "source root" but that would mean adding yet another path to the 
>> system path.
>
> I'm afraid you've lost me there. Yes, we turn relative paths into absolute 
> ones, but I don't see how that translates into adding less entries into 
> sys.path. For each module that we import, we add `dirname(module_path)` to 
> sys.path. If we import two modules from different directories, we will get 
> two sys.path entries, even if the modules were specified as paths relative to 
> the same directory. Canonicalizing the path to that directory will mean less 
> entries.

It doesn't, it translates to more: one for the `.` and one for 
`dirname(module_path)`. Which basically translates to `n+1` entries because the 
working doesn't change. I was saying we could do the exact same thing for 
modules relative to the source-dir, but that means `2n` entries because for 
every module we add `source_dir` and `dirname(module_path)` and both will 
generally be different. My point was that it would solve the issue of a 
relative import that you described last week but at the cost at adding twice as 
much entries, which means double the chance of an ambiguous (not ambitious ;-) 
import. I think that was your main objection to the patch as it is right now 
and I'm arguing that I think it's the best of the different trade-offs.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89334/new/

https://reviews.llvm.org/D89334

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to