[PyObjC-svn] r2397 - in trunk/pyobjc/pyobjc-framework-Cocoa: . Lib/Foundation Modules

[email protected] Tue, 02 Feb 2010 09:09:59 -0600
Newsgroups gmane.comp.python.pyobjc.cvs
Message-ID <[email protected]>
Author: ronaldoussoren
Date: Tue Feb  2 09:09:59 2010
New Revision: 2397

Log:
* Bump version to 2.3a0
* use 'namedSelector' instead of 'namedselector' in Foundation._nsobject
* enabled py3k compilation for the C extensions

  (This doesn't mean these wrappers actually work with python 3,
  hopefully later tonight...)



Removed:
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/pyobjc-api.h
Modified:
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/_nsobject.py
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_appmain.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_carbon.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_inlines.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbezierpath.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsfont.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsquickdrawview.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsview.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nswindow.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBag.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBinaryHeap.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBitVector.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFDictionary.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFFileDescriptor.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMachPort.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMessagePort.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFNumber.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFReadStream.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopObserver.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopSource.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopTimer.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSet.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSocket.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFTree.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFWriteStream.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_inlines.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSDecimal.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSInvocation.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_data.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_inlines.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_netservice.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_nscoder.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_string.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_typecode.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/testhelper.m
   trunk/pyobjc/pyobjc-framework-Cocoa/pyobjc_setup.py
   trunk/pyobjc/pyobjc-framework-Cocoa/setup.py

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/_nsobject.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/_nsobject.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/_nsobject.py	Tue Feb  2 09:09:59 2010
@@ -2,7 +2,7 @@
 Define a category on NSObject with some useful methods.
 
 FIXME: 
-- add signature information (namedselector) to all methods
+- add signature information (namedSelector) to all methods
   (not strictly needed)
 - add docstrings everywhere
 - create unittests
@@ -14,7 +14,7 @@
 
 class NSObject (objc.Category(NSObject)):
 
-    @objc.namedselector("_pyobjc_performOnThread:")
+    @objc.namedSelector("_pyobjc_performOnThread:")
     def _pyobjc_performOnThread_(self, callinfo):
         try:
             sel, arg = callinfo
@@ -24,7 +24,7 @@
             import traceback
             traceback.print_exc(fp=sys.stderr)
 
-    @objc.namedselector("_pyobjc_performOnThreadWithResult:")
+    @objc.namedSelector("_pyobjc_performOnThreadWithResult:")
     def _pyobjc_performOnThreadWithResult_(self, callinfo):
         try:
             sel, arg, result = callinfo
@@ -36,7 +36,7 @@
 
 
     if hasattr(NSObject, "performSelector_onThread_withObject_waitUntilDone_"):
-        @objc.namedselector("pyobjc_performSelector:onThread:withObject:waitUntilDone:")
+        @objc.namedSelector("pyobjc_performSelector:onThread:withObject:waitUntilDone:")
         def pyobjc_performSelector_onThread_withObject_waitUntilDone_(
                 self, aSelector, thread, arg, wait):
             """
@@ -47,7 +47,7 @@
             self.performSelector_onThread_withObject_waitUntilDone_(
                     'pyobjc_performOnThread:', thread, (aSelector, arg), wait)
 
-        @objc.namedselector("pyobjc_performSelector:onThread:withObject:waitUntilDone:modes:")
+        @objc.namedSelector("pyobjc_performSelector:onThread:withObject:waitUntilDone:modes:")
         def pyobjc_performSelector_onThread_withObject_waitUntilDone_modes_(
                 self, aSelector, thread, arg, wait, modes):
             """
@@ -58,7 +58,7 @@
             self.performSelector_onThread_withObject_waitUntilDone_modes_(
                 'pyobjc_performOnThread:', thread, (aSelector, arg), wait, modes)
 
-    @objc.namedselector("pyobjc_performSelector:withObject:afterDelay:")
+    @objc.namedSelector("pyobjc_performSelector:withObject:afterDelay:")
     def pyobjc_performSelector_withObject_afterDelay_(
             self, aSelector, arg, delay):
         """
@@ -69,7 +69,7 @@
         self.performSelector_withObject_afterDelay_(
             'pyobjc_performOnThread:', (aSelector, arg), delay)
 
-    @objc.namedselector("pyobjc_performSelector:withObject:afterDelay:inModes:")
+    @objc.namedSelector("pyobjc_performSelector:withObject:afterDelay:inModes:")
     def pyobjc_performSelector_withObject_afterDelay_inModes_(
             self, aSelector, arg, delay, modes):
         """
@@ -81,7 +81,7 @@
             'pyobjc_performOnThread:', (aSelector, arg), delay, modes)
 
     if hasattr(NSObject, "performSelectorInBackground_withObject_waitUntilDone_"):
-        @objc.namedselector("pyobjc_performSelectorInBackground:withObject:")
+        @objc.namedSelector("pyobjc_performSelectorInBackground:withObject:")
         def pyobjc_performSelectorInBackground_withObject_(
                 self, aSelector, arg):
             """
@@ -93,7 +93,7 @@
                 'pyobjc_performOnThread:', (aSelector, arg))
 
 
-    @objc.namedselector("pyobjc_performSelectorInBackground:withObject:waitUntilDone:")
+    @objc.namedSelector("pyobjc_performSelectorInBackground:withObject:waitUntilDone:")
     def pyobjc_performSelectorOnMainThread_withObject_waitUntilDone_(
             self, aSelector, arg, wait):
         """
@@ -104,7 +104,7 @@
         self.performSelectorOnMainThread_withObject_waitUntilDone_(
             'pyobjc_performOnThread:', (aSelector, arg), wait)
 
-    @objc.namedselector("pyobjc_performSelectorOnMainThread:withObject:waitUntilDone:modes:")
+    @objc.namedSelector("pyobjc_performSelectorOnMainThread:withObject:waitUntilDone:modes:")
     def pyobjc_performSelectorOnMainThread_withObject_waitUntilDone_modes_(
             self, aSelector, arg, wait, modes):
         """
@@ -118,7 +118,7 @@
 
     # And some a some versions that return results
 
-    @objc.namedselector("pyobjc_performSelectorOnMainThread:withObject:modes:")
+    @objc.namedSelector("pyobjc_performSelectorOnMainThread:withObject:modes:")
     def pyobjc_performSelectorOnMainThread_withObject_modes_(
             self, aSelector, arg, modes):
         """
@@ -142,7 +142,7 @@
             exc_type, exc_value, exc_trace = result
             raise exc_type, exc_value, exc_trace
 
-    @objc.namedselector("pyobjc_performSelectorOnMainThread:withObject:")
+    @objc.namedSelector("pyobjc_performSelectorOnMainThread:withObject:")
     def pyobjc_performSelectorOnMainThread_withObject_(
             self, aSelector, arg):
         result = []
@@ -161,7 +161,7 @@
         # These methods require Leopard, don't define them if the 
         # platform functionality isn't present.
 
-        @objc.namedselector("pyobjc_performSelector:onThread:withObject:modes:")
+        @objc.namedSelector("pyobjc_performSelector:onThread:withObject:modes:")
         def pyobjc_performSelector_onThread_withObject_modes_(
                 self, aSelector, thread, arg, modes):
             result = []
@@ -176,7 +176,7 @@
                 exc_type, exc_value, exc_trace = result
                 raise exc_type, exc_value, exc_trace
 
-        @objc.namedselector("pyobjc_performSelector:onThread:withObject:")
+        @objc.namedSelector("pyobjc_performSelector:onThread:withObject:")
         def pyobjc_performSelector_onThread_withObject_(
                 self, aSelector, thread, arg):
             result = []

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_appmain.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_appmain.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_appmain.m	Tue Feb  2 09:09:59 2010
@@ -139,11 +139,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_appmain",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__appmain(void);
+
+PyObject*
+PyInit__appmain(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_appmain(void);
-void init_appmain(void)
+
+void
+init_appmain(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_appmain", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_appmain", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_carbon.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_carbon.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_carbon.m	Tue Feb  2 09:09:59 2010
@@ -40,15 +40,57 @@
         { 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_carbon",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__carbon(void);
+
+PyObject*
+PyInit__carbon(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_carbon(void);
-void init_carbon(void)
+
+void
+init_carbon(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_carbon", mod_methods, "", NULL,
-                        PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_carbon", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
 
-	if (PyObjC_ImportAPI(m) < 0) return;
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	if (PyObjCPointerWrapper_Register(@encode(WindowRef),
 	                &window2py, &py2window) < 0)
-		return;
+		INITERROR();
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_inlines.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_inlines.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_inlines.m	Tue Feb  2 09:09:59 2010
@@ -15,10 +15,56 @@
         { 0, 0, 0, 0 } /* sentinel */
 };
 
-void init_inlines(void)
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_inlines",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__inlines(void);
+
+PyObject*
+PyInit__inlines(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
+void init_inlines(void);
+
+void
+init_inlines(void)
+#endif
 {
-    PyObject* m = Py_InitModule4("_inlines", mod_methods, NULL, NULL, PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_inlines", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyModule_AddObject(m, "_inline_list_", 
+		PyCObject_FromVoidPtr(function_map, NULL)) < 0) {
+		INITERROR();
+	}
 
-    PyModule_AddObject(m, "_inline_list_", 
-        PyCObject_FromVoidPtr(function_map, NULL));
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbezierpath.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbezierpath.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbezierpath.m	Tue Feb  2 09:09:59 2010
@@ -264,23 +264,63 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nsbezierpath",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nsbezierpath(void);
+
+PyObject*
+PyInit__nsbezierpath(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nsbezierpath(void);
-void init_nsbezierpath(void)
+
+void
+init_nsbezierpath(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nsbezierpath", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nsbezierpath", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
 
-	PyObjC_ImportAPI(m);
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class cls = objc_lookUpClass("NSBezierPath");
-	if (!cls) return;
+	if (!cls) INITDONE();
 
 	if (PyObjC_RegisterMethodMapping(cls,
 		@selector(elementAtIndex:associatedPoints:),
 		call_NSBezierPath_elementAtIndex_associatedPoints_,
 		imp_NSBezierPath_elementAtIndex_associatedPoints_) < 0 ) {
 
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(cls,
@@ -288,8 +328,8 @@
 		call_NSBezierPath_setAssociatedPoints_atIndex_,
 		PyObjCUnsupportedMethod_IMP) < 0 ) {
 
-		return;
+		INITERROR();
 	}
 
-	return;
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsbitmap.m	Tue Feb  2 09:09:59 2010
@@ -353,22 +353,64 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nsbitmap",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nsbitmap(void);
+
+PyObject*
+PyInit__nsbitmap(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nsbitmap(void);
-void init_nsbitmap(void)
+
+void
+init_nsbitmap(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nsbitmap", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nsbitmap", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
 
-	PyObjC_ImportAPI(m);
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class class_NSBitmapImageRep = objc_lookUpClass("NSBitmapImageRep");
+	if (class_NSBitmapImageRep == NULL) {
+		INITDONE();
+	}
 
 	if (PyObjC_RegisterMethodMapping(class_NSBitmapImageRep, 
 		@selector(getTIFFCompressionTypes:count:),
 		call_NSBitmapImageRep_getTIFFCompressionTypes_count_,
 		PyObjCUnsupportedMethod_IMP) < 0 ) {
 
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -377,7 +419,7 @@
 			call_NSBitmapImageRep_initWithBitmap,
 			PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -386,7 +428,7 @@
 			call_NSBitmapImageRep_getBitmapDataPlanes_,
 			PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -395,6 +437,8 @@
 			call_NSBitmapImageRep_bitmapData,
 			PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsfont.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsfont.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsfont.m	Tue Feb  2 09:09:59 2010
@@ -101,13 +101,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nsfont",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nsfont(void);
+
+PyObject*
+PyInit__nsfont(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nsfont(void);
-void init_nsfont(void)
+
+void
+init_nsfont(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nsfont", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nsfont", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
 
-	PyObjC_ImportAPI(m);
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	return;
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsquickdrawview.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsquickdrawview.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsquickdrawview.m	Tue Feb  2 09:09:59 2010
@@ -105,19 +105,59 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nsquickdrawview",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nsquickdrawview(void);
+
+PyObject*
+PyInit__nsquickdrawview(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nsquickdrawview(void);
-void init_nsquickdrawview(void)
+
+void
+init_nsquickdrawview(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nsquickdrawview", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
-	if (!m) {
-		return;
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nsquickdrawview", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
 	}
 
+
 #ifndef __LP64__
-	PyObjC_ImportAPI(m);
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class classNSQuickDrawView = objc_lookUpClass("NSQuickDrawView");
+	if (classNSQuickDrawView == NULL) {
+		INITDONE();
+	}
 
 	if (PyObjC_RegisterMethodMapping(
 		classNSQuickDrawView,
@@ -125,7 +165,9 @@
 		call_NSQuickDrawView_qdport,
 		imp_NSQuickDrawView_qdport) < 0) {
 
-		return;
+		INITERROR();
 	}
 #endif
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsview.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsview.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsview.m	Tue Feb  2 09:09:59 2010
@@ -58,15 +58,58 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nsview",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nsview(void);
+
+PyObject*
+PyInit__nsview(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nsview(void);
-void init_nsview(void)
+
+void
+init_nsview(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nsview", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nsview", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
 
-	PyObjC_ImportAPI(m);
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class classNSView = objc_lookUpClass("NSView");
+	if (classNSView == NULL) {
+		INITDONE();
+	}
 
 	if (PyObjC_RegisterMethodMapping(
 		classNSView,
@@ -74,6 +117,8 @@
 		call_NSView_getRectsBeingDrawn_count_,
 		PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nswindow.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nswindow.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nswindow.m	Tue Feb  2 09:09:59 2010
@@ -197,15 +197,57 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nswindow",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nswindow(void);
+
+PyObject*
+PyInit__nswindow(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nswindow(void);
-void init_nswindow(void)
+
+void
+init_nswindow(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nswindow", mod_methods, "", NULL,
-			PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nswindow", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
 
-	PyObjC_ImportAPI(m);
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class classNSWindow = objc_lookUpClass("NSWindow");
+	if (classNSWindow == NULL) {
+		INITDONE();
+	}
 
 	if (PyObjC_RegisterMethodMapping(
 		classNSWindow,
@@ -213,7 +255,7 @@
 		call_NSWindow_initWithWindowRef_,
 		imp_NSWindow_initWithWindowRef_) < 0) {
 
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -222,6 +264,8 @@
 		call_NSWindow_windowRef,
 		imp_NSWindow_windowRef) < 0) {
 
-		return;
+		INITERROR();
 	}
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBag.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBag.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBag.m	Tue Feb  2 09:09:59 2010
@@ -126,12 +126,54 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFBag",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFBag(void);
+
+PyObject*
+PyInit__CFBag(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFBag(void);
-void init_CFBag(void)
+
+void
+init_CFBag(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFBag", mod_methods, "", NULL,
-		PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFBag", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBinaryHeap.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBinaryHeap.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBinaryHeap.m	Tue Feb  2 09:09:59 2010
@@ -128,11 +128,52 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFBinaryHeap",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFBinaryHeap(void);
+
+PyObject*
+PyInit__CFBinaryHeap(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFBinaryHeap(void);
-void init_CFBinaryHeap(void)
+
+void
+init_CFBinaryHeap(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFBinaryHeap", mod_methods, "", NULL,
-		PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFBinaryHeap", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBitVector.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBitVector.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFBitVector.m	Tue Feb  2 09:09:59 2010
@@ -115,11 +115,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFBitVector",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFBitVector(void);
+
+PyObject*
+PyInit__CFBitVector(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFBitVector(void);
-void init_CFBitVector(void)
+
+void
+init_CFBitVector(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFBitVector", mod_methods, "", NULL,
-		PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFBitVector", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m	Tue Feb  2 09:09:59 2010
@@ -453,11 +453,54 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFCalendar",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFCalendar(void);
+
+PyObject*
+PyInit__CFCalendar(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFCalendar(void);
-void init_CFCalendar(void)
+
+void
+init_CFCalendar(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFCalendar", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFCalendar", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFDictionary.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFDictionary.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFDictionary.m	Tue Feb  2 09:09:59 2010
@@ -110,11 +110,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFDictionary",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFDictionary(void);
+
+PyObject*
+PyInit__CFDictionary(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFDictionary(void);
-void init_CFDictionary(void)
+
+void
+init_CFDictionary(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFDictionary", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFDictionary", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFFileDescriptor.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFFileDescriptor.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFFileDescriptor.m	Tue Feb  2 09:09:59 2010
@@ -185,11 +185,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFFileDescriptor",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFFileDescriptor(void);
+
+PyObject*
+PyInit__CFFileDescriptor(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFFileDescriptor(void);
-void init_CFFileDescriptor(void)
+
+void
+init_CFFileDescriptor(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFFileDescriptor", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFFileDescriptor", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMachPort.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMachPort.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMachPort.m	Tue Feb  2 09:09:59 2010
@@ -416,11 +416,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFMachPort",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFMachPort(void);
+
+PyObject*
+PyInit__CFMachPort(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFMachPort(void);
-void init_CFMachPort(void)
+
+void
+init_CFMachPort(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFMachPort", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFMachPort", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMessagePort.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMessagePort.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFMessagePort.m	Tue Feb  2 09:09:59 2010
@@ -199,11 +199,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFMessagePort",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFMessagePort(void);
+
+PyObject*
+PyInit__CFMessagePort(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFMessagePort(void);
-void init_CFMessagePort(void)
+
+void
+init_CFMessagePort(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFMessagePort", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFMessagePort", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) { 
+		INITERROR();
+	}
+
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFNumber.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFNumber.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFNumber.m	Tue Feb  2 09:09:59 2010
@@ -262,11 +262,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFNumber",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFNumber(void);
+
+PyObject*
+PyInit__CFNumber(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFNumber(void);
-void init_CFNumber(void)
+
+void
+init_CFNumber(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFNumber", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFNumber", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFReadStream.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFReadStream.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFReadStream.m	Tue Feb  2 09:09:59 2010
@@ -124,11 +124,52 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFReadStream",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFReadStream(void);
+
+PyObject*
+PyInit__CFReadStream(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFReadStream(void);
-void init_CFReadStream(void)
+
+void
+init_CFReadStream(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFReadStream", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFReadStream", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopObserver.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopObserver.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopObserver.m	Tue Feb  2 09:09:59 2010
@@ -191,11 +191,52 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFRunLoopObserver",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFRunLoopObserver(void);
+
+PyObject*
+PyInit__CFRunLoopObserver(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFRunLoopObserver(void);
-void init_CFRunLoopObserver(void)
+
+void
+init_CFRunLoopObserver(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFRunLoopObserver", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFRunLoopObserver", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopSource.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopSource.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopSource.m	Tue Feb  2 09:09:59 2010
@@ -245,11 +245,51 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFRunLoopSource",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFRunLoopSource(void);
+
+PyObject*
+PyInit__CFRunLoopSource(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFRunLoopSource(void);
-void init_CFRunLoopSource(void)
+
+void
+init_CFRunLoopSource(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFRunLoopSource", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFRunLoopSource", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopTimer.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopTimer.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFRunLoopTimer.m	Tue Feb  2 09:09:59 2010
@@ -192,11 +192,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFRunLoopTimer",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFRunLoopTimer(void);
+
+PyObject*
+PyInit__CFRunLoopTimer(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFRunLoopTimer(void);
-void init_CFRunLoopTimer(void)
+
+void
+init_CFRunLoopTimer(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFRunLoopTimer", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFRunLoopTimer", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSet.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSet.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSet.m	Tue Feb  2 09:09:59 2010
@@ -75,11 +75,51 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFSet",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFSet(void);
+
+PyObject*
+PyInit__CFSet(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFSet(void);
-void init_CFSet(void)
+
+void
+init_CFSet(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFSet", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFSet", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSocket.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSocket.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFSocket.m	Tue Feb  2 09:09:59 2010
@@ -412,11 +412,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFSocket",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFSocket(void);
+
+PyObject*
+PyInit__CFSocket(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFSocket(void);
-void init_CFSocket(void)
+
+void
+init_CFSocket(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFSocket", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFSocket", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFTree.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFTree.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFTree.m	Tue Feb  2 09:09:59 2010
@@ -262,11 +262,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFTree",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFTree(void);
+
+PyObject*
+PyInit__CFTree(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFTree(void);
-void init_CFTree(void)
+
+void
+init_CFTree(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFTree", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFTree", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFWriteStream.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFWriteStream.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFWriteStream.m	Tue Feb  2 09:09:59 2010
@@ -118,11 +118,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_CFWriteStream",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__CFWriteStream(void);
+
+PyObject*
+PyInit__CFWriteStream(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_CFWriteStream(void);
-void init_CFWriteStream(void)
+
+void
+init_CFWriteStream(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_CFWriteStream", mod_methods, "", NULL,
-	PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_CFWriteStream", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	PyObjC_ImportAPI(m);
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_inlines.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_inlines.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_inlines.m	Tue Feb  2 09:09:59 2010
@@ -52,10 +52,54 @@
         { 0, 0, 0, 0 } /* sentinel */
 };
 
-void init_inlines(void)
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_inlines",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__inlines(void);
+
+PyObject*
+PyInit__inlines(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
+void init_inlines(void);
+
+void
+init_inlines(void)
+#endif
 {
-    PyObject* m = Py_InitModule4("_inlines", mod_methods, NULL, NULL, PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_inlines", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+
+
+	if (PyModule_AddObject(m, "_inline_list_", 
+		PyCObject_FromVoidPtr(function_map, NULL)) < 0) {
+		INITERROR();
+	}
 
-    PyModule_AddObject(m, "_inline_list_", 
-        PyCObject_FromVoidPtr(function_map, NULL));
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSDecimal.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSDecimal.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSDecimal.m	Tue Feb  2 09:09:59 2010
@@ -859,10 +859,6 @@
 
 
 
-static PyMethodDef _methods[] = {
-	{ 0, 0, 0, 0 } /* sentinel */
-};
-
 static PyObject* 
 pythonify_nsdecimal(void* value)
 {
@@ -1073,27 +1069,66 @@
 }
 
 
-PyDoc_STRVAR(_NSDecimal_doc, "_NSDecimal provides a wrapper for NSDecimal");
+PyDoc_STRVAR(mod_doc, "_NSDecimal provides a wrapper for NSDecimal");
+
+static PyMethodDef mod_methods[] = {
+	{
+		NULL,
+		NULL,
+		0,
+		NULL
+	}
+};
+
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_NSDecimal",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__NSDecimal(void);
+
+PyObject*
+PyInit__NSDecimal(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
 
 void init_NSDecimal(void);
 
-void init_NSDecimal(void)
+void
+init_NSDecimal(void)
+#endif
 {
 	PyObject* m;
 	PyType_Ready(&Decimal_Type);
 
-	m = Py_InitModule4("_NSDecimal", _methods, _NSDecimal_doc, 
-			NULL, PYTHON_API_VERSION);
-
-
-	if (m == NULL) {
-		return;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_NSDecimal", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
 	}
 
-	if (PyObjC_ImportAPI(m) < 0) {
-		printf("Importing objc failed\n");
-		return;
-	}
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	PyModule_AddObject(m, "NSDecimal", (PyObject*)&Decimal_Type);
 
@@ -1139,7 +1174,7 @@
 			@selector(initWithDecimal:),
 			call_NSDecimalNumber_initWithDecimal_,
 			imp_NSDecimalNumber_initWithDecimal_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	Class classNSDecimalNumberPlaceholder = objc_lookUpClass("NSDecimalNumberPlaceholder");
@@ -1150,7 +1185,7 @@
 			call_NSDecimalNumber_initWithDecimal_,
 			imp_NSDecimalNumber_initWithDecimal_) < 0) {
 
-			return;
+			INITERROR();
 		}
 	}
 
@@ -1159,7 +1194,7 @@
 			@selector(decimalNumberWithDecimal:),
 			call_NSDecimalNumber_decimalWithDecimal_,
 			imp_NSDecimalNumber_initWithDecimal_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1167,6 +1202,8 @@
 			@selector(decimalValue),
 			call_NSDecimalNumber_decimalValue,
 			imp_NSDecimalNumber_decimalValue) < 0) {
-		return;
+		INITERROR();
 	}
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSInvocation.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSInvocation.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_NSInvocation.m	Tue Feb  2 09:09:59 2010
@@ -334,15 +334,53 @@
 	        { 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nsinvocation",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nsinvocation(void);
+
+PyObject*
+PyInit__nsinvocation(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nsinvocation(void);
 
 void
 init_nsinvocation(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nsinvocation", mod_methods,
-			mod_doc, NULL, PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nsinvocation", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
 
-	if (PyObjC_ImportAPI(m) < 0) { return; }
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class classNSInvocation = objc_lookUpClass("NSInvocation");
   
@@ -377,4 +415,6 @@
 			PyObjCUnsupportedMethod_IMP) < 0) {
 		return;
 	}
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_data.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_data.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_data.m	Tue Feb  2 09:09:59 2010
@@ -220,16 +220,56 @@
 	PyObjCErr_ToObjCWithGILState(&state);
 }
 
-static PyMethodDef _methods[] = {
+static PyMethodDef mod_methods[] = {
 	        { 0, 0, 0, 0 } /* sentinel */
 };
 
-void 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_data",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__data(void);
+
+PyObject*
+PyInit__data(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
+void init_data(void);
+
+void
 init_data(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_data", _methods, "", NULL, PYTHON_API_VERSION);
-	if (m == NULL) return;
-	if (PyObjC_ImportAPI(m) < 0) return;
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_data", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class classNSData = objc_lookUpClass("NSData");
 	Class classNSMutableData = objc_lookUpClass("NSMutableData");
@@ -240,7 +280,7 @@
 				 @selector(bytes),
 				 call_NSData_bytes,
 				 imp_NSData_bytes) < 0 ) {
-			return;
+			INITERROR();
 		}
 
 	}
@@ -251,10 +291,10 @@
 				@selector(mutableBytes),
 				call_NSMutableData_mutableBytes,
 				imp_NSMutableData_mutableBytes) < 0 ) {
-			return;
+			INITERROR();
 		}
 	}
 
   
-	return;
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_inlines.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_inlines.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_inlines.m	Tue Feb  2 09:09:59 2010
@@ -85,10 +85,53 @@
         { 0, 0, 0, 0 } /* sentinel */
 };
 
-void init_inlines(void)
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_inlines",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__inlines(void);
+
+PyObject*
+PyInit__inlines(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
+void init_inlines(void);
+
+void
+init_inlines(void)
+#endif
 {
-    PyObject* m = Py_InitModule4("_inlines", mod_methods, NULL, NULL, PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_inlines", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+
+
+	if (PyModule_AddObject(m, "_inline_list_", 
+		PyCObject_FromVoidPtr(function_map, NULL)) < 0)
+
+		INITERROR();
 
-    PyModule_AddObject(m, "_inline_list_", 
-        PyCObject_FromVoidPtr(function_map, NULL));
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_netservice.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_netservice.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_netservice.m	Tue Feb  2 09:09:59 2010
@@ -149,22 +149,61 @@
 }
 
 
-static PyMethodDef _methods[] = {
+static PyMethodDef mod_methods[] = {
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_netservice",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__netservice(void);
+
+PyObject*
+PyInit__netservice(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
+void init_netservice(void);
+
 void
 init_netservice(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_netservice", _methods, "", NULL, 
-			PYTHON_API_VERSION);
-	if (m == NULL) return;
-	if (PyObjC_ImportAPI(m) < 0) return;
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_netservice", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 
 	Class classNSNetService = objc_lookUpClass("NSNetService");
 	if (classNSNetService == NULL) {
-		return;
+		INITDONE();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -173,8 +212,8 @@
 		call_NSNetService_addresses,
 		PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
 
-	return;
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_nscoder.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_nscoder.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_nscoder.m	Tue Feb  2 09:09:59 2010
@@ -1099,15 +1099,53 @@
 	        { 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_nscoder",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__nscoder(void);
+
+PyObject*
+PyInit__nscoder(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_nscoder(void);
 
 void
 init_nscoder(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_nscoder", mod_methods,
-			mod_doc, NULL, PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_nscoder", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
 
-	if (PyObjC_ImportAPI(m) < 0) { return; }
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	Class classNSCoder = objc_lookUpClass("NSCoder");
   
@@ -1116,7 +1154,7 @@
 			@selector(encodeArrayOfObjCType:count:at:),
 			call_NSCoder_encodeArrayOfObjCType_count_at_,
 			imp_NSCoder_encodeArrayOfObjCType_count_at_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1124,7 +1162,7 @@
 			@selector(encodeValueOfObjCType:at:),
 			call_NSCoder_encodeValueOfObjCType_at_,
 			imp_NSCoder_encodeValueOfObjCType_at_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1132,7 +1170,7 @@
 			@selector(decodeArrayOfObjCType:count:at:),
 			call_NSCoder_decodeArrayOfObjCType_count_at_,
 			imp_NSCoder_decodeArrayOfObjCType_count_at_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1140,7 +1178,7 @@
 			@selector(decodeValueOfObjCType:at:),
 			call_NSCoder_decodeValueOfObjCType_at_,
 			imp_NSCoder_decodeValueOfObjCType_at_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1148,7 +1186,7 @@
 			@selector(encodeBytes:length:),
 			call_NSCoder_encodeBytes_length_,
 			imp_NSCoder_encodeBytes_length_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1156,7 +1194,7 @@
 			@selector(encodeBytes:length:forKey:),
 			call_NSCoder_encodeBytes_length_forKey_,
 			imp_NSCoder_encodeBytes_length_forKey_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1164,7 +1202,7 @@
 			@selector(decodeBytesWithReturnedLength:),
 			call_NSCoder_decodeBytesWithReturnedLength_,
 			imp_NSCoder_decodeBytesWithReturnedLength_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1172,7 +1210,7 @@
 			@selector(decodeBytesForKey:returnedLength::),
 			call_NSCoder_decodeBytesForKey_returnedLength_,
 			imp_NSCoder_decodeBytesForKey_returnedLength_) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1180,7 +1218,7 @@
 			@selector(decodeBytesWithoutReturnedLength),
 			PyObjCUnsupportedMethod_Caller,
 			PyObjCUnsupportedMethod_IMP) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1188,7 +1226,7 @@
 			@selector(encodeValuesOfObjCTypes:),
 			PyObjCUnsupportedMethod_Caller,
 			PyObjCUnsupportedMethod_IMP) < 0) {
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -1196,6 +1234,8 @@
 			@selector(decodeValuesOfObjCTypes:),
 			PyObjCUnsupportedMethod_Caller,
 			PyObjCUnsupportedMethod_IMP) < 0) {
-		return;
+		INITERROR();
 	}
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_string.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_string.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_string.m	Tue Feb  2 09:09:59 2010
@@ -123,19 +123,58 @@
 	return res;
 }
 
-static PyMethodDef _methods[] = {
+static PyMethodDef mod_methods[] = {
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_string",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__string(void);
+
+PyObject*
+PyInit__string(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
+void init_string(void);
+
 void
 init_string(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_string", _methods, "", NULL, PYTHON_API_VERSION);
-	if (m == NULL) return;
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_string", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
 
 	Class classNSString = objc_lookUpClass("NSString");
-	if (classNSString == NULL) return;
-	if (PyObjC_ImportAPI(m) < 0) return;
+	if (classNSString == NULL) INITDONE();
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 
 	if (PyObjC_RegisterMethodMapping(
@@ -144,7 +183,7 @@
 		call_NSString_getCString_maxLength_range_remainingRange_,
 		PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
 
 	if (PyObjC_RegisterMethodMapping(
@@ -153,9 +192,8 @@
 		call_NSString_getCString_maxLength_,
 		PyObjCUnsupportedMethod_IMP) < 0) {
 
-		return;
+		INITERROR();
 	}
 
-
-	return;
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_typecode.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_typecode.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_Foundation_typecode.m	Tue Feb  2 09:09:59 2010
@@ -103,13 +103,53 @@
 	{ 0, 0, 0, 0 } /* sentinel */
 };
 
+
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"_typecode",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit__typecode(void);
+
+PyObject*
+PyInit__typecode(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void init_typecode(void);
 
 void
 init_typecode(void)
+#endif
 {
-	PyObject* m = Py_InitModule4("_typecode", mod_methods,
-			mod_doc, NULL, PYTHON_API_VERSION);
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("_typecode", mod_methods,
+		NULL, NULL, PYTHON_API_VERSION);
+#endif
+	if (!m) {
+		INITERROR();
+	}
+
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
-	if (PyObjC_ImportAPI(m) < 0) { return; }
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/testhelper.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/testhelper.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/testhelper.m	Tue Feb  2 09:09:59 2010
@@ -231,26 +231,63 @@
 
 @end
 
-static PyMethodDef no_methods[] = {
+static PyMethodDef mod_methods[] = {
 	{ 0, 0, 0, 0 }
 };
 
 
 
+/* Python glue */
+#if PY_VERSION_HEX >= 0x03000000
+
+static struct PyModuleDef mod_module = {
+        PyModuleDef_HEAD_INIT,
+	"testhelper",
+	NULL,
+	0,
+	mod_methods,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
+
+#define INITERROR() return NULL
+#define INITDONE() return m
+
+PyObject* PyInit_testhelper(void);
+
+PyObject*
+PyInit_testhelper(void)
+
+#else
+
+#define INITERROR() return
+#define INITDONE() return
+
 void inittesthelper(void);
 
-void inittesthelper(void)
+void
+inittesthelper(void)
+#endif
 {
-        PyObject* m;
-
-	m = Py_InitModule4("testhelper", no_methods,
+	PyObject* m;
+#if PY_VERSION_HEX >= 0x03000000
+	m = PyModule_Create(&mod_module);
+#else
+	m = Py_InitModule4("testhelper", mod_methods,
 		NULL, NULL, PYTHON_API_VERSION);
-	if (!m) return;
+#endif
+	if (!m) {
+		INITERROR();
+	}
 
-	if (PyObjC_ImportAPI(m) < 0) return;
+	if (PyObjC_ImportAPI(m) == -1) INITERROR();
 
 	PyModule_AddObject(m, "PyObjC_TestClass3",
 		PyObjCClass_New([PyObjC_TestClass3 class]));
 	PyModule_AddObject(m, "PyObjC_TestClass4",
 		PyObjCClass_New([PyObjC_TestClass4 class]));
+
+	INITDONE();
 }

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/pyobjc_setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/pyobjc_setup.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/pyobjc_setup.py	Tue Feb  2 09:09:59 2010
@@ -14,6 +14,9 @@
 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 +37,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') ]
@@ -135,3 +166,493 @@
         zip_safe = True,
         **kwds
     ) 
+
+
+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 */
+"""

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/setup.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/setup.py	Tue Feb  2 09:09:59 2010
@@ -11,12 +11,12 @@
 
 setup(
     name='pyobjc-framework-Cocoa',
-    version='2.2',
+    version='2.3a0',
     description = "Wrappers for the Cocoa frameworks on Mac OS X",
     packages = [ "Cocoa", "CoreFoundation", "Foundation", "AppKit", "PyObjCTools" ],
     namespace_packages = ['PyObjCTools'],
     install_requires = [ 
-        'pyobjc-core>=2.2',
+        'pyobjc-core>=2.3a0',
     ],
     ext_modules = [
         # CoreFoundation

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com