cleanup
This commit is contained in:
parent
90c4f27e86
commit
d4f4294037
6 changed files with 17 additions and 52 deletions
|
@ -89,7 +89,7 @@ class DependencyProviderBase(ABC):
|
|||
@cached()
|
||||
def find_matches(self, req) -> List[Candidate]:
|
||||
all = list(self.all_candidates_sorted(req.key, req.extras, req.build))
|
||||
matching_versions = set(filter_versions((c.ver for c in all), req.specs))
|
||||
matching_versions = set(filter_versions([c.ver for c in all], req.specs))
|
||||
matching_candidates = [c for c in all if c.ver in matching_versions]
|
||||
return matching_candidates
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"url": "https://github.com/davhau/conda-channels",
|
||||
"rev": "1d4616868eb926c2908dbf6fcc376f66de89e102",
|
||||
"date": "2020-10-31T15:59:29+00:00",
|
||||
"sha256": "1lggwgwh6gpg0m31ll1x81bj14lpgdccmk31j2dcf57gcfwx8c5r",
|
||||
"rev": "366d2706c153488c01ceb882674b04be5ea1d3d4",
|
||||
"date": "2020-11-19T02:00:42+00:00",
|
||||
"sha256": "1n8ggw709lk4qfynhcjpgz9l6wkrplhaays5f7588ikw9mmk6j8h",
|
||||
"fetchSubmodules": false
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"url": "https://github.com/nixos/nixpkgs",
|
||||
"rev": "2da96f3f9c44cf87e07387321f4ca406c1a8bb7e",
|
||||
"date": "2020-10-31T10:14:50+00:00",
|
||||
"sha256": "03d0iym6m5kbp11lz5jcaf2627cqvry0lzmrmf6gmqvvfcal9vdl",
|
||||
"rev": "4f3475b113c93d204992838aecafa89b1b3ccfde",
|
||||
"date": "2020-11-16T11:01:57+01:00",
|
||||
"sha256": "158iik656ds6i6pc672w54cnph4d44d0a218dkq6npzrbhd3vvbg",
|
||||
"fetchSubmodules": false
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"url": "https://github.com/davhau/pypi-deps-db",
|
||||
"rev": "e6a98c8a6c2c9b759011fcb1b3f30734a510da39",
|
||||
"date": "2020-10-31T08:21:13+00:00",
|
||||
"sha256": "0cyiq0j42abibfr8zmmfmas13axbl80im4pgpqs9nd9j98g552mr",
|
||||
"rev": "ae8b4b93e71245f954f73f5d1dc4597872be4e14",
|
||||
"date": "2020-11-18T20:12:07+00:00",
|
||||
"sha256": "085y8nnnk713h54cfix87sdzinf0vy6wy0d6dk2724b3m2drjsrx",
|
||||
"fetchSubmodules": false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from dataclasses import dataclass
|
||||
from typing import Iterable, List
|
||||
|
||||
import resolvelib
|
||||
|
@ -8,7 +7,7 @@ from mach_nix.data.providers import DependencyProviderBase, Candidate
|
|||
from mach_nix.deptree import remove_circles_and_print
|
||||
from mach_nix.requirements import Requirement
|
||||
from mach_nix.resolver import Resolver, ResolvedPkg
|
||||
from mach_nix.versions import filter_versions, Version
|
||||
from mach_nix.versions import filter_versions
|
||||
|
||||
|
||||
# Implement logic so the resolver understands the requirement format.
|
||||
|
@ -38,7 +37,6 @@ class Provider:
|
|||
if not set(requirement.extras).issubset(set(candidate.selected_extras)):
|
||||
res = False
|
||||
res = bool(len(list(filter_versions([candidate.ver], requirement.specs))))
|
||||
#print(f"{res} {requirement} satisfied by {candidate}")
|
||||
return res
|
||||
|
||||
def get_dependencies(self, candidate):
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
import fnmatch
|
||||
import sys
|
||||
import traceback
|
||||
from typing import Iterable, Tuple, List
|
||||
|
||||
import packaging.version
|
||||
from conda.common.compat import with_metaclass
|
||||
from packaging.version import LegacyVersion
|
||||
from conda.models.version import ver_eval, VersionOrder, SingleStrArgCachingType
|
||||
from packaging.version import LegacyVersion
|
||||
|
||||
from mach_nix.cache import cached
|
||||
import packaging.version
|
||||
|
||||
|
||||
@with_metaclass(SingleStrArgCachingType)
|
||||
|
@ -43,22 +42,11 @@ class PyVer(Version):
|
|||
|
||||
|
||||
def parse_ver(ver_str) -> Version:
|
||||
#return packaging.version.parse(ver_str)
|
||||
return Version(ver_str)
|
||||
|
||||
|
||||
def ver_better_than_other(v: Version, o: Version) -> bool:
|
||||
return ver_eval(v, f">{o}")
|
||||
# instability = {v: 0, o: 0}
|
||||
# if v >= o:
|
||||
# for ver in [v, o]:
|
||||
# if ver.dev:
|
||||
# instability[ver] += 2
|
||||
# if ver.pre:
|
||||
# instability[ver] += 1
|
||||
# if instability[v] <= instability[o]:
|
||||
# return True
|
||||
# return False
|
||||
|
||||
|
||||
def ver_sort_key(ver: Version):
|
||||
|
@ -79,34 +67,23 @@ def ver_sort_key(ver: Version):
|
|||
if elem.lower().islower():
|
||||
is_pre = 1
|
||||
break
|
||||
# if isinstance(ver, LegacyVersion):
|
||||
# return 0, 0, 0, ver
|
||||
# is_dev = int(ver.is_devrelease)
|
||||
# is_pre = int(ver.is_prerelease)
|
||||
return not is_dev, not is_pre, ver
|
||||
|
||||
|
||||
def best_version(versions: Iterable[Version]) -> Version:
|
||||
return sorted(versions)[-1]
|
||||
# best = None
|
||||
# for ver in versions:
|
||||
# if best is None:
|
||||
# best = ver
|
||||
# continue
|
||||
# if ver_better_than_other(ver, best):
|
||||
# best = ver
|
||||
# return best
|
||||
|
||||
|
||||
#@cached(keyfunc=lambda args: tuple(args[0]) + tuple(args[1]))
|
||||
@cached(keyfunc=lambda args: hash(tuple(args[0]) + tuple(args[1])))
|
||||
def filter_versions(
|
||||
versions: Iterable[Version],
|
||||
specs: Iterable[Tuple[str, str]]) -> List[Version]:
|
||||
versions: List[Version],
|
||||
specs: List[Tuple[str, str]]) -> List[Version]:
|
||||
"""
|
||||
Reduces a given list of versions to contain only versions
|
||||
which are allowed according to the given specifiers
|
||||
"""
|
||||
versions = list(versions)
|
||||
assert len(versions) > 0
|
||||
for op, ver in specs:
|
||||
if op == '==':
|
||||
if str(ver) == "*":
|
||||
|
@ -115,15 +92,5 @@ def filter_versions(
|
|||
op = '='
|
||||
ver = parse_ver(ver)
|
||||
versions = list(filter(lambda v: ver_eval(v, f"{op}{ver}"), versions))
|
||||
# if op == '==':
|
||||
# versions_str = (str(ver) for ver in versions)
|
||||
# versions_str_filtered = list(ver_str for ver_str in fnmatch.filter(versions_str, str(ver)))
|
||||
# versions = [ver for ver in versions if str(ver) in versions_str_filtered]
|
||||
# elif op == '!=':
|
||||
# versions_str = (str(ver) for ver in versions)
|
||||
# bad_versions_str = set(fnmatch.filter(versions_str, str(ver)))
|
||||
# versions = list(filter(lambda v: str(v) not in bad_versions_str, versions))
|
||||
# else:
|
||||
# versions = list(filter(lambda v: eval(f'v {op} ver', dict(v=v, ver=ver)), versions))
|
||||
return list(versions)
|
||||
|
||||
|
|
Loading…
Reference in a new issue