Spaces:
Running
Running
#!/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() | |