Return a new path that is the equivalent of this one relative to the path
        *other*. Unlike :meth:`relative_to`, this will not throw an error if *self* is
        not a sub-path of *other*; instead, it will use ``..`` to build a relative
        path. This can result in invalid relative paths if *other* contains a
        directory symbolic link.

        If *self* is an absolute path, it is returned unmodified.

def make_relative (self, other):
        """Return a new path that is the equivalent of this one relative to the path
        *other*. Unlike :meth:`relative_to`, this will not throw an error if *self* is
        not a sub-path of *other*; instead, it will use ``..`` to build a relative
        path. This can result in invalid relative paths if *other* contains a
        directory symbolic link.

        If *self* is an absolute path, it is returned unmodified.

        """
        if self.is_absolute ():
            return self

        from os.path import relpath
        other = self.__class__ (other)
        return self.__class__ (relpath (text_type (self), text_type (other)))