# Path: jasmine/utils.py
# def iglob(path_glob):
#     """Extended globbing function that supports ** and {opt1,opt2,opt3}."""
#     if _CHECK_RECURSIVE_GLOB.search(path_glob):
#         msg = """invalid glob %r: recursive glob "**" must be used alone"""
#         raise ValueError(msg % path_glob)
#     if _CHECK_MISMATCH_SET.search(path_glob):
#         msg = """invalid glob %r: mismatching set marker '{' or '}'"""
#         raise ValueError(msg % path_glob)
#     return _iglob(path_glob)


import os
from yaml import load, Loader
from jasmine_core import Core
from jasmine.utils import iglob
        if idfun is None:
            def idfun(x):
                return x
        seen = {}
        result = []
        for item in items:
            marker = idfun(item)
            # in old Python versions:
            # if seen.has_key(marker)
            # but in new ones:
            if marker in seen:
                continue

            seen[marker] = 1
            result.append(item)
        return result

    def _glob_filelist(self, filelist, relative_to, default=None):
        default = default or []
        paths = self._yaml.get(filelist) or default

        paths = [self._make_absolute(path, relative_to) for path in paths]
        paths = [self._expland_globs(path) for path in paths]
        paths = sum(paths, [])
        relpaths = [self._make_relative(path, relative_to) for path in paths]

        # fix py26 relpath from root bug http://bugs.python.org/issue5117
        return [
            relpath[3:] if relpath.startswith("../") else relpath
            for relpath in relpaths

# Path: jasmine/utils.py
# def iglob(path_glob):
#     """Extended globbing function that supports ** and {opt1,opt2,opt3}."""
#     if _CHECK_RECURSIVE_GLOB.search(path_glob):
#         msg = """invalid glob %r: recursive glob "**" must be used alone"""
#         raise ValueError(msg % path_glob)
#     if _CHECK_MISMATCH_SET.search(path_glob):
#         msg = """invalid glob %r: mismatching set marker '{' or '}'"""
#         raise ValueError(msg % path_glob)
#     return _iglob(path_glob)


# Path: jasmine/config.py
import os
from yaml import load, Loader
from jasmine_core import Core
from jasmine.utils import iglob

        if idfun is None:
            def idfun(x):
                return x
        seen = {}
        result = []
        for item in items:
            marker = idfun(item)
            # in old Python versions:
            # if seen.has_key(marker)
            # but in new ones:
            if marker in seen:
                continue

            seen[marker] = 1
            result.append(item)
        return result

    def _glob_filelist(self, filelist, relative_to, default=None):
        default = default or []
        paths = self._yaml.get(filelist) or default

        paths = [self._make_absolute(path, relative_to) for path in paths]
        paths = [self._expland_globs(path) for path in paths]
        paths = sum(paths, [])
        relpaths = [self._make_relative(path, relative_to) for path in paths]

        # fix py26 relpath from root bug http://bugs.python.org/issue5117
        return [
            relpath[3:] if relpath.startswith("../") else relpath
            for relpath in relpaths

        ]