supported_wheels.py 1.02 KB
Newer Older
1
2
3
4
5
6
#!/usr/bin/env python
"""  Filter out wheel filenames not supported on this platform
"""
from __future__ import print_function

import sys
7
from os.path import basename
8

9
try:
10
    from wheel.install import WHEEL_INFO_RE as wheel_matcher
11
except ImportError:  # As of Wheel 0.32.0
12
    from wheel.wheelfile import WHEEL_INFO_RE
13
    wheel_matcher = WHEEL_INFO_RE.match
14
15
16
17
try:
    from pip.pep425tags import get_supported
except ImportError:  # pip 10
    from pip._internal.pep425tags import get_supported
18
19


20
21
def tags_for(fname):
    # Copied from WheelFile code
22
    parsed_filename = wheel_matcher(basename(fname))
23
24
25
26
27
28
29
    tags = parsed_filename.groupdict()
    for pyver in tags['pyver'].split('.'):
        for abi in tags['abi'].split('.'):
            for plat in tags['plat'].split('.'):
                yield (pyver, abi, plat)


30
31
32
def main():
    supported = set(get_supported())
    for fname in sys.argv[1:]:
33
        tags = set(tags_for(fname))
34
35
36
37
38
39
        if supported.intersection(tags):
            print(fname)


if __name__ == '__main__':
    main()