# Path: boussole/exceptions.py
# class UnresolvablePath(BoussoleBaseException):
#     """
#     Exception to be raised when the resolver can not resolve a given path.
#     """
#     pass
# 
# class UnclearResolution(BoussoleBaseException):
#     """
#     Exception to be raised when the resolver encounts multiple existing
#     candidates for a path.
#     """
#     pass


import os
from .exceptions import UnresolvablePath, UnclearResolution
        if paths:
            # Add given library paths to the basepaths for resolving
            # Accept a string if not allready in basepaths
            if (
                library_paths and
                isinstance(library_paths, str) and
                library_paths not in basepaths
            ):
                basepaths.append(library_paths)
            # Add path item from list if not allready in basepaths
            elif library_paths:
                for k in list(library_paths):
                    if k not in basepaths:
                        basepaths.append(k)

            for import_rule in paths:
                candidates = self.candidate_paths(import_rule)

                # Search all existing candidates:
                # * If more than one candidate raise an error;
                # * If only one, accept it;
                # * If no existing candidate raise an error;
                stack = []
                for i, basepath in enumerate(basepaths):
                    checked = self.check_candidate_exists(basepath, candidates)
                    if checked:
                        stack.extend(checked)

                # More than one existing candidate
                if len(stack) > 1:

# Path: boussole/exceptions.py
# class UnresolvablePath(BoussoleBaseException):
#     """
#     Exception to be raised when the resolver can not resolve a given path.
#     """
#     pass
# 
# class UnclearResolution(BoussoleBaseException):
#     """
#     Exception to be raised when the resolver encounts multiple existing
#     candidates for a path.
#     """
#     pass


# Path: boussole/resolver.py
import os
from .exceptions import UnresolvablePath, UnclearResolution

        if paths:
            # Add given library paths to the basepaths for resolving
            # Accept a string if not allready in basepaths
            if (
                library_paths and
                isinstance(library_paths, str) and
                library_paths not in basepaths
            ):
                basepaths.append(library_paths)
            # Add path item from list if not allready in basepaths
            elif library_paths:
                for k in list(library_paths):
                    if k not in basepaths:
                        basepaths.append(k)

            for import_rule in paths:
                candidates = self.candidate_paths(import_rule)

                # Search all existing candidates:
                # * If more than one candidate raise an error;
                # * If only one, accept it;
                # * If no existing candidate raise an error;
                stack = []
                for i, basepath in enumerate(basepaths):
                    checked = self.check_candidate_exists(basepath, candidates)
                    if checked:
                        stack.extend(checked)

                # More than one existing candidate
                if len(stack) > 1:

                    raise UnclearResolution(