summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@play-bow.org>2015-12-03 09:17:10 -0800
committerBob Halley <halley@play-bow.org>2015-12-03 09:17:10 -0800
commit62bcfe252523527ca4ece8a9a8b2e7815327bd3a (patch)
tree0a591102caf194718b9eff49c8c4cbf61cf5f710
parent8d07796fb6fa744f4f528268466d1a09fe5204aa (diff)
parentc2180f890079a1e8a7b93aff3c2517ca1688a584 (diff)
downloaddnspython-62bcfe252523527ca4ece8a9a8b2e7815327bd3a.tar.gz
Merge pull request #102 from encukou/py3-pickle
Py3: Implement the pickle protocol for Name objects
-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()