45 lines
1.0 KiB
Python
45 lines
1.0 KiB
Python
#!/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()
|