Was unaware of pathlib – will have to take a look. On Friday, February 6, 2015, <[email protected]> wrote:
> 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]> 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 >>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>>> > > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> >>>>>>>
