pyobjc-core 11.1__tar.gz → 12.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 (525) hide show
  1. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/PyObjCTools/TestSupport.py +96 -72
  2. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/__init__.py +1 -0
  3. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsarray.py +1 -1
  4. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_lazyimport.py +3 -0
  5. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_new.py +13 -20
  6. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_transform.py +11 -5
  7. pyobjc_core-12.1/Lib/objc/_types.py +7 -0
  8. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/PKG-INFO +4 -3
  9. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/SOURCES.txt +10 -1
  10. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/include/pyobjc-api.h +6 -3
  11. {pyobjc_core-11.1/Modules/objc → pyobjc_core-12.1/Lib/pyobjc_core.egg-info/include}/pyobjc-compat.h +51 -96
  12. pyobjc_core-12.1/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +3 -0
  13. {pyobjc_core-11.1 → pyobjc_core-12.1}/MANIFEST.in +1 -0
  14. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/_machsignals.m +27 -35
  15. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_NSBundleHack.m +3 -4
  16. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonArray.h +0 -1
  17. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonArray.m +9 -17
  18. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonData.h +0 -1
  19. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonData.m +1 -2
  20. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonDate.h +0 -1
  21. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonDate.m +7 -8
  22. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonDictionary.h +0 -1
  23. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonDictionary.m +22 -12
  24. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonEnumerator.h +2 -2
  25. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonEnumerator.m +0 -7
  26. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonNumber.h +0 -1
  27. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonNumber.m +73 -56
  28. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonObject.h +0 -1
  29. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonObject.m +48 -55
  30. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonSet.h +0 -1
  31. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonSet.m +1 -2
  32. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonURL.h +1 -2
  33. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonURL.m +1 -4
  34. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonUnicode.h +0 -1
  35. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_PythonUnicode.m +9 -11
  36. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/ObjCPointer.h +0 -1
  37. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/ObjCPointer.m +1 -1
  38. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/block_support.h +1 -1
  39. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/block_support.m +83 -84
  40. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/bundle-variables.m +56 -76
  41. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/class-builder.h +2 -0
  42. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/class-builder.m +57 -161
  43. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/class-list.m +39 -29
  44. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/closure_pool.h +1 -2
  45. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/corefoundation.m +16 -23
  46. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/ctests.m +192 -132
  47. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/file_wrapper.m +22 -21
  48. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/formal-protocol.m +12 -11
  49. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/fsref.m +5 -4
  50. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/function.m +28 -62
  51. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers-authorization.m +47 -22
  52. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nscoder.m +376 -310
  53. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsdata.m +4 -4
  54. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsdecimal.m +71 -42
  55. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsinvocation.m +19 -19
  56. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsobject.m +57 -35
  57. pyobjc_core-12.1/Modules/objc/helpers-vector.m +17585 -0
  58. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/instance-var.m +13 -14
  59. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/libffi_extra.m +6 -3
  60. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/libffi_support.h +6 -12
  61. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/libffi_support.m +421 -480
  62. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/memview.m +8 -10
  63. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/meth-func.m +12 -9
  64. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/method-accessor.m +97 -77
  65. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/method-imp.h +1 -2
  66. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/method-imp.m +43 -68
  67. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/method-signature.h +27 -26
  68. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/method-signature.m +363 -290
  69. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/module.m +99 -81
  70. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-class.h +8 -8
  71. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-class.m +436 -342
  72. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-object.h +9 -7
  73. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-object.m +77 -68
  74. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-runtime-compat.h +2 -2
  75. pyobjc_core-12.1/Modules/objc/objc-runtime-compat.m +45 -0
  76. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc_super.m +5 -7
  77. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc_support.h +2 -1
  78. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc_support.m +255 -241
  79. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc_util.h +4 -5
  80. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc_util.m +127 -101
  81. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/opaque-pointer.m +5 -12
  82. pyobjc_core-12.1/Modules/objc/options.h +71 -0
  83. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/options.m +149 -126
  84. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pointer-support.m +21 -18
  85. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/proxy-registry.h +15 -22
  86. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/proxy-registry.m +47 -35
  87. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pyobjc-api.h +6 -3
  88. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pyobjc-api.m +1 -1
  89. {pyobjc_core-11.1/Lib/pyobjc_core.egg-info/include → pyobjc_core-12.1/Modules/objc}/pyobjc-compat.h +51 -96
  90. pyobjc_core-12.1/Modules/objc/pyobjc-compat.m +38 -0
  91. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pyobjc-unittest.h +6 -5
  92. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pyobjc.h +2 -10
  93. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pyobjc_unicode.m +7 -47
  94. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/python-api-used.h +84 -45
  95. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/registry.m +35 -55
  96. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/selector.h +10 -10
  97. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/selector.m +279 -393
  98. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/struct-sockaddr.m +5 -5
  99. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/struct-wrapper.h +3 -1
  100. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/struct-wrapper.m +66 -51
  101. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/super-call.h +1 -4
  102. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/super-call.m +110 -74
  103. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/NULL.m +19 -23
  104. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/arrayint.m +25 -25
  105. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/arrays.m +35 -22
  106. pyobjc_core-12.1/Modules/objc/test/authorizationitem.m +111 -0
  107. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/block.m +55 -62
  108. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/block2.m +19 -24
  109. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/bufsizeinarg.m +51 -54
  110. pyobjc_core-12.1/Modules/objc/test/categories_base.m +7014 -0
  111. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c42.m +36 -33
  112. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c43.m +36 -33
  113. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c44.m +36 -33
  114. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c45.m +36 -33
  115. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c46.m +36 -33
  116. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c47.m +36 -33
  117. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c48.m +36 -33
  118. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c49.m +36 -33
  119. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c50.m +36 -33
  120. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c51.m +36 -33
  121. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c52.m +36 -33
  122. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c53.m +36 -33
  123. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c54.m +36 -33
  124. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c55.m +36 -33
  125. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c56.m +36 -33
  126. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c57.m +35 -32
  127. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c58.m +35 -32
  128. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_c59.m +36 -33
  129. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp10.m +36 -33
  130. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp11.m +36 -33
  131. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp12.m +36 -33
  132. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp13.m +36 -33
  133. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp14.m +36 -33
  134. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp15.m +36 -33
  135. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp16.m +36 -33
  136. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp17.m +36 -33
  137. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp18.m +36 -33
  138. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp19.m +36 -33
  139. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp20.m +36 -33
  140. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp21.m +36 -33
  141. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp22.m +36 -33
  142. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp23.m +36 -33
  143. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp24.m +4 -4
  144. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp27.m +4 -4
  145. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp3.m +4 -4
  146. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp30.m +4 -4
  147. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp33.m +4 -4
  148. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp36.m +4 -4
  149. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp39.m +4 -4
  150. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp42.m +4 -4
  151. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp45.m +4 -4
  152. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp48.m +4 -4
  153. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp51.m +4 -4
  154. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp54.m +4 -4
  155. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp57.m +4 -4
  156. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp6.m +36 -33
  157. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp7.m +36 -33
  158. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp8.m +36 -33
  159. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_gp9.m +36 -33
  160. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p24.m +36 -33
  161. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p25.m +36 -33
  162. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p26.m +36 -33
  163. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p27.m +36 -33
  164. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p28.m +36 -33
  165. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p29.m +36 -33
  166. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p30.m +36 -33
  167. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p31.m +36 -33
  168. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p32.m +36 -33
  169. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p33.m +36 -33
  170. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p34.m +36 -33
  171. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p35.m +36 -33
  172. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p36.m +36 -33
  173. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p37.m +36 -33
  174. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p38.m +36 -33
  175. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p39.m +36 -33
  176. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p40.m +36 -33
  177. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/category_p41.m +36 -33
  178. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/cfsocket.m +18 -23
  179. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/classes.m +21 -25
  180. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/clinmeth.m +19 -26
  181. pyobjc_core-12.1/Modules/objc/test/coding.m +282 -0
  182. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/copying.m +27 -32
  183. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/corefoundation.m +18 -22
  184. pyobjc_core-12.1/Modules/objc/test/customcallers.m +301 -0
  185. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/dataint.m +19 -22
  186. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/dateint.m +19 -22
  187. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/decimal.m +18 -22
  188. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/deprecations.m +67 -23
  189. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/dictint.m +20 -23
  190. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/enumeration.m +18 -22
  191. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/exceptions.m +18 -22
  192. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/filepointer.m +18 -22
  193. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/fsref.m +19 -23
  194. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/gcov.m +16 -20
  195. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/genericnew.m +48 -43
  196. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/helpernsdata.m +18 -22
  197. pyobjc_core-12.1/Modules/objc/test/helpernsobject.m +259 -0
  198. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/identity.m +18 -23
  199. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/initialize.m +18 -22
  200. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/initpatterns.m +41 -42
  201. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/instanceVariables.m +21 -24
  202. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/locking.m +19 -24
  203. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/metadata.m +210 -123
  204. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/metadatafunction.m +107 -26
  205. pyobjc_core-12.1/Modules/objc/test/metadataorder.m +203 -0
  206. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/methodaccess.m +28 -22
  207. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/methodlookup.m +19 -23
  208. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/methres1.m +18 -24
  209. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/methres2.m +18 -24
  210. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/misc.m +19 -22
  211. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/missing1.m +17 -21
  212. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/missing2.m +17 -21
  213. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/missing3.m +17 -21
  214. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/nsobjectcategory.m +20 -25
  215. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/nulldelimitedresult.m +21 -24
  216. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/objectint.m +57 -50
  217. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/opaque.m +22 -24
  218. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/pointersupport.m +28 -33
  219. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/properties.m +20 -24
  220. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/protected.m +18 -22
  221. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/protocol.m +24 -25
  222. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/pythonnumber.m +27 -35
  223. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/pythonset.m +22 -25
  224. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/sequence.m +19 -24
  225. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/sockaddr.m +18 -22
  226. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/specialtypecodes.m +26 -24
  227. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/stringint.m +20 -24
  228. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/structargs.m +46 -23
  229. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/structpointer1.m +18 -22
  230. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/structpointer2.m +19 -22
  231. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/structs.m +18 -22
  232. pyobjc_core-12.1/Modules/objc/test/supercall.m +383 -0
  233. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/testbndl.m +114 -87
  234. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/testbndl2.m +23 -25
  235. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/testclassandinst.m +21 -24
  236. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/testoutputinitializer.m +20 -23
  237. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/unavailable.m +25 -29
  238. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/vector.m +25 -27
  239. pyobjc_core-12.1/Modules/objc/test/vectorcall.m +9828 -0
  240. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/test/voidpointer.m +18 -22
  241. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/varlist.m +13 -15
  242. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/weakref.m +9 -41
  243. {pyobjc_core-11.1 → pyobjc_core-12.1}/PKG-INFO +4 -3
  244. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/dump-nsarchive-securecoding.m +1 -2
  245. pyobjc_core-12.1/PyObjCTest/test_authorizationitem.py +210 -0
  246. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_blocks.py +55 -0
  247. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_callbacks.py +1 -1
  248. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_conversion.py +118 -0
  249. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_corefoundation.py +18 -0
  250. pyobjc_core-12.1/PyObjCTest/test_customcallers.py +78 -0
  251. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_default_selector.py +32 -0
  252. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_deprecations.py +69 -4
  253. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_final.py +15 -0
  254. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_functions.py +124 -0
  255. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_generic_new.py +47 -1
  256. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_hidden_selector.py +69 -0
  257. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_imp.py +46 -0
  258. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_initpatterns.py +2 -1
  259. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_internals.py +190 -32
  260. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_ivar.py +22 -0
  261. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_keyvalue.py +67 -0
  262. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_lazy_import.py +2 -0
  263. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_metadata.py +432 -4
  264. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_metadata_function.py +41 -1
  265. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_metadata_py.py +1 -1
  266. pyobjc_core-12.1/PyObjCTest/test_metadataorder.py +108 -0
  267. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_methodaccess.py +120 -3
  268. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_methodedits.py +102 -1
  269. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_methods.py +6 -1
  270. pyobjc_core-12.1/PyObjCTest/test_nscoder.py +1024 -0
  271. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nsdata.py +19 -0
  272. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nsdecimal.py +8 -2
  273. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nsobject.py +66 -1
  274. pyobjc_core-12.1/PyObjCTest/test_nsproxy.py +64 -0
  275. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_number_proxy.py +38 -3
  276. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_objc.py +12 -0
  277. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_options.py +58 -1
  278. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_propertiesforclass.py +18 -0
  279. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_protocol.py +5 -17
  280. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_regr.py +535 -10
  281. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_set_interface.py +2 -1
  282. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_set_proxy.py +11 -1
  283. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_sockaddr.py +17 -1
  284. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_charbyte.py +16 -1
  285. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_unichar.py +39 -4
  286. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_splitsig.py +71 -1
  287. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_structs.py +1 -1
  288. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_subclass.py +200 -19
  289. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_testsupport.py +320 -3
  290. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_transform.py +2 -0
  291. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_transform_integration.py +22 -0
  292. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_usekvo.py +24 -0
  293. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_vector_proxy.py +7 -1
  294. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/comparebench.py +1 -1
  295. pyobjc_core-12.1/Tools/free-threading/concurrent-methinfo.py +20 -0
  296. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/generate-helpers-vector.py +19 -19
  297. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/pyobjc_setup.py +5 -4
  298. {pyobjc_core-11.1 → pyobjc_core-12.1}/setup.cfg +3 -2
  299. {pyobjc_core-11.1 → pyobjc_core-12.1}/setup.py +7 -3
  300. pyobjc_core-11.1/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +0 -3
  301. pyobjc_core-11.1/Modules/objc/helpers-vector.m +0 -17360
  302. pyobjc_core-11.1/Modules/objc/objc-runtime-compat.m +0 -65
  303. pyobjc_core-11.1/Modules/objc/options.h +0 -52
  304. pyobjc_core-11.1/Modules/objc/pyobjc-assert.h +0 -59
  305. pyobjc_core-11.1/Modules/objc/pyobjc-compat.m +0 -161
  306. pyobjc_core-11.1/Modules/objc/test/categories_base.m +0 -6488
  307. pyobjc_core-11.1/Modules/objc/test/coding.m +0 -163
  308. pyobjc_core-11.1/Modules/objc/test/helpernsobject.m +0 -161
  309. pyobjc_core-11.1/Modules/objc/test/vectorcall.m +0 -7939
  310. pyobjc_core-11.1/PyObjCTest/test_nscoder.py +0 -176
  311. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/00ReadMe.txt +0 -0
  312. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/GUITests/00ReadMe.txt +0 -0
  313. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/GUITests/test_modalsession.py +0 -0
  314. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/HelloWorld.py +0 -0
  315. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/autoreadme.py +0 -0
  316. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/instrumentSends.py +0 -0
  317. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/kvo-debugging.py +0 -0
  318. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/signal-demo.py +0 -0
  319. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/stdinreader.py +0 -0
  320. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/subclassing-objective-c.py +0 -0
  321. {pyobjc_core-11.1 → pyobjc_core-12.1}/Examples/Scripts/wmEnable.py +0 -0
  322. {pyobjc_core-11.1 → pyobjc_core-12.1}/HISTORIC.txt +0 -0
  323. {pyobjc_core-11.1 → pyobjc_core-12.1}/Install.txt +0 -0
  324. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/PyObjCTools/KeyValueCoding.py +0 -0
  325. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/PyObjCTools/MachSignals.py +0 -0
  326. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/PyObjCTools/Signals.py +0 -0
  327. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_bridges.py +0 -0
  328. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_bridgesupport.py +0 -0
  329. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_callable_docstr.py +0 -0
  330. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_category.py +0 -0
  331. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_compat.py +0 -0
  332. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_context.py +0 -0
  333. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience.py +0 -0
  334. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_mapping.py +0 -0
  335. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsdata.py +0 -0
  336. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsdecimal.py +0 -0
  337. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsdictionary.py +0 -0
  338. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsobject.py +0 -0
  339. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsset.py +0 -0
  340. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_nsstring.py +0 -0
  341. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_convenience_sequence.py +0 -0
  342. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_descriptors.py +0 -0
  343. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_dyld.py +0 -0
  344. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_framework.py +0 -0
  345. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_informal_protocol.py +0 -0
  346. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_locking.py +0 -0
  347. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_properties.py +0 -0
  348. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_protocols.py +0 -0
  349. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_pycoder.py +0 -0
  350. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_pythonify.py +0 -0
  351. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/_structtype.py +0 -0
  352. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/objc/simd.py +0 -0
  353. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
  354. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
  355. {pyobjc_core-11.1 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
  356. {pyobjc_core-11.1 → pyobjc_core-12.1}/License.txt +0 -0
  357. {pyobjc_core-11.1 → pyobjc_core-12.1}/MANIFEST +0 -0
  358. {pyobjc_core-11.1 → pyobjc_core-12.1}/Misc/announcement.txt +0 -0
  359. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
  360. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
  361. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonData.h +0 -0
  362. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonData.m +0 -0
  363. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
  364. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
  365. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
  366. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
  367. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
  368. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
  369. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
  370. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
  371. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
  372. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
  373. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/OC_NSBundleHack.h +0 -0
  374. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/bundle-variables.h +0 -0
  375. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/class-list.h +0 -0
  376. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/closure_pool.m +0 -0
  377. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/corefoundation.h +0 -0
  378. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/ctests.h +0 -0
  379. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/file_wrapper.h +0 -0
  380. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/formal-protocol.h +0 -0
  381. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/fsref.h +0 -0
  382. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/function.h +0 -0
  383. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/helpers.h +0 -0
  384. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/instance-var.h +0 -0
  385. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/ivar-accessor.h +0 -0
  386. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/ivar-accessor.m +0 -0
  387. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/libffi_extra.h +0 -0
  388. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/memview.h +0 -0
  389. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/meth-func.h +0 -0
  390. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/method-accessor.h +0 -0
  391. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-NULL.h +0 -0
  392. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc-NULL.m +0 -0
  393. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/objc_super.h +0 -0
  394. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/opaque-pointer.h +0 -0
  395. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pointer-support.h +0 -0
  396. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/pyobjc_unicode.h +0 -0
  397. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/registry.h +0 -0
  398. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/released-buffer.h +0 -0
  399. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/released-buffer.m +0 -0
  400. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/struct-sockaddr.h +0 -0
  401. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/varlist.h +0 -0
  402. {pyobjc_core-11.1 → pyobjc_core-12.1}/Modules/objc/weakref.h +0 -0
  403. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/__init__.py +0 -0
  404. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
  405. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
  406. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
  407. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
  408. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
  409. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
  410. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
  411. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
  412. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/dump-nsarchive.m +0 -0
  413. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/fnd.py +0 -0
  414. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/helper_bridgesupport.py +0 -0
  415. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/keyvaluehelper.py +0 -0
  416. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/loader.py +0 -0
  417. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_NULL.py +0 -0
  418. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_allocatebuffer.py +0 -0
  419. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_api_import.py +0 -0
  420. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_archive_python.py +0 -0
  421. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_archiving_interop.py +0 -0
  422. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_archiving_secure_interop.py +0 -0
  423. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_array_interface.py +0 -0
  424. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_array_property.py +0 -0
  425. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_arrays.py +0 -0
  426. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_assocations.py +0 -0
  427. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_bridged_classes.py +0 -0
  428. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_bridges.py +0 -0
  429. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_bridgesupport.py +0 -0
  430. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_bufsizeinarg.py +0 -0
  431. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_bundleFunctions.py +0 -0
  432. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_bundleVariables.py +0 -0
  433. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_callable_docstr.py +0 -0
  434. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_categories.py +0 -0
  435. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_classandinst.py +0 -0
  436. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_classhooks.py +0 -0
  437. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_clinmeth.py +0 -0
  438. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_compat.py +0 -0
  439. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_context.py +0 -0
  440. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_convenience.py +0 -0
  441. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_copying.py +0 -0
  442. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_ctests.py +0 -0
  443. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_data_proxy.py +0 -0
  444. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_date_proxy.py +0 -0
  445. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_descriptors.py +0 -0
  446. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_dict_interface.py +0 -0
  447. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_dict_property.py +0 -0
  448. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_dict_proxy.py +0 -0
  449. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_dyld.py +0 -0
  450. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_enumerator.py +0 -0
  451. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_exceptions.py +0 -0
  452. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_filepointer.py +0 -0
  453. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_framework.py +0 -0
  454. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_free_threading.py +0 -0
  455. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_fsref.py +0 -0
  456. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_generic_class.py +0 -0
  457. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_identity.py +0 -0
  458. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_inspect_signatures.py +0 -0
  459. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_keyvalue_prop.py +0 -0
  460. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_keyvaluecoding.py +0 -0
  461. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_leaks.py +0 -0
  462. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_list_proxy.py +0 -0
  463. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_locking.py +0 -0
  464. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_machsignals.py +0 -0
  465. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_metadata_imp.py +0 -0
  466. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_metadata_inheritance.py +0 -0
  467. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_metadata_py2py.py +0 -0
  468. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_method_prototypes.py +0 -0
  469. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_methodlookup.py +0 -0
  470. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_methods2.py +0 -0
  471. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_methres.py +0 -0
  472. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nsdate_proxy.py +0 -0
  473. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nsinvocation.py +0 -0
  474. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nsunavailable.py +0 -0
  475. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_nulldelimited.py +0 -0
  476. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_objcpointer.py +0 -0
  477. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_object_property.py +0 -0
  478. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_object_proxy.py +0 -0
  479. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_opaque.py +0 -0
  480. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_outputinitializer.py +0 -0
  481. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_pickle.py +0 -0
  482. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_pickling_objc.py +0 -0
  483. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_pointer_compat.py +0 -0
  484. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_protected.py +0 -0
  485. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_protocolNamed.py +0 -0
  486. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_python_method.py +0 -0
  487. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_set_property.py +0 -0
  488. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_signals.py +0 -0
  489. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_signatures.py +0 -0
  490. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_simd.py +0 -0
  491. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_charint.py +0 -0
  492. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_methdef.py +0 -0
  493. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_nsbool.py +0 -0
  494. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_struct.py +0 -0
  495. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_string_proxy.py +0 -0
  496. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_structpointer.py +0 -0
  497. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_super_on_regular_classes.py +0 -0
  498. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_synthesize.py +0 -0
  499. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_typecheck.py +0 -0
  500. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_unicode.py +0 -0
  501. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_urlproxy.py +0 -0
  502. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_varargs.py +0 -0
  503. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_varlist.py +0 -0
  504. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_vectorcall.py +0 -0
  505. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_version_support.py +0 -0
  506. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_voidpointer.py +0 -0
  507. {pyobjc_core-11.1 → pyobjc_core-12.1}/PyObjCTest/test_weakref.py +0 -0
  508. {pyobjc_core-11.1 → pyobjc_core-12.1}/README.txt +0 -0
  509. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/MANIFEST.in +0 -0
  510. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/free-threading/_tools.py +0 -0
  511. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/free-threading/concurrent-class-list.py +0 -0
  512. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/free-threading/concurrent-dict-getting.py +0 -0
  513. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/free-threading/concurrent-iteration.py +0 -0
  514. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/free-threading/concurrent-registration.py +0 -0
  515. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/free-threading/concurrent-value-getting.py +0 -0
  516. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/gen_archive.py +0 -0
  517. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/generate-category-tests.py +0 -0
  518. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/pyobjcbench.py +0 -0
  519. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/results/pyobjcbench-7.3.txt +0 -0
  520. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
  521. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
  522. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/run-free-threading-tests.py +0 -0
  523. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/runtests-with-nuitka.py +0 -0
  524. {pyobjc_core-11.1 → pyobjc_core-12.1}/Tools/runtests.py +0 -0
  525. {pyobjc_core-11.1 → pyobjc_core-12.1}/pyproject.toml +0 -0
@@ -27,27 +27,6 @@ __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
32
  if tp is None:
@@ -176,6 +155,10 @@ def os_release():
176
155
  if _os_release is not None:
177
156
  return _os_release
178
157
 
158
+ # NOTE: This calls 'sw_vers' because system APIs lie
159
+ # to us during some system transitions (e.g.
160
+ # from 10.15 to 11.0 and from 15.0 to 26.0) until
161
+ # Python itself is rebuild using a newer SDK.
179
162
  _os_release = (
180
163
  _subprocess.check_output(["sw_vers", "-productVersion"]).decode().strip()
181
164
  )
@@ -318,7 +301,7 @@ def os_level_between(min_release, max_release):
318
301
  _poolclass = objc.lookUpClass("NSAutoreleasePool")
319
302
 
320
303
  # 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__)
304
+ _nscftype = tuple(cls for cls in objc.getClassList(True) if "NSCFType" in cls.__name__)
322
305
 
323
306
  _typealias = {}
324
307
 
@@ -631,7 +614,7 @@ class TestCase(_unittest.TestCase):
631
614
 
632
615
  def assertIsInitializer(self, method, message=None):
633
616
  if not isinstance(method, objc.selector):
634
- return
617
+ self.fail(message or f"{method!r} is not a selector")
635
618
 
636
619
  info = method.__metadata__()
637
620
  if not info.get("initializer", False):
@@ -639,7 +622,7 @@ class TestCase(_unittest.TestCase):
639
622
 
640
623
  def assertIsNotInitializer(self, method, message=None):
641
624
  if not isinstance(method, objc.selector):
642
- return
625
+ self.fail(message or f"{method!r} is not a selector")
643
626
 
644
627
  info = method.__metadata__()
645
628
  if info.get("initializer", False):
@@ -647,7 +630,7 @@ class TestCase(_unittest.TestCase):
647
630
 
648
631
  def assertDoesFreeResult(self, method, message=None):
649
632
  if not isinstance(method, objc.selector):
650
- return
633
+ self.fail(message or f"{method!r} is not a selector")
651
634
 
652
635
  info = method.__metadata__()
653
636
  if not info.get("free_result", False):
@@ -655,7 +638,7 @@ class TestCase(_unittest.TestCase):
655
638
 
656
639
  def assertDoesNotFreeResult(self, method, message=None):
657
640
  if not isinstance(method, objc.selector):
658
- return
641
+ self.fail(message or f"{method!r} is not a selector")
659
642
 
660
643
  info = method.__metadata__()
661
644
  if info.get("free_result", False):
@@ -686,6 +669,20 @@ class TestCase(_unittest.TestCase):
686
669
  def assertResultHasType(self, method, tp, message=None):
687
670
  info = method.__metadata__()
688
671
  typestr = info.get("retval").get("type", b"v")
672
+ if isinstance(tp, tuple):
673
+ for item in tp:
674
+ if (
675
+ typestr == item
676
+ or _typemap(typestr) == _typemap(item)
677
+ or _typealias.get(typestr, typestr) == _typealias.get(item, item)
678
+ ):
679
+ break
680
+ else:
681
+ self.fail(
682
+ message
683
+ or f"result of {method!r} is not of type {tp!r}, but {typestr!r}"
684
+ )
685
+ return
689
686
  if (
690
687
  typestr != tp
691
688
  and _typemap(typestr) != _typemap(tp)
@@ -714,15 +711,28 @@ class TestCase(_unittest.TestCase):
714
711
  else:
715
712
  typestr = i.get("type", b"@")
716
713
 
714
+ if isinstance(tp, tuple):
715
+ for item in tp:
716
+ if (
717
+ typestr == item
718
+ or _typemap(typestr) == _typemap(item)
719
+ or _typealias.get(typestr, typestr) == _typealias.get(item, item)
720
+ ):
721
+ break
722
+ else:
723
+ self.fail(
724
+ message
725
+ or f"arg {argno} of {method!r} is not of type {tp!r}, but {typestr!r}"
726
+ )
727
+ return
728
+
717
729
  if (
718
730
  typestr != tp
719
731
  and _typemap(typestr) != _typemap(tp)
720
732
  and _typealias.get(typestr, typestr) != _typealias.get(tp, tp)
721
733
  ):
722
734
  self.fail(
723
- message
724
- or "arg %d of %s is not of type %r, but %r"
725
- % (argno, method, tp, typestr)
735
+ message or f"arg {argno} of {method} is not of type {tp}, but {typestr}"
726
736
  )
727
737
 
728
738
  def assertArgIsFunction(self, method, argno, sel_type, retained, message=None):
@@ -1374,27 +1384,35 @@ class TestCase(_unittest.TestCase):
1374
1384
  # Calculate all (interesting) names in the module. This pokes into
1375
1385
  # the implementation details of objc.ObjCLazyModule to avoid loading
1376
1386
  # all attributes (which is expensive for larger bindings).
1377
- if isinstance(module, objc.ObjCLazyModule) and False:
1387
+ def is_pyobjc_lazy(module):
1388
+ getter = getattr(module, "__getattr__", None)
1389
+ if getter is None:
1390
+ return False
1391
+ return hasattr(getter, "_pyobjc_parents")
1392
+
1393
+ if is_pyobjc_lazy(module):
1394
+ getter = getattr(module, "__getattr__", None)
1378
1395
  module_names = []
1379
1396
  module_names.extend(
1380
1397
  cls.__name__
1381
- for cls in objc.getClassList()
1398
+ for cls in objc.getClassList(True)
1382
1399
  if (not cls.__name__.startswith("_")) and ("." not in cls.__name__)
1383
1400
  )
1384
- module_names.extend(module._ObjCLazyModule__funcmap or [])
1385
- module_names.extend(module.__dict__.keys())
1386
- todo = list(module._ObjCLazyModule__parents or [])
1401
+ module_names.extend(getattr(getter, "_pyobjc_funcmap", None) or [])
1402
+ todo = list(getter._pyobjc_parents)
1387
1403
  while todo:
1388
1404
  parent = todo.pop()
1389
- if isinstance(parent, objc.ObjCLazyModule):
1390
- module_names.extend(parent._ObjCLazyModule__funcmap or ())
1391
- todo.extend(parent._ObjCLazyModule__parents or ())
1405
+ if is_pyobjc_lazy(parent):
1406
+ getter = getattr(parent, "__getattr__", None)
1407
+ module_names.extend(getattr(getter, "_pyobjc_funcmap", None) or [])
1408
+ todo.extend(getter._pyobjc_parents or ())
1392
1409
  module_names.extend(parent.__dict__.keys())
1410
+
1393
1411
  else:
1394
- module_names.extend(dir(module))
1412
+ module_names.extend(dir(parent))
1395
1413
 
1396
- # The module_names list might contain duplicates
1397
1414
  module_names = sorted(set(module_names))
1415
+
1398
1416
  else:
1399
1417
  module_names = sorted(set(dir(module)))
1400
1418
 
@@ -1407,43 +1425,49 @@ class TestCase(_unittest.TestCase):
1407
1425
 
1408
1426
  try:
1409
1427
  value = getattr(module, nm)
1410
- except AttributeError:
1411
- continue
1428
+ except AttributeError: # pragma: no cover
1429
+ continue # pragma: no cover
1412
1430
  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
1431
+ with objc.autorelease_pool():
1432
+ if value.__name__ == "Object":
1433
+ # Root class, does not conform to the NSObject
1434
+ # protocol and useless to test.
1424
1435
  continue
1436
+ instanceMethodDict = value.pyobjc_instanceMethods.__dict__
1437
+ for attr_name, attr in instanceMethodDict.items():
1438
+ if attr_name in exclude_method_names:
1439
+ continue
1440
+ if (nm, attr_name) in exclude_attrs:
1441
+ continue
1442
+ if attr_name.startswith("_"):
1443
+ # Skip private names
1444
+ continue
1425
1445
 
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
- )
1431
-
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
1446
+ with self.subTest(classname=nm, instance_method=attr_name):
1447
+ if isinstance(attr, objc.selector): # pragma: no branch
1448
+ self._validateCallableMetadata(
1449
+ attr,
1450
+ nm,
1451
+ skip_simple_charptr_check=not exclude_cocoa,
1452
+ )
1453
+
1454
+ for attr_name, attr in value.pyobjc_classMethods.__dict__.items():
1455
+ if attr_name in exclude_method_names: # pragma: no branch
1456
+ continue # pragma: no cover
1457
+ if (nm, attr_name) in exclude_attrs:
1458
+ continue
1459
+ if attr_name.startswith("_"):
1460
+ # Skip private names
1461
+ continue
1440
1462
 
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
- )
1463
+ with self.subTest(classname=nm, instance_method=attr_name):
1464
+ attr = getattr(value.pyobjc_classMethods, attr_name, None)
1465
+ if isinstance(attr, objc.selector): # pragma: no branch
1466
+ self._validateCallableMetadata(
1467
+ attr,
1468
+ nm,
1469
+ skip_simple_charptr_check=not exclude_cocoa,
1470
+ )
1447
1471
  elif isinstance(value, objc.function):
1448
1472
  with self.subTest(function=nm):
1449
1473
  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,22 @@ 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__"
91
101
  return getattr(self._function, name)
92
102
 
93
103
  def __setattr__(self, name, value):
94
104
  if name in ("_function", "_cls"):
95
- object.__setattr__(self, name, value)
105
+ return object.__setattr__(self, name, value)
96
106
  return setattr(self._function, name, value)
97
107
 
98
108
  def __call__(self, *args, **kwds):
@@ -154,25 +164,8 @@ def new_func(cls, *args, **kwds):
154
164
  raise TypeError(f"{cls.__name__}() requires keyword arguments")
155
165
 
156
166
 
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
167
+ def make_generic_new(cls):
168
+ return function_wrapper(new_func, cls)
176
169
 
177
170
 
178
171
  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
@@ -605,9 +605,11 @@ def returns_value(func):
605
605
  elif prev.opname != "LOAD_CONST":
606
606
  return True
607
607
 
608
- elif inst.opname == "RETURN_CONST" and consts[inst.arg] is not None:
609
- # New in Python 3.12.
610
- return True
608
+ elif ( # pragma: no branch
609
+ inst.opname == "RETURN_CONST" and consts[inst.arg] is not None
610
+ ):
611
+ # New in Python 3.12, dropped in 3.14
612
+ return True # pragma: no cover
611
613
  prev = inst
612
614
 
613
615
  return False
@@ -674,6 +676,10 @@ class objc_method:
674
676
  self.signature = signature
675
677
  self.isclass = isclass
676
678
 
679
+ @property
680
+ def __name__(self):
681
+ return self.__wrapped__.__name__
682
+
677
683
  def __call__(self, *args, **kwds):
678
684
  if self.__wrapped__ is None:
679
685
  if len(kwds) != 0:
@@ -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.1
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...
@@ -19,17 +19,18 @@ Classifier: Operating System :: MacOS :: MacOS X
19
19
  Classifier: Programming Language :: Python
20
20
  Classifier: Programming Language :: Python :: 3
21
21
  Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: 3.14
27
+ Classifier: Programming Language :: Python :: 3.15
28
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
29
+ Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
29
30
  Classifier: Programming Language :: Objective C
30
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
31
32
  Classifier: Topic :: Software Development :: User Interfaces
32
- Requires-Python: >=3.8
33
+ Requires-Python: >=3.10
33
34
  Description-Content-Type: text/x-rst; charset=UTF-8
34
35
  Dynamic: author
35
36
  Dynamic: author-email
@@ -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
@@ -174,7 +175,6 @@ Modules/objc/proxy-registry.h
174
175
  Modules/objc/proxy-registry.m
175
176
  Modules/objc/pyobjc-api.h
176
177
  Modules/objc/pyobjc-api.m
177
- Modules/objc/pyobjc-assert.h
178
178
  Modules/objc/pyobjc-compat.h
179
179
  Modules/objc/pyobjc-compat.m
180
180
  Modules/objc/pyobjc-unittest.h
@@ -201,6 +201,7 @@ Modules/objc/weakref.m
201
201
  Modules/objc/test/NULL.m
202
202
  Modules/objc/test/arrayint.m
203
203
  Modules/objc/test/arrays.m
204
+ Modules/objc/test/authorizationitem.m
204
205
  Modules/objc/test/block.m
205
206
  Modules/objc/test/block2.m
206
207
  Modules/objc/test/bufsizeinarg.m
@@ -278,6 +279,7 @@ Modules/objc/test/clinmeth.m
278
279
  Modules/objc/test/coding.m
279
280
  Modules/objc/test/copying.m
280
281
  Modules/objc/test/corefoundation.m
282
+ Modules/objc/test/customcallers.m
281
283
  Modules/objc/test/dataint.m
282
284
  Modules/objc/test/dateint.m
283
285
  Modules/objc/test/decimal.m
@@ -298,6 +300,7 @@ Modules/objc/test/instanceVariables.m
298
300
  Modules/objc/test/locking.m
299
301
  Modules/objc/test/metadata.m
300
302
  Modules/objc/test/metadatafunction.m
303
+ Modules/objc/test/metadataorder.m
301
304
  Modules/objc/test/methodaccess.m
302
305
  Modules/objc/test/methodlookup.m
303
306
  Modules/objc/test/methres1.m
@@ -324,6 +327,7 @@ Modules/objc/test/structargs.m
324
327
  Modules/objc/test/structpointer1.m
325
328
  Modules/objc/test/structpointer2.m
326
329
  Modules/objc/test/structs.m
330
+ Modules/objc/test/supercall.m
327
331
  Modules/objc/test/testbndl.m
328
332
  Modules/objc/test/testbndl2.m
329
333
  Modules/objc/test/testclassandinst.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
@@ -422,6 +429,7 @@ PyObjCTest/test_nsdate_proxy.py
422
429
  PyObjCTest/test_nsdecimal.py
423
430
  PyObjCTest/test_nsinvocation.py
424
431
  PyObjCTest/test_nsobject.py
432
+ PyObjCTest/test_nsproxy.py
425
433
  PyObjCTest/test_nsunavailable.py
426
434
  PyObjCTest/test_nulldelimited.py
427
435
  PyObjCTest/test_number_proxy.py
@@ -497,6 +505,7 @@ Tools/free-threading/_tools.py
497
505
  Tools/free-threading/concurrent-class-list.py
498
506
  Tools/free-threading/concurrent-dict-getting.py
499
507
  Tools/free-threading/concurrent-iteration.py
508
+ Tools/free-threading/concurrent-methinfo.py
500
509
  Tools/free-threading/concurrent-registration.py
501
510
  Tools/free-threading/concurrent-value-getting.py
502
511
  Tools/results/pyobjcbench-7.3.txt
@@ -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