[PyObjC-svn] r2418 - in trunk/pyobjc/pyobjc-framework-AddressBook: . PyObjCTest

[email protected] Thu, 01 Apr 2010 10:00:41 -0500
Newsgroups gmane.comp.python.pyobjc.cvs
Message-ID <[email protected]>
Author: ronaldoussoren
Date: Thu Apr  1 10:00:41 2010
New Revision: 2418

Log:
Port to py3k


Added:
   trunk/pyobjc/pyobjc-framework-AddressBook/distribute_setup.py   (contents, props changed)
Modified:
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abactions.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbook.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbookc.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abglobals.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerc.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerview.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abrecord.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_absearchelement.py
   trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abtypedefs.py
   trunk/pyobjc/pyobjc-framework-AddressBook/pyobjc_setup.py

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abactions.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abactions.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abactions.py	Thu Apr  1 10:00:41 2010
@@ -8,7 +8,7 @@
 
 class TestABActions (TestCase):
     def testMethods(self):
-        self.failUnlessResultIsBOOL(TestABActionHelper.shouldEnableActionForPerson_identifier_)
+        self.assertResultIsBOOL(TestABActionHelper.shouldEnableActionForPerson_identifier_)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbook.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbook.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbook.py	Thu Apr  1 10:00:41 2010
@@ -4,13 +4,13 @@
 
 class TestABAddressBook (TestCase):
     def testMethods(self):
-        self.failUnlessResultIsBOOL(ABAddressBook.save)
-        self.failUnlessResultIsBOOL(ABAddressBook.hasUnsavedChanges)
+        self.assertResultIsBOOL(ABAddressBook.save)
+        self.assertResultIsBOOL(ABAddressBook.hasUnsavedChanges)
 
     @min_os_level('10.5')
     def testMethods10_5(self):
-        self.failUnlessResultIsBOOL(ABAddressBook.saveAndReturnError_)
-        self.failUnlessArgIsOut(ABAddressBook.saveAndReturnError_, 0)
+        self.assertResultIsBOOL(ABAddressBook.saveAndReturnError_)
+        self.assertArgIsOut(ABAddressBook.saveAndReturnError_, 0)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbookc.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbookc.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abaddressbookc.py	Thu Apr  1 10:00:41 2010
@@ -2,38 +2,38 @@
 from PyObjCTools.TestSupport import *
 from AddressBook import *
 
-_C_ABAddressBookRef = '^{__ABAddressBookRef=}'
-_C_ABMultiValueRef = '^{__ABMultiValue=}'
-_C_ABPersonRef = '^{__ABPerson=}'
-_C_ABGroupRef = '^{__ABGroup=}'
-_C_ABSearchElementRef = '^{__ABSearchElementRef=}'
-_C_CFStringRef = '^{__CFString=}'
-_C_CFStringRefPtr = '^^{__CFString}'
-_C_CFDictionaryRef = '^{__CFDictionary=}'
-_C_CFArrayRef = '^{__CFArray=}'
-_C_CFDataRef = '^{__CFData=}'
+_C_ABAddressBookRef = b'^{__ABAddressBookRef=}'
+_C_ABMultiValueRef = b'^{__ABMultiValue=}'
+_C_ABPersonRef = b'^{__ABPerson=}'
+_C_ABGroupRef = b'^{__ABGroup=}'
+_C_ABSearchElementRef = b'^{__ABSearchElementRef=}'
+_C_CFStringRef = b'^{__CFString=}'
+_C_CFStringRefPtr = b'^^{__CFString}'
+_C_CFDictionaryRef = b'^{__CFDictionary=}'
+_C_CFArrayRef = b'^{__CFArray=}'
+_C_CFDataRef = b'^{__CFData=}'
 
 class TestABAddressBookC (TestCase):
     def testTypes(self):
-        self.failUnless(ABAddressBookRef is ABAddressBook)
-        self.failUnless(ABPersonRef is ABPerson)
-        self.failUnless(ABSearchElementRef is ABSearchElement)
-        self.failUnless(ABGroupRef is ABGroup)
+        self.assertTrue(ABAddressBookRef is ABAddressBook)
+        self.assertTrue(ABPersonRef is ABPerson)
+        self.assertTrue(ABSearchElementRef is ABSearchElement)
+        self.assertTrue(ABGroupRef is ABGroup)
 
     def testFunctions(self):
         ref = ABGetSharedAddressBook()
-        self.failUnlessIsInstance(ref, ABAddressBookRef)
+        self.assertIsInstance(ref, ABAddressBookRef)
 
         r = ABSave(ref)
-        self.failUnlessResultHasType(ABSave, objc._C_BOOL)
-        self.failUnlessIsInstance(r, bool)
+        self.assertResultHasType(ABSave, objc._C_BOOL)
+        self.assertIsInstance(r, bool)
 
         r = ABHasUnsavedChanges(ref)
-        self.failUnlessResultHasType(ABHasUnsavedChanges, objc._C_BOOL)
-        self.failUnlessIsInstance(r, bool)
+        self.assertResultHasType(ABHasUnsavedChanges, objc._C_BOOL)
+        self.assertIsInstance(r, bool)
         
         r = me = ABGetMe(ref)
-        self.failUnlessIsInstance(r, ABPersonRef)
+        self.assertIsInstance(r, ABPersonRef)
 
         # There's only one addressbook per user account, therefore
         # testing functions that modify the adressbook isn't safe 
@@ -42,231 +42,231 @@
         # Therefore we only test if the function signature is 
         # correct. That's not ideal, but because mutation functions
         # have a simple interface it should be sufficient.
-        self.failUnlessResultHasType(ABSetMe, objc._C_VOID)
-        self.failUnlessArgHasType(ABSetMe, 0, _C_ABAddressBookRef)
-        self.failUnlessArgHasType(ABSetMe, 1, _C_ABPersonRef)
+        self.assertResultHasType(ABSetMe, objc._C_VOID)
+        self.assertArgHasType(ABSetMe, 0, _C_ABAddressBookRef)
+        self.assertArgHasType(ABSetMe, 1, _C_ABPersonRef)
 
         name = ABCopyRecordTypeFromUniqueId(ref, ABRecordCopyUniqueId(me))
-        self.failUnlessEqual(name, u'ABPerson')
+        self.assertEqual(name, u'ABPerson')
 
-        self.failUnlessResultHasType(ABAddPropertiesAndTypes, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABAddPropertiesAndTypes, 0, _C_ABAddressBookRef)
-        self.failUnlessArgHasType(ABAddPropertiesAndTypes, 1, _C_CFStringRef)
-        self.failUnlessArgHasType(ABAddPropertiesAndTypes, 2, _C_CFDictionaryRef)
-
-        self.failUnlessResultHasType(ABRemoveProperties, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABRemoveProperties, 0, _C_ABAddressBookRef)
-        self.failUnlessArgHasType(ABRemoveProperties, 1, _C_CFStringRef)
-        self.failUnlessArgHasType(ABRemoveProperties, 2, _C_CFArrayRef)
+        self.assertResultHasType(ABAddPropertiesAndTypes, objc._C_CFIndex)
+        self.assertArgHasType(ABAddPropertiesAndTypes, 0, _C_ABAddressBookRef)
+        self.assertArgHasType(ABAddPropertiesAndTypes, 1, _C_CFStringRef)
+        self.assertArgHasType(ABAddPropertiesAndTypes, 2, _C_CFDictionaryRef)
+
+        self.assertResultHasType(ABRemoveProperties, objc._C_CFIndex)
+        self.assertArgHasType(ABRemoveProperties, 0, _C_ABAddressBookRef)
+        self.assertArgHasType(ABRemoveProperties, 1, _C_CFStringRef)
+        self.assertArgHasType(ABRemoveProperties, 2, _C_CFArrayRef)
 
         v = ABCopyArrayOfPropertiesForRecordType(ref, 'ABPerson')
-        self.failUnlessResultIsCFRetained(ABCopyArrayOfPropertiesForRecordType)
-        self.failUnlessIsInstance(v, CFArrayRef)
-        self.failUnless(len(v))
-        self.failUnlessIsInstance(v[0], unicode)
+        self.assertResultIsCFRetained(ABCopyArrayOfPropertiesForRecordType)
+        self.assertIsInstance(v, CFArrayRef)
+        self.assertTrue(len(v))
+        self.assertIsInstance(v[0], unicode)
 
         v = ABTypeOfProperty(ref, "ABPersion", v[0])
-        self.failUnlessIsInstance(v, (int, long))
+        self.assertIsInstance(v, (int, long))
 
         v = ABCopyRecordForUniqueId(ref, ABRecordCopyUniqueId(me)) 
-        self.failUnlessResultIsCFRetained(ABCopyRecordForUniqueId)
-        self.failUnlessIsInstance(v, ABPersonRef)
+        self.assertResultIsCFRetained(ABCopyRecordForUniqueId)
+        self.assertIsInstance(v, ABPersonRef)
 
 
-        self.failUnlessResultHasType(ABAddRecord, objc._C_BOOL)
-        self.failUnlessArgHasType(ABAddRecord, 0, _C_ABAddressBookRef)
-        self.failUnlessArgHasType(ABAddRecord, 1, objc._C_ID)
+        self.assertResultHasType(ABAddRecord, objc._C_BOOL)
+        self.assertArgHasType(ABAddRecord, 0, _C_ABAddressBookRef)
+        self.assertArgHasType(ABAddRecord, 1, objc._C_ID)
 
-        self.failUnlessResultHasType(ABRemoveRecord, objc._C_BOOL)
-        self.failUnlessArgHasType(ABRemoveRecord, 0, _C_ABAddressBookRef)
-        self.failUnlessArgHasType(ABRemoveRecord, 1, objc._C_ID)
+        self.assertResultHasType(ABRemoveRecord, objc._C_BOOL)
+        self.assertArgHasType(ABRemoveRecord, 0, _C_ABAddressBookRef)
+        self.assertArgHasType(ABRemoveRecord, 1, objc._C_ID)
 
         v = ABCopyArrayOfAllPeople(ref)
-        self.failUnlessResultIsCFRetained(ABCopyArrayOfAllPeople)
-        self.failUnlessIsInstance(v, NSArray)
+        self.assertResultIsCFRetained(ABCopyArrayOfAllPeople)
+        self.assertIsInstance(v, NSArray)
 
         v = ABCopyArrayOfAllGroups(ref)
-        self.failUnlessResultIsCFRetained(ABCopyArrayOfAllGroups)
-        self.failUnlessIsInstance(v, NSArray)
+        self.assertResultIsCFRetained(ABCopyArrayOfAllGroups)
+        self.assertIsInstance(v, NSArray)
 
-        self.failUnlessResultHasType(ABRecordCreateCopy, objc._C_ID)
-        self.failUnlessResultIsCFRetained(ABRecordCreateCopy)
-        self.failUnlessArgHasType(ABRecordCreateCopy, 0, objc._C_ID)
+        self.assertResultHasType(ABRecordCreateCopy, objc._C_ID)
+        self.assertResultIsCFRetained(ABRecordCreateCopy)
+        self.assertArgHasType(ABRecordCreateCopy, 0, objc._C_ID)
 
         v = ABRecordCopyRecordType(me)
-        self.failUnlessResultIsCFRetained(ABRecordCopyRecordType)
-        self.failUnlessIsInstance(v, unicode)
+        self.assertResultIsCFRetained(ABRecordCopyRecordType)
+        self.assertIsInstance(v, unicode)
 
-        self.failUnlessResultHasType(ABRecordCopyValue, objc._C_ID)
-        self.failUnlessArgHasType(ABRecordCopyValue, 0, objc._C_ID)
-        self.failUnlessArgHasType(ABRecordCopyValue, 1, _C_CFStringRef)
+        self.assertResultHasType(ABRecordCopyValue, objc._C_ID)
+        self.assertArgHasType(ABRecordCopyValue, 0, objc._C_ID)
+        self.assertArgHasType(ABRecordCopyValue, 1, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABRecordSetValue, objc._C_BOOL)
-        self.failUnlessArgHasType(ABRecordSetValue, 0, objc._C_ID)
-        self.failUnlessArgHasType(ABRecordSetValue, 1, _C_CFStringRef)
-        self.failUnlessArgHasType(ABRecordSetValue, 2, objc._C_ID)
+        self.assertResultHasType(ABRecordSetValue, objc._C_BOOL)
+        self.assertArgHasType(ABRecordSetValue, 0, objc._C_ID)
+        self.assertArgHasType(ABRecordSetValue, 1, _C_CFStringRef)
+        self.assertArgHasType(ABRecordSetValue, 2, objc._C_ID)
 
-        self.failUnlessResultHasType(ABRecordRemoveValue, objc._C_BOOL)
-        self.failUnlessArgHasType(ABRecordRemoveValue, 0, objc._C_ID)
-        self.failUnlessArgHasType(ABRecordRemoveValue, 1, _C_CFStringRef)
+        self.assertResultHasType(ABRecordRemoveValue, objc._C_BOOL)
+        self.assertArgHasType(ABRecordRemoveValue, 0, objc._C_ID)
+        self.assertArgHasType(ABRecordRemoveValue, 1, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABRecordIsReadOnly, objc._C_BOOL)
-        self.failUnlessArgHasType(ABRecordIsReadOnly, 0, objc._C_ID)
+        self.assertResultHasType(ABRecordIsReadOnly, objc._C_BOOL)
+        self.assertArgHasType(ABRecordIsReadOnly, 0, objc._C_ID)
 
-        self.failUnlessResultHasType(ABRecordCopyUniqueId, _C_CFStringRef)
-        self.failUnlessArgHasType(ABRecordCopyUniqueId, 0, objc._C_ID)
+        self.assertResultHasType(ABRecordCopyUniqueId, _C_CFStringRef)
+        self.assertArgHasType(ABRecordCopyUniqueId, 0, objc._C_ID)
 
-        self.failUnlessResultHasType(ABPersonCreate, _C_ABPersonRef)
+        self.assertResultHasType(ABPersonCreate, _C_ABPersonRef)
 
-        self.failUnlessResultHasType(ABPersonCreateWithVCardRepresentation, _C_ABPersonRef)
-        self.failUnlessArgHasType(ABPersonCreateWithVCardRepresentation, 0, _C_CFDataRef)
+        self.assertResultHasType(ABPersonCreateWithVCardRepresentation, _C_ABPersonRef)
+        self.assertArgHasType(ABPersonCreateWithVCardRepresentation, 0, _C_CFDataRef)
 
-        self.failUnlessResultHasType(ABPersonCopyParentGroups, _C_CFArrayRef)
-        self.failUnlessArgHasType(ABPersonCopyParentGroups, 0, _C_ABPersonRef)
+        self.assertResultHasType(ABPersonCopyParentGroups, _C_CFArrayRef)
+        self.assertArgHasType(ABPersonCopyParentGroups, 0, _C_ABPersonRef)
 
-        self.failUnlessResultHasType(ABPersonCreateSearchElement, _C_ABSearchElementRef)
-        self.failUnlessArgHasType(ABPersonCreateSearchElement, 0, _C_CFStringRef)
-        self.failUnlessArgHasType(ABPersonCreateSearchElement, 1, _C_CFStringRef)
-        self.failUnlessArgHasType(ABPersonCreateSearchElement, 2, _C_CFStringRef)
-        self.failUnlessArgHasType(ABPersonCreateSearchElement, 3, objc._C_ID)
-        self.failUnlessArgHasType(ABPersonCreateSearchElement, 4, objc._C_CFIndex)
+        self.assertResultHasType(ABPersonCreateSearchElement, _C_ABSearchElementRef)
+        self.assertArgHasType(ABPersonCreateSearchElement, 0, _C_CFStringRef)
+        self.assertArgHasType(ABPersonCreateSearchElement, 1, _C_CFStringRef)
+        self.assertArgHasType(ABPersonCreateSearchElement, 2, _C_CFStringRef)
+        self.assertArgHasType(ABPersonCreateSearchElement, 3, objc._C_ID)
+        self.assertArgHasType(ABPersonCreateSearchElement, 4, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABGroupCreate, _C_ABGroupRef)
+        self.assertResultHasType(ABGroupCreate, _C_ABGroupRef)
 
-        self.failUnlessResultHasType(ABGroupCopyArrayOfAllMembers, _C_CFArrayRef)
-        self.failUnlessArgHasType(ABGroupCopyArrayOfAllMembers, 0, _C_ABGroupRef)
+        self.assertResultHasType(ABGroupCopyArrayOfAllMembers, _C_CFArrayRef)
+        self.assertArgHasType(ABGroupCopyArrayOfAllMembers, 0, _C_ABGroupRef)
 
-        self.failUnlessResultHasType(ABGroupAddMember, objc._C_BOOL)
-        self.failUnlessArgHasType(ABGroupAddMember, 0, _C_ABGroupRef)
-        self.failUnlessArgHasType(ABGroupAddMember, 1, _C_ABPersonRef)
+        self.assertResultHasType(ABGroupAddMember, objc._C_BOOL)
+        self.assertArgHasType(ABGroupAddMember, 0, _C_ABGroupRef)
+        self.assertArgHasType(ABGroupAddMember, 1, _C_ABPersonRef)
 
-        self.failUnlessResultHasType(ABGroupRemoveMember, objc._C_BOOL)
-        self.failUnlessArgHasType(ABGroupRemoveMember, 0, _C_ABGroupRef)
-        self.failUnlessArgHasType(ABGroupRemoveMember, 1, _C_ABPersonRef)
+        self.assertResultHasType(ABGroupRemoveMember, objc._C_BOOL)
+        self.assertArgHasType(ABGroupRemoveMember, 0, _C_ABGroupRef)
+        self.assertArgHasType(ABGroupRemoveMember, 1, _C_ABPersonRef)
 
-        self.failUnlessResultHasType(ABGroupCopyArrayOfAllSubgroups, _C_CFArrayRef)
-        self.failUnlessArgHasType(ABGroupCopyArrayOfAllSubgroups, 0, _C_ABGroupRef)
+        self.assertResultHasType(ABGroupCopyArrayOfAllSubgroups, _C_CFArrayRef)
+        self.assertArgHasType(ABGroupCopyArrayOfAllSubgroups, 0, _C_ABGroupRef)
 
-        self.failUnlessResultHasType(ABGroupAddGroup, objc._C_BOOL)
-        self.failUnlessArgHasType(ABGroupAddGroup, 0, _C_ABGroupRef)
-        self.failUnlessArgHasType(ABGroupAddGroup, 1, _C_ABGroupRef)
+        self.assertResultHasType(ABGroupAddGroup, objc._C_BOOL)
+        self.assertArgHasType(ABGroupAddGroup, 0, _C_ABGroupRef)
+        self.assertArgHasType(ABGroupAddGroup, 1, _C_ABGroupRef)
 
-        self.failUnlessResultHasType(ABGroupRemoveGroup, objc._C_BOOL)
-        self.failUnlessArgHasType(ABGroupRemoveGroup, 0, _C_ABGroupRef)
-        self.failUnlessArgHasType(ABGroupRemoveGroup, 1, _C_ABGroupRef)
+        self.assertResultHasType(ABGroupRemoveGroup, objc._C_BOOL)
+        self.assertArgHasType(ABGroupRemoveGroup, 0, _C_ABGroupRef)
+        self.assertArgHasType(ABGroupRemoveGroup, 1, _C_ABGroupRef)
 
-        self.failUnlessResultHasType(ABGroupCopyParentGroups, _C_CFArrayRef)
-        self.failUnlessArgHasType(ABGroupCopyParentGroups, 0, _C_ABGroupRef)
+        self.assertResultHasType(ABGroupCopyParentGroups, _C_CFArrayRef)
+        self.assertArgHasType(ABGroupCopyParentGroups, 0, _C_ABGroupRef)
 
-        self.failUnlessResultHasType(ABGroupSetDistributionIdentifier, objc._C_BOOL)
-        self.failUnlessArgHasType(ABGroupSetDistributionIdentifier, 0, _C_ABGroupRef)
-        self.failUnlessArgHasType(ABGroupSetDistributionIdentifier, 1, _C_ABPersonRef)
-        self.failUnlessArgHasType(ABGroupSetDistributionIdentifier, 2, _C_CFStringRef)
-        self.failUnlessArgHasType(ABGroupSetDistributionIdentifier, 3, _C_CFStringRef)
+        self.assertResultHasType(ABGroupSetDistributionIdentifier, objc._C_BOOL)
+        self.assertArgHasType(ABGroupSetDistributionIdentifier, 0, _C_ABGroupRef)
+        self.assertArgHasType(ABGroupSetDistributionIdentifier, 1, _C_ABPersonRef)
+        self.assertArgHasType(ABGroupSetDistributionIdentifier, 2, _C_CFStringRef)
+        self.assertArgHasType(ABGroupSetDistributionIdentifier, 3, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABGroupCopyDistributionIdentifier, _C_CFStringRef)
-        self.failUnlessArgHasType(ABGroupCopyDistributionIdentifier, 0, _C_ABGroupRef)
-        self.failUnlessArgHasType(ABGroupCopyDistributionIdentifier, 1, _C_ABPersonRef)
-        self.failUnlessArgHasType(ABGroupCopyDistributionIdentifier, 2, _C_CFStringRef)
+        self.assertResultHasType(ABGroupCopyDistributionIdentifier, _C_CFStringRef)
+        self.assertArgHasType(ABGroupCopyDistributionIdentifier, 0, _C_ABGroupRef)
+        self.assertArgHasType(ABGroupCopyDistributionIdentifier, 1, _C_ABPersonRef)
+        self.assertArgHasType(ABGroupCopyDistributionIdentifier, 2, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABGroupCreateSearchElement, _C_ABSearchElementRef)
-        self.failUnlessArgHasType(ABGroupCreateSearchElement, 0, _C_CFStringRef)
-        self.failUnlessArgHasType(ABGroupCreateSearchElement, 1, _C_CFStringRef)
-        self.failUnlessArgHasType(ABGroupCreateSearchElement, 2, _C_CFStringRef)
-        self.failUnlessArgHasType(ABGroupCreateSearchElement, 3, objc._C_ID)
-        self.failUnlessArgHasType(ABGroupCreateSearchElement, 4, objc._C_CFIndex)
+        self.assertResultHasType(ABGroupCreateSearchElement, _C_ABSearchElementRef)
+        self.assertArgHasType(ABGroupCreateSearchElement, 0, _C_CFStringRef)
+        self.assertArgHasType(ABGroupCreateSearchElement, 1, _C_CFStringRef)
+        self.assertArgHasType(ABGroupCreateSearchElement, 2, _C_CFStringRef)
+        self.assertArgHasType(ABGroupCreateSearchElement, 3, objc._C_ID)
+        self.assertArgHasType(ABGroupCreateSearchElement, 4, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABSearchElementCreateWithConjunction, _C_ABSearchElementRef)
-        self.failUnlessArgHasType(ABSearchElementCreateWithConjunction, 0, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABSearchElementCreateWithConjunction, 1, _C_CFArrayRef)
+        self.assertResultHasType(ABSearchElementCreateWithConjunction, _C_ABSearchElementRef)
+        self.assertArgHasType(ABSearchElementCreateWithConjunction, 0, objc._C_CFIndex)
+        self.assertArgHasType(ABSearchElementCreateWithConjunction, 1, _C_CFArrayRef)
 
-        self.failUnlessResultHasType(ABSearchElementMatchesRecord, objc._C_BOOL)
-        self.failUnlessArgHasType(ABSearchElementMatchesRecord, 0, _C_ABSearchElementRef)
-        self.failUnlessArgHasType(ABSearchElementMatchesRecord, 1, objc._C_ID)
+        self.assertResultHasType(ABSearchElementMatchesRecord, objc._C_BOOL)
+        self.assertArgHasType(ABSearchElementMatchesRecord, 0, _C_ABSearchElementRef)
+        self.assertArgHasType(ABSearchElementMatchesRecord, 1, objc._C_ID)
 
-        self.failUnlessResultHasType(ABMultiValueCreate, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValueCreate, _C_ABMultiValueRef)
 
-        self.failUnlessResultHasType(ABMultiValueCount, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABMultiValueCount, 0, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValueCount, objc._C_CFIndex)
+        self.assertArgHasType(ABMultiValueCount, 0, _C_ABMultiValueRef)
 
-        self.failUnlessResultHasType(ABMultiValueCopyValueAtIndex, objc._C_ID)
-        self.failUnlessArgHasType(ABMultiValueCopyValueAtIndex, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueCopyValueAtIndex, 1, objc._C_CFIndex)
+        self.assertResultHasType(ABMultiValueCopyValueAtIndex, objc._C_ID)
+        self.assertArgHasType(ABMultiValueCopyValueAtIndex, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueCopyValueAtIndex, 1, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABMultiValueCopyLabelAtIndex, _C_CFStringRef)
-        self.failUnlessArgHasType(ABMultiValueCopyLabelAtIndex, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueCopyLabelAtIndex, 1, objc._C_CFIndex)
+        self.assertResultHasType(ABMultiValueCopyLabelAtIndex, _C_CFStringRef)
+        self.assertArgHasType(ABMultiValueCopyLabelAtIndex, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueCopyLabelAtIndex, 1, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABMultiValueCopyPrimaryIdentifier, _C_CFStringRef)
-        self.failUnlessArgHasType(ABMultiValueCopyPrimaryIdentifier, 0, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValueCopyPrimaryIdentifier, _C_CFStringRef)
+        self.assertArgHasType(ABMultiValueCopyPrimaryIdentifier, 0, _C_ABMultiValueRef)
 
-        self.failUnlessResultHasType(ABMultiValueIndexForIdentifier, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABMultiValueIndexForIdentifier, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueIndexForIdentifier, 1, _C_CFStringRef)
+        self.assertResultHasType(ABMultiValueIndexForIdentifier, objc._C_CFIndex)
+        self.assertArgHasType(ABMultiValueIndexForIdentifier, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueIndexForIdentifier, 1, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABMultiValueCopyIdentifierAtIndex, _C_CFStringRef)
-        self.failUnlessArgHasType(ABMultiValueCopyIdentifierAtIndex, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueCopyIdentifierAtIndex, 1, objc._C_CFIndex)
+        self.assertResultHasType(ABMultiValueCopyIdentifierAtIndex, _C_CFStringRef)
+        self.assertArgHasType(ABMultiValueCopyIdentifierAtIndex, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueCopyIdentifierAtIndex, 1, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABMultiValuePropertyType, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABMultiValuePropertyType, 0, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValuePropertyType, objc._C_CFIndex)
+        self.assertArgHasType(ABMultiValuePropertyType, 0, _C_ABMultiValueRef)
 
-        self.failUnlessResultHasType(ABMultiValueCreateCopy, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueCreateCopy, 0, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValueCreateCopy, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueCreateCopy, 0, _C_ABMultiValueRef)
 
-        self.failUnlessResultHasType(ABMultiValueCreateMutable, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValueCreateMutable, _C_ABMultiValueRef)
 
 
-        self.failUnlessResultHasType(ABMultiValueAdd, objc._C_BOOL)
-        self.failUnlessArgHasType(ABMultiValueAdd, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueAdd, 1, objc._C_ID)
-        self.failUnlessArgHasType(ABMultiValueAdd, 2, _C_CFStringRef)
-        self.failUnlessArgHasType(ABMultiValueAdd, 3, objc._C_OUT + _C_CFStringRefPtr)
+        self.assertResultHasType(ABMultiValueAdd, objc._C_BOOL)
+        self.assertArgHasType(ABMultiValueAdd, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueAdd, 1, objc._C_ID)
+        self.assertArgHasType(ABMultiValueAdd, 2, _C_CFStringRef)
+        self.assertArgHasType(ABMultiValueAdd, 3, objc._C_OUT + _C_CFStringRefPtr)
 
-        self.failUnlessResultHasType(ABMultiValueInsert, objc._C_BOOL)
-        self.failUnlessArgHasType(ABMultiValueInsert, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueInsert, 1, objc._C_ID)
-        self.failUnlessArgHasType(ABMultiValueInsert, 2, _C_CFStringRef)
-        self.failUnlessArgHasType(ABMultiValueInsert, 3, objc._C_CFIndex)
-        self.failUnlessArgHasType(ABMultiValueInsert, 4, objc._C_OUT + _C_CFStringRefPtr)
+        self.assertResultHasType(ABMultiValueInsert, objc._C_BOOL)
+        self.assertArgHasType(ABMultiValueInsert, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueInsert, 1, objc._C_ID)
+        self.assertArgHasType(ABMultiValueInsert, 2, _C_CFStringRef)
+        self.assertArgHasType(ABMultiValueInsert, 3, objc._C_CFIndex)
+        self.assertArgHasType(ABMultiValueInsert, 4, objc._C_OUT + _C_CFStringRefPtr)
 
-        self.failUnlessResultHasType(ABMultiValueRemove, objc._C_BOOL)
-        self.failUnlessArgHasType(ABMultiValueRemove, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueRemove, 1, objc._C_CFIndex)
+        self.assertResultHasType(ABMultiValueRemove, objc._C_BOOL)
+        self.assertArgHasType(ABMultiValueRemove, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueRemove, 1, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABMultiValueReplaceValue, objc._C_BOOL)
-        self.failUnlessArgHasType(ABMultiValueReplaceValue, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueReplaceValue, 1, objc._C_ID)
-        self.failUnlessArgHasType(ABMultiValueReplaceValue, 2, objc._C_CFIndex)
+        self.assertResultHasType(ABMultiValueReplaceValue, objc._C_BOOL)
+        self.assertArgHasType(ABMultiValueReplaceValue, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueReplaceValue, 1, objc._C_ID)
+        self.assertArgHasType(ABMultiValueReplaceValue, 2, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABMultiValueReplaceLabel, objc._C_BOOL)
-        self.failUnlessArgHasType(ABMultiValueReplaceLabel, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueReplaceLabel, 1, _C_CFStringRef)
-        self.failUnlessArgHasType(ABMultiValueReplaceLabel, 2, objc._C_CFIndex)
+        self.assertResultHasType(ABMultiValueReplaceLabel, objc._C_BOOL)
+        self.assertArgHasType(ABMultiValueReplaceLabel, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueReplaceLabel, 1, _C_CFStringRef)
+        self.assertArgHasType(ABMultiValueReplaceLabel, 2, objc._C_CFIndex)
 
-        self.failUnlessResultHasType(ABMultiValueSetPrimaryIdentifier, objc._C_BOOL)
-        self.failUnlessArgHasType(ABMultiValueSetPrimaryIdentifier, 0, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueSetPrimaryIdentifier, 1, _C_CFStringRef)
+        self.assertResultHasType(ABMultiValueSetPrimaryIdentifier, objc._C_BOOL)
+        self.assertArgHasType(ABMultiValueSetPrimaryIdentifier, 0, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueSetPrimaryIdentifier, 1, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABMultiValueCreateMutableCopy, _C_ABMultiValueRef)
-        self.failUnlessArgHasType(ABMultiValueCreateMutableCopy, 0, _C_ABMultiValueRef)
+        self.assertResultHasType(ABMultiValueCreateMutableCopy, _C_ABMultiValueRef)
+        self.assertArgHasType(ABMultiValueCreateMutableCopy, 0, _C_ABMultiValueRef)
 
-        self.failUnlessResultHasType(ABCopyLocalizedPropertyOrLabel, _C_CFStringRef)
-        self.failUnlessArgHasType(ABCopyLocalizedPropertyOrLabel, 0, _C_CFStringRef)
+        self.assertResultHasType(ABCopyLocalizedPropertyOrLabel, _C_CFStringRef)
+        self.assertArgHasType(ABCopyLocalizedPropertyOrLabel, 0, _C_CFStringRef)
 
-        self.failUnlessResultHasType(ABCreateFormattedAddressFromDictionary, _C_CFStringRef)
-        self.failUnlessArgHasType(ABCreateFormattedAddressFromDictionary, 0, _C_ABAddressBookRef)
-        self.failUnlessArgHasType(ABCreateFormattedAddressFromDictionary, 1, _C_CFDictionaryRef)
+        self.assertResultHasType(ABCreateFormattedAddressFromDictionary, _C_CFStringRef)
+        self.assertArgHasType(ABCreateFormattedAddressFromDictionary, 0, _C_ABAddressBookRef)
+        self.assertArgHasType(ABCreateFormattedAddressFromDictionary, 1, _C_CFDictionaryRef)
 
-        self.failUnlessResultHasType(ABCopyDefaultCountryCode, _C_CFStringRef)
-        self.failUnlessArgHasType(ABCopyDefaultCountryCode, 0, _C_ABAddressBookRef)
+        self.assertResultHasType(ABCopyDefaultCountryCode, _C_CFStringRef)
+        self.assertArgHasType(ABCopyDefaultCountryCode, 0, _C_ABAddressBookRef)
 
-        self.failUnlessResultHasType(ABPersonSetImageData, objc._C_BOOL)
-        self.failUnlessArgHasType(ABPersonSetImageData, 0, _C_ABPersonRef)
-        self.failUnlessArgHasType(ABPersonSetImageData, 1, _C_CFDataRef)
+        self.assertResultHasType(ABPersonSetImageData, objc._C_BOOL)
+        self.assertArgHasType(ABPersonSetImageData, 0, _C_ABPersonRef)
+        self.assertArgHasType(ABPersonSetImageData, 1, _C_CFDataRef)
 
-        self.failUnlessResultHasType(ABPersonCopyImageData, _C_CFDataRef)
-        self.failUnlessArgHasType(ABPersonCopyImageData, 0, _C_ABPersonRef)
+        self.assertResultHasType(ABPersonCopyImageData, _C_CFDataRef)
+        self.assertArgHasType(ABPersonCopyImageData, 0, _C_ABPersonRef)
 
         r = []
 
@@ -276,7 +276,7 @@
             r.append((imageData, tag, refcon))
 
         idx = ABBeginLoadingImageDataForClient(me, callback, 99)
-        self.failUnlessIsInstance(idx, (int, long))
+        self.assertIsInstance(idx, (int, long))
 
         #CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0, True)
         ABCancelLoadingImageDataForTag(idx)

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abglobals.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abglobals.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abglobals.py	Thu Apr  1 10:00:41 2010
@@ -5,108 +5,108 @@
 class TestABGlobals (TestCase):
     @min_os_level('10.5')
     def testConstants10_5(self):
-          self.failUnlessIsInstance(kABCalendarURIsProperty, unicode)
+          self.assertIsInstance(kABCalendarURIsProperty, unicode)
 
     @min_os_level('10.6')
     def testConstants10_6(self):
-          self.failUnlessIsInstance(kABPhoneiPhoneLabel, unicode)
-          self.failUnlessEqual(kABShowAsResource, 2)
-          self.failUnlessEqual(kABShowAsRoom, 3)
+          self.assertIsInstance(kABPhoneiPhoneLabel, unicode)
+          self.assertEqual(kABShowAsResource, 2)
+          self.assertEqual(kABShowAsRoom, 3)
 
     def testConstants(self):
-        self.failUnlessEqual(kABShowAsMask, 07)
-        self.failUnlessEqual(kABShowAsPerson, 00)
-        self.failUnlessEqual(kABShowAsCompany, 01)
-        self.failUnlessEqual(kABNameOrderingMask, 070)
-        self.failUnlessEqual(kABDefaultNameOrdering, 0)
-        self.failUnlessEqual(kABFirstNameFirst, 040)
-        self.failUnlessEqual(kABLastNameFirst, 020)
-
-
-        self.failUnlessIsInstance(kABUIDProperty, unicode)
-        self.failUnlessIsInstance(kABCreationDateProperty, unicode)
-        self.failUnlessIsInstance(kABModificationDateProperty, unicode)
-        self.failUnlessIsInstance(kABFirstNameProperty, unicode)
-        self.failUnlessIsInstance(kABLastNameProperty, unicode)
-        self.failUnlessIsInstance(kABFirstNamePhoneticProperty, unicode)
-        self.failUnlessIsInstance(kABLastNamePhoneticProperty, unicode)
-        self.failUnlessIsInstance(kABNicknameProperty, unicode)
-        self.failUnlessIsInstance(kABMaidenNameProperty, unicode)
-        self.failUnlessIsInstance(kABBirthdayProperty, unicode)
-        self.failUnlessIsInstance(kABOrganizationProperty, unicode)
-        self.failUnlessIsInstance(kABJobTitleProperty, unicode)
-        self.failUnlessIsInstance(kABHomePageProperty, unicode)
-        self.failUnlessIsInstance(kABURLsProperty, unicode)
-        self.failUnlessIsInstance(kABHomePageLabel, unicode)
-        self.failUnlessIsInstance(kABEmailProperty, unicode)
-        self.failUnlessIsInstance(kABEmailWorkLabel, unicode)
-        self.failUnlessIsInstance(kABEmailHomeLabel, unicode)
-        self.failUnlessIsInstance(kABAddressProperty, unicode)
-        self.failUnlessIsInstance(kABAddressStreetKey, unicode)
-        self.failUnlessIsInstance(kABAddressCityKey, unicode)
-        self.failUnlessIsInstance(kABAddressStateKey, unicode)
-        self.failUnlessIsInstance(kABAddressZIPKey, unicode)
-        self.failUnlessIsInstance(kABAddressCountryKey, unicode)
-        self.failUnlessIsInstance(kABAddressCountryCodeKey, unicode)
-        self.failUnlessIsInstance(kABAddressHomeLabel, unicode)
-        self.failUnlessIsInstance(kABAddressWorkLabel, unicode)
-        self.failUnlessIsInstance(kABOtherDatesProperty, unicode)
-        self.failUnlessIsInstance(kABAnniversaryLabel, unicode)
-        self.failUnlessIsInstance(kABRelatedNamesProperty, unicode)
-        self.failUnlessIsInstance(kABFatherLabel, unicode)
-        self.failUnlessIsInstance(kABMotherLabel, unicode)
-        self.failUnlessIsInstance(kABParentLabel, unicode)
-        self.failUnlessIsInstance(kABBrotherLabel, unicode)
-        self.failUnlessIsInstance(kABSisterLabel, unicode)
-        self.failUnlessIsInstance(kABChildLabel, unicode)
-        self.failUnlessIsInstance(kABFriendLabel, unicode)
-        self.failUnlessIsInstance(kABSpouseLabel, unicode)
-        self.failUnlessIsInstance(kABPartnerLabel, unicode)
-        self.failUnlessIsInstance(kABAssistantLabel, unicode)
-        self.failUnlessIsInstance(kABManagerLabel, unicode)
-        self.failUnlessIsInstance(kABDepartmentProperty, unicode)
-        self.failUnlessIsInstance(kABPersonFlags, unicode)
-        self.failUnlessIsInstance(kABPhoneProperty, unicode)
-        self.failUnlessIsInstance(kABPhoneWorkLabel, unicode)
-        self.failUnlessIsInstance(kABPhoneHomeLabel, unicode)
-        self.failUnlessIsInstance(kABPhoneMobileLabel, unicode)
-        self.failUnlessIsInstance(kABPhoneMainLabel, unicode)
-        self.failUnlessIsInstance(kABPhoneHomeFAXLabel, unicode)
-        self.failUnlessIsInstance(kABPhoneWorkFAXLabel, unicode)
-        self.failUnlessIsInstance(kABPhonePagerLabel, unicode)
-        self.failUnlessIsInstance(kABAIMInstantProperty, unicode)
-        self.failUnlessIsInstance(kABAIMWorkLabel, unicode)
-        self.failUnlessIsInstance(kABAIMHomeLabel, unicode)
-        self.failUnlessIsInstance(kABJabberInstantProperty, unicode)
-        self.failUnlessIsInstance(kABJabberWorkLabel, unicode)
-        self.failUnlessIsInstance(kABJabberHomeLabel, unicode)
-        self.failUnlessIsInstance(kABMSNInstantProperty, unicode)
-        self.failUnlessIsInstance(kABMSNWorkLabel, unicode)
-        self.failUnlessIsInstance(kABMSNHomeLabel, unicode)
-        self.failUnlessIsInstance(kABYahooInstantProperty, unicode)
-        self.failUnlessIsInstance(kABYahooWorkLabel, unicode)
-        self.failUnlessIsInstance(kABYahooHomeLabel, unicode)
-        self.failUnlessIsInstance(kABICQInstantProperty, unicode)
-        self.failUnlessIsInstance(kABICQWorkLabel, unicode)
-        self.failUnlessIsInstance(kABICQHomeLabel, unicode)
-        self.failUnlessIsInstance(kABNoteProperty, unicode)
-        self.failUnlessIsInstance(kABMiddleNameProperty, unicode)
-        self.failUnlessIsInstance(kABMiddleNamePhoneticProperty, unicode)
-        self.failUnlessIsInstance(kABTitleProperty, unicode)
-        self.failUnlessIsInstance(kABSuffixProperty, unicode)
-        self.failUnlessIsInstance(kABGroupNameProperty, unicode)
-        self.failUnlessIsInstance(kABWorkLabel, unicode)
-        self.failUnlessIsInstance(kABHomeLabel, unicode)
-        self.failUnlessIsInstance(kABOtherLabel, unicode)
-        self.failUnlessIsInstance(kABDatabaseChangedNotification, unicode)
-        self.failUnlessIsInstance(kABDatabaseChangedExternallyNotification, unicode)
-        self.failUnlessIsInstance(kABInsertedRecords, unicode)
-        self.failUnlessIsInstance(kABUpdatedRecords, unicode)
-        self.failUnlessIsInstance(kABDeletedRecords, unicode)
+        self.assertEqual(kABShowAsMask, 07)
+        self.assertEqual(kABShowAsPerson, 00)
+        self.assertEqual(kABShowAsCompany, 01)
+        self.assertEqual(kABNameOrderingMask, 070)
+        self.assertEqual(kABDefaultNameOrdering, 0)
+        self.assertEqual(kABFirstNameFirst, 040)
+        self.assertEqual(kABLastNameFirst, 020)
+
+
+        self.assertIsInstance(kABUIDProperty, unicode)
+        self.assertIsInstance(kABCreationDateProperty, unicode)
+        self.assertIsInstance(kABModificationDateProperty, unicode)
+        self.assertIsInstance(kABFirstNameProperty, unicode)
+        self.assertIsInstance(kABLastNameProperty, unicode)
+        self.assertIsInstance(kABFirstNamePhoneticProperty, unicode)
+        self.assertIsInstance(kABLastNamePhoneticProperty, unicode)
+        self.assertIsInstance(kABNicknameProperty, unicode)
+        self.assertIsInstance(kABMaidenNameProperty, unicode)
+        self.assertIsInstance(kABBirthdayProperty, unicode)
+        self.assertIsInstance(kABOrganizationProperty, unicode)
+        self.assertIsInstance(kABJobTitleProperty, unicode)
+        self.assertIsInstance(kABHomePageProperty, unicode)
+        self.assertIsInstance(kABURLsProperty, unicode)
+        self.assertIsInstance(kABHomePageLabel, unicode)
+        self.assertIsInstance(kABEmailProperty, unicode)
+        self.assertIsInstance(kABEmailWorkLabel, unicode)
+        self.assertIsInstance(kABEmailHomeLabel, unicode)
+        self.assertIsInstance(kABAddressProperty, unicode)
+        self.assertIsInstance(kABAddressStreetKey, unicode)
+        self.assertIsInstance(kABAddressCityKey, unicode)
+        self.assertIsInstance(kABAddressStateKey, unicode)
+        self.assertIsInstance(kABAddressZIPKey, unicode)
+        self.assertIsInstance(kABAddressCountryKey, unicode)
+        self.assertIsInstance(kABAddressCountryCodeKey, unicode)
+        self.assertIsInstance(kABAddressHomeLabel, unicode)
+        self.assertIsInstance(kABAddressWorkLabel, unicode)
+        self.assertIsInstance(kABOtherDatesProperty, unicode)
+        self.assertIsInstance(kABAnniversaryLabel, unicode)
+        self.assertIsInstance(kABRelatedNamesProperty, unicode)
+        self.assertIsInstance(kABFatherLabel, unicode)
+        self.assertIsInstance(kABMotherLabel, unicode)
+        self.assertIsInstance(kABParentLabel, unicode)
+        self.assertIsInstance(kABBrotherLabel, unicode)
+        self.assertIsInstance(kABSisterLabel, unicode)
+        self.assertIsInstance(kABChildLabel, unicode)
+        self.assertIsInstance(kABFriendLabel, unicode)
+        self.assertIsInstance(kABSpouseLabel, unicode)
+        self.assertIsInstance(kABPartnerLabel, unicode)
+        self.assertIsInstance(kABAssistantLabel, unicode)
+        self.assertIsInstance(kABManagerLabel, unicode)
+        self.assertIsInstance(kABDepartmentProperty, unicode)
+        self.assertIsInstance(kABPersonFlags, unicode)
+        self.assertIsInstance(kABPhoneProperty, unicode)
+        self.assertIsInstance(kABPhoneWorkLabel, unicode)
+        self.assertIsInstance(kABPhoneHomeLabel, unicode)
+        self.assertIsInstance(kABPhoneMobileLabel, unicode)
+        self.assertIsInstance(kABPhoneMainLabel, unicode)
+        self.assertIsInstance(kABPhoneHomeFAXLabel, unicode)
+        self.assertIsInstance(kABPhoneWorkFAXLabel, unicode)
+        self.assertIsInstance(kABPhonePagerLabel, unicode)
+        self.assertIsInstance(kABAIMInstantProperty, unicode)
+        self.assertIsInstance(kABAIMWorkLabel, unicode)
+        self.assertIsInstance(kABAIMHomeLabel, unicode)
+        self.assertIsInstance(kABJabberInstantProperty, unicode)
+        self.assertIsInstance(kABJabberWorkLabel, unicode)
+        self.assertIsInstance(kABJabberHomeLabel, unicode)
+        self.assertIsInstance(kABMSNInstantProperty, unicode)
+        self.assertIsInstance(kABMSNWorkLabel, unicode)
+        self.assertIsInstance(kABMSNHomeLabel, unicode)
+        self.assertIsInstance(kABYahooInstantProperty, unicode)
+        self.assertIsInstance(kABYahooWorkLabel, unicode)
+        self.assertIsInstance(kABYahooHomeLabel, unicode)
+        self.assertIsInstance(kABICQInstantProperty, unicode)
+        self.assertIsInstance(kABICQWorkLabel, unicode)
+        self.assertIsInstance(kABICQHomeLabel, unicode)
+        self.assertIsInstance(kABNoteProperty, unicode)
+        self.assertIsInstance(kABMiddleNameProperty, unicode)
+        self.assertIsInstance(kABMiddleNamePhoneticProperty, unicode)
+        self.assertIsInstance(kABTitleProperty, unicode)
+        self.assertIsInstance(kABSuffixProperty, unicode)
+        self.assertIsInstance(kABGroupNameProperty, unicode)
+        self.assertIsInstance(kABWorkLabel, unicode)
+        self.assertIsInstance(kABHomeLabel, unicode)
+        self.assertIsInstance(kABOtherLabel, unicode)
+        self.assertIsInstance(kABDatabaseChangedNotification, unicode)
+        self.assertIsInstance(kABDatabaseChangedExternallyNotification, unicode)
+        self.assertIsInstance(kABInsertedRecords, unicode)
+        self.assertIsInstance(kABUpdatedRecords, unicode)
+        self.assertIsInstance(kABDeletedRecords, unicode)
 
     def testFunctions(self):
         v = ABLocalizedPropertyOrLabel(kABAssistantLabel)
-        self.failUnlessIsInstance(v, unicode)
+        self.assertIsInstance(v, unicode)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerc.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerc.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerc.py	Thu Apr  1 10:00:41 2010
@@ -4,101 +4,101 @@
 
 class TestABPeoplePickerC (TestCase):
     def testConstants(self):
-        self.failUnlessEqual(kABPickerSingleValueSelection, 1 << 0)
-        self.failUnlessEqual(kABPickerMultipleValueSelection, 1 << 1)
-        self.failUnlessEqual(kABPickerAllowGroupSelection, 1 << 2)
-        self.failUnlessEqual(kABPickerAllowMultipleSelection, 1 << 3)
-        self.failUnlessEqual(kEventClassABPeoplePicker, fourcc('abpp'))
-        self.failUnlessEqual(kEventParamABPickerRef,  fourcc('abpp'))
-        self.failUnlessEqual(kEventABPeoplePickerGroupSelectionChanged, 1)
-        self.failUnlessEqual(kEventABPeoplePickerNameSelectionChanged, 2)
-        self.failUnlessEqual(kEventABPeoplePickerValueSelectionChanged, 3)
-        self.failUnlessEqual(kEventABPeoplePickerDisplayedPropertyChanged, 4)
-        self.failUnlessEqual(kEventABPeoplePickerGroupDoubleClicked, 5)
-        self.failUnlessEqual(kEventABPeoplePickerNameDoubleClicked, 6)
+        self.assertEqual(kABPickerSingleValueSelection, 1 << 0)
+        self.assertEqual(kABPickerMultipleValueSelection, 1 << 1)
+        self.assertEqual(kABPickerAllowGroupSelection, 1 << 2)
+        self.assertEqual(kABPickerAllowMultipleSelection, 1 << 3)
+        self.assertEqual(kEventClassABPeoplePicker, fourcc(b'abpp'))
+        self.assertEqual(kEventParamABPickerRef,  fourcc(b'abpp'))
+        self.assertEqual(kEventABPeoplePickerGroupSelectionChanged, 1)
+        self.assertEqual(kEventABPeoplePickerNameSelectionChanged, 2)
+        self.assertEqual(kEventABPeoplePickerValueSelectionChanged, 3)
+        self.assertEqual(kEventABPeoplePickerDisplayedPropertyChanged, 4)
+        self.assertEqual(kEventABPeoplePickerGroupDoubleClicked, 5)
+        self.assertEqual(kEventABPeoplePickerNameDoubleClicked, 6)
 
 
     def testType(self):
-        self.failUnlessIsInstance(ABPickerRef, objc.objc_class)
+        self.assertIsInstance(ABPickerRef, objc.objc_class)
 
     def testFunctions(self):
-        self.failUnlessResultIsCFRetained(ABPickerCreate)
+        self.assertResultIsCFRetained(ABPickerCreate)
         ref = ABPickerCreate()
         try:
-            self.failUnlessIsInstance(ref, (ABPickerRef, objc.lookUpClass('ABPeoplePickerCAdapter')))
+            self.assertIsInstance(ref, (ABPickerRef, objc.lookUpClass('ABPeoplePickerCAdapter')))
 
         except objc.error:
-            self.failUnlessIsInstance(ref, ABPickerRef)
+            self.assertIsInstance(ref, ABPickerRef)
 
         ABPickerSetFrame(ref, ((90, 100), (200, 400)))
         r = ABPickerGetFrame(ref, None)
-        self.failUnlessIsInstance(r, tuple)
-        self.failUnlessEqual(r, ((90, 100), (200, 400)))
+        self.assertIsInstance(r, tuple)
+        self.assertEqual(r, ((90, 100), (200, 400)))
 
-        self.failUnlessResultHasType(ABPickerIsVisible, objc._C_BOOL)
+        self.assertResultHasType(ABPickerIsVisible, objc._C_BOOL)
         r = ABPickerIsVisible(ref)
-        self.failUnlessIsInstance(r, bool)
-        self.failUnless(r is False)
+        self.assertIsInstance(r, bool)
+        self.assertTrue(r is False)
 
-        self.failUnlessArgHasType(ABPickerSetVisibility, 1, objc._C_BOOL)
+        self.assertArgHasType(ABPickerSetVisibility, 1, objc._C_BOOL)
         ABPickerSetVisibility(ref, True)
 
         r = ABPickerIsVisible(ref)
-        self.failUnless(r is True)
+        self.assertTrue(r is True)
 
         ABPickerSetVisibility(ref, False)
 
         r = ABPickerIsVisible(ref)
-        self.failUnless(r is False)
+        self.assertTrue(r is False)
 
         r = ABPickerGetAttributes(ref)
-        self.failUnlessIsInstance(r, (int, long))
+        self.assertIsInstance(r, (int, long))
 
         r = ABPickerChangeAttributes(ref, kABPickerAllowMultipleSelection, 0)
-        self.failUnless(r is None)
+        self.assertTrue(r is None)
 
         ABPickerAddProperty(ref, kABFirstNameProperty)
         ABPickerAddProperty(ref, kABLastNameProperty)
         ABPickerRemoveProperty(ref, kABFirstNameProperty)
 
         v = ABPickerCopyProperties(ref)
-        self.failUnlessIsInstance(v, CFArrayRef)
-        self.failUnlessEqual(tuple(v), (kABLastNameProperty,))
+        self.assertIsInstance(v, CFArrayRef)
+        self.assertEqual(tuple(v), (kABLastNameProperty,))
 
         ABPickerSetColumnTitle(ref, u"Achternaam", kABLastNameProperty)
         v = ABPickerCopyColumnTitle(ref, kABLastNameProperty)
-        self.failUnlessResultIsCFRetained(ABPickerCopyColumnTitle)
-        self.failUnlessEqual(v, u"Achternaam")
+        self.assertResultIsCFRetained(ABPickerCopyColumnTitle)
+        self.assertEqual(v, u"Achternaam")
 
         ABPickerSetDisplayedProperty(ref, kABLastNameProperty)
         v = ABPickerCopyDisplayedProperty(ref)
-        self.failUnlessResultIsCFRetained(ABPickerCopyDisplayedProperty)
-        self.failUnlessIsInstance(v, unicode)
+        self.assertResultIsCFRetained(ABPickerCopyDisplayedProperty)
+        self.assertIsInstance(v, unicode)
 
         v = ABPickerCopySelectedGroups(ref)
-        self.failUnlessIsInstance(v, CFArrayRef)
+        self.assertIsInstance(v, CFArrayRef)
 
         v = ABPickerCopySelectedRecords(ref)
-        self.failUnlessIsInstance(v, CFArrayRef)
+        self.assertIsInstance(v, CFArrayRef)
 
         v = ABPickerCopySelectedIdentifiers(ref, ABGetMe(ABGetSharedAddressBook()))
         if v is not None:
-            self.failUnlessIsInstance(v, CFArrayRef)
+            self.assertIsInstance(v, CFArrayRef)
 
         v = ABPickerCopySelectedValues(ref)
-        self.failUnlessIsInstance(v, CFArrayRef)
+        self.assertIsInstance(v, CFArrayRef)
 
         grp = ABCopyArrayOfAllGroups(ABGetSharedAddressBook())[0]
         usr = ABGetMe(ABGetSharedAddressBook())
 
         ABPickerSelectGroup(ref, grp, True)
-        self.failUnlessArgHasType(ABPickerSelectGroup, 2, objc._C_BOOL)
+        self.assertArgHasType(ABPickerSelectGroup, 2, objc._C_BOOL)
 
         ABPickerSelectRecord(ref, usr, False)
-        self.failUnlessArgHasType(ABPickerSelectRecord, 2, objc._C_BOOL)
+        self.assertArgHasType(ABPickerSelectRecord, 2, objc._C_BOOL)
 
         ABPickerSelectIdentifier(ref, usr, "Last", False) #ABRecordCopyUniqueId(usr), False)
-        self.failUnlessArgHasType(ABPickerSelectIdentifier, 3, objc._C_BOOL)
+        self.assertArgHasType(ABPickerSelectIdentifier, 3, objc._C_BOOL)
 
         ABPickerDeselectIdentifier(ref, usr, u"Last")
 
@@ -114,8 +114,8 @@
             ABPickerEditInAddressBook(ref)
             ABPickerSelectInAddressBook(ref)
         else:
-            self.failUnlessResultHasType(ABPickerEditInAddressBook, objc._C_VOID)
-            self.failUnlessResultHasType(ABPickerSelectInAddressBook, objc._C_VOID)
+            self.assertResultHasType(ABPickerEditInAddressBook, objc._C_VOID)
+            self.assertResultHasType(ABPickerSelectInAddressBook, objc._C_VOID)
 
         r = ABPickerGetDelegate(ref)
 

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerview.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerview.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abpeoplepickerview.py	Thu Apr  1 10:00:41 2010
@@ -4,19 +4,19 @@
 
 class TestABPeoplePickerView (TestCase):
     def testConstants(self):
-        self.failUnlessEqual(ABNoValueSelection, 0)
-        self.failUnlessEqual(ABSingleValueSelection, 1)
-        self.failUnlessEqual(ABMultipleValueSelection, 2)
+        self.assertEqual(ABNoValueSelection, 0)
+        self.assertEqual(ABSingleValueSelection, 1)
+        self.assertEqual(ABMultipleValueSelection, 2)
 
-        self.failUnlessIsInstance(ABPeoplePickerGroupSelectionDidChangeNotification, unicode)
-        self.failUnlessIsInstance(ABPeoplePickerNameSelectionDidChangeNotification, unicode)
-        self.failUnlessIsInstance(ABPeoplePickerValueSelectionDidChangeNotification, unicode)
-        self.failUnlessIsInstance(ABPeoplePickerDisplayedPropertyDidChangeNotification, unicode)
+        self.assertIsInstance(ABPeoplePickerGroupSelectionDidChangeNotification, unicode)
+        self.assertIsInstance(ABPeoplePickerNameSelectionDidChangeNotification, unicode)
+        self.assertIsInstance(ABPeoplePickerValueSelectionDidChangeNotification, unicode)
+        self.assertIsInstance(ABPeoplePickerDisplayedPropertyDidChangeNotification, unicode)
 
     def testMethods(self):
-        self.failUnlessArgIsBOOL(ABPeoplePickerView.selectGroup_byExtendingSelection_, 1)
-        self.failUnlessArgIsBOOL(ABPeoplePickerView.selectRecord_byExtendingSelection_, 1)
-        self.failUnlessArgIsBOOL(ABPeoplePickerView.selectIdentifier_forPerson_byExtendingSelection_, 2)
+        self.assertArgIsBOOL(ABPeoplePickerView.selectGroup_byExtendingSelection_, 1)
+        self.assertArgIsBOOL(ABPeoplePickerView.selectRecord_byExtendingSelection_, 1)
+        self.assertArgIsBOOL(ABPeoplePickerView.selectIdentifier_forPerson_byExtendingSelection_, 2)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abrecord.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abrecord.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abrecord.py	Thu Apr  1 10:00:41 2010
@@ -4,9 +4,9 @@
 
 class TestABRecord (TestCase):
     def testMethods(self):
-        self.failUnlessResultIsBOOL(ABRecord.setValue_forProperty_)
-        self.failUnlessResultIsBOOL(ABRecord.removeValueForProperty_)
-        self.failUnlessResultIsBOOL(ABRecord.isReadOnly)
+        self.assertResultIsBOOL(ABRecord.setValue_forProperty_)
+        self.assertResultIsBOOL(ABRecord.removeValueForProperty_)
+        self.assertResultIsBOOL(ABRecord.isReadOnly)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_absearchelement.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_absearchelement.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_absearchelement.py	Thu Apr  1 10:00:41 2010
@@ -4,7 +4,7 @@
 
 class TestABSearchElement (TestCase):
     def testMethods(self):
-        self.failUnlessResultIsBOOL(ABSearchElement.matchesRecord_)
+        self.assertResultIsBOOL(ABSearchElement.matchesRecord_)
 
 if __name__ == "__main__":
     main()

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abtypedefs.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abtypedefs.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/PyObjCTest/test_abtypedefs.py	Thu Apr  1 10:00:41 2010
@@ -4,52 +4,52 @@
 
 class TestABTypedefs (TestCase):
     def testConstants(self):
-        self.failUnlessEqual(kABMultiValueMask, 0x100)
+        self.assertEqual(kABMultiValueMask, 0x100)
 
-        self.failUnlessEqual(kABErrorInProperty, 0x0)
-        self.failUnlessEqual(kABStringProperty, 0x1)
-        self.failUnlessEqual(kABIntegerProperty, 0x2)
-        self.failUnlessEqual(kABRealProperty, 0x3)
-        self.failUnlessEqual(kABDateProperty, 0x4)
-        self.failUnlessEqual(kABArrayProperty, 0x5)
-        self.failUnlessEqual(kABDictionaryProperty, 0x6)
-        self.failUnlessEqual(kABDataProperty, 0x7)
-        self.failUnlessEqual(kABMultiStringProperty, kABMultiValueMask | kABStringProperty)
-        self.failUnlessEqual(kABMultiIntegerProperty, kABMultiValueMask | kABIntegerProperty)
-        self.failUnlessEqual(kABMultiRealProperty, kABMultiValueMask | kABRealProperty)
-        self.failUnlessEqual(kABMultiDateProperty, kABMultiValueMask | kABDateProperty)
-        self.failUnlessEqual(kABMultiArrayProperty, kABMultiValueMask | kABArrayProperty)
-        self.failUnlessEqual(kABMultiDictionaryProperty, kABMultiValueMask | kABDictionaryProperty)
-        self.failUnlessEqual(kABMultiDataProperty, kABMultiValueMask | kABDataProperty)
-
-        self.failUnlessEqual(kABEqual, 0)
-        self.failUnlessEqual(kABNotEqual, 1)
-        self.failUnlessEqual(kABLessThan, 2)
-        self.failUnlessEqual(kABLessThanOrEqual, 3)
-        self.failUnlessEqual(kABGreaterThan, 4)
-        self.failUnlessEqual(kABGreaterThanOrEqual, 5)
-        self.failUnlessEqual(kABEqualCaseInsensitive, 6)
-        self.failUnlessEqual(kABContainsSubString, 7)
-        self.failUnlessEqual(kABContainsSubStringCaseInsensitive, 8)
-        self.failUnlessEqual(kABPrefixMatch, 9)
-        self.failUnlessEqual(kABPrefixMatchCaseInsensitive, 10)
-        self.failUnlessEqual(kABBitsInBitFieldMatch, 11)
-        self.failUnlessEqual(kABDoesNotContainSubString, 12)
-        self.failUnlessEqual(kABDoesNotContainSubStringCaseInsensitive, 13)
-        self.failUnlessEqual(kABNotEqualCaseInsensitive, 14)
-        self.failUnlessEqual(kABSuffixMatch, 15)
-        self.failUnlessEqual(kABSuffixMatchCaseInsensitive, 16)
-        self.failUnlessEqual(kABWithinIntervalAroundToday, 17)
-        self.failUnlessEqual(kABWithinIntervalAroundTodayYearless, 18)
-        self.failUnlessEqual(kABNotWithinIntervalAroundToday, 19)
-        self.failUnlessEqual(kABNotWithinIntervalAroundTodayYearless, 20)
-        self.failUnlessEqual(kABWithinIntervalFromToday, 21)
-        self.failUnlessEqual(kABWithinIntervalFromTodayYearless, 22)
-        self.failUnlessEqual(kABNotWithinIntervalFromToday, 23)
-        self.failUnlessEqual(kABNotWithinIntervalFromTodayYearless, 24)
+        self.assertEqual(kABErrorInProperty, 0x0)
+        self.assertEqual(kABStringProperty, 0x1)
+        self.assertEqual(kABIntegerProperty, 0x2)
+        self.assertEqual(kABRealProperty, 0x3)
+        self.assertEqual(kABDateProperty, 0x4)
+        self.assertEqual(kABArrayProperty, 0x5)
+        self.assertEqual(kABDictionaryProperty, 0x6)
+        self.assertEqual(kABDataProperty, 0x7)
+        self.assertEqual(kABMultiStringProperty, kABMultiValueMask | kABStringProperty)
+        self.assertEqual(kABMultiIntegerProperty, kABMultiValueMask | kABIntegerProperty)
+        self.assertEqual(kABMultiRealProperty, kABMultiValueMask | kABRealProperty)
+        self.assertEqual(kABMultiDateProperty, kABMultiValueMask | kABDateProperty)
+        self.assertEqual(kABMultiArrayProperty, kABMultiValueMask | kABArrayProperty)
+        self.assertEqual(kABMultiDictionaryProperty, kABMultiValueMask | kABDictionaryProperty)
+        self.assertEqual(kABMultiDataProperty, kABMultiValueMask | kABDataProperty)
+
+        self.assertEqual(kABEqual, 0)
+        self.assertEqual(kABNotEqual, 1)
+        self.assertEqual(kABLessThan, 2)
+        self.assertEqual(kABLessThanOrEqual, 3)
+        self.assertEqual(kABGreaterThan, 4)
+        self.assertEqual(kABGreaterThanOrEqual, 5)
+        self.assertEqual(kABEqualCaseInsensitive, 6)
+        self.assertEqual(kABContainsSubString, 7)
+        self.assertEqual(kABContainsSubStringCaseInsensitive, 8)
+        self.assertEqual(kABPrefixMatch, 9)
+        self.assertEqual(kABPrefixMatchCaseInsensitive, 10)
+        self.assertEqual(kABBitsInBitFieldMatch, 11)
+        self.assertEqual(kABDoesNotContainSubString, 12)
+        self.assertEqual(kABDoesNotContainSubStringCaseInsensitive, 13)
+        self.assertEqual(kABNotEqualCaseInsensitive, 14)
+        self.assertEqual(kABSuffixMatch, 15)
+        self.assertEqual(kABSuffixMatchCaseInsensitive, 16)
+        self.assertEqual(kABWithinIntervalAroundToday, 17)
+        self.assertEqual(kABWithinIntervalAroundTodayYearless, 18)
+        self.assertEqual(kABNotWithinIntervalAroundToday, 19)
+        self.assertEqual(kABNotWithinIntervalAroundTodayYearless, 20)
+        self.assertEqual(kABWithinIntervalFromToday, 21)
+        self.assertEqual(kABWithinIntervalFromTodayYearless, 22)
+        self.assertEqual(kABNotWithinIntervalFromToday, 23)
+        self.assertEqual(kABNotWithinIntervalFromTodayYearless, 24)
 
-        self.failUnlessEqual(kABSearchAnd, 0)
-        self.failUnlessEqual(kABSearchOr, 1)
+        self.assertEqual(kABSearchAnd, 0)
+        self.assertEqual(kABSearchOr, 1)
 
 
 

Modified: trunk/pyobjc/pyobjc-framework-AddressBook/pyobjc_setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-AddressBook/pyobjc_setup.py	(original)
+++ trunk/pyobjc/pyobjc-framework-AddressBook/pyobjc_setup.py	Thu Apr  1 10:00:41 2010
@@ -7,13 +7,68 @@
 
 __all__ = ('setup', 'Extension', 'Command')
 
-import ez_setup
-ez_setup.use_setuptools()
+import sys
+if sys.version_info[:2] < (3, 0):
+    import ez_setup
+    ez_setup.use_setuptools()
+
+    from setuptools.command.test import test as oc_test
+    from setuptools.command.build_py import build_py as oc_build_py
+
+    extra_args = {}
+
+
+else:
+    import distribute_setup
+    distribute_setup.use_setuptools()
+
+    from setuptools.command import test
+    from setuptools.command import build_py
+
+    from distutils import log
+
+    extra_args=dict(
+        use_2to3 = True,
+    )
+
+
+    class oc_build_py (build_py.build_py):
+        def build_packages(self):
+            log.info("Overriding build_packages to copy PyObjCTest")
+            p = self.packages
+            self.packages = list(self.packages) + ['PyObjCTest']
+            try:
+                build_py.build_py.build_packages(self)
+            finally:
+                self.packages = p
+
+
+
+    class oc_test (test.test):
+        def run_tests(self):
+            import sys, os
+
+            rootdir =  os.path.dirname(os.path.abspath(__file__))
+            if rootdir in sys.path:
+                sys.path.remove(rootdir)
+
+            import PyObjCTest
+            import unittest
+            from pkg_resources import EntryPoint
+            loader_ep = EntryPoint.parse("x="+self.test_loader)
+            loader_class = loader_ep.load(require=False)
+
+            unittest.main(None, None, [unittest.__file__]+self.test_args, testLoader=loader_class())
+
+
 
 from setuptools import setup as _setup, Extension as _Extension, Command
 from distutils.errors import DistutilsPlatformError
 from distutils.command import build, install, install_lib
 from setuptools.command import develop, test, build_ext
+import pkg_resources
+import shutil
+import os
 import plistlib
 import sys
 import __main__
@@ -34,7 +89,35 @@
 
 class pyobjc_build_ext (build_ext.build_ext):
     def run(self):
+
+        # Ensure that the PyObjC header files are available
+        # in 2.3 and later the headers are in the egg,
+        # before that we ship a copy.
+        dist, = pkg_resources.require('pyobjc-core')
+
+        include_root = os.path.join(self.build_temp, 'pyobjc-include')
+        if os.path.exists(include_root):
+            shutil.rmtree(include_root)
+
+        os.makedirs(include_root)
+        if dist.has_metadata('include'):
+            for fn in dist.metadata_listdir('include'):
+                data = dist.get_metadata('include/%s'%(fn,))
+                open(os.path.join(include_root, fn), 'w').write(data)
+
+        else:
+            data = gPyObjCAPI_H
+            open(os.path.join(include_rot, 'pyobjc-api.h'), 'w').write(data)
+
+        for e in self.extensions:
+            if include_root not in e.include_dirs:
+                e.include_dirs.append(include_root)
+
+        # Run the actual build
         build_ext.build_ext.run(self)
+
+        # Then tweak the copy_extensions bit to ensure PyObjCTest gets
+        # copied to the right place.
         extensions = self.extensions
         self.extensions = [
             e for e in extensions if e.name.startswith('PyObjCTest') ]
@@ -76,6 +159,10 @@
         cmdclass=None,
         **kwds):
 
+
+    k = kwds.copy()
+    k.update(extra_args)
+
     os_level = get_os_level()
     os_compatible = True
     if sys.platform != 'darwin':
@@ -114,12 +201,17 @@
             return subcommand
 
         cmdclass['build'] = create_command_subclass(build.build)
-        cmdclass['test'] = create_command_subclass(test.test)
+        cmdclass['test'] = create_command_subclass(oc_test)
         cmdclass['install'] = create_command_subclass(install.install)
         cmdclass['develop'] = create_command_subclass(develop.develop)
+        cmdclass['build_py'] = create_command_subclass(oc_build_py)
     else:
         cmdclass['build_ext'] = pyobjc_build_ext
         cmdclass['install_lib'] = pyobjc_install_lib
+        cmdclass['test'] = oc_test
+        cmdclass['build_py'] = oc_build_py
+
+
 
     _setup(
         cmdclass=cmdclass, 
@@ -133,5 +225,495 @@
         package_data = { '': ['*.bridgesupport'] },
         test_suite='PyObjCTest',
         zip_safe = True,
-        **kwds
+        **k
     ) 
+
+
+gPyObjCAPI_H="""\
+#ifndef PyObjC_API_H
+#define PyObjC_API_H
+
+/*
+ * Use this in helper modules for the objc package, and in wrappers
+ * for functions that deal with objective-C objects/classes
+ * 
+ * This header defines some utility wrappers for importing and using 
+ * the core bridge. 
+ *
+ * This is the *only* header file that should be used to access 
+ * functionality in the core bridge.
+ *
+ * WARNING: this file is not part of the public interface of PyObjC and
+ * might change or be removed without warning or regard for backward
+ * compatibility.
+ */
+
+#include "Python.h"
+#include <objc/objc.h>
+
+#import <Foundation/Foundation.h>
+
+#ifndef CGFLOAT_DEFINED
+
+#ifdef __LP64__
+# error "Huh? 64-bit but no CFFloat available???"
+#endif
+
+typedef float CGFloat;
+#define CGFLOAT_MIN FLT_MIN
+#define CGFLOAT_MAX FLT_MAX
+#define CGFLOAT_IS_DOUBLE 0
+#define CGFLOAT_DEFINED
+
+#endif /* CGFLOAT_DEFINED */
+
+
+#ifndef NSINTEGER_DEFINED
+
+#ifdef __LP64__
+# error "Huh? 64-bit but no NSINTEGER available???"
+#endif
+
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+
+#define NSIntegerMax    LONG_MAX
+#define NSIntegerMin    LONG_MIN
+#define NSUIntegerMax   ULONG_MAX
+
+#define NSINTEGER_DEFINED
+
+#endif
+
+
+#ifndef PyObjC_COMPAT_H
+#if (PY_VERSION_HEX < 0x02050000)
+typedef int Py_ssize_t;
+#define PY_FORMAT_SIZE_T ""
+#define Py_ARG_SIZE_T "n"
+#define PY_SSIZE_T_MAX INT_MAX
+
+#else
+
+#define Py_ARG_SIZE_T "i"
+#endif
+#endif
+
+#import <Foundation/NSException.h>
+
+struct PyObjC_WeakLink {
+	const char* name;
+	void (*func)(void);
+};
+
+
+/* threading support */
+#ifdef NO_OBJC2_RUNTIME
+#define PyObjC_DURING \
+		Py_BEGIN_ALLOW_THREADS \
+		NS_DURING
+
+#define PyObjC_HANDLER NS_HANDLER
+
+#define PyObjC_ENDHANDLER \
+		NS_ENDHANDLER \
+		Py_END_ALLOW_THREADS
+#else
+
+#define	PyObjC_DURING \
+		Py_BEGIN_ALLOW_THREADS \
+		@try {
+
+#define PyObjC_HANDLER } @catch(volatile NSObject* _localException) { \
+		NSException* localException __attribute__((__unused__))= (NSException*)_localException;
+
+#define PyObjC_ENDHANDLER \
+		} \
+		Py_END_ALLOW_THREADS
+
+#endif
+
+#define PyObjC_BEGIN_WITH_GIL \
+	{ \
+		PyGILState_STATE _GILState; \
+		_GILState = PyGILState_Ensure(); 
+
+#define PyObjC_GIL_FORWARD_EXC() \
+		do { \
+            PyObjCErr_ToObjCWithGILState(&_GILState); \
+		} while (0)
+
+
+#define PyObjC_GIL_RETURN(val) \
+		do { \
+			PyGILState_Release(_GILState); \
+			return (val); \
+		} while (0)
+
+#define PyObjC_GIL_RETURNVOID \
+		do { \
+			PyGILState_Release(_GILState); \
+			return; \
+		} while (0)
+
+
+#define PyObjC_END_WITH_GIL \
+		PyGILState_Release(_GILState); \
+	}
+
+
+
+#include <objc/objc-runtime.h>
+
+/* On 10.1 there are no defines for the OS version. */
+#ifndef MAC_OS_X_VERSION_10_1
+#define MAC_OS_X_VERSION_10_1 1010
+#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_1
+
+#error "MAC_OS_X_VERSION_10_1 not defined. You aren't running 10.1 are you?"
+
+#endif
+
+#ifndef MAC_OS_X_VERSION_10_2
+#define MAC_OS_X_VERSION_10_2 1020
+#endif
+
+#ifndef MAC_OS_X_VERSION_10_3
+#define MAC_OS_X_VERSION_10_3 1030
+#endif
+
+#ifndef MAC_OS_X_VERSION_10_4
+#define MAC_OS_X_VERSION_10_4 1040
+#endif
+
+#ifndef MAC_OS_X_VERSION_10_5
+#define MAC_OS_X_VERSION_10_5 1050
+#endif
+
+/* Current API version, increase whenever:
+ * - Semantics of current functions change
+ * - Functions are removed
+ * Do not increase when adding a new function, the struct_len field
+ * can be used for detecting if a function has been added.
+ *
+ * HISTORY:
+ * - Version 2.2 adds PyObjCUnsupportedMethod_IMP 
+ *       and PyObjCUnsupportedMethod_Caller 
+ * - Version 2.1 adds PyObjCPointerWrapper_Register 
+ * - Version 2 adds an argument to PyObjC_InitSuper
+ * - Version 3 adds another argument to PyObjC_CallPython
+ * - Version 4 adds PyObjCErr_ToObjCGILState
+ * - Version 4.1 adds PyObjCRT_AlignOfType and PyObjCRT_SizeOfType
+ *         (PyObjC_SizeOfType is now deprecated)
+ * - Version 4.2 adds PyObjCRT_SELName
+ * - Version 4.3 adds PyObjCRT_SimplifySignature
+ * - Version 4.4 adds PyObjC_FreeCArray, PyObjC_PythonToCArray and
+ *   		PyObjC_CArrayToPython
+ * - Version 5 modifies the signature for PyObjC_RegisterMethodMapping,
+ *	PyObjC_RegisterSignatureMapping and PyObjCUnsupportedMethod_IMP,
+ *      adds PyObjC_RegisterStructType and removes PyObjC_CallPython
+ * - Version 6 adds PyObjCIMP_Type, PyObjCIMP_GetIMP and PyObjCIMP_GetSelector
+ * - Version 7 adds PyObjCErr_AsExc, PyGILState_Ensure
+ * - Version 8 adds PyObjCObject_IsUninitialized,
+        removes PyObjCSelector_IsInitializer
+ * - Version 9 (???)
+ * - Version 10 changes the signature of PyObjCRT_SimplifySignature
+ * - Version 11 adds PyObjCObject_Convert, PyObjCSelector_Convert,
+     PyObjCClass_Convert, PyObjC_ConvertBOOL, and PyObjC_ConvertChar
+ * - Version 12 adds PyObjCObject_New
+ * - Version 13 adds PyObjCCreateOpaquePointerType
+ * - Version 14 adds PyObjCObject_NewTransient, PyObjCObject_ReleaseTransient
+ * - Version 15 changes the interface of PyObjCObject_New
+ * - Version 16 adds PyObjC_PerformWeaklinking
+ * - Version 17 introduces Py_ssize_t support
+ * - Version 18 introduces several API incompatibilities
+ */
+#define PYOBJC_API_VERSION 18
+
+#define PYOBJC_API_NAME "__C_API__"
+
+/* 
+ * Only add items to the end of this list!
+ */
+typedef int (RegisterMethodMappingFunctionType)(
+			Class, 
+			SEL, 
+			PyObject *(*)(PyObject*, PyObject*, PyObject*),
+			void (*)(void*, void*, void**, void*));
+
+struct pyobjc_api {
+	int	      api_version;	/* API version */
+	size_t	      struct_len;	/* Length of this struct */
+	PyTypeObject* class_type;	/* PyObjCClass_Type    */
+	PyTypeObject* object_type;	/* PyObjCObject_Type   */
+	PyTypeObject* select_type;	/* PyObjCSelector_Type */
+
+	/* PyObjC_RegisterMethodMapping */
+	RegisterMethodMappingFunctionType *register_method_mapping;
+
+	/* PyObjC_RegisterSignatureMapping */
+	int (*register_signature_mapping)(
+			char*,
+			PyObject *(*)(PyObject*, PyObject*, PyObject*),
+			void (*)(void*, void*, void**, void*));
+
+	/* PyObjCObject_GetObject */
+	id (*obj_get_object)(PyObject*);
+
+	/* PyObjCObject_ClearObject */
+	void (*obj_clear_object)(PyObject*);
+
+	/* PyObjCClass_GetClass */
+	Class (*cls_get_class)(PyObject*);
+
+	/* PyObjCClass_New */
+	PyObject* (*cls_to_python)(Class cls);
+
+	/* PyObjC_PythonToId */
+	id (*python_to_id)(PyObject*);
+
+	/* PyObjC_IdToPython */
+	PyObject* (*id_to_python)(id);
+
+	/* PyObjCErr_FromObjC */
+	void (*err_objc_to_python)(NSException*);
+
+	/* PyObjCErr_ToObjC */
+	void (*err_python_to_objc)(void);
+
+	/* PyObjC_PythonToObjC */
+	int (*py_to_objc)(const char*, PyObject*, void*);
+
+	/* PyObjC_ObjCToPython */
+	PyObject* (*objc_to_py)(const char*, void*);
+
+	/* PyObjC_SizeOfType */
+	Py_ssize_t   (*sizeof_type)(const char*);
+
+	/* PyObjCSelector_GetClass */
+	Class	   (*sel_get_class)(PyObject* sel);
+
+	/* PyObjCSelector_GetSelector */
+	SEL	   (*sel_get_sel)(PyObject* sel);
+
+	/* PyObjC_InitSuper */ 	
+	void	(*fill_super)(struct objc_super*, Class, id);
+
+	/* PyObjC_InitSuperCls */
+	void	(*fill_super_cls)(struct objc_super*, Class, Class);
+
+	/* PyObjCPointerWrapper_Register */ 
+	int  (*register_pointer_wrapper)(
+		        const char*, PyObject* (*pythonify)(void*),
+			int (*depythonify)(PyObject*, void*)
+		);
+
+	void (*unsupported_method_imp)(void*, void*, void**, void*);
+	PyObject* (*unsupported_method_caller)(PyObject*, PyObject*, PyObject*);
+
+	/* PyObjCErr_ToObjCWithGILState */
+	void (*err_python_to_objc_gil)(PyGILState_STATE* state);
+
+	/* PyObjCRT_AlignOfType */
+	Py_ssize_t (*alignof_type)(const char* typestr);
+
+	/* PyObjCRT_SELName */
+	const char* (*selname)(SEL sel);
+
+	/* PyObjCRT_SimplifySignature */
+	int (*simplify_sig)(char* signature, char* buf, size_t buflen);
+
+	/* PyObjC_FreeCArray */
+	void    (*free_c_array)(int,void*);
+
+	/* PyObjC_PythonToCArray */
+	int     (*py_to_c_array)(BOOL, BOOL, const char*, PyObject*, void**, Py_ssize_t*, PyObject**);
+	
+	/* PyObjC_CArrayToPython */
+	PyObject* (*c_array_to_py)(const char*, void*, Py_ssize_t);
+
+	/* PyObjC_RegisterStructType */
+	PyObject* (*register_struct)(const char*, const char*, const char*, initproc, Py_ssize_t, const char**);
+
+	/* PyObjCIMP_Type */
+	PyTypeObject* imp_type;
+
+	/* PyObjCIMP_GetIMP */
+	IMP  (*imp_get_imp)(PyObject*);
+
+	/* PyObjCIMP_GetSelector */
+	SEL  (*imp_get_sel)(PyObject*);
+
+	/* PyObjCErr_AsExc */
+	NSException* (*err_python_to_nsexception)(void);
+
+	/* PyGILState_Ensure */
+	PyGILState_STATE (*gilstate_ensure)(void);
+
+	/* PyObjCObject_IsUninitialized */
+	int (*obj_is_uninitialized)(PyObject*);
+
+	/* PyObjCObject_Convert */
+	int (*pyobjcobject_convert)(PyObject*,void*);
+
+	/* PyObjCSelector_Convert */
+	int (*pyobjcselector_convert)(PyObject*,void*);
+
+	/* PyObjCClass_Convert */
+	int (*pyobjcclass_convert)(PyObject*,void*);
+
+	/* PyObjC_ConvertBOOL */
+	int (*pyobjc_convertbool)(PyObject*,void*);
+
+	/* PyObjC_ConvertChar */
+	int (*pyobjc_convertchar)(PyObject*,void*);
+
+	/* PyObjCObject_New */
+	PyObject* (*pyobjc_object_new)(id, int , int);
+
+	/* PyObjCCreateOpaquePointerType */
+	PyObject* (*pointer_type_new)(const char*, const char*, const char*);
+
+	/* PyObject* PyObjCObject_NewTransient(id objc_object, int* cookie); */
+	PyObject* (*newtransient)(id objc_object, int* cookie);
+
+	/* void PyObjCObject_ReleaseTransient(PyObject* proxy, int cookie); */
+	void (*releasetransient)(PyObject* proxy, int cookie);
+
+	void (*doweaklink)(PyObject*, struct PyObjC_WeakLink*);
+
+	const char* (*removefields)(char*, const char*);
+
+	PyObject** pyobjc_null;
+
+	int (*dep_c_array_count)(const char* type, Py_ssize_t count, BOOL strict, PyObject* value, void* datum);
+
+	PyObject* (*varlistnew)(const char* tp, void* array);
+};
+
+#ifndef PYOBJC_BUILD
+
+#ifndef PYOBJC_METHOD_STUB_IMPL
+static struct pyobjc_api*	PyObjC_API;
+#endif /* PYOBJC_METHOD_STUB_IMPL */
+
+#define PyObjCObject_Check(obj) PyObject_TypeCheck(obj, PyObjC_API->object_type)
+#define PyObjCClass_Check(obj)  PyObject_TypeCheck(obj, PyObjC_API->class_type)
+#define PyObjCSelector_Check(obj)  PyObject_TypeCheck(obj, PyObjC_API->select_type)
+#define PyObjCIMP_Check(obj)  PyObject_TypeCheck(obj, PyObjC_API->imp_type)
+#define PyObjCObject_GetObject (PyObjC_API->obj_get_object)
+#define PyObjCObject_ClearObject (PyObjC_API->obj_clear_object)
+#define PyObjCClass_GetClass   (PyObjC_API->cls_get_class)
+#define PyObjCClass_New 	     (PyObjC_API->cls_to_python)
+#define PyObjCSelector_GetClass (PyObjC_API->sel_get_class)
+#define PyObjCSelector_GetSelector (PyObjC_API->sel_get_sel)
+#define PyObjC_PythonToId      (PyObjC_API->python_to_id)
+#define PyObjC_IdToPython      (PyObjC_API->id_to_python)
+#define PyObjCErr_FromObjC     (PyObjC_API->err_objc_to_python)
+#define PyObjCErr_ToObjC       (PyObjC_API->err_python_to_objc)
+#define PyObjCErr_ToObjCWithGILState       (PyObjC_API->err_python_to_objc_gil)
+#define PyObjCErr_AsExc        (PyObjC_API->err_python_to_nsexception)
+#define PyObjC_PythonToObjC    (PyObjC_API->py_to_objc)
+#define PyObjC_ObjCToPython    (PyObjC_API->objc_to_py)
+#define PyObjC_RegisterMethodMapping (PyObjC_API->register_method_mapping)
+#define PyObjC_RegisterSignatureMapping (PyObjC_API->register_signature_mapping)
+#define PyObjC_SizeOfType      (PyObjC_API->sizeof_type)
+#define PyObjC_PythonToObjC   (PyObjC_API->py_to_objc)
+#define PyObjC_ObjCToPython   (PyObjC_API->objc_to_py)
+#define PyObjC_InitSuper	(PyObjC_API->fill_super)
+#define PyObjC_InitSuperCls	(PyObjC_API->fill_super_cls)
+#define PyObjCPointerWrapper_Register (PyObjC_API->register_pointer_wrapper)
+#define PyObjCUnsupportedMethod_IMP (PyObjC_API->unsupported_method_imp)
+#define PyObjCUnsupportedMethod_Caller (PyObjC_API->unsupported_method_caller)
+#define PyObjCRT_SizeOfType      (PyObjC_API->sizeof_type)
+#define PyObjCRT_AlignOfType	(PyObjC_API->alignof_type)
+#define PyObjCRT_SELName	(PyObjC_API->selname)
+#define PyObjCRT_SimplifySignature	(PyObjC_API->simplify_sig)
+#define PyObjC_FreeCArray	(PyObjC_API->free_c_array)
+#define PyObjC_PythonToCArray	(PyObjC_API->py_to_c_array)
+#define PyObjC_CArrayToPython	(PyObjC_API->c_array_to_py)
+#define PyObjC_RegisterStructType   (PyObjC_API->register_struct)
+#define PyObjCIMP_GetIMP   (PyObjC_API->imp_get_imp)
+#define PyObjCIMP_GetSelector   (PyObjC_API->imp_get_sel)
+#define PyObjCObject_IsUninitialized (PyObjC_API->obj_is_uninitialized)
+#define PyObjCObject_Convert (PyObjC_API->pyobjcobject_convert)
+#define PyObjCSelector_Convert (PyObjC_API->pyobjcselector_convert)
+#define PyObjCClass_Convert (PyObjC_API->pyobjcselector_convert)
+#define PyObjC_ConvertBOOL (PyObjC_API->pyobjc_convertbool)
+#define PyObjC_ConvertChar (PyObjC_API->pyobjc_convertchar)
+#define PyObjCObject_New (PyObjC_API->pyobjc_object_new)
+#define PyObjCCreateOpaquePointerType (PyObjC_API->pointer_type_new)
+#define PyObjCObject_NewTransient (PyObjC_API->newtransient)
+#define PyObjCObject_ReleaseTransient (PyObjC_API->releasetransient)
+#define PyObjC_PerformWeaklinking (PyObjC_API->doweaklink)
+#define PyObjCRT_RemoveFieldNames (PyObjC_API->removefields)
+#define PyObjC_NULL		  (*(PyObjC_API->pyobjc_null))
+#define PyObjC_DepythonifyCArray  (PyObjC_API->dep_c_array_count)
+#define PyObjC_VarList_New  (PyObjC_API->varlistnew)
+
+
+#ifndef PYOBJC_METHOD_STUB_IMPL
+
+static int
+PyObjC_ImportAPI(PyObject* calling_module)
+{
+	PyObject* m;
+	PyObject* d;
+	PyObject* api_obj;
+	PyObject* name = PyString_FromString("objc");
+	
+	m = PyImport_Import(name);
+	Py_DECREF(name);
+	if (m == NULL) {
+		return -1;
+	}
+
+	d = PyModule_GetDict(m);
+	if (d == NULL) {
+		PyErr_SetString(PyExc_RuntimeError, 
+			"No dict in objc module");
+		return -1;
+	}
+
+	api_obj = PyDict_GetItemString(d, PYOBJC_API_NAME);
+	if (api_obj == NULL) {
+		PyErr_SetString(PyExc_RuntimeError, 
+			"No C_API in objc module");
+		return -1;
+	}
+	PyObjC_API = PyCObject_AsVoidPtr(api_obj);
+	if (PyObjC_API == NULL) {
+		return 0;
+	}
+	if (PyObjC_API->api_version != PYOBJC_API_VERSION) {
+		PyErr_SetString(PyExc_RuntimeError,
+			"Wrong version of PyObjC C API");
+		return -1;
+	}
+	
+	if (PyObjC_API->struct_len < sizeof(struct pyobjc_api)) {
+		PyErr_SetString(PyExc_RuntimeError,
+			"Wrong struct-size of PyObjC C API");
+		return -1;
+	}
+
+	Py_INCREF(api_obj);
+
+	/* Current pyobjc implementation doesn't allow deregistering 
+	 * information, avoid unloading of users of the C-API.
+	 * (Yes this is ugle, patches to fix this situation are apriciated)
+	 */
+	Py_INCREF(calling_module);
+
+	return 0;
+}
+#endif /* PYOBJC_METHOD_STUB_IMPL */
+
+#else /* PyObjC_BUILD */
+
+extern struct pyobjc_api	objc_api;
+
+#endif /* !PYOBJC_BUILD */
+
+#endif /*  PyObjC_API_H */
+"""

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev