mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
+1
-1
@@ -174,7 +174,7 @@ class SystemPath(object):
|
||||
paths = (self.get_path(k) for k in self.path_order)
|
||||
path_filter = filter(None, (sub_finder(p) for p in paths if p is not None))
|
||||
version_sort = operator.attrgetter("as_python.version_sort")
|
||||
return [c for c in sorted(path_filter, key=version_sort, reverse=True)]
|
||||
return (c for c in sorted(path_filter, key=version_sort, reverse=True))
|
||||
|
||||
def find_python_version(self, major=None, minor=None, patch=None, pre=None, dev=None):
|
||||
"""Search for a specific python version on the path.
|
||||
|
||||
+17
-4
@@ -16,16 +16,29 @@ class WindowsFinder(BaseFinder):
|
||||
version_list = attr.ib(default=attr.Factory(list))
|
||||
versions = attr.ib()
|
||||
|
||||
def find_python_version(self, major, minor=None, patch=None, pre=None, dev=None):
|
||||
def find_all_python_versions(self, major=None, minor=None, patch=None, pre=None, dev=None):
|
||||
version_matcher = operator.methodcaller(
|
||||
"matches", major, minor=minor, patch=patch, pre=pre, dev=dev
|
||||
"matches", major=major, minor=minor, patch=patch, pre=pre, dev=dev
|
||||
)
|
||||
py_filter = filter(
|
||||
None, filter(lambda c: version_matcher(c), self.version_list)
|
||||
)
|
||||
version_sort = operator.attrgetter("version")
|
||||
version_sort = operator.attrgetter("version_sort")
|
||||
for c in sorted(py_filter, key=version_sort, reverse=True):
|
||||
yield c.comes_from
|
||||
|
||||
def find_python_version(self, major=None, minor=None, patch=None, pre=None, dev=None):
|
||||
# version_matcher = operator.methodcaller(
|
||||
# "matches", major=major, minor=minor, patch=patch, pre=pre, dev=dev
|
||||
# )
|
||||
# py_filter = filter(
|
||||
# None, filter(lambda c: version_matcher(c), self.version_list)
|
||||
# )
|
||||
# version_sort = operator.attrgetter("version_sort")
|
||||
return next(
|
||||
(c.comes_from for c in sorted(py_filter, key=version_sort, reverse=True)), None
|
||||
self.find_all_python_versions(
|
||||
major=major, minor=minor, patch=patch, pre=pre, dev=dev
|
||||
), None
|
||||
)
|
||||
|
||||
@versions.default
|
||||
|
||||
+9
@@ -2,6 +2,7 @@
|
||||
from __future__ import print_function, absolute_import
|
||||
import os
|
||||
import six
|
||||
import operator
|
||||
from .models import SystemPath
|
||||
|
||||
|
||||
@@ -67,3 +68,11 @@ class Finder(object):
|
||||
return self.system_path.find_python_version(
|
||||
major=major, minor=minor, patch=patch, pre=pre, dev=dev
|
||||
)
|
||||
|
||||
def find_all_python_versions(self, major=None, minor=None, patch=None, pre=None, dev=None):
|
||||
version_sort = operator.attrgetter("as_python.version_sort")
|
||||
versions = self.system_path.find_all_python_versions(major=major, minor=minor, patch=patch, pre=pre, dev=dev)
|
||||
if os.name == 'nt':
|
||||
windows_versions = self.windows_finder.find_all_python_versions(major=major, minor=minor, patch=patch, pre=pre, dev=dev)
|
||||
versions = list(versions) + list(windows_versions)
|
||||
return sorted(versions, key=version_sort, reverse=True)
|
||||
|
||||
Reference in New Issue
Block a user