diff options
| -rw-r--r-- | dns/name.py | 7 | ||||
| -rw-r--r-- | tests/test_name.py | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/dns/name.py b/dns/name.py index 44af098..0c1d4ab 100644 --- a/dns/name.py +++ b/dns/name.py @@ -168,6 +168,13 @@ class Name(object): def __deepcopy__(self, memo): return Name(copy.deepcopy(self.labels, memo)) + def __getstate__(self): + return { 'labels' : self.labels } + + def __setstate__(self, state): + super(Name, self).__setattr__('labels', state['labels']) + _validate_labels(self.labels) + def is_absolute(self): """Is the most significant label of this name the root label? @rtype: bool diff --git a/tests/test_name.py b/tests/test_name.py index c125a15..7a2a026 100644 --- a/tests/test_name.py +++ b/tests/test_name.py @@ -18,6 +18,7 @@ import unittest import io import socket import sys +import pickle import dns.name import dns.reversename @@ -699,5 +700,11 @@ class NameTestCase(unittest.TestCase): text = dns.e164.to_e164(n) self.assertTrue(text == e) + def testPickling(self): + n = dns.name.from_text('foo.bar') + pickled = pickle.dumps(n) + unpickled = pickle.loads(pickled) + self.assertEqual(n, unpickled) + if __name__ == '__main__': unittest.main() |
