def _get_package_source(self, default_version=None):
        env_vars = ['FLOCKER_ACCEPTANCE_PACKAGE_BRANCH',
                    'FLOCKER_ACCEPTANCE_PACKAGE_VERSION',
                    'FLOCKER_ACCEPTANCE_PACKAGE_BUILD_SERVER']
        defaultable = frozenset(['FLOCKER_ACCEPTANCE_PACKAGE_BRANCH',
                                 'FLOCKER_ACCEPTANCE_PACKAGE_VERSION'])
        missing_vars = list(var for var in env_vars if var not in os.environ)
        if missing_vars:
            message = ('Missing environment variables for upgrade test: %s.' %
                       ', '.join(missing_vars))
            missing_defaultable = list(var for var in missing_vars
                                       if var in defaultable)
            if missing_defaultable:
                message += (' Note that (%s) can be set to an empty string to '
                            'use a default value' %
                            ', '.join(missing_defaultable))
            raise SkipTest(message)
        version = (os.environ['FLOCKER_ACCEPTANCE_PACKAGE_VERSION'] or
                   default_version)
        return PackageSource(
            version=version,
            branch=os.environ['FLOCKER_ACCEPTANCE_PACKAGE_BRANCH'],
            build_server=os.environ['FLOCKER_ACCEPTANCE_PACKAGE_BUILD_SERVER'])
Return an interval not including the right boundary.
dataset/ETHPy150Open ClusterHQ/flocker/flocker/acceptance/endtoend/test_dataset.py/DatasetAPITests._get_package_source--crossover with--dataset/ETHPy150Open sympy/sympy/sympy/sets/sets.py/Interval.Ropen