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 >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> >>>>>>
