pyobjc-core 10.2__tar.gz → 10.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/GUITests/test_modalsession.py +1 -0
  2. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/setup.py +1 -0
  3. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/instrumentSends.py +1 -0
  4. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/PyObjCTools/KeyValueCoding.py +10 -2
  5. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/__init__.py +2 -0
  6. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_bridgesupport.py +7 -6
  7. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_context.py +1 -0
  8. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience.py +70 -2
  9. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_mapping.py +1 -0
  10. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsarray.py +11 -2
  11. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsdata.py +6 -1
  12. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsdecimal.py +4 -1
  13. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsdictionary.py +1 -0
  14. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsset.py +4 -3
  15. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsstring.py +5 -1
  16. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_sequence.py +1 -0
  17. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_lazyimport.py +1 -0
  18. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_locking.py +1 -0
  19. pyobjc_core-10.3.1/Lib/objc/_new.py +164 -0
  20. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_pycoder.py +1 -0
  21. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_transform.py +54 -1
  22. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/PKG-INFO +1 -1
  23. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/SOURCES.txt +5 -1
  24. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/class-builder.h +1 -1
  25. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/class-builder.m +11 -4
  26. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/libffi_support.m +9 -2
  27. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-class.m +65 -1
  28. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc_super.m +2 -16
  29. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc_util.h +1 -0
  30. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc_util.m +2 -0
  31. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/options.h +2 -0
  32. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/options.m +7 -0
  33. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc.h +1 -1
  34. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc_unicode.m +0 -5
  35. pyobjc_core-10.3.1/Modules/objc/test/genericnew.m +108 -0
  36. pyobjc_core-10.3.1/Modules/objc/test/unavailable.m +81 -0
  37. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PKG-INFO +1 -1
  38. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/fnd.py +1 -0
  39. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/keyvaluehelper.py +1 -0
  40. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_archive_python.py +1 -0
  41. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_arrays.py +1 -0
  42. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_bridgesupport.py +10 -11
  43. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_clinmeth.py +1 -0
  44. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_convenience.py +78 -0
  45. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_corefoundation.py +1 -0
  46. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_ctests.py +1 -0
  47. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_dict_interface.py +1 -0
  48. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_dyld.py +3 -3
  49. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_filepointer.py +1 -0
  50. pyobjc_core-10.3.1/PyObjCTest/test_generic_new.py +195 -0
  51. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_keyvalue.py +1 -0
  52. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_leaks.py +4 -2
  53. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_list_proxy.py +1 -0
  54. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_locking.py +1 -0
  55. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_metadata.py +2 -1
  56. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_metadata_function.py +1 -0
  57. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_metadata_imp.py +1 -0
  58. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_metadata_py.py +1 -0
  59. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_metadata_py2py.py +1 -0
  60. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_methodaccess.py +1 -1
  61. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_methods.py +1 -0
  62. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nsdecimal.py +1 -0
  63. pyobjc_core-10.3.1/PyObjCTest/test_nsunavailable.py +63 -0
  64. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_number_proxy.py +3 -6
  65. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_pickling_objc.py +1 -0
  66. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_regr.py +14 -0
  67. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_set_interface.py +1 -0
  68. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_set_proxy.py +1 -0
  69. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_signatures.py +1 -0
  70. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_specialtypecodes_charbyte.py +1 -0
  71. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_specialtypecodes_charint.py +1 -0
  72. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_specialtypecodes_methdef.py +1 -0
  73. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_specialtypecodes_nsbool.py +1 -0
  74. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_specialtypecodes_struct.py +1 -0
  75. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_specialtypecodes_unichar.py +1 -0
  76. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_structs.py +1 -0
  77. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_subclass.py +50 -0
  78. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_synthesize.py +1 -0
  79. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_transform.py +51 -8
  80. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_transform_integration.py +18 -8
  81. pyobjc_core-10.3.1/PyObjCTest/test_varargs.py +60 -0
  82. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/setup.py +6 -16
  83. pyobjc-core-10.2/PyObjCTest/test_posing.py +0 -42
  84. pyobjc-core-10.2/PyObjCTest/test_varargs.py +0 -61
  85. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/00ReadMe.txt +0 -0
  86. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/GUITests/00ReadMe.txt +0 -0
  87. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/AsyncPythonInterpreter.py +0 -0
  88. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/ConsoleReactor.py +0 -0
  89. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/classes.nib +0 -0
  90. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/info.nib +0 -0
  91. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/keyedobjects.nib +0 -0
  92. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/classes.nib +0 -0
  93. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/info.nib +0 -0
  94. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/keyedobjects.nib +0 -0
  95. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/README.txt +0 -0
  96. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/RemotePyInterpreter.py +0 -0
  97. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/netrepr.py +0 -0
  98. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/remote_bootstrap.py +0 -0
  99. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/remote_console.py +0 -0
  100. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/remote_pipe.py +0 -0
  101. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/tcpinterpreter.py +0 -0
  102. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/NonFunctional/RemotePyInterpreter/test_client.py +0 -0
  103. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/HelloWorld.py +0 -0
  104. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/autoreadme.py +0 -0
  105. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/kvo-debugging.py +0 -0
  106. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/signal-demo.py +0 -0
  107. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/stdinreader.py +0 -0
  108. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/subclassing-objective-c.py +0 -0
  109. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Examples/Scripts/wmEnable.py +0 -0
  110. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/HISTORIC.txt +0 -0
  111. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Install.txt +0 -0
  112. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/PyObjCTools/MachSignals.py +0 -0
  113. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/PyObjCTools/Signals.py +0 -0
  114. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/PyObjCTools/TestSupport.py +0 -0
  115. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_bridges.py +0 -0
  116. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_callable_docstr.py +0 -0
  117. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_category.py +0 -0
  118. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_compat.py +0 -0
  119. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_convenience_nsobject.py +0 -0
  120. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_descriptors.py +0 -0
  121. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_dyld.py +0 -0
  122. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_framework.py +0 -0
  123. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_informal_protocol.py +0 -0
  124. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_properties.py +0 -0
  125. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_protocols.py +0 -0
  126. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_pythonify.py +0 -0
  127. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/_structtype.py +0 -0
  128. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/objc/simd.py +0 -0
  129. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
  130. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/include/pyobjc-api.h +0 -0
  131. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/include/pyobjc-compat.h +0 -0
  132. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
  133. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
  134. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/License.txt +0 -0
  135. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/MANIFEST +0 -0
  136. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/MANIFEST.in +0 -0
  137. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Misc/announcement.txt +0 -0
  138. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/_machsignals.m +0 -0
  139. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
  140. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
  141. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonData.h +0 -0
  142. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonData.m +0 -0
  143. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
  144. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
  145. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
  146. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
  147. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
  148. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
  149. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
  150. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
  151. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
  152. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
  153. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_NSBundleHack.h +0 -0
  154. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_NSBundleHack.m +0 -0
  155. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonArray.h +0 -0
  156. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonArray.m +0 -0
  157. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonData.h +0 -0
  158. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonData.m +0 -0
  159. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonDate.h +0 -0
  160. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonDate.m +0 -0
  161. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonDictionary.h +0 -0
  162. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonDictionary.m +0 -0
  163. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonEnumerator.h +0 -0
  164. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonEnumerator.m +0 -0
  165. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonNumber.h +0 -0
  166. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonNumber.m +0 -0
  167. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonObject.h +0 -0
  168. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonObject.m +0 -0
  169. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonSet.h +0 -0
  170. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonSet.m +0 -0
  171. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonURL.h +0 -0
  172. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonURL.m +0 -0
  173. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonUnicode.h +0 -0
  174. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/OC_PythonUnicode.m +0 -0
  175. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/ObjCPointer.h +0 -0
  176. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/ObjCPointer.m +0 -0
  177. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/block_support.h +0 -0
  178. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/block_support.m +0 -0
  179. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/bundle-variables.h +0 -0
  180. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/bundle-variables.m +0 -0
  181. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/class-list.h +0 -0
  182. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/class-list.m +0 -0
  183. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/closure_pool.h +0 -0
  184. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/closure_pool.m +0 -0
  185. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/corefoundation.h +0 -0
  186. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/corefoundation.m +0 -0
  187. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/ctests.h +0 -0
  188. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/ctests.m +0 -0
  189. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/file_wrapper.h +0 -0
  190. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/file_wrapper.m +0 -0
  191. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/formal-protocol.h +0 -0
  192. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/formal-protocol.m +0 -0
  193. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/fsref.h +0 -0
  194. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/fsref.m +0 -0
  195. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/function.h +0 -0
  196. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/function.m +0 -0
  197. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-authorization.m +0 -0
  198. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-foundation-nscoder.m +0 -0
  199. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-foundation-nsdata.m +0 -0
  200. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-foundation-nsdecimal.m +0 -0
  201. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-foundation-nsinvocation.m +0 -0
  202. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-foundation-nsobject.m +0 -0
  203. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers-vector.m +0 -0
  204. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/helpers.h +0 -0
  205. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/instance-var.h +0 -0
  206. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/instance-var.m +0 -0
  207. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/ivar-accessor.h +0 -0
  208. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/ivar-accessor.m +0 -0
  209. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/libffi_extra.h +0 -0
  210. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/libffi_extra.m +0 -0
  211. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/libffi_support.h +0 -0
  212. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/memview.h +0 -0
  213. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/memview.m +0 -0
  214. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/meth-func.h +0 -0
  215. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/meth-func.m +0 -0
  216. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/method-accessor.h +0 -0
  217. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/method-accessor.m +0 -0
  218. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/method-imp.h +0 -0
  219. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/method-imp.m +0 -0
  220. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/method-signature.h +0 -0
  221. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/method-signature.m +0 -0
  222. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/module.m +0 -0
  223. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-NULL.h +0 -0
  224. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-NULL.m +0 -0
  225. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-class.h +0 -0
  226. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-object.h +0 -0
  227. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-object.m +0 -0
  228. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-runtime-compat.h +0 -0
  229. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc-runtime-compat.m +0 -0
  230. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc_super.h +0 -0
  231. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc_support.h +0 -0
  232. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/objc_support.m +0 -0
  233. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/opaque-pointer.h +0 -0
  234. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/opaque-pointer.m +0 -0
  235. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pointer-support.h +0 -0
  236. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pointer-support.m +0 -0
  237. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/proxy-registry.h +0 -0
  238. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/proxy-registry.m +0 -0
  239. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc-api.h +0 -0
  240. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc-api.m +0 -0
  241. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc-assert.h +0 -0
  242. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc-compat.h +0 -0
  243. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc-compat.m +0 -0
  244. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc-unittest.h +0 -0
  245. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/pyobjc_unicode.h +0 -0
  246. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/python-api-used.h +0 -0
  247. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/registry.h +0 -0
  248. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/registry.m +0 -0
  249. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/released-buffer.h +0 -0
  250. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/released-buffer.m +0 -0
  251. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/selector.h +0 -0
  252. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/selector.m +0 -0
  253. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/struct-sockaddr.h +0 -0
  254. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/struct-sockaddr.m +0 -0
  255. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/struct-wrapper.h +0 -0
  256. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/struct-wrapper.m +0 -0
  257. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/super-call.h +0 -0
  258. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/super-call.m +0 -0
  259. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/NULL.m +0 -0
  260. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/arrayint.m +0 -0
  261. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/arrays.m +0 -0
  262. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/block.m +0 -0
  263. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/bufsizeinarg.m +0 -0
  264. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/categories_base.m +0 -0
  265. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c42.m +0 -0
  266. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c43.m +0 -0
  267. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c44.m +0 -0
  268. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c45.m +0 -0
  269. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c46.m +0 -0
  270. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c47.m +0 -0
  271. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c48.m +0 -0
  272. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c49.m +0 -0
  273. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c50.m +0 -0
  274. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c51.m +0 -0
  275. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c52.m +0 -0
  276. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c53.m +0 -0
  277. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c54.m +0 -0
  278. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c55.m +0 -0
  279. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c56.m +0 -0
  280. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c57.m +0 -0
  281. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c58.m +0 -0
  282. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_c59.m +0 -0
  283. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp10.m +0 -0
  284. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp11.m +0 -0
  285. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp12.m +0 -0
  286. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp13.m +0 -0
  287. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp14.m +0 -0
  288. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp15.m +0 -0
  289. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp16.m +0 -0
  290. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp17.m +0 -0
  291. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp18.m +0 -0
  292. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp19.m +0 -0
  293. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp20.m +0 -0
  294. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp21.m +0 -0
  295. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp22.m +0 -0
  296. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp23.m +0 -0
  297. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp24.m +0 -0
  298. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp27.m +0 -0
  299. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp3.m +0 -0
  300. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp30.m +0 -0
  301. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp33.m +0 -0
  302. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp36.m +0 -0
  303. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp39.m +0 -0
  304. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp42.m +0 -0
  305. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp45.m +0 -0
  306. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp48.m +0 -0
  307. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp51.m +0 -0
  308. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp54.m +0 -0
  309. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp57.m +0 -0
  310. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp6.m +0 -0
  311. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp7.m +0 -0
  312. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp8.m +0 -0
  313. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_gp9.m +0 -0
  314. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p24.m +0 -0
  315. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p25.m +0 -0
  316. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p26.m +0 -0
  317. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p27.m +0 -0
  318. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p28.m +0 -0
  319. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p29.m +0 -0
  320. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p30.m +0 -0
  321. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p31.m +0 -0
  322. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p32.m +0 -0
  323. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p33.m +0 -0
  324. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p34.m +0 -0
  325. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p35.m +0 -0
  326. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p36.m +0 -0
  327. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p37.m +0 -0
  328. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p38.m +0 -0
  329. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p39.m +0 -0
  330. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p40.m +0 -0
  331. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/category_p41.m +0 -0
  332. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/cfsocket.m +0 -0
  333. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/classes.m +0 -0
  334. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/clinmeth.m +0 -0
  335. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/coding.m +0 -0
  336. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/copying.m +0 -0
  337. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/corefoundation.m +0 -0
  338. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/dataint.m +0 -0
  339. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/dateint.m +0 -0
  340. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/decimal.m +0 -0
  341. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/deprecations.m +0 -0
  342. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/dictint.m +0 -0
  343. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/enumeration.m +0 -0
  344. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/exceptions.m +0 -0
  345. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/filepointer.m +0 -0
  346. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/fsref.m +0 -0
  347. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/gcov.m +0 -0
  348. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/helpernsdata.m +0 -0
  349. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/helpernsobject.m +0 -0
  350. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/identity.m +0 -0
  351. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/initialize.m +0 -0
  352. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/instanceVariables.m +0 -0
  353. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/locking.m +0 -0
  354. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/metadata.m +0 -0
  355. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/metadatafunction.m +0 -0
  356. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/methodaccess.m +0 -0
  357. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/methodlookup.m +0 -0
  358. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/methres1.m +0 -0
  359. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/methres2.m +0 -0
  360. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/misc.m +0 -0
  361. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/missing1.m +0 -0
  362. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/missing2.m +0 -0
  363. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/missing3.m +0 -0
  364. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/nsobjectcategory.m +0 -0
  365. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/nulldelimitedresult.m +0 -0
  366. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/objectint.m +0 -0
  367. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/opaque.m +0 -0
  368. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/pointersupport.m +0 -0
  369. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/properties.m +0 -0
  370. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/protected.m +0 -0
  371. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/protocol.m +0 -0
  372. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/pythonnumber.m +0 -0
  373. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/pythonset.m +0 -0
  374. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/sequence.m +0 -0
  375. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/sockaddr.m +0 -0
  376. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/specialtypecodes.m +0 -0
  377. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/stringint.m +0 -0
  378. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/structargs.m +0 -0
  379. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/structpointer1.m +0 -0
  380. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/structpointer2.m +0 -0
  381. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/structs.m +0 -0
  382. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/testbndl.m +0 -0
  383. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/testbndl2.m +0 -0
  384. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/testclassandinst.m +0 -0
  385. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/testoutputinitializer.m +0 -0
  386. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/vector.m +0 -0
  387. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/vectorcall.m +0 -0
  388. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/test/voidpointer.m +0 -0
  389. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/varlist.h +0 -0
  390. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/varlist.m +0 -0
  391. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/weakref.h +0 -0
  392. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Modules/objc/weakref.m +0 -0
  393. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/__init__.py +0 -0
  394. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
  395. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
  396. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
  397. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
  398. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
  399. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
  400. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
  401. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
  402. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/dump-nsarchive-securecoding.m +0 -0
  403. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/dump-nsarchive.m +0 -0
  404. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/helper_bridgesupport.py +0 -0
  405. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/loader.py +0 -0
  406. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_NULL.py +0 -0
  407. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_allocatebuffer.py +0 -0
  408. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_api_import.py +0 -0
  409. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_archiving_interop.py +0 -0
  410. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_archiving_secure_interop.py +0 -0
  411. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_array_interface.py +0 -0
  412. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_array_property.py +0 -0
  413. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_assocations.py +0 -0
  414. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_blocks.py +0 -0
  415. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_bridged_classes.py +0 -0
  416. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_bridges.py +0 -0
  417. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_bufsizeinarg.py +0 -0
  418. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_bundleFunctions.py +0 -0
  419. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_bundleVariables.py +0 -0
  420. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_callable_docstr.py +0 -0
  421. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_callbacks.py +0 -0
  422. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_categories.py +0 -0
  423. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_classandinst.py +0 -0
  424. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_classhooks.py +0 -0
  425. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_compat.py +0 -0
  426. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_context.py +0 -0
  427. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_conversion.py +0 -0
  428. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_copying.py +0 -0
  429. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_data_proxy.py +0 -0
  430. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_date_proxy.py +0 -0
  431. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_default_selector.py +0 -0
  432. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_deprecations.py +0 -0
  433. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_descriptors.py +0 -0
  434. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_dict_property.py +0 -0
  435. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_dict_proxy.py +0 -0
  436. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_enumerator.py +0 -0
  437. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_exceptions.py +0 -0
  438. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_final.py +0 -0
  439. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_framework.py +0 -0
  440. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_fsref.py +0 -0
  441. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_functions.py +0 -0
  442. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_generic_class.py +0 -0
  443. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_hidden_selector.py +0 -0
  444. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_identity.py +0 -0
  445. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_imp.py +0 -0
  446. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_initialized.py +0 -0
  447. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_inspect_signatures.py +0 -0
  448. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_internals.py +0 -0
  449. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_ivar.py +0 -0
  450. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_keyvalue_prop.py +0 -0
  451. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_keyvaluecoding.py +0 -0
  452. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_lazy_import.py +0 -0
  453. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_machsignals.py +0 -0
  454. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_metadata_inheritance.py +0 -0
  455. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_method_prototypes.py +0 -0
  456. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_methodedits.py +0 -0
  457. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_methodlookup.py +0 -0
  458. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_methods2.py +0 -0
  459. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_methres.py +0 -0
  460. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nscoder.py +0 -0
  461. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nsdata.py +0 -0
  462. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nsdate_proxy.py +0 -0
  463. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nsinvocation.py +0 -0
  464. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nsobject.py +0 -0
  465. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_nulldelimited.py +0 -0
  466. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_objc.py +0 -0
  467. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_objcpointer.py +0 -0
  468. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_object_property.py +0 -0
  469. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_object_proxy.py +0 -0
  470. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_opaque.py +0 -0
  471. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_options.py +0 -0
  472. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_outputinitializer.py +0 -0
  473. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_pickle.py +0 -0
  474. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_pointer_compat.py +0 -0
  475. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_propertiesforclass.py +0 -0
  476. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_protected.py +0 -0
  477. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_protocol.py +0 -0
  478. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_protocolNamed.py +0 -0
  479. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_python_method.py +0 -0
  480. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_set_property.py +0 -0
  481. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_signals.py +0 -0
  482. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_simd.py +0 -0
  483. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_sockaddr.py +0 -0
  484. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_splitsig.py +0 -0
  485. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_string_proxy.py +0 -0
  486. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_structpointer.py +0 -0
  487. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_testsupport.py +0 -0
  488. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_typecheck.py +0 -0
  489. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_unicode.py +0 -0
  490. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_urlproxy.py +0 -0
  491. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_usekvo.py +0 -0
  492. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_varlist.py +0 -0
  493. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_vector_proxy.py +0 -0
  494. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_vectorcall.py +0 -0
  495. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_version_support.py +0 -0
  496. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_voidpointer.py +0 -0
  497. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/PyObjCTest/test_weakref.py +0 -0
  498. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/README.txt +0 -0
  499. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/MANIFEST.in +0 -0
  500. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/comparebench.py +0 -0
  501. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/gen_archive.py +0 -0
  502. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/generate-category-tests.py +0 -0
  503. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/generate-helpers-vector.py +0 -0
  504. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/pyobjc_setup.py +0 -0
  505. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/pyobjcbench.py +0 -0
  506. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/results/pyobjcbench-7.3.txt +0 -0
  507. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
  508. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
  509. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/runtests-with-nuitka.py +0 -0
  510. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/Tools/runtests.py +0 -0
  511. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/pyproject.toml +0 -0
  512. {pyobjc-core-10.2 → pyobjc_core-10.3.1}/setup.cfg +0 -0
@@ -4,6 +4,7 @@ Check if NSModalSessions are properly wrapped.
4
4
  NOTE: This is not a proper unittest, it requires human eyes to check if the
5
5
  output is correct.
6
6
  """
7
+
7
8
  import time
8
9
 
9
10
  from Cocoa import (
@@ -4,6 +4,7 @@ Script for building the example.
4
4
  Usage:
5
5
  python3 setup.py py2app
6
6
  """
7
+
7
8
  from setuptools import setup
8
9
 
9
10
  plist = {
@@ -6,6 +6,7 @@ It sometimes is useful to see which Objective-C methods are called in a
6
6
  program. Luckily the Objective-C runtime contains a private API for logging
7
7
  all method calls. This file shows how to call that API.
8
8
  """
9
+
9
10
  import Foundation
10
11
  import objc
11
12
 
@@ -29,10 +29,8 @@ weaker coupling between the view and model layers.
29
29
  import collections.abc
30
30
  import types
31
31
 
32
- import objc
33
32
 
34
33
  __all__ = ("getKey", "setKey", "getKeyPath", "setKeyPath")
35
- _null = objc.lookUpClass("NSNull").null()
36
34
 
37
35
 
38
36
  def keyCaps(s):
@@ -382,3 +380,13 @@ class kvc:
382
380
  if not isinstance(item, str):
383
381
  raise TypeError("Keys must be strings")
384
382
  setKeyPath(self.__pyobjc_object__, item, value)
383
+
384
+
385
+ # The import of 'objc' is at the end of the module
386
+ # to avoid problems when importing this module before
387
+ # importing objc due to the objc package importing bits
388
+ # of this module.
389
+
390
+ import objc # noqa: E402
391
+
392
+ _null = objc.lookUpClass("NSNull").null()
@@ -3,6 +3,7 @@ Python <-> Objective-C bridge (PyObjC)
3
3
 
4
4
  This module defines the core interfaces of the Python<->Objective-C bridge.
5
5
  """
6
+
6
7
  from . import _objc
7
8
 
8
9
 
@@ -43,6 +44,7 @@ from . import _structtype # noqa: F401, F403, E402
43
44
  from . import _callable_docstr # noqa: F401, F403, E402
44
45
  from . import _pycoder # noqa: F401, F403, E402
45
46
  from ._informal_protocol import * # noqa: F401, F403, E402
47
+ from . import _new # noqa: F401, E402
46
48
 
47
49
 
48
50
  # Helper function for new-style metadata modules
@@ -3,6 +3,7 @@ Backward compatibility with bridgesupport files
3
3
 
4
4
  This functionality is deprecated and will be removed in PyObjC 10.
5
5
  """
6
+
6
7
  __all__ = ("initFrameworkWrapper", "parseBridgeSupport")
7
8
 
8
9
  import os
@@ -364,9 +365,9 @@ class _BridgeSupportParser:
364
365
  metadata["suggestion"] = suggestion
365
366
 
366
367
  # Force minimal metadata for ignored methods
367
- self.meta[
368
- (_as_bytes(class_name), _as_bytes(sel_name), is_class)
369
- ] = metadata
368
+ self.meta[(_as_bytes(class_name), _as_bytes(sel_name), is_class)] = (
369
+ metadata
370
+ )
370
371
  continue
371
372
 
372
373
  if variadic:
@@ -395,9 +396,9 @@ class _BridgeSupportParser:
395
396
  del metadata["arguments"]
396
397
 
397
398
  if metadata:
398
- self.meta[
399
- (_as_bytes(class_name), _as_bytes(sel_name), is_class)
400
- ] = metadata
399
+ self.meta[(_as_bytes(class_name), _as_bytes(sel_name), is_class)] = (
400
+ metadata
401
+ )
401
402
 
402
403
  def do_enum(self, node):
403
404
  name = self.attribute_string(node, "name", None)
@@ -25,6 +25,7 @@ Use ``objc.context.unregister`` to remove the registration of ``myObject``
25
25
  when you're done. The argument to unregister is the same object as was
26
26
  passed in during registration.
27
27
  """
28
+
28
29
  __all__ = ("context",)
29
30
  from typing import Any
30
31
 
@@ -2,6 +2,7 @@
2
2
  This module implements a callback function that is used by the C code to
3
3
  add Python special methods to Objective-C classes with a suitable interface.
4
4
  """
5
+
5
6
  from objc._objc import (
6
7
  _block_call,
7
8
  _rescanClass,
@@ -12,8 +13,16 @@ from objc._objc import (
12
13
  selector,
13
14
  )
14
15
  import PyObjCTools.KeyValueCoding as kvc
15
-
16
- __all__ = ("addConvenienceForClass", "registerABCForClass")
16
+ from objc._new import make_generic_new, NEW_MAP
17
+ from objc._transform import _selectorToKeywords
18
+
19
+ __all__ = (
20
+ "addConvenienceForClass",
21
+ "registerABCForClass",
22
+ "registerUnavailableMethod",
23
+ "registerNewKeywords",
24
+ "registerNewKeywordsFromSelector",
25
+ )
17
26
 
18
27
  CLASS_METHODS = {}
19
28
  CLASS_ABC = {}
@@ -53,6 +62,15 @@ def add_convenience_methods(cls, type_dict):
53
62
 
54
63
  Matching entries from both mappings are added to the 'type_dict'.
55
64
  """
65
+
66
+ # Only add the generic __new__ to pure ObjC classes,
67
+ # __new__ will be added to Python subclasses by
68
+ # ._transform.
69
+ if not cls.__has_python_implementation__ and type( # noqa: E721
70
+ cls.__mro__[1].__new__
71
+ ) != type(lambda: None):
72
+ type_dict["__new__"] = make_generic_new(cls)
73
+
56
74
  for nm, value in CLASS_METHODS.get(cls.__name__, ()):
57
75
  type_dict[nm] = value
58
76
 
@@ -78,6 +96,56 @@ def makeBundleForClass():
78
96
  return selector(bundleForClass, isClassMethod=True)
79
97
 
80
98
 
99
+ def registerUnavailableMethod(classname, selector):
100
+ """
101
+ Mark *selector* as unavailable for *classname*.
102
+ """
103
+ if not isinstance(selector, bytes):
104
+ raise TypeError("selector should by a bytes object")
105
+ selname = selector.decode()
106
+
107
+ # This adds None as a replacement value instead of
108
+ # registering metadata because NS_UNAVAILABLE is
109
+ # used to mark abstract base classes with concrete
110
+ # public subclasses.
111
+ # addConvenienceForClass(classname, ((selname.replace(":", "_"), None),))
112
+ registerMetaDataForSelector(
113
+ classname.encode(),
114
+ selector,
115
+ {"suggestion": f"{selector.decode()!r} is NS_UNAVAILABLE"},
116
+ )
117
+
118
+ if selname.startswith("init"):
119
+ kw = _selectorToKeywords(selname)
120
+ NEW_MAP.setdefault(classname, {})[kw] = None
121
+
122
+
123
+ def registerNewKeywordsFromSelector(classname, selector):
124
+ """
125
+ Register keywords calculated from 'selector' as passible
126
+ keyword arguments for __new__ for the given class. The
127
+ selector should be an 'init' method.
128
+ """
129
+ if not isinstance(selector, bytes):
130
+ raise TypeError("selector should by a bytes object")
131
+ selname = selector.decode()
132
+ kw = _selectorToKeywords(selname)
133
+ NEW_MAP.setdefault(classname, {})[kw] = selname.replace(":", "_")
134
+
135
+
136
+ def registerNewKeywords(classname, keywords, methodname):
137
+ """
138
+ Register the keyword tuple 'keywords' as a set of keyword
139
+ arguments for __new__ for the given class that will result
140
+ in the invocation of the given method.
141
+
142
+ Method should be either an init method or a class method.
143
+ """
144
+ if not isinstance(keywords, tuple) or not all(isinstance(x, str) for x in keywords):
145
+ raise TypeError("keywords must be tuple of strings")
146
+ NEW_MAP.setdefault(classname, {})[keywords] = methodname
147
+
148
+
81
149
  def registerABCForClass(classname, *abc_class):
82
150
  """
83
151
  Register *classname* with the *abc_class*-es when
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Convenience methods for Cocoa mapping types.
3
3
  """
4
+
4
5
  __all__ = ("addConvenienceForBasicMapping",)
5
6
 
6
7
  import collections.abc
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Convenience interface for NSArray/NSMutableArray
3
3
  """
4
+
4
5
  __all__ = ()
5
6
 
6
7
  import collections.abc
@@ -10,6 +11,7 @@ from objc._convenience import addConvenienceForClass, container_unwrap, containe
10
11
  from objc._objc import _C_ID, _C_NSInteger
11
12
  from objc._objc import _NSNotFound as NSNotFound
12
13
  from objc._objc import lookUpClass, registerMetaDataForSelector
14
+ from ._new import NEW_MAP
13
15
 
14
16
  NSArray = lookUpClass("NSArray")
15
17
  NSMutableArray = lookUpClass("NSMutableArray")
@@ -296,6 +298,10 @@ def nsarray_new(cls, sequence=None):
296
298
  return NSArray.arrayWithArray_(sequence)
297
299
 
298
300
 
301
+ for cls in ("NSArray", "__NSArrayI", "__NSArrayM", "__NSArray0"):
302
+ NEW_MAP.setdefault(cls, {})[()] = nsarray_new
303
+
304
+
299
305
  def nsmutablearray_new(cls, sequence=None):
300
306
  if not sequence:
301
307
  return NSMutableArray.array()
@@ -313,6 +319,11 @@ def nsmutablearray_new(cls, sequence=None):
313
319
  return NSMutableArray.arrayWithArray_(sequence)
314
320
 
315
321
 
322
+ for cls in ("NSMutableArray",):
323
+ d = NEW_MAP.setdefault(cls, {})
324
+ d[()] = nsmutablearray_new
325
+
326
+
316
327
  def nsarray__contains__(self, elem):
317
328
  return bool(self.containsObject_(container_wrap(elem)))
318
329
 
@@ -373,7 +384,6 @@ def nsarray__iter__(self):
373
384
  addConvenienceForClass(
374
385
  "NSArray",
375
386
  (
376
- ("__new__", staticmethod(nsarray_new)),
377
387
  ("__add__", nsarray_add),
378
388
  ("__radd__", nsarray_radd),
379
389
  ("__mul__", nsarray_mul),
@@ -411,7 +421,6 @@ def nsmutablearray__copy__(self):
411
421
  addConvenienceForClass(
412
422
  "NSMutableArray",
413
423
  (
414
- ("__new__", staticmethod(nsmutablearray_new)),
415
424
  ("__copy__", nsmutablearray__copy__),
416
425
  ("__setitem__", nsarray__setitem__),
417
426
  ("__delitem__", nsarray__delitem__),
@@ -5,8 +5,10 @@ NSData needs to be handles specially for correctness reasons,
5
5
  and is therefore in the core instead of the Foundation
6
6
  framework wrappers.
7
7
  """
8
+
8
9
  from objc._convenience import addConvenienceForClass
9
10
  from objc._objc import registerMetaDataForSelector
11
+ from ._new import NEW_MAP
10
12
  import sys
11
13
  import operator
12
14
 
@@ -52,6 +54,10 @@ def nsdata__new__(cls, value=None):
52
54
  return cls.dataWithBytes_length_(view, len(view))
53
55
 
54
56
 
57
+ for cls in ("NSData", "NSMutableData"):
58
+ NEW_MAP.setdefault(cls, {})[()] = nsdata__new__
59
+
60
+
55
61
  def nsdata__str__(self):
56
62
  if len(self) == 0:
57
63
  return str(b"")
@@ -248,7 +254,6 @@ def nsdata_isascii(self, *args, **kwds):
248
254
  addConvenienceForClass(
249
255
  "NSData",
250
256
  (
251
- ("__new__", staticmethod(nsdata__new__)),
252
257
  ("__len__", lambda self: self.length()),
253
258
  ("__str__", nsdata__str__),
254
259
  ("__getitem__", nsdata__getitem__),
@@ -4,11 +4,13 @@ Support for NSDecimalNumber.
4
4
  The actual class is defined in Foundation, but having the wrapper
5
5
  here is much more convenient.
6
6
  """
7
+
7
8
  __all__ = ()
8
9
  import operator
9
10
 
10
11
  from objc._convenience import addConvenienceForClass
11
12
  from objc._objc import NSDecimal, lookUpClass
13
+ from ._new import NEW_MAP
12
14
 
13
15
  NSDecimalNumber = lookUpClass("NSDecimalNumber")
14
16
 
@@ -38,10 +40,11 @@ def decimal_new(cls, value=None):
38
40
  raise TypeError("Value is not a number")
39
41
 
40
42
 
43
+ NEW_MAP.setdefault("NSDecimalNumber", {})[()] = decimal_new
44
+
41
45
  addConvenienceForClass(
42
46
  "NSDecimalNumber",
43
47
  (
44
- ("__new__", staticmethod(decimal_new)),
45
48
  (
46
49
  "__add__",
47
50
  lambda self, other: NSDecimalNumber(operator.add(NSDecimal(self), other)),
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Convenience interface for NSDictionary/NSMutableDictionary
3
3
  """
4
+
4
5
  __all__ = ()
5
6
 
6
7
  import collections.abc
@@ -1,12 +1,14 @@
1
1
  """
2
2
  Convenience interface for NSSet/NSMutableSet
3
3
  """
4
+
4
5
  __all__ = ()
5
6
 
6
7
  import collections.abc
7
8
 
8
9
  from objc._convenience import addConvenienceForClass, container_unwrap, container_wrap
9
10
  from objc._objc import lookUpClass
11
+ from ._new import NEW_MAP
10
12
 
11
13
  NSSet = lookUpClass("NSSet")
12
14
  NSMutableSet = lookUpClass("NSMutableSet")
@@ -341,6 +343,5 @@ def nsmutableset_new(cls, sequence=None):
341
343
  return value
342
344
 
343
345
 
344
- addConvenienceForClass("NSSet", (("__new__", staticmethod(nsset_new)),))
345
-
346
- addConvenienceForClass("NSMutableSet", (("__new__", staticmethod(nsmutableset_new)),))
346
+ NEW_MAP.setdefault("NSSet", {})[()] = nsset_new
347
+ NEW_MAP.setdefault("NSMutableSet", {})[()] = nsmutableset_new
@@ -1,7 +1,9 @@
1
1
  """
2
2
  Convenience interface for NSString
3
3
  """
4
+
4
5
  from objc._convenience import addConvenienceForClass
6
+ from ._new import NEW_MAP
5
7
 
6
8
  __all__ = ()
7
9
 
@@ -15,12 +17,14 @@ def nsstring_new(cls, value=_no_value):
15
17
  return cls.alloc().initWithString_(value)
16
18
 
17
19
 
20
+ for cls in ("NSString", "NSMutableString"):
21
+ NEW_MAP.setdefault(cls, {})[()] = nsstring_new
22
+
18
23
  addConvenienceForClass(
19
24
  "NSString",
20
25
  (
21
26
  ("__len__", lambda self: self.length()),
22
27
  ("endswith", lambda self, pfx: self.hasSuffix_(pfx)),
23
28
  ("startswith", lambda self, pfx: self.hasPrefix_(pfx)),
24
- ("__new__", staticmethod(nsstring_new)),
25
29
  ),
26
30
  )
@@ -2,6 +2,7 @@
2
2
  This module implements a callback function that is used by the C code to
3
3
  add Python special methods to Objective-C classes with a suitable interface.
4
4
  """
5
+
5
6
  from objc._convenience import addConvenienceForClass
6
7
 
7
8
  __all__ = ("addConvenienceForBasicSequence",)
@@ -4,6 +4,7 @@ Helper module that will enable lazy imports of Cocoa wrapper items.
4
4
  This improves startup times and memory usage, at the cost
5
5
  of not being able to use 'from Cocoa import *'
6
6
  """
7
+
7
8
  __all__ = ("ObjCLazyModule", "createFrameworkDirAndGetattr")
8
9
 
9
10
  import re
@@ -4,6 +4,7 @@ Support for @synchronized blocks
4
4
  The python class object_lock is a contextmanager for with statements that
5
5
  can also be used manually.
6
6
  """
7
+
7
8
  import objc as _objc
8
9
 
9
10
 
@@ -0,0 +1,164 @@
1
+ """
2
+ Implementation of `__new__` for arbitrary Cocoa classes
3
+
4
+ The __new__ method just translates invocations into the
5
+ corresponding invocation of the Cocoa pattern (
6
+ `cls.alloc().init()` or `cls.new()`), based on a mapping
7
+ maintaind in this file.
8
+
9
+ The mapping is updated in two ways:
10
+ 1. From framework bindings for native classes
11
+ 2. Based on `init` methods in Python subclasses
12
+
13
+ """
14
+
15
+ import objc
16
+
17
+ __all__ = ()
18
+
19
+ # Mapping: class name -> { kwds: selector_name }
20
+ #
21
+ # That is, keys are names of Objective-C classes, values
22
+ # are mappings from keyword argument names to
23
+ # the name of a selector.
24
+ #
25
+ # The selector_name can be `None` to disable a
26
+ # mapping in a subclass.
27
+ #
28
+ # The complete mapping for a class is a chain map
29
+ # for the submaps of all classes on the MRO.
30
+ NEW_MAP = {
31
+ "NSObject": {(): "init"},
32
+ }
33
+
34
+ # Sentinel value
35
+ UNSET = object()
36
+
37
+ # Added to the docstring for __new__
38
+ DOC_SUFFIX = "The order of keyword arguments is significant\n"
39
+
40
+
41
+ def calculate_new_doc(cls):
42
+ """
43
+ Calculate the docstring for the __new__
44
+ for *cls*
45
+ """
46
+ result = {}
47
+ for c in reversed(cls.__mro__):
48
+ new_map = NEW_MAP.get(c.__name__, UNSET)
49
+ if new_map is UNSET:
50
+ continue
51
+
52
+ for kwds, selector in new_map.items():
53
+ if selector is None:
54
+ result.pop(kwds, None)
55
+
56
+ if not kwds:
57
+ result[kwds] = f"{cls.__name__}(): "
58
+ else:
59
+ result[kwds] = f"{cls.__name__}(*, " + ", ".join(kwds) + "): "
60
+ if selector.startswith("init"):
61
+ result[
62
+ kwds
63
+ ] += f"\n returns cls.alloc().{selector}({', '.join(kwds)})\n\n"
64
+ else:
65
+ result[kwds] += f"\n returns cls.{selector}({', '.join(kwds)})\n\n"
66
+ return "".join(sorted(result.values())) + DOC_SUFFIX
67
+
68
+
69
+ class function_wrapper:
70
+ """
71
+ Wrapper for the __new__ function to generate the
72
+ docstring dynamically.
73
+ """
74
+
75
+ __slots__ = ("_function", "_cls")
76
+
77
+ def __init__(self, function, cls):
78
+ self._function = function
79
+ self._cls = cls
80
+
81
+ @property
82
+ def __class__(self):
83
+ return self._function.__class__
84
+
85
+ @property
86
+ def __doc__(self):
87
+ return calculate_new_doc(self._cls)
88
+
89
+ def __getattr__(self, name):
90
+ return getattr(self._function, name)
91
+
92
+ def __setattr__(self, name, value):
93
+ if name in ("_function", "_cls"):
94
+ object.__setattr__(self, name, value)
95
+ return setattr(self._function, name, value)
96
+
97
+ def __call__(self, *args, **kwds):
98
+ return self._function(*args, **kwds)
99
+
100
+
101
+ def make_generic_new(cls):
102
+ def __new__(cls, *args, **kwds):
103
+ """
104
+ Generic implementation for Objective-C `__new__`.
105
+ """
106
+ key = tuple(kwds.keys())
107
+
108
+ for c in cls.__mro__:
109
+ new_map = NEW_MAP.get(c.__name__, UNSET)
110
+ if new_map is UNSET:
111
+ continue
112
+
113
+ name = new_map.get(key, UNSET)
114
+ if name is UNSET:
115
+ continue
116
+
117
+ if name is None:
118
+ if key:
119
+ raise TypeError(
120
+ f"{cls.__name__}() does not support keyword arguments {', '.join(repr(k) for k in key)}"
121
+ )
122
+ else:
123
+ raise TypeError(f"{cls.__name__}() requires keyword arguments")
124
+
125
+ if not isinstance(name, str):
126
+ # Assume that 'name' is actually a callable.
127
+ #
128
+ # This is used to implement custom signatures for a number
129
+ # of classes in the various ._convenience sibling modules.
130
+ return name(cls, *args, **kwds)
131
+
132
+ if args:
133
+ raise TypeError(
134
+ f"{cls.__name__}() does not accept positional arguments"
135
+ )
136
+
137
+ args = [kwds[n] for n in key]
138
+ if name.startswith("init") and len(name) == 4 or name[4].isupper():
139
+ return getattr(cls.alloc(), name)(*args)
140
+
141
+ else:
142
+ return getattr(cls, name)(*args)
143
+
144
+ if key in (("cobject",), ("c_void_p",)):
145
+ # Support for creating instances from raw pointers in the default
146
+ # __new__ implementation.
147
+ return objc.objc_object.__new__(cls, **kwds)
148
+
149
+ if key:
150
+ raise TypeError(
151
+ f"{cls.__name__}() does not support keyword arguments {', '.join(repr(k) for k in key)}"
152
+ )
153
+ else:
154
+ raise TypeError(f"{cls.__name__}() requires keyword arguments")
155
+
156
+ # XXX: Settings these helps, but does not yet result in the correct
157
+ # output from help()
158
+ __new__.__name__ = cls.__name__ + ".__new__"
159
+ __new__.__qualname__ = cls.__name__ + ".__new__"
160
+ __new__.__module__ = cls.__module__
161
+ return function_wrapper(__new__, cls)
162
+
163
+
164
+ objc.options._genericNewClass = function_wrapper
@@ -7,6 +7,7 @@ This can cause problems when the object state contains the
7
7
  object itself, which is why we need a 'setValue' callback for the
8
8
  load_* functions below.
9
9
  """
10
+
10
11
  __all__ = ()
11
12
 
12
13
  import copy
@@ -6,6 +6,7 @@ latter).
6
6
  The C code relies on this code to do most semantic checks, and only
7
7
  performs checks that are needed to avoid crashes.
8
8
  """
9
+
9
10
  import objc
10
11
  import types
11
12
  import inspect
@@ -14,6 +15,7 @@ import keyword
14
15
  import warnings
15
16
  import sys
16
17
  from ._informal_protocol import _informal_protocol_for_selector
18
+ from . import _new
17
19
 
18
20
  # only public objc_method until the python_method implementation
19
21
  # in C is gone
@@ -23,7 +25,37 @@ __all__ = ("objc_method", "python_method")
23
25
  NO_VALUE = object()
24
26
 
25
27
 
28
+ def _isSelectorPrefix(name, prefix):
29
+ return name.startswith(prefix) and (
30
+ len(name) == len(prefix) | name[len(prefix)].isupper()
31
+ )
32
+
33
+
34
+ def _selectorToKeywords(selector):
35
+ if not selector.startswith("init"):
36
+ raise ValueError("selector is not a valid init selector")
37
+ if len(selector) > 4 and not selector[4].isupper():
38
+ raise ValueError("selector is a valid init selector")
39
+ selector = selector[4:]
40
+ if not selector:
41
+ return ()
42
+
43
+ parts = selector.split(":")[:-1]
44
+ if parts[0].startswith("With"):
45
+ parts[0] = parts[0][4:]
46
+ parts[0] = parts[0][:1].lower() + parts[0][1:]
47
+
48
+ return tuple(parts)
49
+
50
+
51
+ def setDunderNew(
52
+ class_object,
53
+ ):
54
+ class_object.__new__ = _new.make_generic_new(class_object)
55
+
56
+
26
57
  def processClassDict(
58
+ class_name,
27
59
  class_dict,
28
60
  meta_dict,
29
61
  class_object,
@@ -73,7 +105,7 @@ def processClassDict(
73
105
 
74
106
  # First call all class setup hooks. Those can
75
107
  # update the class dictiory, which is why this
76
- # loop# cannot be merged into the next one.
108
+ # loop cannot be merged into the next one.
77
109
  for key, value in list(class_dict.items()):
78
110
  setup = getattr(value, "__pyobjc_class_setup__", NO_VALUE)
79
111
  if setup is not NO_VALUE:
@@ -153,10 +185,30 @@ def processClassDict(
153
185
  elif sel.isHidden:
154
186
  hidden_class_methods[sel.selector] = sel
155
187
 
188
+ new_kw_map = {}
189
+
190
+ for name, value in class_dict.items():
191
+ if not isinstance(name, str) or not name.startswith("init"):
192
+ continue
193
+ if len(name) > 4 and not name[4].isupper():
194
+ continue
195
+ if value is None and name == "init":
196
+ new_kw_map[()] = None
197
+ continue
198
+ elif not isinstance(value, objc.selector):
199
+ continue
200
+
201
+ new_kw_map[_selectorToKeywords(value.selector.decode())] = name
202
+ if new_kw_map:
203
+ _new.NEW_MAP[class_name] = new_kw_map
204
+
156
205
  return (
157
206
  instance_variables,
158
207
  instance_methods,
159
208
  class_methods,
209
+ # Either __new__ in this class, or a custom new in a parent class
210
+ ("__new__" in class_dict)
211
+ or type(class_object.__new__) == type(lambda: 1), # noqa: E721
160
212
  )
161
213
 
162
214
 
@@ -698,3 +750,4 @@ class python_method:
698
750
 
699
751
  objc.options._transformAttribute = transformAttribute
700
752
  objc.options._processClassDict = processClassDict
753
+ objc.options._setDunderNew = setDunderNew