Zbyszek Jędrzejewski-Szmek <[email protected]> added the comment:
> I can see the need for generalized 'drive' support that sets an arbitrary
> path prefix as the 'drive'. For example, if "/var/tmp/instroot" is a 'drive',
> then joining it to "/some/path" returns "/var/tmp/instroot/some/path".
> However, subsequently joining that result to "/suffix" would return
> "/var/tmp/instroot/suffix".
I think that the "drive concept" only makes sense on Windows. With POSIX paths,
the expectation is that you can concatenate paths recursively, and consistency
is much more useful than the drive concept.
One special case where you might concat multiple levels of paths is when the
paths are generated through some configuration mechanism, and an occasional
absolute path might sneak in, but we still want to use the same "relative"
concatenation.
For example:
def path_to_some_binary_in_container(container, usr_merge_was_done=True):
"""Construct a path with support for systems with /usr/bin and legacy systems
with /bin (https://fedoraproject.org/wiki/Features/UsrMove).
"""
path_to_containers = '/var/lib/machines'
prefix = 'usr/' if usr_merge_was_done else '/'
suffix = 'bin/some-binary'
return path_to_containers / container / prefix / suffix
path_to_some_binary('cont1') returns
PosixPath('/var/lib/machines/cont1/usr/bin/some-binary'), but
path_to_some_binary('cont1', False) returns PosixPath('/bin/some-binary'). The
"bug" is that '/' was used instead of ''. This is exactly the
pitfall that I want to avoid:
return path_to_containers // container // prefix // suffix
will do the expected thing.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue44452>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com