def get_paths(self, connection, path):
virtual_path = pathlib.PurePosixPath(path)<EOL>if not virtual_path.is_absolute():<EOL><INDENT>virtual_path = connection.current_directory / virtual_path<EOL><DEDENT>resolved_virtual_path = pathlib.PurePosixPath("<STR_LIT:/>")<EOL>for part in virtual_path.parts[<NUM_LIT:1>:]:<EOL><INDENT>if part == "<STR_LIT:..>":<EOL><INDENT>resolved_virtual_path = resolved_virtual_path.parent<EOL><DEDENT>else:<EOL><INDENT>resolved_virtual_path /= part<EOL><DEDENT><DEDENT>base_path = connection.user.base_path<EOL>real_path = base_path / resolved_virtual_path.relative_to("<STR_LIT:/>")<EOL>return real_path, resolved_virtual_path<EOL>
Return *real* and *virtual* paths, resolves ".." with "up" action.
*Real* path is path for path_io, when *virtual* deals with
"user-view" and user requests

:param connection: internal options for current connected user
:type connection: :py:class:`dict`

:param path: received path from user
:type path: :py:class:`str` or :py:class:`pathlib.PurePosixPath`

:return: (real_path, virtual_path)
:rtype: (:py:class:`pathlib.Path`, :py:class:`pathlib.PurePosixPath`)