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