:return: friendly type name for the end-user
        :rtype: str

def friendly_type_name(self) -> str:
        """
        :return: friendly type name for the end-user
        :rtype: str
        """
        _constraints_set = []
        if self._must_be_dir:
            _constraints_set.append('must be a directory')
        if self._must_be_file:
            _constraints_set.append('must be a file')
        if self._must_exist:
            _constraints_set.append('must already exist')
        _constraints_as_str = ' (' + ', '.join(_constraints_set) + ')' if _constraints_set else ''
        return 'path' + _constraints_as_str