diff options
| author | Bob Halley <halley@play-bow.org> | 2015-12-03 09:17:10 -0800 |
|---|---|---|
| committer | Bob Halley <halley@play-bow.org> | 2015-12-03 09:17:10 -0800 |
| commit | 62bcfe252523527ca4ece8a9a8b2e7815327bd3a (patch) | |
| tree | 0a591102caf194718b9eff49c8c4cbf61cf5f710 | |
| parent | 8d07796fb6fa744f4f528268466d1a09fe5204aa (diff) | |
| parent | c2180f890079a1e8a7b93aff3c2517ca1688a584 (diff) | |
| download | dnspython-62bcfe252523527ca4ece8a9a8b2e7815327bd3a.tar.gz | |
Merge pull request #102 from encukou/py3-pickle
Py3: Implement the pickle protocol for Name objects
| -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() |
