pyobjc-core 11.1__tar.gz → 12.0__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 (520) hide show
  1. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/PyObjCTools/TestSupport.py +117 -64
  2. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/__init__.py +1 -0
  3. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsarray.py +1 -1
  4. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_lazyimport.py +3 -0
  5. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_new.py +15 -20
  6. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_transform.py +2 -2
  7. pyobjc_core-12.0/Lib/objc/_types.py +7 -0
  8. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/pyobjc_core.egg-info/PKG-INFO +3 -1
  9. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/pyobjc_core.egg-info/SOURCES.txt +7 -0
  10. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/pyobjc_core.egg-info/include/pyobjc-api.h +6 -3
  11. {pyobjc_core-11.1/Modules/objc → pyobjc_core-12.0/Lib/pyobjc_core.egg-info/include}/pyobjc-compat.h +32 -48
  12. pyobjc_core-12.0/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +3 -0
  13. {pyobjc_core-11.1 → pyobjc_core-12.0}/MANIFEST.in +1 -0
  14. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/_machsignals.m +27 -35
  15. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_NSBundleHack.m +3 -4
  16. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonArray.m +8 -8
  17. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonData.m +1 -2
  18. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonDate.m +7 -8
  19. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonDictionary.m +5 -6
  20. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonEnumerator.h +2 -2
  21. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonEnumerator.m +0 -7
  22. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonNumber.m +17 -17
  23. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonObject.m +10 -13
  24. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonSet.m +1 -2
  25. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonURL.h +1 -2
  26. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonURL.m +1 -4
  27. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonUnicode.m +7 -7
  28. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/ObjCPointer.m +1 -1
  29. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/block_support.h +1 -1
  30. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/block_support.m +35 -34
  31. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/bundle-variables.m +52 -69
  32. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/class-builder.m +21 -19
  33. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/class-list.m +39 -29
  34. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/closure_pool.h +1 -2
  35. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/corefoundation.m +12 -19
  36. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/ctests.m +113 -130
  37. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/file_wrapper.m +20 -20
  38. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/formal-protocol.m +5 -5
  39. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/fsref.m +5 -4
  40. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/function.m +16 -46
  41. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers-authorization.m +45 -20
  42. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers-foundation-nscoder.m +375 -307
  43. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers-foundation-nsdata.m +4 -4
  44. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers-foundation-nsdecimal.m +71 -42
  45. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers-foundation-nsinvocation.m +19 -19
  46. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers-foundation-nsobject.m +37 -35
  47. pyobjc_core-12.0/Modules/objc/helpers-vector.m +17585 -0
  48. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/instance-var.m +11 -10
  49. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/libffi_extra.m +6 -3
  50. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/libffi_support.h +4 -12
  51. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/libffi_support.m +113 -103
  52. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/meth-func.m +6 -6
  53. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/method-accessor.m +50 -28
  54. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/method-imp.m +43 -67
  55. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/method-signature.h +2 -2
  56. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/method-signature.m +167 -135
  57. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/module.m +91 -71
  58. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-class.h +8 -8
  59. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-class.m +205 -162
  60. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-object.h +4 -4
  61. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-object.m +51 -51
  62. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-runtime-compat.m +3 -2
  63. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc_super.m +3 -5
  64. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc_support.h +2 -1
  65. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc_support.m +121 -120
  66. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc_util.h +3 -4
  67. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc_util.m +93 -72
  68. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/opaque-pointer.m +4 -10
  69. pyobjc_core-12.0/Modules/objc/options.h +71 -0
  70. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/options.m +150 -127
  71. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pointer-support.m +21 -18
  72. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/proxy-registry.h +9 -4
  73. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/proxy-registry.m +45 -31
  74. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc-api.h +6 -3
  75. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc-api.m +1 -1
  76. {pyobjc_core-11.1/Lib/pyobjc_core.egg-info/include → pyobjc_core-12.0/Modules/objc}/pyobjc-compat.h +32 -48
  77. pyobjc_core-12.0/Modules/objc/pyobjc-compat.m +69 -0
  78. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc-unittest.h +6 -4
  79. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc.h +2 -2
  80. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc_unicode.m +7 -47
  81. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/python-api-used.h +73 -40
  82. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/registry.m +14 -15
  83. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/selector.h +9 -9
  84. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/selector.m +238 -267
  85. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/struct-wrapper.h +3 -1
  86. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/struct-wrapper.m +58 -44
  87. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/super-call.m +42 -48
  88. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/NULL.m +19 -23
  89. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/arrayint.m +25 -25
  90. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/arrays.m +35 -22
  91. pyobjc_core-12.0/Modules/objc/test/authorizationitem.m +111 -0
  92. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/block.m +55 -62
  93. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/block2.m +19 -24
  94. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/bufsizeinarg.m +51 -54
  95. pyobjc_core-12.0/Modules/objc/test/categories_base.m +7014 -0
  96. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c42.m +36 -33
  97. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c43.m +36 -33
  98. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c44.m +36 -33
  99. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c45.m +36 -33
  100. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c46.m +36 -33
  101. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c47.m +36 -33
  102. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c48.m +36 -33
  103. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c49.m +36 -33
  104. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c50.m +36 -33
  105. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c51.m +36 -33
  106. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c52.m +36 -33
  107. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c53.m +36 -33
  108. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c54.m +36 -33
  109. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c55.m +36 -33
  110. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c56.m +36 -33
  111. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c57.m +35 -32
  112. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c58.m +35 -32
  113. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_c59.m +36 -33
  114. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp10.m +36 -33
  115. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp11.m +36 -33
  116. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp12.m +36 -33
  117. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp13.m +36 -33
  118. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp14.m +36 -33
  119. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp15.m +36 -33
  120. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp16.m +36 -33
  121. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp17.m +36 -33
  122. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp18.m +36 -33
  123. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp19.m +36 -33
  124. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp20.m +36 -33
  125. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp21.m +36 -33
  126. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp22.m +36 -33
  127. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp23.m +36 -33
  128. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp24.m +4 -4
  129. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp27.m +4 -4
  130. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp3.m +4 -4
  131. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp30.m +4 -4
  132. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp33.m +4 -4
  133. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp36.m +4 -4
  134. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp39.m +4 -4
  135. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp42.m +4 -4
  136. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp45.m +4 -4
  137. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp48.m +4 -4
  138. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp51.m +4 -4
  139. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp54.m +4 -4
  140. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp57.m +4 -4
  141. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp6.m +36 -33
  142. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp7.m +36 -33
  143. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp8.m +36 -33
  144. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_gp9.m +36 -33
  145. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p24.m +36 -33
  146. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p25.m +36 -33
  147. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p26.m +36 -33
  148. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p27.m +36 -33
  149. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p28.m +36 -33
  150. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p29.m +36 -33
  151. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p30.m +36 -33
  152. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p31.m +36 -33
  153. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p32.m +36 -33
  154. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p33.m +36 -33
  155. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p34.m +36 -33
  156. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p35.m +36 -33
  157. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p36.m +36 -33
  158. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p37.m +36 -33
  159. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p38.m +36 -33
  160. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p39.m +36 -33
  161. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p40.m +36 -33
  162. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/category_p41.m +36 -33
  163. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/cfsocket.m +18 -23
  164. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/classes.m +21 -25
  165. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/clinmeth.m +19 -26
  166. pyobjc_core-12.0/Modules/objc/test/coding.m +282 -0
  167. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/copying.m +27 -32
  168. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/corefoundation.m +18 -22
  169. pyobjc_core-12.0/Modules/objc/test/customcallers.m +288 -0
  170. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/dataint.m +19 -22
  171. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/dateint.m +19 -22
  172. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/decimal.m +18 -22
  173. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/deprecations.m +20 -23
  174. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/dictint.m +20 -23
  175. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/enumeration.m +18 -22
  176. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/exceptions.m +18 -22
  177. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/filepointer.m +18 -22
  178. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/fsref.m +19 -23
  179. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/gcov.m +16 -20
  180. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/genericnew.m +48 -43
  181. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/helpernsdata.m +18 -22
  182. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/helpernsobject.m +21 -25
  183. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/identity.m +18 -23
  184. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/initialize.m +18 -22
  185. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/initpatterns.m +41 -42
  186. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/instanceVariables.m +21 -24
  187. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/locking.m +19 -24
  188. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/metadata.m +139 -124
  189. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/metadatafunction.m +86 -26
  190. pyobjc_core-12.0/Modules/objc/test/metadataorder.m +203 -0
  191. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/methodaccess.m +18 -22
  192. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/methodlookup.m +19 -23
  193. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/methres1.m +18 -24
  194. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/methres2.m +18 -24
  195. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/misc.m +19 -22
  196. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/missing1.m +17 -21
  197. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/missing2.m +17 -21
  198. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/missing3.m +17 -21
  199. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/nsobjectcategory.m +20 -25
  200. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/nulldelimitedresult.m +20 -23
  201. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/objectint.m +51 -49
  202. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/opaque.m +22 -24
  203. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/pointersupport.m +28 -33
  204. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/properties.m +20 -24
  205. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/protected.m +18 -22
  206. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/protocol.m +24 -25
  207. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/pythonnumber.m +27 -35
  208. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/pythonset.m +22 -25
  209. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/sequence.m +19 -24
  210. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/sockaddr.m +18 -22
  211. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/specialtypecodes.m +21 -24
  212. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/stringint.m +20 -24
  213. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/structargs.m +19 -24
  214. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/structpointer1.m +18 -22
  215. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/structpointer2.m +19 -22
  216. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/structs.m +18 -22
  217. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/testbndl.m +114 -87
  218. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/testbndl2.m +23 -25
  219. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/testclassandinst.m +21 -24
  220. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/testoutputinitializer.m +20 -23
  221. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/unavailable.m +25 -29
  222. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/vector.m +25 -27
  223. pyobjc_core-12.0/Modules/objc/test/vectorcall.m +9828 -0
  224. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/test/voidpointer.m +18 -22
  225. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/varlist.m +8 -9
  226. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/weakref.m +9 -41
  227. {pyobjc_core-11.1 → pyobjc_core-12.0}/PKG-INFO +3 -1
  228. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/dump-nsarchive-securecoding.m +1 -2
  229. pyobjc_core-12.0/PyObjCTest/test_authorizationitem.py +208 -0
  230. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_blocks.py +30 -0
  231. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_callbacks.py +1 -1
  232. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_conversion.py +75 -0
  233. pyobjc_core-12.0/PyObjCTest/test_customcallers.py +41 -0
  234. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_default_selector.py +32 -0
  235. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_deprecations.py +5 -0
  236. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_final.py +7 -0
  237. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_functions.py +47 -0
  238. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_generic_new.py +42 -1
  239. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_hidden_selector.py +33 -0
  240. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_imp.py +25 -0
  241. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_internals.py +100 -32
  242. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_ivar.py +22 -0
  243. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_keyvalue.py +67 -0
  244. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_metadata.py +61 -2
  245. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_metadata_function.py +41 -1
  246. pyobjc_core-12.0/PyObjCTest/test_metadataorder.py +108 -0
  247. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_methodaccess.py +55 -3
  248. pyobjc_core-12.0/PyObjCTest/test_nscoder.py +1024 -0
  249. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nsdata.py +11 -0
  250. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nsdecimal.py +7 -0
  251. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nsobject.py +30 -0
  252. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_objc.py +12 -0
  253. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_options.py +31 -1
  254. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_protocol.py +5 -17
  255. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_regr.py +144 -0
  256. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_set_interface.py +2 -1
  257. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_set_proxy.py +11 -1
  258. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_sockaddr.py +17 -1
  259. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_splitsig.py +9 -0
  260. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_subclass.py +58 -0
  261. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_testsupport.py +148 -0
  262. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_transform_integration.py +22 -0
  263. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_usekvo.py +7 -0
  264. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/comparebench.py +1 -1
  265. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/generate-helpers-vector.py +19 -19
  266. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/pyobjc_setup.py +2 -0
  267. {pyobjc_core-11.1 → pyobjc_core-12.0}/setup.cfg +2 -0
  268. {pyobjc_core-11.1 → pyobjc_core-12.0}/setup.py +1 -1
  269. pyobjc_core-11.1/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +0 -3
  270. pyobjc_core-11.1/Modules/objc/helpers-vector.m +0 -17360
  271. pyobjc_core-11.1/Modules/objc/options.h +0 -52
  272. pyobjc_core-11.1/Modules/objc/pyobjc-compat.m +0 -161
  273. pyobjc_core-11.1/Modules/objc/test/categories_base.m +0 -6488
  274. pyobjc_core-11.1/Modules/objc/test/coding.m +0 -163
  275. pyobjc_core-11.1/Modules/objc/test/vectorcall.m +0 -7939
  276. pyobjc_core-11.1/PyObjCTest/test_nscoder.py +0 -176
  277. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/00ReadMe.txt +0 -0
  278. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/GUITests/00ReadMe.txt +0 -0
  279. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/GUITests/test_modalsession.py +0 -0
  280. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/HelloWorld.py +0 -0
  281. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/autoreadme.py +0 -0
  282. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/instrumentSends.py +0 -0
  283. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/kvo-debugging.py +0 -0
  284. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/signal-demo.py +0 -0
  285. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/stdinreader.py +0 -0
  286. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/subclassing-objective-c.py +0 -0
  287. {pyobjc_core-11.1 → pyobjc_core-12.0}/Examples/Scripts/wmEnable.py +0 -0
  288. {pyobjc_core-11.1 → pyobjc_core-12.0}/HISTORIC.txt +0 -0
  289. {pyobjc_core-11.1 → pyobjc_core-12.0}/Install.txt +0 -0
  290. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/PyObjCTools/KeyValueCoding.py +0 -0
  291. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/PyObjCTools/MachSignals.py +0 -0
  292. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/PyObjCTools/Signals.py +0 -0
  293. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_bridges.py +0 -0
  294. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_bridgesupport.py +0 -0
  295. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_callable_docstr.py +0 -0
  296. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_category.py +0 -0
  297. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_compat.py +0 -0
  298. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_context.py +0 -0
  299. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience.py +0 -0
  300. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_mapping.py +0 -0
  301. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsdata.py +0 -0
  302. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsdecimal.py +0 -0
  303. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsdictionary.py +0 -0
  304. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsobject.py +0 -0
  305. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsset.py +0 -0
  306. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_nsstring.py +0 -0
  307. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_convenience_sequence.py +0 -0
  308. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_descriptors.py +0 -0
  309. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_dyld.py +0 -0
  310. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_framework.py +0 -0
  311. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_informal_protocol.py +0 -0
  312. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_locking.py +0 -0
  313. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_properties.py +0 -0
  314. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_protocols.py +0 -0
  315. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_pycoder.py +0 -0
  316. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_pythonify.py +0 -0
  317. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/_structtype.py +0 -0
  318. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/objc/simd.py +0 -0
  319. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
  320. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
  321. {pyobjc_core-11.1 → pyobjc_core-12.0}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
  322. {pyobjc_core-11.1 → pyobjc_core-12.0}/License.txt +0 -0
  323. {pyobjc_core-11.1 → pyobjc_core-12.0}/MANIFEST +0 -0
  324. {pyobjc_core-11.1 → pyobjc_core-12.0}/Misc/announcement.txt +0 -0
  325. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
  326. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
  327. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonData.h +0 -0
  328. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonData.m +0 -0
  329. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
  330. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
  331. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
  332. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
  333. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
  334. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
  335. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
  336. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
  337. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
  338. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
  339. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_NSBundleHack.h +0 -0
  340. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonArray.h +0 -0
  341. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonData.h +0 -0
  342. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonDate.h +0 -0
  343. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonDictionary.h +0 -0
  344. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonNumber.h +0 -0
  345. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonObject.h +0 -0
  346. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonSet.h +0 -0
  347. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/OC_PythonUnicode.h +0 -0
  348. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/ObjCPointer.h +0 -0
  349. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/bundle-variables.h +0 -0
  350. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/class-builder.h +0 -0
  351. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/class-list.h +0 -0
  352. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/closure_pool.m +0 -0
  353. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/corefoundation.h +0 -0
  354. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/ctests.h +0 -0
  355. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/file_wrapper.h +0 -0
  356. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/formal-protocol.h +0 -0
  357. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/fsref.h +0 -0
  358. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/function.h +0 -0
  359. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/helpers.h +0 -0
  360. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/instance-var.h +0 -0
  361. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/ivar-accessor.h +0 -0
  362. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/ivar-accessor.m +0 -0
  363. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/libffi_extra.h +0 -0
  364. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/memview.h +0 -0
  365. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/memview.m +0 -0
  366. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/meth-func.h +0 -0
  367. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/method-accessor.h +0 -0
  368. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/method-imp.h +0 -0
  369. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-NULL.h +0 -0
  370. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-NULL.m +0 -0
  371. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc-runtime-compat.h +0 -0
  372. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/objc_super.h +0 -0
  373. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/opaque-pointer.h +0 -0
  374. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pointer-support.h +0 -0
  375. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc-assert.h +0 -0
  376. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/pyobjc_unicode.h +0 -0
  377. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/registry.h +0 -0
  378. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/released-buffer.h +0 -0
  379. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/released-buffer.m +0 -0
  380. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/struct-sockaddr.h +0 -0
  381. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/struct-sockaddr.m +0 -0
  382. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/super-call.h +0 -0
  383. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/varlist.h +0 -0
  384. {pyobjc_core-11.1 → pyobjc_core-12.0}/Modules/objc/weakref.h +0 -0
  385. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/__init__.py +0 -0
  386. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
  387. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
  388. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
  389. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
  390. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
  391. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
  392. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
  393. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
  394. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/dump-nsarchive.m +0 -0
  395. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/fnd.py +0 -0
  396. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/helper_bridgesupport.py +0 -0
  397. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/keyvaluehelper.py +0 -0
  398. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/loader.py +0 -0
  399. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_NULL.py +0 -0
  400. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_allocatebuffer.py +0 -0
  401. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_api_import.py +0 -0
  402. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_archive_python.py +0 -0
  403. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_archiving_interop.py +0 -0
  404. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_archiving_secure_interop.py +0 -0
  405. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_array_interface.py +0 -0
  406. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_array_property.py +0 -0
  407. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_arrays.py +0 -0
  408. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_assocations.py +0 -0
  409. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_bridged_classes.py +0 -0
  410. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_bridges.py +0 -0
  411. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_bridgesupport.py +0 -0
  412. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_bufsizeinarg.py +0 -0
  413. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_bundleFunctions.py +0 -0
  414. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_bundleVariables.py +0 -0
  415. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_callable_docstr.py +0 -0
  416. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_categories.py +0 -0
  417. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_classandinst.py +0 -0
  418. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_classhooks.py +0 -0
  419. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_clinmeth.py +0 -0
  420. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_compat.py +0 -0
  421. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_context.py +0 -0
  422. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_convenience.py +0 -0
  423. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_copying.py +0 -0
  424. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_corefoundation.py +0 -0
  425. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_ctests.py +0 -0
  426. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_data_proxy.py +0 -0
  427. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_date_proxy.py +0 -0
  428. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_descriptors.py +0 -0
  429. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_dict_interface.py +0 -0
  430. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_dict_property.py +0 -0
  431. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_dict_proxy.py +0 -0
  432. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_dyld.py +0 -0
  433. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_enumerator.py +0 -0
  434. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_exceptions.py +0 -0
  435. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_filepointer.py +0 -0
  436. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_framework.py +0 -0
  437. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_free_threading.py +0 -0
  438. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_fsref.py +0 -0
  439. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_generic_class.py +0 -0
  440. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_identity.py +0 -0
  441. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_initpatterns.py +0 -0
  442. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_inspect_signatures.py +0 -0
  443. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_keyvalue_prop.py +0 -0
  444. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_keyvaluecoding.py +0 -0
  445. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_lazy_import.py +0 -0
  446. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_leaks.py +0 -0
  447. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_list_proxy.py +0 -0
  448. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_locking.py +0 -0
  449. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_machsignals.py +0 -0
  450. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_metadata_imp.py +0 -0
  451. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_metadata_inheritance.py +0 -0
  452. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_metadata_py.py +0 -0
  453. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_metadata_py2py.py +0 -0
  454. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_method_prototypes.py +0 -0
  455. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_methodedits.py +0 -0
  456. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_methodlookup.py +0 -0
  457. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_methods.py +0 -0
  458. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_methods2.py +0 -0
  459. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_methres.py +0 -0
  460. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nsdate_proxy.py +0 -0
  461. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nsinvocation.py +0 -0
  462. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nsunavailable.py +0 -0
  463. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_nulldelimited.py +0 -0
  464. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_number_proxy.py +0 -0
  465. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_objcpointer.py +0 -0
  466. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_object_property.py +0 -0
  467. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_object_proxy.py +0 -0
  468. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_opaque.py +0 -0
  469. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_outputinitializer.py +0 -0
  470. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_pickle.py +0 -0
  471. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_pickling_objc.py +0 -0
  472. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_pointer_compat.py +0 -0
  473. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_propertiesforclass.py +0 -0
  474. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_protected.py +0 -0
  475. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_protocolNamed.py +0 -0
  476. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_python_method.py +0 -0
  477. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_set_property.py +0 -0
  478. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_signals.py +0 -0
  479. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_signatures.py +0 -0
  480. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_simd.py +0 -0
  481. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_specialtypecodes_charbyte.py +0 -0
  482. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_specialtypecodes_charint.py +0 -0
  483. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_specialtypecodes_methdef.py +0 -0
  484. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_specialtypecodes_nsbool.py +0 -0
  485. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_specialtypecodes_struct.py +0 -0
  486. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_specialtypecodes_unichar.py +0 -0
  487. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_string_proxy.py +0 -0
  488. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_structpointer.py +0 -0
  489. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_structs.py +0 -0
  490. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_super_on_regular_classes.py +0 -0
  491. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_synthesize.py +0 -0
  492. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_transform.py +0 -0
  493. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_typecheck.py +0 -0
  494. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_unicode.py +0 -0
  495. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_urlproxy.py +0 -0
  496. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_varargs.py +0 -0
  497. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_varlist.py +0 -0
  498. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_vector_proxy.py +0 -0
  499. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_vectorcall.py +0 -0
  500. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_version_support.py +0 -0
  501. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_voidpointer.py +0 -0
  502. {pyobjc_core-11.1 → pyobjc_core-12.0}/PyObjCTest/test_weakref.py +0 -0
  503. {pyobjc_core-11.1 → pyobjc_core-12.0}/README.txt +0 -0
  504. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/MANIFEST.in +0 -0
  505. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/free-threading/_tools.py +0 -0
  506. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/free-threading/concurrent-class-list.py +0 -0
  507. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/free-threading/concurrent-dict-getting.py +0 -0
  508. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/free-threading/concurrent-iteration.py +0 -0
  509. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/free-threading/concurrent-registration.py +0 -0
  510. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/free-threading/concurrent-value-getting.py +0 -0
  511. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/gen_archive.py +0 -0
  512. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/generate-category-tests.py +0 -0
  513. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/pyobjcbench.py +0 -0
  514. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/results/pyobjcbench-7.3.txt +0 -0
  515. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
  516. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
  517. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/run-free-threading-tests.py +0 -0
  518. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/runtests-with-nuitka.py +0 -0
  519. {pyobjc_core-11.1 → pyobjc_core-12.0}/Tools/runtests.py +0 -0
  520. {pyobjc_core-11.1 → pyobjc_core-12.0}/pyproject.toml +0 -0
@@ -27,30 +27,11 @@ __unittest = False
27
27
  # Have a way to disable the autorelease pool behaviour
28
28
  _usepool = not _os.environ.get("PYOBJC_NO_AUTORELEASE")
29
29
 
30
- # XXX: Python 2 Compatibility for the PyObjC Test Suite
31
- try:
32
- unicode
33
- except NameError:
34
- unicode = str
35
-
36
- try:
37
- long
38
- except NameError:
39
- long = int
40
-
41
- try:
42
- basestring
43
- except NameError:
44
- basestring = str
45
-
46
- try:
47
- unichr
48
- except NameError:
49
- unichr = chr
50
-
51
30
 
52
31
  def _typemap(tp):
53
- if tp is None:
32
+ if isinstance(tp, tuple):
33
+ return tuple(_typemap(x) for x in tp)
34
+ elif tp is None:
54
35
  return None
55
36
  return (
56
37
  tp.replace(b"_NSRect", b"CGRect")
@@ -176,6 +157,10 @@ def os_release():
176
157
  if _os_release is not None:
177
158
  return _os_release
178
159
 
160
+ # NOTE: This calls 'sw_vers' because system APIs lie
161
+ # to us during some system transitions (e.g.
162
+ # from 10.15 to 11.0 and from 15.0 to 26.0) until
163
+ # Python itself is rebuild using a newer SDK.
179
164
  _os_release = (
180
165
  _subprocess.check_output(["sw_vers", "-productVersion"]).decode().strip()
181
166
  )
@@ -318,7 +303,7 @@ def os_level_between(min_release, max_release):
318
303
  _poolclass = objc.lookUpClass("NSAutoreleasePool")
319
304
 
320
305
  # NOTE: On at least macOS 10.8 there are multiple proxy classes for CFTypeRef...
321
- _nscftype = tuple(cls for cls in objc.getClassList(1) if "NSCFType" in cls.__name__)
306
+ _nscftype = tuple(cls for cls in objc.getClassList(True) if "NSCFType" in cls.__name__)
322
307
 
323
308
  _typealias = {}
324
309
 
@@ -631,7 +616,7 @@ class TestCase(_unittest.TestCase):
631
616
 
632
617
  def assertIsInitializer(self, method, message=None):
633
618
  if not isinstance(method, objc.selector):
634
- return
619
+ self.fail(message or f"{method!r} is not a selector")
635
620
 
636
621
  info = method.__metadata__()
637
622
  if not info.get("initializer", False):
@@ -639,7 +624,7 @@ class TestCase(_unittest.TestCase):
639
624
 
640
625
  def assertIsNotInitializer(self, method, message=None):
641
626
  if not isinstance(method, objc.selector):
642
- return
627
+ self.fail(message or f"{method!r} is not a selector")
643
628
 
644
629
  info = method.__metadata__()
645
630
  if info.get("initializer", False):
@@ -647,7 +632,7 @@ class TestCase(_unittest.TestCase):
647
632
 
648
633
  def assertDoesFreeResult(self, method, message=None):
649
634
  if not isinstance(method, objc.selector):
650
- return
635
+ self.fail(message or f"{method!r} is not a selector")
651
636
 
652
637
  info = method.__metadata__()
653
638
  if not info.get("free_result", False):
@@ -655,7 +640,7 @@ class TestCase(_unittest.TestCase):
655
640
 
656
641
  def assertDoesNotFreeResult(self, method, message=None):
657
642
  if not isinstance(method, objc.selector):
658
- return
643
+ self.fail(message or f"{method!r} is not a selector")
659
644
 
660
645
  info = method.__metadata__()
661
646
  if info.get("free_result", False):
@@ -686,6 +671,20 @@ class TestCase(_unittest.TestCase):
686
671
  def assertResultHasType(self, method, tp, message=None):
687
672
  info = method.__metadata__()
688
673
  typestr = info.get("retval").get("type", b"v")
674
+ if isinstance(tp, tuple):
675
+ for item in tp:
676
+ if (
677
+ typestr == item
678
+ or _typemap(typestr) == _typemap(tp)
679
+ or _typealias.get(typestr, typestr) == _typealias.get(tp, tp)
680
+ ):
681
+ break
682
+ else:
683
+ self.fail(
684
+ message
685
+ or f"result of {method!r} is not of type {tp!r}, but {typestr!r}"
686
+ )
687
+ return
689
688
  if (
690
689
  typestr != tp
691
690
  and _typemap(typestr) != _typemap(tp)
@@ -714,15 +713,28 @@ class TestCase(_unittest.TestCase):
714
713
  else:
715
714
  typestr = i.get("type", b"@")
716
715
 
716
+ if isinstance(tp, tuple):
717
+ for item in tp:
718
+ if (
719
+ typestr == item
720
+ or _typemap(typestr) == _typemap(tp)
721
+ or _typealias.get(typestr, typestr) == _typealias.get(tp, tp)
722
+ ):
723
+ break
724
+ else:
725
+ self.fail(
726
+ message
727
+ or f"arg {argno} of {method!r} is not of type {tp!r}, but {typestr!r}"
728
+ )
729
+ return
730
+
717
731
  if (
718
732
  typestr != tp
719
733
  and _typemap(typestr) != _typemap(tp)
720
734
  and _typealias.get(typestr, typestr) != _typealias.get(tp, tp)
721
735
  ):
722
736
  self.fail(
723
- message
724
- or "arg %d of %s is not of type %r, but %r"
725
- % (argno, method, tp, typestr)
737
+ message or f"arg {argno} of {method} is not of type {tp}, but {typestr}"
726
738
  )
727
739
 
728
740
  def assertArgIsFunction(self, method, argno, sel_type, retained, message=None):
@@ -1374,11 +1386,11 @@ class TestCase(_unittest.TestCase):
1374
1386
  # Calculate all (interesting) names in the module. This pokes into
1375
1387
  # the implementation details of objc.ObjCLazyModule to avoid loading
1376
1388
  # all attributes (which is expensive for larger bindings).
1377
- if isinstance(module, objc.ObjCLazyModule) and False:
1389
+ if isinstance(module, objc.ObjCLazyModule):
1378
1390
  module_names = []
1379
1391
  module_names.extend(
1380
1392
  cls.__name__
1381
- for cls in objc.getClassList()
1393
+ for cls in objc.getClassList(True)
1382
1394
  if (not cls.__name__.startswith("_")) and ("." not in cls.__name__)
1383
1395
  )
1384
1396
  module_names.extend(module._ObjCLazyModule__funcmap or [])
@@ -1391,12 +1403,45 @@ class TestCase(_unittest.TestCase):
1391
1403
  todo.extend(parent._ObjCLazyModule__parents or ())
1392
1404
  module_names.extend(parent.__dict__.keys())
1393
1405
  else:
1394
- module_names.extend(dir(module))
1406
+ module_names.extend(dir(parent))
1395
1407
 
1396
1408
  # The module_names list might contain duplicates
1397
1409
  module_names = sorted(set(module_names))
1398
1410
  else:
1399
- module_names = sorted(set(dir(module)))
1411
+
1412
+ def is_pyobjc_lazy(module):
1413
+ getter = getattr(module, "__getattr__", None)
1414
+ if getter is None:
1415
+ return False
1416
+ return hasattr(getter, "_pyobjc_parents")
1417
+
1418
+ if is_pyobjc_lazy(module):
1419
+ getter = getattr(module, "__getattr__", None)
1420
+ module_names = []
1421
+ module_names.extend(
1422
+ cls.__name__
1423
+ for cls in objc.getClassList(True)
1424
+ if (not cls.__name__.startswith("_")) and ("." not in cls.__name__)
1425
+ )
1426
+ module_names.extend(getattr(getter, "_pyobjc_funcmap", None) or [])
1427
+ todo = list(getter._pyobjc_parents)
1428
+ while todo:
1429
+ parent = todo.pop()
1430
+ if is_pyobjc_lazy(parent):
1431
+ getter = getattr(parent, "__getattr__", None)
1432
+ module_names.extend(
1433
+ getattr(getter, "_pyobjc_funcmap", None) or []
1434
+ )
1435
+ todo.extend(getter._pyobjc_parents or ())
1436
+ module_names.extend(parent.__dict__.keys())
1437
+
1438
+ else:
1439
+ module_names.extend(dir(parent))
1440
+
1441
+ module_names = sorted(set(module_names))
1442
+
1443
+ else:
1444
+ module_names = sorted(set(dir(module)))
1400
1445
 
1401
1446
  for _idx, nm in enumerate(module_names):
1402
1447
  # print(f"{_idx}/{len(module_names)} {nm}")
@@ -1410,40 +1455,48 @@ class TestCase(_unittest.TestCase):
1410
1455
  except AttributeError:
1411
1456
  continue
1412
1457
  if isinstance(value, objc.objc_class):
1413
- if value.__name__ == "Object":
1414
- # Root class, does not conform to the NSObject
1415
- # protocol and useless to test.
1416
- continue
1417
- for attr_name, attr in value.pyobjc_instanceMethods.__dict__.items():
1418
- if attr_name in exclude_method_names:
1419
- continue
1420
- if (nm, attr_name) in exclude_attrs:
1421
- continue
1422
- if attr_name.startswith("_"):
1423
- # Skip private names
1458
+ with objc.autorelease_pool():
1459
+ if value.__name__ == "Object":
1460
+ # Root class, does not conform to the NSObject
1461
+ # protocol and useless to test.
1424
1462
  continue
1463
+ for (
1464
+ attr_name,
1465
+ attr,
1466
+ ) in value.pyobjc_instanceMethods.__dict__.items():
1467
+ if attr_name in exclude_method_names:
1468
+ continue
1469
+ if (nm, attr_name) in exclude_attrs:
1470
+ continue
1471
+ if attr_name.startswith("_"):
1472
+ # Skip private names
1473
+ continue
1425
1474
 
1426
- with self.subTest(classname=nm, instance_method=attr_name):
1427
- if isinstance(attr, objc.selector): # pragma: no branch
1428
- self._validateCallableMetadata(
1429
- attr, nm, skip_simple_charptr_check=not exclude_cocoa
1430
- )
1475
+ with self.subTest(classname=nm, instance_method=attr_name):
1476
+ if isinstance(attr, objc.selector): # pragma: no branch
1477
+ self._validateCallableMetadata(
1478
+ attr,
1479
+ nm,
1480
+ skip_simple_charptr_check=not exclude_cocoa,
1481
+ )
1431
1482
 
1432
- for attr_name, attr in value.pyobjc_classMethods.__dict__.items():
1433
- if attr_name in exclude_method_names:
1434
- continue
1435
- if (nm, attr_name) in exclude_attrs:
1436
- continue
1437
- if attr_name.startswith("_"):
1438
- # Skip private names
1439
- continue
1483
+ for attr_name, attr in value.pyobjc_classMethods.__dict__.items():
1484
+ if attr_name in exclude_method_names:
1485
+ continue
1486
+ if (nm, attr_name) in exclude_attrs:
1487
+ continue
1488
+ if attr_name.startswith("_"):
1489
+ # Skip private names
1490
+ continue
1440
1491
 
1441
- with self.subTest(classname=nm, instance_method=attr_name):
1442
- attr = getattr(value.pyobjc_classMethods, attr_name, None)
1443
- if isinstance(attr, objc.selector): # pragma: no branch
1444
- self._validateCallableMetadata(
1445
- attr, nm, skip_simple_charptr_check=not exclude_cocoa
1446
- )
1492
+ with self.subTest(classname=nm, instance_method=attr_name):
1493
+ attr = getattr(value.pyobjc_classMethods, attr_name, None)
1494
+ if isinstance(attr, objc.selector): # pragma: no branch
1495
+ self._validateCallableMetadata(
1496
+ attr,
1497
+ nm,
1498
+ skip_simple_charptr_check=not exclude_cocoa,
1499
+ )
1447
1500
  elif isinstance(value, objc.function):
1448
1501
  with self.subTest(function=nm):
1449
1502
  self._validateCallableMetadata(value)
@@ -45,6 +45,7 @@ from . import _callable_docstr # noqa: F401, F403, E402
45
45
  from . import _pycoder # noqa: F401, F403, E402
46
46
  from ._informal_protocol import * # noqa: F401, F403, E402
47
47
  from . import _new # noqa: F401, E402
48
+ from ._types import * # noqa: F401, F403, E402
48
49
 
49
50
 
50
51
  # Helper function for new-style metadata modules
@@ -133,7 +133,7 @@ def nsarray__getitem__(self, idx):
133
133
  return [self[i] for i in range(start, stop, step)]
134
134
 
135
135
  elif not isinstance(idx, int):
136
- raise TypeError("index must be a number")
136
+ raise TypeError("list indices must be integers or slices")
137
137
 
138
138
  if idx < 0:
139
139
  idx += len(self)
@@ -442,6 +442,9 @@ def createFrameworkDirAndGetattr(
442
442
  expressions_mapping = ChainMap(globals_dict, _GetAttrMap(__getattr__))
443
443
  load_cftypes(metadict.get("cftypes"))
444
444
 
445
+ __getattr__._pyobjc_parents = parents
446
+ __getattr__._pyobjc_funcmap = funcmap
447
+
445
448
  return __dir__, __getattr__
446
449
 
447
450
 
@@ -87,12 +87,24 @@ class function_wrapper:
87
87
  def __doc__(self):
88
88
  return calculate_new_doc(self._cls)
89
89
 
90
+ @property
91
+ def __module__(self):
92
+ return self._cls.__module__
93
+
90
94
  def __getattr__(self, name):
95
+ if name == "__qualname__":
96
+ return (
97
+ (self._cls.__module__ or "objc") + "." + self._cls.__name__ + ".__new__"
98
+ )
99
+ elif name == "__name__":
100
+ return "__new__"
101
+ elif name == "__module__":
102
+ return self._cls.__module__
91
103
  return getattr(self._function, name)
92
104
 
93
105
  def __setattr__(self, name, value):
94
106
  if name in ("_function", "_cls"):
95
- object.__setattr__(self, name, value)
107
+ return object.__setattr__(self, name, value)
96
108
  return setattr(self._function, name, value)
97
109
 
98
110
  def __call__(self, *args, **kwds):
@@ -154,25 +166,8 @@ def new_func(cls, *args, **kwds):
154
166
  raise TypeError(f"{cls.__name__}() requires keyword arguments")
155
167
 
156
168
 
157
- FunctionType = type(new_func)
158
-
159
-
160
- def make_generic_new(cls, *, FunctionType=FunctionType, new_func=new_func):
161
-
162
- # XXX: Settings these helps, but does not yet result in the correct
163
- # output from help()
164
-
165
- result = FunctionType(
166
- new_func.__code__,
167
- new_func.__globals__,
168
- cls.__name__ + ".__new__",
169
- new_func.__defaults__,
170
- new_func.__closure__,
171
- )
172
- result.__qualname__ = result.__name__
173
- result.__module__ = cls.__module__
174
- result = function_wrapper(result, cls)
175
- return result
169
+ def make_generic_new(cls):
170
+ return function_wrapper(new_func, cls)
176
171
 
177
172
 
178
173
  objc.options._genericNewClass = function_wrapper
@@ -532,12 +532,12 @@ def transformAttribute(name, value, class_object, protocols):
532
532
  if pos_default:
533
533
  raise objc.BadPrototypeError(
534
534
  f"{selname.decode()!r} expects {argcount} arguments, "
535
- f"{value!r} has between {pos-pos_default-1} and {pos-1} positional arguments"
535
+ f"{value!r} has between {pos - pos_default - 1} and {pos - 1} positional arguments"
536
536
  )
537
537
  else:
538
538
  raise objc.BadPrototypeError(
539
539
  f"{selname.decode()!r} expects {argcount} arguments, "
540
- f"{value!r} has {pos-1} positional arguments"
540
+ f"{value!r} has {pos - 1} positional arguments"
541
541
  )
542
542
 
543
543
  # XXX: This is needed because SomeClass.pyobjc_instanceMethods.hiddenSelector.isHidden
@@ -0,0 +1,7 @@
1
+ """
2
+ Helper for typing framework bindings
3
+ """
4
+
5
+ NSInteger = int
6
+ NSUInteger = int
7
+ CGFloat = float
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-core
3
- Version: 11.1
3
+ Version: 12.0
4
4
  Summary: Python<->ObjC Interoperability Module
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren, bbum, SteveM, LeleG, many others stretching back through the reaches of time...
@@ -25,7 +25,9 @@ Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Programming Language :: Python :: 3.13
27
27
  Classifier: Programming Language :: Python :: 3.14
28
+ Classifier: Programming Language :: Python :: 3.15
28
29
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
+ Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
29
31
  Classifier: Programming Language :: Objective C
30
32
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
31
33
  Classifier: Topic :: Software Development :: User Interfaces
@@ -52,6 +52,7 @@ Lib/objc/_pycoder.py
52
52
  Lib/objc/_pythonify.py
53
53
  Lib/objc/_structtype.py
54
54
  Lib/objc/_transform.py
55
+ Lib/objc/_types.py
55
56
  Lib/objc/simd.py
56
57
  Lib/pyobjc_core.egg-info/PKG-INFO
57
58
  Lib/pyobjc_core.egg-info/SOURCES.txt
@@ -201,6 +202,7 @@ Modules/objc/weakref.m
201
202
  Modules/objc/test/NULL.m
202
203
  Modules/objc/test/arrayint.m
203
204
  Modules/objc/test/arrays.m
205
+ Modules/objc/test/authorizationitem.m
204
206
  Modules/objc/test/block.m
205
207
  Modules/objc/test/block2.m
206
208
  Modules/objc/test/bufsizeinarg.m
@@ -278,6 +280,7 @@ Modules/objc/test/clinmeth.m
278
280
  Modules/objc/test/coding.m
279
281
  Modules/objc/test/copying.m
280
282
  Modules/objc/test/corefoundation.m
283
+ Modules/objc/test/customcallers.m
281
284
  Modules/objc/test/dataint.m
282
285
  Modules/objc/test/dateint.m
283
286
  Modules/objc/test/decimal.m
@@ -298,6 +301,7 @@ Modules/objc/test/instanceVariables.m
298
301
  Modules/objc/test/locking.m
299
302
  Modules/objc/test/metadata.m
300
303
  Modules/objc/test/metadatafunction.m
304
+ Modules/objc/test/metadataorder.m
301
305
  Modules/objc/test/methodaccess.m
302
306
  Modules/objc/test/methodlookup.m
303
307
  Modules/objc/test/methres1.m
@@ -349,6 +353,7 @@ PyObjCTest/test_array_interface.py
349
353
  PyObjCTest/test_array_property.py
350
354
  PyObjCTest/test_arrays.py
351
355
  PyObjCTest/test_assocations.py
356
+ PyObjCTest/test_authorizationitem.py
352
357
  PyObjCTest/test_blocks.py
353
358
  PyObjCTest/test_bridged_classes.py
354
359
  PyObjCTest/test_bridges.py
@@ -369,6 +374,7 @@ PyObjCTest/test_conversion.py
369
374
  PyObjCTest/test_copying.py
370
375
  PyObjCTest/test_corefoundation.py
371
376
  PyObjCTest/test_ctests.py
377
+ PyObjCTest/test_customcallers.py
372
378
  PyObjCTest/test_data_proxy.py
373
379
  PyObjCTest/test_date_proxy.py
374
380
  PyObjCTest/test_default_selector.py
@@ -409,6 +415,7 @@ PyObjCTest/test_metadata_imp.py
409
415
  PyObjCTest/test_metadata_inheritance.py
410
416
  PyObjCTest/test_metadata_py.py
411
417
  PyObjCTest/test_metadata_py2py.py
418
+ PyObjCTest/test_metadataorder.py
412
419
  PyObjCTest/test_method_prototypes.py
413
420
  PyObjCTest/test_methodaccess.py
414
421
  PyObjCTest/test_methodedits.py
@@ -53,8 +53,9 @@ NS_ASSUME_NONNULL_BEGIN
53
53
  /*
54
54
  * Only add items to the end of this list!
55
55
  */
56
+
56
57
  typedef int(RegisterMethodMappingFunctionType)(
57
- Class, SEL,
58
+ Class _Nullable, SEL,
58
59
  PyObject* _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull,
59
60
  PyObject* _Nonnull const* _Nonnull, size_t),
60
61
  IMP _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull));
@@ -83,7 +84,8 @@ struct pyobjc_api {
83
84
  PyObject* _Nullable (*_Nonnull unsupported_method_caller)(
84
85
  PyObject* _Nonnull, PyObject* _Nonnull, PyObject* _Nonnull const* _Nonnull,
85
86
  size_t);
86
- void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state) __attribute__((__noreturn__));
87
+ void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state)
88
+ __attribute__((__noreturn__));
87
89
  int (*_Nonnull simplify_sig)(const char* signature, char* buf, size_t buflen);
88
90
  void (*_Nonnull free_c_array)(int, Py_buffer*);
89
91
  int (*_Nonnull py_to_c_array)(BOOL, BOOL, const char* _Nonnull, PyObject* _Nonnull,
@@ -113,7 +115,8 @@ struct pyobjc_api {
113
115
  int (*_Nonnull checknokwnames)(PyObject* _Nonnull callable,
114
116
  PyObject* _Nullable kwnames);
115
117
 
116
- PyObject* _Nullable (*_Nonnull createopaquepointertype)(const char*, const char*, const char*);
118
+ PyObject* _Nullable (*_Nonnull createopaquepointertype)(const char*, const char*,
119
+ const char*);
117
120
  };
118
121
 
119
122
  #ifndef PYOBJC_BUILD
@@ -123,34 +123,6 @@ NS_ASSUME_NONNULL_BEGIN
123
123
  } while (0)
124
124
  #endif
125
125
 
126
- #if PY_VERSION_HEX < 0x03090000
127
-
128
- /* For use on Python 3.8 and earlier. PyObjC doesn't use the
129
- * "flag" bit internally.
130
- */
131
-
132
- #ifndef PY_VECTORCALL_ARGUMENTS_OFFSET
133
- #define PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
134
- #endif
135
-
136
- #define PyVectorcall_NARGS(nargsf) ((nargsf) & ~PY_VECTORCALL_ARGUMENTS_OFFSET)
137
-
138
- #ifdef OBJC_VERSION
139
- /* Don't use PyObject prefixed symbols in our binaries */
140
- #define PyObject_Vectorcall PyObjC_Vectorcall
141
- #define PyObject_VectorcallMethod PyObjC_VectorcallMethod
142
-
143
- extern PyObject* _Nullable PyObject_Vectorcall(PyObject* callable,
144
- PyObject* _Nonnull const* _Nonnull args,
145
- size_t nargsf,
146
- PyObject* _Nullable kwnames);
147
- extern PyObject* _Nullable PyObject_VectorcallMethod(
148
- PyObject* name, PyObject* _Nonnull const* _Nonnull args, size_t nargsf,
149
- PyObject* _Nullable kwnames);
150
- #endif
151
-
152
- #endif /* Python < 3.9 */
153
-
154
126
  /* Use CLINIC_SEP between the prototype and
155
127
  * description in doc strings, to get clean
156
128
  * docstrings.
@@ -198,7 +170,10 @@ _PyObjCTuple_SetItem(PyObject* tuple, Py_ssize_t idx, PyObject* _Nullable value)
198
170
  static inline PyObject*
199
171
  _PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
200
172
  {
201
- return PyTuple_GET_ITEM(tuple, idx); // LCOV_BR_EXCL_LINE
173
+ /* The protocol for tuples is that they are full initialized
174
+ * before handing them over to other code.
175
+ */
176
+ return (PyObject* _Nonnull)PyTuple_GET_ITEM(tuple, idx); // LCOV_BR_EXCL_LINE
202
177
  }
203
178
  #undef PyTuple_GET_ITEM
204
179
  #define PyTuple_GET_ITEM(a, b) _PyObjCTuple_GetItem(a, b)
@@ -242,13 +217,15 @@ _PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
242
217
 
243
218
  #if PY_VERSION_HEX < 0x030a0000
244
219
 
245
- static inline PyObject* Py_NewRef(PyObject* o)
220
+ static inline PyObject*
221
+ Py_NewRef(PyObject* o)
246
222
  {
247
223
  Py_INCREF(o);
248
224
  return o;
249
225
  }
250
226
 
251
- static inline PyObject* Py_XNewRef(PyObject* o)
227
+ static inline PyObject*
228
+ Py_XNewRef(PyObject* o)
252
229
  {
253
230
  Py_XINCREF(o);
254
231
  return o;
@@ -257,11 +234,16 @@ static inline PyObject* Py_XNewRef(PyObject* o)
257
234
  #endif /* PY_VERSION_HEX < 0x030a0000 */
258
235
 
259
236
  #if PY_VERSION_HEX < 0x030d0000
260
- #define Py_BEGIN_CRITICAL_SECTION(value) { (void)(value);
237
+ #define Py_BEGIN_CRITICAL_SECTION(value) \
238
+ { \
239
+ (void)(value);
261
240
  #define Py_END_CRITICAL_SECTION() }
262
241
  #define Py_EXIT_CRITICAL_SECTION() ((void)0)
263
242
 
264
- #define Py_BEGIN_CRITICAL_SECTION2(value1, value2) { (void)(value1); (void)(value2);
243
+ #define Py_BEGIN_CRITICAL_SECTION2(value1, value2) \
244
+ { \
245
+ (void)(value1); \
246
+ (void)(value2);
265
247
  #define Py_END_CRITICAL_SECTION2() }
266
248
  #define Py_EXIT_CRITICAL_SECTION2() ((void)0)
267
249
 
@@ -282,7 +264,8 @@ static inline PyObject* Py_XNewRef(PyObject* o)
282
264
  #endif
283
265
 
284
266
  #if PY_VERSION_HEX < 0x030d0000
285
- static inline int PyDict_GetItemRef(PyObject *p, PyObject *key, PyObject * _Nonnull* _Nullable result)
267
+ static inline int
268
+ PyDict_GetItemRef(PyObject* p, PyObject* key, PyObject* _Nonnull* _Nullable result)
286
269
  {
287
270
  *result = PyDict_GetItemWithError(p, key);
288
271
  if (*result == NULL) {
@@ -306,7 +289,8 @@ static inline PyObject* _Nullable PyList_GetItemRef(PyObject* l, Py_ssize_t i)
306
289
  #endif
307
290
 
308
291
  #if PY_VERSION_HEX < 0x030c0000
309
- static inline PyObject* PyType_GetDict(PyTypeObject* type)
292
+ static inline PyObject*
293
+ PyType_GetDict(PyTypeObject* type)
310
294
  {
311
295
  PyObject* result = type->tp_dict;
312
296
  Py_INCREF(result);
@@ -319,12 +303,13 @@ static inline PyObject* PyType_GetDict(PyTypeObject* type)
319
303
  * These are available in 3.14 and above, the definitions below
320
304
  * mirror the private implementation in 3.13.
321
305
  */
322
- static inline int PyUnstable_Object_IsUniquelyReferenced(PyObject* ob)
306
+ static inline int
307
+ PyUnstable_Object_IsUniquelyReferenced(PyObject* ob)
323
308
  {
324
309
  #ifdef Py_GIL_DISABLED
325
- return (_Py_IsOwnedByCurrentThread(ob) &&
326
- _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
327
- _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
310
+ return (_Py_IsOwnedByCurrentThread(ob)
311
+ && _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1
312
+ && _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
328
313
  #else
329
314
  return Py_REFCNT(ob) == 1;
330
315
  #endif
@@ -340,8 +325,8 @@ PyUnstable_EnableTryIncRef(PyObject* op __attribute__((__unused__)))
340
325
  // Nothing to do if it's in WEAKREFS, QUEUED, or MERGED states.
341
326
  return;
342
327
  }
343
- if (_Py_atomic_compare_exchange_ssize(
344
- &op->ob_ref_shared, &shared, shared | _Py_REF_MAYBE_WEAKREF)) {
328
+ if (_Py_atomic_compare_exchange_ssize(&op->ob_ref_shared, &shared,
329
+ shared | _Py_REF_MAYBE_WEAKREF)) {
345
330
  return;
346
331
  }
347
332
  }
@@ -350,7 +335,8 @@ PyUnstable_EnableTryIncRef(PyObject* op __attribute__((__unused__)))
350
335
 
351
336
  #ifdef Py_GIL_DISABLED
352
337
  static inline int
353
- _Py_TryIncrefFast(PyObject *op) {
338
+ _Py_TryIncrefFast(PyObject* op)
339
+ {
354
340
  uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
355
341
  local += 1;
356
342
  if (local == 0) {
@@ -369,7 +355,7 @@ _Py_TryIncrefFast(PyObject *op) {
369
355
  }
370
356
 
371
357
  static inline int
372
- _Py_TryIncRefShared(PyObject *op)
358
+ _Py_TryIncRefShared(PyObject* op)
373
359
  {
374
360
  Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&op->ob_ref_shared);
375
361
  for (;;) {
@@ -379,10 +365,8 @@ _Py_TryIncRefShared(PyObject *op)
379
365
  return 0;
380
366
  }
381
367
 
382
- if (_Py_atomic_compare_exchange_ssize(
383
- &op->ob_ref_shared,
384
- &shared,
385
- shared + (1 << _Py_REF_SHARED_SHIFT))) {
368
+ if (_Py_atomic_compare_exchange_ssize(&op->ob_ref_shared, &shared,
369
+ shared + (1 << _Py_REF_SHARED_SHIFT))) {
386
370
  #ifdef Py_REF_DEBUG
387
371
  _Py_IncRefTotal(_PyThreadState_GET());
388
372
  #endif
@@ -394,7 +378,7 @@ _Py_TryIncRefShared(PyObject *op)
394
378
  #endif
395
379
 
396
380
  static inline int
397
- PyUnstable_TryIncRef(PyObject *op __attribute__((__unused__)))
381
+ PyUnstable_TryIncRef(PyObject* op __attribute__((__unused__)))
398
382
  {
399
383
  #ifdef Py_GIL_DISABLED
400
384
  return _Py_TryIncrefFast(op) || _Py_TryIncRefShared(op);
@@ -0,0 +1,3 @@
1
+ macOS 26.0.1 (25A362)
2
+ Apple clang version 17.0.0 (clang-1700.3.19.1)
3
+ SDK: macOS 26.0
@@ -15,3 +15,4 @@ global-exclude *.pyo
15
15
  global-exclude *.so
16
16
  global-exclude __pycache__
17
17
  prune Lib/objc/*.dSYM
18
+ prune Lib/*.dSYM