Second Stephan, although the newer Python pathlib (compared to os.path) is 
the one that makes it *really* easy to do portable path handling (despite 
its apparent complexity at first glance), its very impressive and could 
probably be provided in a very Julian way.  
Cheers
Lex

On Saturday, February 7, 2015 at 11:53:27 AM UTC+11, Stefan Karpinski wrote:
>
> Path operations have been largely been copied from Python, which seems to 
> really get this stuff right, so I'm reluctant to randomly start deviating 
> from that. At least with this design if you're familiar with how Python 
> does it – not everyone is, of course – then you know how things should work.
>
> On Friday, February 6, 2015, <[email protected] <javascript:>> wrote:
>
>>
>>
>> On Saturday, February 7, 2015 at 3:25:09 AM UTC+11, Jameson wrote:
>>>
>>> Calling joinpath on various path segments before creating a final path 
>>> should be valid (to preserve associativity), which means that embedded 
>>> separators is a quite valid operation. 
>>>
>>
>> And paths are things that can be read from files/users where they will 
>> have drive letters and separators.
>>  
>>
>>> On Fri, Feb 6, 2015 at 11:16 AM Seth <[email protected]> wrote:
>>>
>>>> The thing about joinpath is that it's typically used for cross-platform 
>>>> compatibility. That is, there should be NO slashes that can be interpreted 
>>>> as directory separators in any component*, since some systems use a 
>>>> forward 
>>>> slash, some a backward slash, and some use other characters like colons to 
>>>> separate directories, Since you're (presumably) using joinpath to ensure 
>>>> that your code works regardless of the system-specific directory 
>>>> delimiter, 
>>>> you don't want to put any delimiters in there to begin with.
>>>>
>>>> Calling joinpath with anything other than valid FILENAME characters 
>>>> ought to raise a warning or an exception.
>>>>
>>>> * This is problematic when you need to get a path relative to some 
>>>> root, but we'll leave that as an edge case for now - it can be worked 
>>>> around via environment variables.
>>>>
>>>>
>>>> On Thursday, February 5, 2015 at 7:12:01 PM UTC-8, [email protected] 
>>>> wrote:
>>>>>
>>>>> This capability would have to be provided somewhere, since its 
>>>>> absolutely essential to portably handle many path manipulation use-cases 
>>>>> (eg provide an absolute path or a relative path that is relative to some 
>>>>> base path).  IMO joinpath() is as good a place as any to have the 
>>>>> functionality.
>>>>>
>>>>> On Friday, February 6, 2015 at 7:45:44 AM UTC+11, Milan Bouchet-Valat 
>>>>> wrote:
>>>>>>
>>>>>> Le jeudi 05 février 2015 à 14:09 -0500, Stefan Karpinski a écrit : 
>>>>>> > I don't see how it's magical. The function joinpath(path1,path2) 
>>>>>> gives 
>>>>>> > the path of path2 relative to path1 – that's what it means. When 
>>>>>> path2 
>>>>>> > is absolute, path1 doesn't matter to answer that question. 
>>>>>> Yeah, but one could also imagine raising an exception instead, as the 
>>>>>> programmer may not have expected path2 to be absolute. It's not 
>>>>>> magical, 
>>>>>> but maybe a little too smart for my taste for a function called 
>>>>>> "joinpath". YMMV of course. 
>>>>>>
>>>>>>
>>>>>> Regards 
>>>>>>
>>>>>> > On Thu, Feb 5, 2015 at 2:06 PM, Milan Bouchet-Valat 
>>>>>> > <[email protected]> wrote: 
>>>>>> >         Le jeudi 05 février 2015 à 13:55 -0500, Stefan Karpinski a 
>>>>>> >         écrit : 
>>>>>> >         > When you open the file referred to by path2, that is 
>>>>>> >         essentially 
>>>>>> >         > looking at joinpath(pwd(), path2) and this is just a 
>>>>>> >         generalization of 
>>>>>> >         > that that behavior relative to path1 instead of pwd() 
>>>>>> >         specifically. 
>>>>>> >         > This is also how Python does it, although there seems to 
>>>>>> be 
>>>>>> >         some 
>>>>>> >         > confusion due to that as well. 
>>>>>> >         Indeed. Isn't this behavior a bit too magical for the 
>>>>>> Julian 
>>>>>> >         philosophy? 
>>>>>> >         Is convenience worth the increased confusion here? Maybe 
>>>>>> this 
>>>>>> >         behavior 
>>>>>> >         should only be enabled via a keyword argument? 
>>>>>> >         
>>>>>> >         
>>>>>> >         Regards 
>>>>>> >         
>>>>>> >         > On Thu, Feb 5, 2015 at 12:36 PM, Davide Lasagna 
>>>>>> >         > <[email protected]> wrote: 
>>>>>> >         >         I know this is documented by what is the 
>>>>>> rationale 
>>>>>> >         for 
>>>>>> >         >         joinpath(path1, path2) to return path2 if path2 
>>>>>> >         looks like an 
>>>>>> >         >         absolute path? 
>>>>>> >         > 
>>>>>> >         >         Cheers, 
>>>>>> >         > 
>>>>>> >         >         Davide 
>>>>>> >         > 
>>>>>> >         > 
>>>>>> >         > 
>>>>>> >         > 
>>>>>> >         
>>>>>> >         
>>>>>> > 
>>>>>> > 
>>>>>>
>>>>>> 

Reply via email to