# dupeGuru 4.0.4 documentation

## 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')`.