summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dns/name.py7
-rw-r--r--tests/test_name.py7
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()