def get_requested_versions(impl, vrange=None, available=None): """Return a set of requested and supported Python versions. :param impl: interpreter implementation :param available: if set to `True`, return installed versions only, if set to `False`, return requested versions that are not installed. By default returns all requested versions. :type available: bool >>> sorted(get_requested_versions('cpython3', '')) == sorted(supported('cpython3')) True >>> sorted(get_requested_versions('cpython3', '-')) == sorted(supported('cpython3')) True >>> get_requested_versions('cpython3', '>= 5.0') set() """ if isinstance(vrange, str): vrange = VersionRange(vrange) if not vrange: versions = set(supported(impl)) else: minv = Version(major=0, minor=0) if vrange.minver is None else vrange.minver maxv = Version(major=99, minor=99) if vrange.maxver is None else vrange.maxver if minv == maxv: versions = set([minv] if minv in supported(impl) else tuple()) else: versions = set(v for v in supported(impl) if minv <= v < maxv) if available is not None: # to avoid circular imports global Interpreter if Interpreter is None: from dhpython.interpreter import Interpreter if available: interpreter = Interpreter(impl=impl) versions = set(v for v in versions if exists(interpreter.binary(v))) elif available is False: interpreter = Interpreter(impl=impl) versions = set(v for v in versions if not exists(interpreter.binary(v))) return versions
def get_requested_versions(impl, vrange=None, available=None): """Return a set of requested and supported Python versions. :param impl: interpreter implementation :param available: if set to `True`, return installed versions only, if set to `False`, return requested versions that are not installed. By default returns all requested versions. :type available: bool >>> sorted(get_requested_versions('cpython3', '')) == sorted(supported('cpython3')) True >>> sorted(get_requested_versions('cpython3', '-')) == sorted(supported('cpython3')) True >>> get_requested_versions('cpython3', '>= 5.0') set() """ if isinstance(vrange, str): vrange = VersionRange(vrange) if not vrange: versions = set(supported(impl)) else: minv = Version(major=0, minor=0) if vrange.minver is None else vrange.minver maxv = Version(major=99, minor=99) if vrange.maxver is None else vrange.maxver if minv == maxv: versions = set([minv] if minv in supported(impl) else tuple()) else: versions = set(v for v in supported(impl) if minv <= v < maxv) if available is not None: # to avoid circular imports global Interpreter if Interpreter is None: from dhpython.interpreter import Interpreter if available: interpreter = Interpreter(impl=impl) versions = set(v for v in versions if exists(interpreter.binary(v))) elif available is False: interpreter = Interpreter(impl=impl) versions = set(v for v in versions if not exists(interpreter.binary(v))) return versions
def test_version(self): i = Interpreter(impl='cpython2') self.assertEqual(str(i), 'python') self.assertEqual(i.binary('2.7'), '/usr/bin/python2.7')
def test_version(self): i = Interpreter(impl='cpython2') self.assertEqual(str(i), 'python') self.assertEqual(i.binary('2.7'), '/usr/bin/python2.7')