Support slash notation for BlendPath
This mimicks the slash notation of pathlib.Path
This commit is contained in:
parent
15cd74cda4
commit
6b9c0a3f95
@ -25,6 +25,19 @@ class BlendPath(bytes):
|
||||
"""
|
||||
return self.decode('utf8', errors='replace')
|
||||
|
||||
def __truediv__(self, subpath: bytes):
|
||||
"""Slash notation like pathlib.Path."""
|
||||
sub = BlendPath(subpath)
|
||||
if sub.is_absolute():
|
||||
raise ValueError("'a / b' only works when 'b' is a relative path")
|
||||
return BlendPath(os.path.join(self, sub))
|
||||
|
||||
def __rtruediv__(self, parentpath: bytes):
|
||||
"""Slash notation like pathlib.Path."""
|
||||
if self.is_absolute():
|
||||
raise ValueError("'a / b' only works when 'b' is a relative path")
|
||||
return BlendPath(os.path.join(parentpath, self))
|
||||
|
||||
def is_blendfile_relative(self) -> bool:
|
||||
return self[:2] == b'//'
|
||||
|
||||
|
||||
@ -42,3 +42,12 @@ class BlendPathTest(unittest.TestCase):
|
||||
BlendPath(b'../some/file.blend').absolute(b'/root/to'))
|
||||
self.assertEqual(b'/shared/some/file.blend',
|
||||
BlendPath(b'/shared/some/file.blend').absolute(b'/root/to'))
|
||||
|
||||
def test_slash(self):
|
||||
self.assertEqual(b'/root/and/parent.blend', BlendPath(b'/root/and') / b'parent.blend')
|
||||
with self.assertRaises(ValueError):
|
||||
BlendPath(b'/root/and') / b'/parent.blend'
|
||||
|
||||
self.assertEqual(b'/root/and/parent.blend', b'/root/and' / BlendPath(b'parent.blend'))
|
||||
with self.assertRaises(ValueError):
|
||||
b'/root/and' / BlendPath(b'/parent.blend')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user