File size: 1,090 Bytes
10b0761
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
41
42
43
44
45
46
47
#!/usr/bin/env python
"""Helper script to compare two argparse.Namespace objects."""

from argparse import Namespace  # noqa


def main():

    ns1 = eval(input("Namespace 1: "))
    ns2 = eval(input("Namespace 2: "))

    def keys(ns):
        ks = set()
        for k in dir(ns):
            if not k.startswith("_"):
                ks.add(k)
        return ks

    k1 = keys(ns1)
    k2 = keys(ns2)

    def print_keys(ks, ns1, ns2=None):
        for k in ks:
            if ns2 is None:
                print("{}\t{}".format(k, getattr(ns1, k, None)))
            else:
                print(
                    "{}\t{}\t{}".format(k, getattr(ns1, k, None), getattr(ns2, k, None))
                )

    print("Keys unique to namespace 1:")
    print_keys(k1 - k2, ns1)
    print()

    print("Keys unique to namespace 2:")
    print_keys(k2 - k1, ns2)
    print()

    print("Overlapping keys with different values:")
    ks = [k for k in k1 & k2 if getattr(ns1, k, "None") != getattr(ns2, k, "None")]
    print_keys(ks, ns1, ns2)
    print()


if __name__ == "__main__":
    main()