()
| 5 | |
| 6 | |
| 7 | def main(): |
| 8 | |
| 9 | ns1 = eval(input("Namespace 1: ")) |
| 10 | ns2 = eval(input("Namespace 2: ")) |
| 11 | |
| 12 | def keys(ns): |
| 13 | ks = set() |
| 14 | for k in dir(ns): |
| 15 | if not k.startswith("_"): |
| 16 | ks.add(k) |
| 17 | return ks |
| 18 | |
| 19 | k1 = keys(ns1) |
| 20 | k2 = keys(ns2) |
| 21 | |
| 22 | def print_keys(ks, ns1, ns2=None): |
| 23 | for k in ks: |
| 24 | if ns2 is None: |
| 25 | print("{}\t{}".format(k, getattr(ns1, k, None))) |
| 26 | else: |
| 27 | print( |
| 28 | "{}\t{}\t{}".format(k, getattr(ns1, k, None), getattr(ns2, k, None)) |
| 29 | ) |
| 30 | |
| 31 | print("Keys unique to namespace 1:") |
| 32 | print_keys(k1 - k2, ns1) |
| 33 | print() |
| 34 | |
| 35 | print("Keys unique to namespace 2:") |
| 36 | print_keys(k2 - k1, ns2) |
| 37 | print() |
| 38 | |
| 39 | print("Overlapping keys with different values:") |
| 40 | ks = [k for k in k1 & k2 if getattr(ns1, k, "None") != getattr(ns2, k, "None")] |
| 41 | print_keys(ks, ns1, ns2) |
| 42 | print() |
| 43 | |
| 44 | |
| 45 | if __name__ == "__main__": |
no test coverage detected