hscommon.path

class hscommon.path.Path

A handy class to work with paths.

We subclass tuple, each element of the tuple represents an element of the path.

  • Path('/foo/bar/baz')[1] –> 'bar'
  • Path('/foo/bar/baz')[1:2] –> Path('bar/baz')
  • Path('/foo/bar')['baz'] –> Path('/foo/bar/baz')
  • str(Path('/foo/bar/baz')) –> '/foo/bar/baz'
is_parent_of(other)

Whether other is a subpath of self.

Almost the same as other in self, but it’s a bit more self-explicative and when other == self, returns False.

parent()

Returns the parent path.

Path('/foo/bar/baz').parent() –> Path('/foo/bar')

name

Last element of the path (filename), with extension.

Path('/foo/bar/baz').name –> 'baz'

hscommon.path.log_io_error(func)

Catches OSError, IOError and WindowsError and log them

hscommon.path.pathify(f)

Ensure that every annotated Path arguments are actually paths.

When a function is decorated with @pathify, every argument with annotated as Path will be converted to a Path if it wasn’t already. Example:

@pathify
def foo(path: Path, otherarg):
    return path.listdir()

Calling foo('/bar', 0) will convert '/bar' to Path('/bar').