File: helpers.py

package info (click to toggle)
python-virtualenv 20.33.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 1,124 kB
  • sloc: python: 10,907; sh: 160; ansic: 61; csh: 47; makefile: 8
file content (40 lines) | stat: -rw-r--r-- 881 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from __future__ import annotations

from functools import reduce
from pathlib import Path

from virtualenv.create.via_global_ref.builtin.ref import ExePathRefToDest, PathRef


def is_ref(source):
    return isinstance(source, PathRef)


def is_exe(source):
    return type(source) is ExePathRefToDest


def has_src(src):
    return lambda ref: ref.src.as_posix() == Path(src).as_posix()


def has_target(target):
    return lambda ref: ref.base == target


def apply_filter(values, function):
    return filter(function, values)


def filterby(filters, sources):
    return reduce(apply_filter, filters, sources)


def contains_exe(sources, src, target=None):
    filters = is_exe, has_src(src), target and has_target(target)
    return any(filterby(filters, sources))


def contains_ref(sources, src):
    filters = is_ref, has_src(src)
    return any(filterby(filters, sources))