Update pythonfinder

Signed-off-by: Dan Ryan <dan@danryan.co>
This commit is contained in:
Dan Ryan
2018-07-16 02:17:00 -04:00
parent 597cd2d917
commit 0d7afadd63
3 changed files with 27 additions and 5 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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)