google / ipaddr-py

Google's Python IP address manipulation library
Apache License 2.0
195 stars 70 forks source link

IPAddress/IPNetwork objects not picklable #106

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. cPickle.dumps(IPNetwork("192.168.0.1"))

What is the expected output? What do you see instead?

IPNetwork isn't pickleable

What version of the product are you using? On what operating system?

2.1.10 on py2.7

Attached patch makes it pickleable

Original issue reported on code.google.com by klaussfr...@gmail.com on 31 Oct 2013 at 6:13

Attachments:

shields commented 9 years ago

Can't reproduce.

/tmp/ipaddr-2.1.10$ python2.7
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cPickle
>>> import ipaddr
>>> cPickle.dumps(ipaddr.IPNetwork("192.168.0.1"))
"ccopy_reg\n_reconstructor\np1\n(cipaddr\nIPv4Network\np2\nc__builtin__\nobject\np3\nNtRp4\n(dp5\nS'_prefixlen'\np6\nI32\nsS'ip'\np7\ng1\n(cipaddr\nIPv4Address\np8\ng3\nNtRp9\n(dp10\nS'_max_prefixlen'\np11\nI32\nsS'_version'\np12\nI4\nsS'_ip'\np13\nI3232235521\nsbsg12\nI4\nsg13\nI3232235521\nsS'netmask'\np14\ng1\n(g8\ng3\nNtRp15\n(dp16\ng11\nI32\nsg12\nI4\nsg13\nI4294967295\nsbsg11\nI32\nsS'_cache'\np17\n(dp18\nsb."
>>> cPickle.loads(cPickle.dumps(ipaddr.IPNetwork("192.168.0.1")))
IPv4Network('192.168.0.1/32')

I'll add a test anyway.