commit | author | age
|
b210ce
|
1 |
import sys |
CM |
2 |
import platform |
|
3 |
import pkg_resources |
b7f994
|
4 |
import argparse |
b210ce
|
5 |
from operator import itemgetter |
CM |
6 |
|
0c29cf
|
7 |
|
MM |
8 |
def out(*args): # pragma: no cover |
b210ce
|
9 |
for arg in args: |
CM |
10 |
sys.stdout.write(arg) |
|
11 |
sys.stdout.write(' ') |
|
12 |
sys.stdout.write('\n') |
|
13 |
|
0c29cf
|
14 |
|
0c208d
|
15 |
def get_parser(): |
1efb31
|
16 |
parser = argparse.ArgumentParser( |
0c29cf
|
17 |
description="Show Python distribution versions and locations in use" |
MM |
18 |
) |
1efb31
|
19 |
return parser |
0c208d
|
20 |
|
0c29cf
|
21 |
|
MM |
22 |
def main( |
|
23 |
argv=sys.argv, |
|
24 |
pkg_resources=pkg_resources, |
|
25 |
platform=platform.platform, |
|
26 |
out=out, |
|
27 |
): |
b210ce
|
28 |
# all args except argv are for unit testing purposes only |
0c208d
|
29 |
parser = get_parser() |
b210ce
|
30 |
parser.parse_args(argv[1:]) |
CM |
31 |
packages = [] |
|
32 |
for distribution in pkg_resources.working_set: |
|
33 |
name = distribution.project_name |
|
34 |
packages.append( |
0c29cf
|
35 |
{ |
MM |
36 |
'version': distribution.version, |
|
37 |
'lowername': name.lower(), |
|
38 |
'name': name, |
|
39 |
'location': distribution.location, |
|
40 |
} |
|
41 |
) |
b210ce
|
42 |
packages = sorted(packages, key=itemgetter('lowername')) |
CM |
43 |
pyramid_version = pkg_resources.get_distribution('pyramid').version |
|
44 |
plat = platform() |
|
45 |
out('Pyramid version:', pyramid_version) |
|
46 |
out('Platform:', plat) |
|
47 |
out('Packages:') |
|
48 |
for package in packages: |
|
49 |
out(' ', package['name'], package['version']) |
|
50 |
out(' ', package['location']) |
40d54e
|
51 |
|
0c29cf
|
52 |
|
MM |
53 |
if __name__ == '__main__': # pragma: no cover |
40d54e
|
54 |
sys.exit(main() or 0) |