0
@@ -3,6 +3,8 @@ Testcases for NSArchive-ing python objects.
0
(Implementation is incomplete)
0
@@ -50,390 +52,394 @@ class a_reducing_class (object):
0
return make_instance, (self.__dict__,)
0
-class TestKeyedArchiveSimple (objc.test.TestCase):
0
- def testBasicObjects(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(a_function)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(v is a_function)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(a_classic_class)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(v is a_classic_class)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(a_newstyle_class)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(v is a_newstyle_class)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, a_classic_class))
0
- self.assertEquals(o.x, 42)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(u"hello")
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, unicode))
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_("hello")
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, str))
0
- self.assertEquals(v, "hello")
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(sys.maxint * 4)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, long))
0
- self.assertEquals(v, sys.maxint * 4)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(sys.maxint ** 4)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, long))
0
- self.assertEquals(v, sys.maxint ** 4)
0
- def testSimpleLists(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, list))
0
- self.assertEquals(v, o)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, list))
0
- self.assertEquals(v, o)
0
- def testSimpleTuples(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, tuple))
0
- self.assertEquals(v, o)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, tuple))
0
- self.assertEquals(v, o)
0
- def testSimpleDicts(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, dict))
0
- self.assertEquals(v, o)
0
- o = {u"hello": u"bar", 42: 1.5 }
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, dict))
0
- self.assertEquals(v, o)
0
- def testNestedDicts(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, dict))
0
- self.assertEquals(v, o)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, dict))
0
- self.assert_(v[u'self'] is v)
0
- def testNestedSequences(self):
0
- o = [ 1, 2, 3, (5, (u'a', u'b'), 6), {1:2} ]
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, list))
0
- self.assert_(v[-1] is v)
0
- self.assertEquals(v[:-1], o[:-1])
0
- def testNestedInstance(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, a_classic_class))
0
- self.assert_(v.value is v)
0
- def dont_testNestedInstanceWithReduce(self):
0
- # Test recursive instantation with a __reduce__ method
0
- # This test is disabled because pickle doesn't support
0
- # this (and we don't either)
0
- o = a_reducing_class()
0
- print "+++", o2.value is o2
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, a_reducing_class))
0
- self.assert_(v.value is v)
0
- def testRecusiveNesting(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(l)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assertEquals(len(v), 1)
0
- self.assertEquals(dir(v[0]), dir(i))
0
- self.assertEquals(v[0].attr.keys(), [1])
0
- self.assert_(v[0].attr[1] is v)
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(d)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(v[1][0].attr is v)
0
- def testTupleOfObjects(self):
0
- buf = NSKeyedArchiver.archivedDataWithRootObject_(t)
0
- self.assert_(isinstance(buf, NSData))
0
- v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- self.assert_(isinstance(v, tuple))
0
- self.assert_(len(v) == 3)
0
- self.assert_(isinstance(v[0], a_classic_class))
0
- self.assert_(v[0] is v[1])
0
- self.assert_(v[0] is v[2])
0
-class TestKeyedArchivePlainPython (objc.test.TestCase, test.pickletester.AbstractPickleTests):
0
- # Ensure that we don't run every test case three times
0
- self._protocols = test.pickletester.protocols
0
- test.pickletester.protocols = (2,)
0
- test.pickletester.protoocols = self._protocols
0
- def dumps(self, arg, proto=0, fast=0):
0
- # Ignore proto and fast
0
- return NSKeyedArchiver.archivedDataWithRootObject_(arg)
0
- return NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
- # Disable a number of methods, these test things we're not interested in.
0
- # (Most of these look at the generated byte-stream, as we're not writing data in pickle's
0
- # format such tests are irrelevant to archiving support)
0
- def test_insecure_strings(self): pass
0
- def test_load_from_canned_string(self): pass
0
- def test_maxint64(self): pass
0
- def test_dict_chunking(self): pass
0
- def test_float_format(self): pass
0
- def test_garyp(self): pass
0
- def test_list_chunking(self): pass
0
- def test_singletons(self): pass
0
- def test_simple_newobj(self): pass
0
- def test_short_tuples(self): pass
0
- def test_proto(self): pass
0
- def test_long1(self): pass
0
- def test_long4(self): pass
0
- # The real test_long method takes way to much time, test a subset
0
- x = 12345678910111213141516178920L << (256*8)
0
- self.assertEquals(v, x)
0
- self.assertEquals(v, x)
0
- for val in (0L, 1L, long(sys.maxint), long(sys.maxint * 128)):
0
- self.assertEquals(v, x)
0
+if int(os.uname()[2].split('.')[0]) >= 9:
0
+ # For some reason NSCoding support doesn't work on OSX 10.4 yet, ignore these
0
+ class TestKeyedArchiveSimple (objc.test.TestCase):
0
+ def testBasicObjects(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(a_function)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(v is a_function)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(a_classic_class)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(v is a_classic_class)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(a_newstyle_class)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(v is a_newstyle_class)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, a_classic_class))
0
+ self.assertEquals(o.x, 42)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(u"hello")
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, unicode))
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_("hello")
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, str))
0
+ self.assertEquals(v, "hello")
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(sys.maxint * 4)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, long))
0
+ self.assertEquals(v, sys.maxint * 4)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(sys.maxint ** 4)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, long))
0
+ self.assertEquals(v, sys.maxint ** 4)
0
+ def testSimpleLists(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, list))
0
+ self.assertEquals(v, o)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, list))
0
+ self.assertEquals(v, o)
0
+ def testSimpleTuples(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, tuple))
0
+ self.assertEquals(v, o)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, tuple))
0
+ self.assertEquals(v, o)
0
+ def testSimpleDicts(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, dict))
0
+ self.assertEquals(v, o)
0
+ o = {u"hello": u"bar", 42: 1.5 }
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, dict))
0
+ self.assertEquals(v, o)
0
+ def testNestedDicts(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, dict))
0
+ self.assertEquals(v, o)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, dict))
0
+ self.assert_(v[u'self'] is v)
0
+ def testNestedSequences(self):
0
+ o = [ 1, 2, 3, (5, (u'a', u'b'), 6), {1:2} ]
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, list))
0
+ self.assert_(v[-1] is v)
0
+ self.assertEquals(v[:-1], o[:-1])
0
+ def testNestedInstance(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, a_classic_class))
0
+ self.assert_(v.value is v)
0
+ def dont_testNestedInstanceWithReduce(self):
0
+ # Test recursive instantation with a __reduce__ method
0
+ # This test is disabled because pickle doesn't support
0
+ # this (and we don't either)
0
+ o = a_reducing_class()
0
+ print "+++", o2.value is o2
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(o)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, a_reducing_class))
0
+ self.assert_(v.value is v)
0
+ def testRecusiveNesting(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(l)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assertEquals(len(v), 1)
0
+ self.assertEquals(dir(v[0]), dir(i))
0
+ self.assertEquals(v[0].attr.keys(), [1])
0
+ self.assert_(v[0].attr[1] is v)
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(d)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(v[1][0].attr is v)
0
+ def testTupleOfObjects(self):
0
+ buf = NSKeyedArchiver.archivedDataWithRootObject_(t)
0
+ self.assert_(isinstance(buf, NSData))
0
+ v = NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ self.assert_(isinstance(v, tuple))
0
+ self.assert_(len(v) == 3)
0
+ self.assert_(isinstance(v[0], a_classic_class))
0
+ self.assert_(v[0] is v[1])
0
+ self.assert_(v[0] is v[2])
0
+ class TestKeyedArchivePlainPython (objc.test.TestCase, test.pickletester.AbstractPickleTests):
0
+ # Ensure that we don't run every test case three times
0
+ self._protocols = test.pickletester.protocols
0
+ test.pickletester.protocols = (2,)
0
+ test.pickletester.protoocols = self._protocols
0
+ def dumps(self, arg, proto=0, fast=0):
0
+ # Ignore proto and fast
0
+ return NSKeyedArchiver.archivedDataWithRootObject_(arg)
0
+ return NSKeyedUnarchiver.unarchiveObjectWithData_(buf)
0
+ # Disable a number of methods, these test things we're not interested in.
0
+ # (Most of these look at the generated byte-stream, as we're not writing data in pickle's
0
+ # format such tests are irrelevant to archiving support)
0
+ def test_insecure_strings(self): pass
0
+ def test_load_from_canned_string(self): pass
0
+ def test_maxint64(self): pass
0
+ def test_dict_chunking(self): pass
0
+ def test_float_format(self): pass
0
+ def test_garyp(self): pass
0
+ def test_list_chunking(self): pass
0
+ def test_singletons(self): pass
0
+ def test_simple_newobj(self): pass
0
+ def test_short_tuples(self): pass
0
+ def test_proto(self): pass
0
+ def test_long1(self): pass
0
+ def test_long4(self): pass
0
+ # The real test_long method takes way to much time, test a subset
0
+ x = 12345678910111213141516178920L << (256*8)
0
+ self.assertEquals(v, x)
0
+ self.assertEquals(v, x)
0
+ for val in (0L, 1L, long(sys.maxint), long(sys.maxint * 128)):
0
+ self.assertEquals(v, x)
0
+ # Overriden tests for extension codes, the test code checks
0
+ # the actual byte stream.
0
+ def produce_global_ext(self, extcode, opcode):
0
+ e = test.pickletester.ExtensionSaver(extcode)
0
+ copy_reg.add_extension(__name__, "MyList", extcode)
0
+ self.assertEqual(list(x), list(y))
0
+ self.assertEqual(x.__dict__, y.__dict__)
0
- # Overriden tests for extension codes, the test code checks
0
- # the actual byte stream.
0
- def produce_global_ext(self, extcode, opcode):
0
- e = test.pickletester.ExtensionSaver(extcode)
0
- copy_reg.add_extension(__name__, "MyList", extcode)
0
+ # The test_reduce* methods iterate over various protocol
0
+ # versions. Override to only look at protocol version 2.
0
+ def test_reduce_overrides_default_reduce_ex(self):
0
+ x = test.pickletester.REX_one()
0
+ self.assertEqual(x._reduce_called, 0)
0
+ s = self.dumps(x, proto)
0
+ self.assertEqual(x._reduce_called, 1)
0
+ self.assertEqual(y._reduce_called, 0)
0
+ def test_reduce_ex_called(self):
0
+ x = test.pickletester.REX_two()
0
+ self.assertEqual(x._proto, None)
0
+ s = self.dumps(x, proto)
0
+ self.assertEqual(x._proto, proto)
0
+ self.assertEqual(y._proto, None)
0
+ def test_reduce_ex_overrides_reduce(self):
0
+ x = test.pickletester.REX_three()
0
+ self.assertEqual(x._proto, None)
0
+ s = self.dumps(x, proto)
0
+ self.assertEqual(x._proto, proto)
0
+ self.assertEqual(y._proto, None)
0
+ def test_reduce_ex_calls_base(self):
0
+ x = test.pickletester.REX_four()
0
+ self.assertEqual(x._proto, None)
0
+ s = self.dumps(x, proto)
0
+ self.assertEqual(x._proto, proto)
0
+ self.assertEqual(y._proto, proto)
0
+ def test_reduce_calls_base(self):
0
+ x = test.pickletester.REX_five()
0
+ self.assertEqual(x._reduce_called, 0)
0
+ s = self.dumps(x, proto)
0
+ self.assertEqual(x._reduce_called, 1)
0
+ self.assertEqual(y._reduce_called, 1)
0
- self.assertEqual(list(x), list(y))
0
- self.assertEqual(x.__dict__, y.__dict__)
0
- # The test_reduce* methods iterate over various protocol
0
- # versions. Override to only look at protocol version 2.
0
+ # Disable testing of plain Archiving for now, need full support
0
+ # for keyed-archiving first, then worry about adding "classic"
0
+ #class TestArchivePlainPython (TestKeyedArchivePlainPython):
0
+ # def dumps(self, arg, proto=0, fast=0):
0
+ # # Ignore proto and fast
0
+ # return NSArchiver.archivedDataWithRootObject_(arg)
0
- def test_reduce_overrides_default_reduce_ex(self):
0
- x = test.pickletester.REX_one()
0
- self.assertEqual(x._reduce_called, 0)
0
- s = self.dumps(x, proto)
0
- self.assertEqual(x._reduce_called, 1)
0
- self.assertEqual(y._reduce_called, 0)
0
- def test_reduce_ex_called(self):
0
- x = test.pickletester.REX_two()
0
- self.assertEqual(x._proto, None)
0
- s = self.dumps(x, proto)
0
- self.assertEqual(x._proto, proto)
0
- self.assertEqual(y._proto, None)
0
- def test_reduce_ex_overrides_reduce(self):
0
- x = test.pickletester.REX_three()
0
- self.assertEqual(x._proto, None)
0
- s = self.dumps(x, proto)
0
- self.assertEqual(x._proto, proto)
0
- self.assertEqual(y._proto, None)
0
- def test_reduce_ex_calls_base(self):
0
- x = test.pickletester.REX_four()
0
- self.assertEqual(x._proto, None)
0
- s = self.dumps(x, proto)
0
- self.assertEqual(x._proto, proto)
0
- self.assertEqual(y._proto, proto)
0
- def test_reduce_calls_base(self):
0
- x = test.pickletester.REX_five()
0
- self.assertEqual(x._reduce_called, 0)
0
- s = self.dumps(x, proto)
0
- self.assertEqual(x._reduce_called, 1)
0
- self.assertEqual(y._reduce_called, 1)
0
-# Disable testing of plain Archiving for now, need full support
0
-# for keyed-archiving first, then worry about adding "classic"
0
-#class TestArchivePlainPython (TestKeyedArchivePlainPython):
0
-# def dumps(self, arg, proto=0, fast=0):
0
-# # Ignore proto and fast
0
-# return NSArchiver.archivedDataWithRootObject_(arg)
0
-# def loads(self, buf):
0
-# return NSUnarchiver.unarchiveObjectWithData_(buf)
0
+ # def loads(self, buf):
0
+ # return NSUnarchiver.unarchiveObjectWithData_(buf)
0
-# Second set of tests: test if archiving a graph that
0
-# contains both python and objective-C objects works correctly.
0
-class TestKeyedArchiveMixedGraphs (objc.test.TestCase):
0
- def dumps(self, arg, proto=0, fast=0):
0
- # Ignore proto and fast
0
- return NSKeyedArchiver.archivedDataWithRootObject_(arg)