pyobjc-core 12.0__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 (518) hide show
  1. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/PyObjCTools/TestSupport.py +28 -57
  2. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_new.py +0 -2
  3. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_transform.py +9 -3
  4. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/PKG-INFO +3 -4
  5. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/SOURCES.txt +3 -1
  6. {pyobjc_core-12.0/Modules/objc → pyobjc_core-12.1/Lib/pyobjc_core.egg-info/include}/pyobjc-compat.h +19 -48
  7. pyobjc_core-12.1/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +3 -0
  8. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonArray.h +0 -1
  9. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonArray.m +1 -9
  10. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonData.h +0 -1
  11. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonDate.h +0 -1
  12. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonDictionary.h +0 -1
  13. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonDictionary.m +17 -6
  14. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonNumber.h +0 -1
  15. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonNumber.m +56 -39
  16. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonObject.h +0 -1
  17. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonObject.m +38 -42
  18. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonSet.h +0 -1
  19. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonUnicode.h +0 -1
  20. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonUnicode.m +4 -6
  21. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/ObjCPointer.h +0 -1
  22. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/block_support.m +49 -51
  23. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/bundle-variables.m +4 -7
  24. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/class-builder.h +2 -0
  25. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/class-builder.m +37 -143
  26. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/corefoundation.m +4 -4
  27. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/ctests.m +85 -8
  28. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/file_wrapper.m +4 -3
  29. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/formal-protocol.m +7 -6
  30. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/function.m +13 -17
  31. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-authorization.m +2 -2
  32. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nscoder.m +1 -3
  33. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsobject.m +20 -0
  34. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/instance-var.m +2 -4
  35. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/libffi_support.h +2 -0
  36. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/libffi_support.m +315 -384
  37. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/memview.m +8 -10
  38. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/meth-func.m +6 -3
  39. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/method-accessor.m +51 -53
  40. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/method-imp.h +1 -2
  41. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/method-imp.m +9 -10
  42. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/method-signature.h +25 -24
  43. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/method-signature.m +200 -159
  44. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/module.m +8 -10
  45. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-class.m +237 -186
  46. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-object.h +7 -5
  47. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-object.m +30 -21
  48. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-runtime-compat.h +2 -2
  49. pyobjc_core-12.1/Modules/objc/objc-runtime-compat.m +45 -0
  50. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc_super.m +2 -2
  51. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc_support.m +134 -121
  52. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc_util.h +1 -1
  53. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc_util.m +36 -31
  54. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/opaque-pointer.m +1 -2
  55. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/options.m +2 -2
  56. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/proxy-registry.h +6 -18
  57. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/proxy-registry.m +2 -4
  58. {pyobjc_core-12.0/Lib/pyobjc_core.egg-info/include → pyobjc_core-12.1/Modules/objc}/pyobjc-compat.h +19 -48
  59. pyobjc_core-12.1/Modules/objc/pyobjc-compat.m +38 -0
  60. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pyobjc-unittest.h +0 -1
  61. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pyobjc.h +1 -9
  62. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/python-api-used.h +11 -5
  63. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/registry.m +26 -45
  64. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/selector.h +2 -2
  65. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/selector.m +80 -165
  66. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/struct-sockaddr.m +5 -5
  67. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/struct-wrapper.m +8 -7
  68. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/super-call.h +1 -4
  69. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/super-call.m +68 -26
  70. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/coding.m +4 -4
  71. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/customcallers.m +13 -0
  72. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/deprecations.m +47 -0
  73. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/helpernsobject.m +102 -0
  74. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/metadata.m +72 -0
  75. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/metadatafunction.m +21 -0
  76. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/methodaccess.m +10 -0
  77. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/nulldelimitedresult.m +1 -1
  78. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/objectint.m +6 -1
  79. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/specialtypecodes.m +5 -0
  80. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/structargs.m +28 -0
  81. pyobjc_core-12.1/Modules/objc/test/supercall.m +383 -0
  82. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/testbndl.m +2 -2
  83. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/varlist.m +5 -6
  84. {pyobjc_core-12.0 → pyobjc_core-12.1}/PKG-INFO +3 -4
  85. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_authorizationitem.py +2 -0
  86. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_blocks.py +25 -0
  87. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_conversion.py +43 -0
  88. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_corefoundation.py +18 -0
  89. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_customcallers.py +37 -0
  90. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_deprecations.py +65 -5
  91. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_final.py +8 -0
  92. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_functions.py +77 -0
  93. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_generic_new.py +6 -1
  94. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_hidden_selector.py +41 -5
  95. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_imp.py +21 -0
  96. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_initpatterns.py +2 -1
  97. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_internals.py +90 -0
  98. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_lazy_import.py +2 -0
  99. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadata.py +376 -7
  100. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadata_py.py +1 -1
  101. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_methodaccess.py +65 -0
  102. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_methodedits.py +102 -1
  103. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_methods.py +6 -1
  104. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nsdata.py +8 -0
  105. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nsdecimal.py +1 -2
  106. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nsobject.py +36 -1
  107. pyobjc_core-12.1/PyObjCTest/test_nsproxy.py +64 -0
  108. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_number_proxy.py +38 -3
  109. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_options.py +27 -0
  110. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_propertiesforclass.py +18 -0
  111. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_regr.py +391 -10
  112. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_charbyte.py +16 -1
  113. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_unichar.py +39 -4
  114. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_splitsig.py +62 -1
  115. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_structs.py +1 -1
  116. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_subclass.py +143 -20
  117. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_testsupport.py +172 -3
  118. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_transform.py +2 -0
  119. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_usekvo.py +17 -0
  120. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_vector_proxy.py +7 -1
  121. pyobjc_core-12.1/Tools/free-threading/concurrent-methinfo.py +20 -0
  122. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/pyobjc_setup.py +4 -5
  123. {pyobjc_core-12.0 → pyobjc_core-12.1}/setup.cfg +2 -3
  124. {pyobjc_core-12.0 → pyobjc_core-12.1}/setup.py +6 -2
  125. pyobjc_core-12.0/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +0 -3
  126. pyobjc_core-12.0/Modules/objc/objc-runtime-compat.m +0 -66
  127. pyobjc_core-12.0/Modules/objc/pyobjc-assert.h +0 -59
  128. pyobjc_core-12.0/Modules/objc/pyobjc-compat.m +0 -69
  129. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/00ReadMe.txt +0 -0
  130. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/GUITests/00ReadMe.txt +0 -0
  131. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/GUITests/test_modalsession.py +0 -0
  132. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/HelloWorld.py +0 -0
  133. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/autoreadme.py +0 -0
  134. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/instrumentSends.py +0 -0
  135. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/kvo-debugging.py +0 -0
  136. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/signal-demo.py +0 -0
  137. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/stdinreader.py +0 -0
  138. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/subclassing-objective-c.py +0 -0
  139. {pyobjc_core-12.0 → pyobjc_core-12.1}/Examples/Scripts/wmEnable.py +0 -0
  140. {pyobjc_core-12.0 → pyobjc_core-12.1}/HISTORIC.txt +0 -0
  141. {pyobjc_core-12.0 → pyobjc_core-12.1}/Install.txt +0 -0
  142. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/PyObjCTools/KeyValueCoding.py +0 -0
  143. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/PyObjCTools/MachSignals.py +0 -0
  144. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/PyObjCTools/Signals.py +0 -0
  145. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/__init__.py +0 -0
  146. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_bridges.py +0 -0
  147. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_bridgesupport.py +0 -0
  148. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_callable_docstr.py +0 -0
  149. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_category.py +0 -0
  150. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_compat.py +0 -0
  151. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_context.py +0 -0
  152. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience.py +0 -0
  153. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_mapping.py +0 -0
  154. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsarray.py +0 -0
  155. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsdata.py +0 -0
  156. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsdecimal.py +0 -0
  157. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsdictionary.py +0 -0
  158. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsobject.py +0 -0
  159. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsset.py +0 -0
  160. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_nsstring.py +0 -0
  161. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_convenience_sequence.py +0 -0
  162. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_descriptors.py +0 -0
  163. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_dyld.py +0 -0
  164. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_framework.py +0 -0
  165. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_informal_protocol.py +0 -0
  166. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_lazyimport.py +0 -0
  167. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_locking.py +0 -0
  168. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_properties.py +0 -0
  169. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_protocols.py +0 -0
  170. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_pycoder.py +0 -0
  171. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_pythonify.py +0 -0
  172. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_structtype.py +0 -0
  173. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/_types.py +0 -0
  174. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/objc/simd.py +0 -0
  175. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
  176. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/include/pyobjc-api.h +0 -0
  177. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
  178. {pyobjc_core-12.0 → pyobjc_core-12.1}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
  179. {pyobjc_core-12.0 → pyobjc_core-12.1}/License.txt +0 -0
  180. {pyobjc_core-12.0 → pyobjc_core-12.1}/MANIFEST +0 -0
  181. {pyobjc_core-12.0 → pyobjc_core-12.1}/MANIFEST.in +0 -0
  182. {pyobjc_core-12.0 → pyobjc_core-12.1}/Misc/announcement.txt +0 -0
  183. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/_machsignals.m +0 -0
  184. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
  185. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
  186. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonData.h +0 -0
  187. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonData.m +0 -0
  188. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
  189. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
  190. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
  191. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
  192. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
  193. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
  194. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
  195. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
  196. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
  197. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
  198. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_NSBundleHack.h +0 -0
  199. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_NSBundleHack.m +0 -0
  200. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonData.m +0 -0
  201. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonDate.m +0 -0
  202. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonEnumerator.h +0 -0
  203. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonEnumerator.m +0 -0
  204. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonSet.m +0 -0
  205. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonURL.h +0 -0
  206. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/OC_PythonURL.m +0 -0
  207. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/ObjCPointer.m +0 -0
  208. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/block_support.h +0 -0
  209. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/bundle-variables.h +0 -0
  210. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/class-list.h +0 -0
  211. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/class-list.m +0 -0
  212. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/closure_pool.h +0 -0
  213. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/closure_pool.m +0 -0
  214. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/corefoundation.h +0 -0
  215. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/ctests.h +0 -0
  216. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/file_wrapper.h +0 -0
  217. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/formal-protocol.h +0 -0
  218. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/fsref.h +0 -0
  219. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/fsref.m +0 -0
  220. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/function.h +0 -0
  221. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsdata.m +0 -0
  222. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsdecimal.m +0 -0
  223. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-foundation-nsinvocation.m +0 -0
  224. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers-vector.m +0 -0
  225. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/helpers.h +0 -0
  226. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/instance-var.h +0 -0
  227. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/ivar-accessor.h +0 -0
  228. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/ivar-accessor.m +0 -0
  229. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/libffi_extra.h +0 -0
  230. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/libffi_extra.m +0 -0
  231. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/memview.h +0 -0
  232. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/meth-func.h +0 -0
  233. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/method-accessor.h +0 -0
  234. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-NULL.h +0 -0
  235. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-NULL.m +0 -0
  236. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc-class.h +0 -0
  237. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc_super.h +0 -0
  238. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/objc_support.h +0 -0
  239. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/opaque-pointer.h +0 -0
  240. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/options.h +0 -0
  241. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pointer-support.h +0 -0
  242. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pointer-support.m +0 -0
  243. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pyobjc-api.h +0 -0
  244. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pyobjc-api.m +0 -0
  245. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pyobjc_unicode.h +0 -0
  246. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/pyobjc_unicode.m +0 -0
  247. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/registry.h +0 -0
  248. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/released-buffer.h +0 -0
  249. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/released-buffer.m +0 -0
  250. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/struct-sockaddr.h +0 -0
  251. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/struct-wrapper.h +0 -0
  252. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/NULL.m +0 -0
  253. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/arrayint.m +0 -0
  254. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/arrays.m +0 -0
  255. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/authorizationitem.m +0 -0
  256. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/block.m +0 -0
  257. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/block2.m +0 -0
  258. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/bufsizeinarg.m +0 -0
  259. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/categories_base.m +0 -0
  260. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c42.m +0 -0
  261. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c43.m +0 -0
  262. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c44.m +0 -0
  263. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c45.m +0 -0
  264. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c46.m +0 -0
  265. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c47.m +0 -0
  266. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c48.m +0 -0
  267. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c49.m +0 -0
  268. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c50.m +0 -0
  269. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c51.m +0 -0
  270. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c52.m +0 -0
  271. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c53.m +0 -0
  272. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c54.m +0 -0
  273. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c55.m +0 -0
  274. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c56.m +0 -0
  275. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c57.m +0 -0
  276. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c58.m +0 -0
  277. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_c59.m +0 -0
  278. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp10.m +0 -0
  279. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp11.m +0 -0
  280. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp12.m +0 -0
  281. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp13.m +0 -0
  282. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp14.m +0 -0
  283. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp15.m +0 -0
  284. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp16.m +0 -0
  285. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp17.m +0 -0
  286. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp18.m +0 -0
  287. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp19.m +0 -0
  288. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp20.m +0 -0
  289. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp21.m +0 -0
  290. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp22.m +0 -0
  291. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp23.m +0 -0
  292. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp24.m +0 -0
  293. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp27.m +0 -0
  294. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp3.m +0 -0
  295. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp30.m +0 -0
  296. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp33.m +0 -0
  297. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp36.m +0 -0
  298. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp39.m +0 -0
  299. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp42.m +0 -0
  300. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp45.m +0 -0
  301. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp48.m +0 -0
  302. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp51.m +0 -0
  303. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp54.m +0 -0
  304. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp57.m +0 -0
  305. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp6.m +0 -0
  306. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp7.m +0 -0
  307. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp8.m +0 -0
  308. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_gp9.m +0 -0
  309. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p24.m +0 -0
  310. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p25.m +0 -0
  311. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p26.m +0 -0
  312. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p27.m +0 -0
  313. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p28.m +0 -0
  314. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p29.m +0 -0
  315. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p30.m +0 -0
  316. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p31.m +0 -0
  317. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p32.m +0 -0
  318. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p33.m +0 -0
  319. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p34.m +0 -0
  320. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p35.m +0 -0
  321. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p36.m +0 -0
  322. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p37.m +0 -0
  323. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p38.m +0 -0
  324. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p39.m +0 -0
  325. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p40.m +0 -0
  326. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/category_p41.m +0 -0
  327. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/cfsocket.m +0 -0
  328. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/classes.m +0 -0
  329. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/clinmeth.m +0 -0
  330. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/copying.m +0 -0
  331. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/corefoundation.m +0 -0
  332. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/dataint.m +0 -0
  333. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/dateint.m +0 -0
  334. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/decimal.m +0 -0
  335. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/dictint.m +0 -0
  336. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/enumeration.m +0 -0
  337. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/exceptions.m +0 -0
  338. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/filepointer.m +0 -0
  339. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/fsref.m +0 -0
  340. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/gcov.m +0 -0
  341. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/genericnew.m +0 -0
  342. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/helpernsdata.m +0 -0
  343. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/identity.m +0 -0
  344. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/initialize.m +0 -0
  345. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/initpatterns.m +0 -0
  346. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/instanceVariables.m +0 -0
  347. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/locking.m +0 -0
  348. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/metadataorder.m +0 -0
  349. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/methodlookup.m +0 -0
  350. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/methres1.m +0 -0
  351. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/methres2.m +0 -0
  352. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/misc.m +0 -0
  353. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/missing1.m +0 -0
  354. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/missing2.m +0 -0
  355. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/missing3.m +0 -0
  356. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/nsobjectcategory.m +0 -0
  357. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/opaque.m +0 -0
  358. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/pointersupport.m +0 -0
  359. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/properties.m +0 -0
  360. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/protected.m +0 -0
  361. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/protocol.m +0 -0
  362. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/pythonnumber.m +0 -0
  363. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/pythonset.m +0 -0
  364. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/sequence.m +0 -0
  365. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/sockaddr.m +0 -0
  366. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/stringint.m +0 -0
  367. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/structpointer1.m +0 -0
  368. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/structpointer2.m +0 -0
  369. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/structs.m +0 -0
  370. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/testbndl2.m +0 -0
  371. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/testclassandinst.m +0 -0
  372. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/testoutputinitializer.m +0 -0
  373. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/unavailable.m +0 -0
  374. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/vector.m +0 -0
  375. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/vectorcall.m +0 -0
  376. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/test/voidpointer.m +0 -0
  377. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/varlist.h +0 -0
  378. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/weakref.h +0 -0
  379. {pyobjc_core-12.0 → pyobjc_core-12.1}/Modules/objc/weakref.m +0 -0
  380. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/__init__.py +0 -0
  381. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
  382. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
  383. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
  384. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
  385. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
  386. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
  387. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
  388. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
  389. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/dump-nsarchive-securecoding.m +0 -0
  390. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/dump-nsarchive.m +0 -0
  391. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/fnd.py +0 -0
  392. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/helper_bridgesupport.py +0 -0
  393. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/keyvaluehelper.py +0 -0
  394. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/loader.py +0 -0
  395. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_NULL.py +0 -0
  396. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_allocatebuffer.py +0 -0
  397. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_api_import.py +0 -0
  398. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_archive_python.py +0 -0
  399. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_archiving_interop.py +0 -0
  400. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_archiving_secure_interop.py +0 -0
  401. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_array_interface.py +0 -0
  402. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_array_property.py +0 -0
  403. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_arrays.py +0 -0
  404. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_assocations.py +0 -0
  405. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_bridged_classes.py +0 -0
  406. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_bridges.py +0 -0
  407. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_bridgesupport.py +0 -0
  408. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_bufsizeinarg.py +0 -0
  409. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_bundleFunctions.py +0 -0
  410. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_bundleVariables.py +0 -0
  411. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_callable_docstr.py +0 -0
  412. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_callbacks.py +0 -0
  413. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_categories.py +0 -0
  414. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_classandinst.py +0 -0
  415. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_classhooks.py +0 -0
  416. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_clinmeth.py +0 -0
  417. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_compat.py +0 -0
  418. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_context.py +0 -0
  419. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_convenience.py +0 -0
  420. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_copying.py +0 -0
  421. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_ctests.py +0 -0
  422. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_data_proxy.py +0 -0
  423. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_date_proxy.py +0 -0
  424. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_default_selector.py +0 -0
  425. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_descriptors.py +0 -0
  426. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_dict_interface.py +0 -0
  427. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_dict_property.py +0 -0
  428. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_dict_proxy.py +0 -0
  429. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_dyld.py +0 -0
  430. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_enumerator.py +0 -0
  431. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_exceptions.py +0 -0
  432. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_filepointer.py +0 -0
  433. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_framework.py +0 -0
  434. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_free_threading.py +0 -0
  435. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_fsref.py +0 -0
  436. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_generic_class.py +0 -0
  437. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_identity.py +0 -0
  438. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_inspect_signatures.py +0 -0
  439. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_ivar.py +0 -0
  440. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_keyvalue.py +0 -0
  441. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_keyvalue_prop.py +0 -0
  442. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_keyvaluecoding.py +0 -0
  443. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_leaks.py +0 -0
  444. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_list_proxy.py +0 -0
  445. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_locking.py +0 -0
  446. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_machsignals.py +0 -0
  447. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadata_function.py +0 -0
  448. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadata_imp.py +0 -0
  449. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadata_inheritance.py +0 -0
  450. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadata_py2py.py +0 -0
  451. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_metadataorder.py +0 -0
  452. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_method_prototypes.py +0 -0
  453. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_methodlookup.py +0 -0
  454. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_methods2.py +0 -0
  455. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_methres.py +0 -0
  456. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nscoder.py +0 -0
  457. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nsdate_proxy.py +0 -0
  458. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nsinvocation.py +0 -0
  459. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nsunavailable.py +0 -0
  460. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_nulldelimited.py +0 -0
  461. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_objc.py +0 -0
  462. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_objcpointer.py +0 -0
  463. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_object_property.py +0 -0
  464. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_object_proxy.py +0 -0
  465. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_opaque.py +0 -0
  466. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_outputinitializer.py +0 -0
  467. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_pickle.py +0 -0
  468. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_pickling_objc.py +0 -0
  469. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_pointer_compat.py +0 -0
  470. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_protected.py +0 -0
  471. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_protocol.py +0 -0
  472. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_protocolNamed.py +0 -0
  473. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_python_method.py +0 -0
  474. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_set_interface.py +0 -0
  475. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_set_property.py +0 -0
  476. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_set_proxy.py +0 -0
  477. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_signals.py +0 -0
  478. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_signatures.py +0 -0
  479. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_simd.py +0 -0
  480. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_sockaddr.py +0 -0
  481. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_charint.py +0 -0
  482. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_methdef.py +0 -0
  483. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_nsbool.py +0 -0
  484. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_specialtypecodes_struct.py +0 -0
  485. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_string_proxy.py +0 -0
  486. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_structpointer.py +0 -0
  487. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_super_on_regular_classes.py +0 -0
  488. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_synthesize.py +0 -0
  489. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_transform_integration.py +0 -0
  490. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_typecheck.py +0 -0
  491. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_unicode.py +0 -0
  492. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_urlproxy.py +0 -0
  493. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_varargs.py +0 -0
  494. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_varlist.py +0 -0
  495. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_vectorcall.py +0 -0
  496. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_version_support.py +0 -0
  497. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_voidpointer.py +0 -0
  498. {pyobjc_core-12.0 → pyobjc_core-12.1}/PyObjCTest/test_weakref.py +0 -0
  499. {pyobjc_core-12.0 → pyobjc_core-12.1}/README.txt +0 -0
  500. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/MANIFEST.in +0 -0
  501. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/comparebench.py +0 -0
  502. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/free-threading/_tools.py +0 -0
  503. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/free-threading/concurrent-class-list.py +0 -0
  504. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/free-threading/concurrent-dict-getting.py +0 -0
  505. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/free-threading/concurrent-iteration.py +0 -0
  506. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/free-threading/concurrent-registration.py +0 -0
  507. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/free-threading/concurrent-value-getting.py +0 -0
  508. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/gen_archive.py +0 -0
  509. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/generate-category-tests.py +0 -0
  510. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/generate-helpers-vector.py +0 -0
  511. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/pyobjcbench.py +0 -0
  512. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/results/pyobjcbench-7.3.txt +0 -0
  513. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
  514. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
  515. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/run-free-threading-tests.py +0 -0
  516. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/runtests-with-nuitka.py +0 -0
  517. {pyobjc_core-12.0 → pyobjc_core-12.1}/Tools/runtests.py +0 -0
  518. {pyobjc_core-12.0 → pyobjc_core-12.1}/pyproject.toml +0 -0
@@ -29,9 +29,7 @@ _usepool = not _os.environ.get("PYOBJC_NO_AUTORELEASE")
29
29
 
30
30
 
31
31
  def _typemap(tp):
32
- if isinstance(tp, tuple):
33
- return tuple(_typemap(x) for x in tp)
34
- elif tp is None:
32
+ if tp is None:
35
33
  return None
36
34
  return (
37
35
  tp.replace(b"_NSRect", b"CGRect")
@@ -675,8 +673,8 @@ class TestCase(_unittest.TestCase):
675
673
  for item in tp:
676
674
  if (
677
675
  typestr == item
678
- or _typemap(typestr) == _typemap(tp)
679
- or _typealias.get(typestr, typestr) == _typealias.get(tp, tp)
676
+ or _typemap(typestr) == _typemap(item)
677
+ or _typealias.get(typestr, typestr) == _typealias.get(item, item)
680
678
  ):
681
679
  break
682
680
  else:
@@ -717,8 +715,8 @@ class TestCase(_unittest.TestCase):
717
715
  for item in tp:
718
716
  if (
719
717
  typestr == item
720
- or _typemap(typestr) == _typemap(tp)
721
- or _typealias.get(typestr, typestr) == _typealias.get(tp, tp)
718
+ or _typemap(typestr) == _typemap(item)
719
+ or _typealias.get(typestr, typestr) == _typealias.get(item, item)
722
720
  ):
723
721
  break
724
722
  else:
@@ -1386,62 +1384,37 @@ class TestCase(_unittest.TestCase):
1386
1384
  # Calculate all (interesting) names in the module. This pokes into
1387
1385
  # the implementation details of objc.ObjCLazyModule to avoid loading
1388
1386
  # all attributes (which is expensive for larger bindings).
1389
- if isinstance(module, objc.ObjCLazyModule):
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)
1390
1395
  module_names = []
1391
1396
  module_names.extend(
1392
1397
  cls.__name__
1393
1398
  for cls in objc.getClassList(True)
1394
1399
  if (not cls.__name__.startswith("_")) and ("." not in cls.__name__)
1395
1400
  )
1396
- module_names.extend(module._ObjCLazyModule__funcmap or [])
1397
- module_names.extend(module.__dict__.keys())
1398
- todo = list(module._ObjCLazyModule__parents or [])
1401
+ module_names.extend(getattr(getter, "_pyobjc_funcmap", None) or [])
1402
+ todo = list(getter._pyobjc_parents)
1399
1403
  while todo:
1400
1404
  parent = todo.pop()
1401
- if isinstance(parent, objc.ObjCLazyModule):
1402
- module_names.extend(parent._ObjCLazyModule__funcmap or ())
1403
- 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 ())
1404
1409
  module_names.extend(parent.__dict__.keys())
1410
+
1405
1411
  else:
1406
1412
  module_names.extend(dir(parent))
1407
1413
 
1408
- # The module_names list might contain duplicates
1409
1414
  module_names = sorted(set(module_names))
1410
- else:
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
1415
 
1441
- module_names = sorted(set(module_names))
1442
-
1443
- else:
1444
- module_names = sorted(set(dir(module)))
1416
+ else:
1417
+ module_names = sorted(set(dir(module)))
1445
1418
 
1446
1419
  for _idx, nm in enumerate(module_names):
1447
1420
  # print(f"{_idx}/{len(module_names)} {nm}")
@@ -1452,18 +1425,16 @@ class TestCase(_unittest.TestCase):
1452
1425
 
1453
1426
  try:
1454
1427
  value = getattr(module, nm)
1455
- except AttributeError:
1456
- continue
1428
+ except AttributeError: # pragma: no cover
1429
+ continue # pragma: no cover
1457
1430
  if isinstance(value, objc.objc_class):
1458
1431
  with objc.autorelease_pool():
1459
1432
  if value.__name__ == "Object":
1460
1433
  # Root class, does not conform to the NSObject
1461
1434
  # protocol and useless to test.
1462
1435
  continue
1463
- for (
1464
- attr_name,
1465
- attr,
1466
- ) in value.pyobjc_instanceMethods.__dict__.items():
1436
+ instanceMethodDict = value.pyobjc_instanceMethods.__dict__
1437
+ for attr_name, attr in instanceMethodDict.items():
1467
1438
  if attr_name in exclude_method_names:
1468
1439
  continue
1469
1440
  if (nm, attr_name) in exclude_attrs:
@@ -1481,8 +1452,8 @@ class TestCase(_unittest.TestCase):
1481
1452
  )
1482
1453
 
1483
1454
  for attr_name, attr in value.pyobjc_classMethods.__dict__.items():
1484
- if attr_name in exclude_method_names:
1485
- continue
1455
+ if attr_name in exclude_method_names: # pragma: no branch
1456
+ continue # pragma: no cover
1486
1457
  if (nm, attr_name) in exclude_attrs:
1487
1458
  continue
1488
1459
  if attr_name.startswith("_"):
@@ -98,8 +98,6 @@ class function_wrapper:
98
98
  )
99
99
  elif name == "__name__":
100
100
  return "__new__"
101
- elif name == "__module__":
102
- return self._cls.__module__
103
101
  return getattr(self._function, name)
104
102
 
105
103
  def __setattr__(self, name, value):
@@ -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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-core
3
- Version: 12.0
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,7 +19,6 @@ 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
@@ -27,11 +26,11 @@ Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
- Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
29
+ Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
31
30
  Classifier: Programming Language :: Objective C
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Topic :: Software Development :: User Interfaces
34
- Requires-Python: >=3.8
33
+ Requires-Python: >=3.10
35
34
  Description-Content-Type: text/x-rst; charset=UTF-8
36
35
  Dynamic: author
37
36
  Dynamic: author-email
@@ -175,7 +175,6 @@ Modules/objc/proxy-registry.h
175
175
  Modules/objc/proxy-registry.m
176
176
  Modules/objc/pyobjc-api.h
177
177
  Modules/objc/pyobjc-api.m
178
- Modules/objc/pyobjc-assert.h
179
178
  Modules/objc/pyobjc-compat.h
180
179
  Modules/objc/pyobjc-compat.m
181
180
  Modules/objc/pyobjc-unittest.h
@@ -328,6 +327,7 @@ Modules/objc/test/structargs.m
328
327
  Modules/objc/test/structpointer1.m
329
328
  Modules/objc/test/structpointer2.m
330
329
  Modules/objc/test/structs.m
330
+ Modules/objc/test/supercall.m
331
331
  Modules/objc/test/testbndl.m
332
332
  Modules/objc/test/testbndl2.m
333
333
  Modules/objc/test/testclassandinst.m
@@ -429,6 +429,7 @@ PyObjCTest/test_nsdate_proxy.py
429
429
  PyObjCTest/test_nsdecimal.py
430
430
  PyObjCTest/test_nsinvocation.py
431
431
  PyObjCTest/test_nsobject.py
432
+ PyObjCTest/test_nsproxy.py
432
433
  PyObjCTest/test_nsunavailable.py
433
434
  PyObjCTest/test_nulldelimited.py
434
435
  PyObjCTest/test_number_proxy.py
@@ -504,6 +505,7 @@ Tools/free-threading/_tools.py
504
505
  Tools/free-threading/concurrent-class-list.py
505
506
  Tools/free-threading/concurrent-dict-getting.py
506
507
  Tools/free-threading/concurrent-iteration.py
508
+ Tools/free-threading/concurrent-methinfo.py
507
509
  Tools/free-threading/concurrent-registration.py
508
510
  Tools/free-threading/concurrent-value-getting.py
509
511
  Tools/results/pyobjcbench-7.3.txt
@@ -22,12 +22,14 @@ NS_ASSUME_NONNULL_BEGIN
22
22
  * Start of compiler definitions
23
23
  *
24
24
  */
25
+ #if 0
25
26
  #ifndef __has_feature
26
27
  #define __has_feature(x) 0
27
28
  #endif
28
29
  #ifndef __has_extension
29
30
  #define __has_extension(x) __has_feature(x)
30
31
  #endif
32
+ #endif
31
33
 
32
34
  #if __has_extension(c_static_assert)
33
35
  #define STATIC_ASSERT(test, message) _Static_assert(test, message)
@@ -59,42 +61,8 @@ NS_ASSUME_NONNULL_BEGIN
59
61
  * XXX: Are these needed?
60
62
  */
61
63
 
62
- #ifdef __GNUC__
63
64
  #define unlikely(x) __builtin_expect(!!(x), 0)
64
65
  #define likely(x) __builtin_expect(!!(x), 1)
65
- #else
66
- #define likely(x) x
67
- #define likely(x) x
68
- #endif
69
-
70
- /* On some versions of GCC <limits.h> defines LONG_LONG_MAX but not LLONG_MAX, compensate.
71
- */
72
- #ifndef LLONG_MIN
73
- #ifdef LONG_LONG_MIN
74
- #define LLONG_MIN LONG_LONG_MIN
75
- #define LLONG_MAX LONG_LONG_MAX
76
- #define ULLONG_MAX ULONG_LONG_MAX
77
- #endif
78
- #endif
79
-
80
- /*
81
- *
82
- * End of compiler support helpers
83
- *
84
- * XXX: These two are no longer needed, all supported platforms
85
- * are 64-bit
86
- */
87
-
88
- #if __LP64__
89
- #define Py_ARG_NSInteger "l"
90
- #define Py_ARG_NSUInteger "k"
91
- #else
92
- #define Py_ARG_NSInteger "i"
93
- #define Py_ARG_NSUInteger "I"
94
- #endif
95
-
96
- #define PyObjC__STR(x) #x
97
- #define PyObjC_STR(x) PyObjC__STR(x)
98
66
 
99
67
  /*
100
68
  *
@@ -131,20 +99,6 @@ NS_ASSUME_NONNULL_BEGIN
131
99
 
132
100
  extern int PyObjC_Cmp(PyObject* o1, PyObject* o2, int* result);
133
101
 
134
- /*
135
- * A micro optimization: when using Python 3.3 or later it
136
- * is possible to access a 'char*' with an ASCII representation
137
- * of a unicode object without first converting it to a bytes
138
- * string (if the string can be encoded as ASCII in the first
139
- * place.
140
- *
141
- * This slightly reduces the object allocation rate during
142
- * attribute access.
143
- *
144
- * XXX: Use PyUnicode_AsUTF8 instead.
145
- */
146
- extern const char* _Nullable PyObjC_Unicode_Fast_Bytes(PyObject* object);
147
-
148
102
  #ifdef __clang__
149
103
 
150
104
  #ifndef Py_LIMITED_API
@@ -286,6 +240,23 @@ static inline PyObject* _Nullable PyList_GetItemRef(PyObject* l, Py_ssize_t i)
286
240
  Py_XINCREF(result);
287
241
  return result;
288
242
  }
243
+
244
+ static inline int
245
+ PyDict_SetDefaultRef(PyObject* p, PyObject* key, PyObject* default_value,
246
+ PyObject* _Nonnull* _Nullable result)
247
+ {
248
+ *result = PyDict_SetDefault(p, key, default_value);
249
+ if (*result == NULL) {
250
+ return -1;
251
+ }
252
+ Py_INCREF(*result);
253
+
254
+ /* This does not follow the spec, should return 1 when the key was already
255
+ * in the dict. That part of the API is not used in PyObjC though.
256
+ */
257
+ return 0;
258
+ }
259
+
289
260
  #endif
290
261
 
291
262
  #if PY_VERSION_HEX < 0x030c0000
@@ -0,0 +1,3 @@
1
+ macOS 26.1 (25B77)
2
+ Apple clang version 17.0.0 (clang-1700.4.4.1)
3
+ SDK: macOS 26.1
@@ -19,7 +19,6 @@ NS_ASSUME_NONNULL_BEGIN
19
19
  * can be used everywhere where NSArray or NSMutableArray objects
20
20
  * are expected.
21
21
  */
22
- /* XXX: Cannot be PyObjC_FINAL_CLASS */
23
22
  @interface OC_PythonArray : NSMutableArray {
24
23
  PyObject* value;
25
24
  }
@@ -58,16 +58,8 @@ NS_ASSUME_NONNULL_BEGIN
58
58
 
59
59
  PyObjC_BEGIN_WITH_GIL
60
60
 
61
- /* XXX: This is different from other proxies
62
- * to make it easier to hit a race in
63
- * proxy-registry.m for testing.
64
- *
65
- * With the current implementation of
66
- * proxy-registry (using weak refs) either
67
- * order works correctly.
68
- */
69
61
  PyObjC_UnregisterObjCProxy(value, self);
70
- Py_XDECREF(value);
62
+ Py_CLEAR(value);
71
63
 
72
64
  PyObjC_END_WITH_GIL
73
65
 
@@ -17,7 +17,6 @@
17
17
  */
18
18
  NS_ASSUME_NONNULL_BEGIN
19
19
 
20
- /* XXX: Cannot be PyObjC_FINAL_CLASS */
21
20
  @interface OC_PythonData : NSMutableData {
22
21
  PyObject* value;
23
22
  }
@@ -1,6 +1,5 @@
1
1
  NS_ASSUME_NONNULL_BEGIN
2
2
 
3
- /* XXX: Cannot be PyObjC_FINAL_CLASS */
4
3
  @interface OC_PythonDate : NSDate {
5
4
  NSTimeInterval timeSinceEpoch;
6
5
  PyObject* value;
@@ -21,7 +21,6 @@ NS_ASSUME_NONNULL_BEGIN
21
21
  * PyMapping_* API is not flexible enough, and most sequence also implement
22
22
  * the generic mapping interface to deal with slices.
23
23
  */
24
- /* XXX: Cannot be PyObjC_FINAL_CLASS */
25
24
  @interface OC_PythonDictionary : NSMutableDictionary {
26
25
  PyObject* _Nonnull value;
27
26
  }
@@ -342,10 +342,16 @@ PyObjC_FINAL_CLASS @interface OC_PythonDictionaryEnumerator : NSEnumerator {
342
342
 
343
343
  - (NSEnumerator*)keyEnumerator
344
344
  {
345
- if (value && PyDict_CheckExact(value)) {
345
+ if (value == NULL) { // LCOV_BR_EXCL_LINE
346
+ /* Value could be NULL during ``initWithCoder:``, but AFAIK it
347
+ * is not possible to invoke arbitrary methods in that state.
348
+ */
349
+ return nil; // LCOV_EXCL_LINE
350
+ } else if (PyDict_CheckExact(value)) {
346
351
  return [OC_PythonDictionaryEnumerator enumeratorWithWrappedDictionary:self];
347
352
 
348
353
  } else {
354
+ NSEnumerator* result = nil;
349
355
  PyObjC_BEGIN_WITH_GIL
350
356
  PyObject* args[2] = {NULL, value};
351
357
 
@@ -361,10 +367,10 @@ PyObjC_FINAL_CLASS @interface OC_PythonDictionaryEnumerator : NSEnumerator {
361
367
  PyObjC_GIL_FORWARD_EXC();
362
368
  } // LCOV_EXCL_LINE
363
369
 
364
- NSEnumerator* result = [OC_PythonEnumerator enumeratorWithPythonObject:iter];
365
- PyObjC_GIL_RETURN(result);
370
+ result = [OC_PythonEnumerator enumeratorWithPythonObject:iter];
366
371
 
367
372
  PyObjC_END_WITH_GIL
373
+ return result;
368
374
  }
369
375
  }
370
376
 
@@ -445,8 +451,13 @@ PyObjC_FINAL_CLASS @interface OC_PythonDictionaryEnumerator : NSEnumerator {
445
451
  PyObjC_BEGIN_WITH_GIL
446
452
  PyObject* v = id_to_python(other);
447
453
 
448
- if (v != NULL) {
449
- SET_FIELD(value, v);
454
+ /* 'other' is a serialized python mapping value
455
+ * (not a 'real' Cocoa instance). Those can
456
+ * always be converted back into the corresponding
457
+ * Python value.
458
+ */
459
+ if (v != NULL) { // LCOV_BR_EXCL_LINE
460
+ SET_FIELD(value, v); // LCOV_EXCL_LINE
450
461
  }
451
462
  PyObjC_END_WITH_GIL
452
463
  }
@@ -514,7 +525,7 @@ PyObjC_FINAL_CLASS @interface OC_PythonDictionaryEnumerator : NSEnumerator {
514
525
 
515
526
  - (Class)classForCoder
516
527
  {
517
- if (value && PyDict_CheckExact(value)) {
528
+ if (value && PyDict_CheckExact(value)) { // LCOV_BR_EXCL_LINE
518
529
  return [NSMutableDictionary class];
519
530
  } else {
520
531
  return [OC_PythonDictionary class];
@@ -1,6 +1,5 @@
1
1
  NS_ASSUME_NONNULL_BEGIN
2
2
 
3
- /* XXX: Cannot be PyObjC_FINAL_CLASS */
4
3
  @interface OC_PythonNumber : NSNumber {
5
4
  PyObject* value;
6
5
  }
@@ -77,13 +77,11 @@ NS_ASSUME_NONNULL_BEGIN
77
77
  PyObjC_GIL_RETURN(@encode(unsigned long long));
78
78
  } // LCOV_EXCL_LINE
79
79
  PyErr_Clear();
80
-
81
- /* Wrap on overflow */
82
- PyObjC_GIL_RETURN(@encode(long long));
83
80
  }
84
81
  PyObjC_END_WITH_GIL
85
82
 
86
- __builtin_unreachable(); // LCOV_EXCL_LINE
83
+ /* Wrap on overflow */
84
+ return @encode(long long);
87
85
  }
88
86
 
89
87
  - (void)getValue:(void*)buffer
@@ -207,19 +205,11 @@ NS_ASSUME_NONNULL_BEGIN
207
205
  if (PyFloat_Check(value)) {
208
206
  double float_result = PyFloat_AsDouble(value);
209
207
  result = (long long)float_result;
210
- PyObjC_GIL_RETURN(result);
211
208
  } else {
212
209
  result = PyLong_AsUnsignedLongLongMask(value);
213
- PyObjC_GIL_RETURN(result);
214
210
  }
215
211
  PyObjC_END_WITH_GIL
216
-
217
- // LCOV_EXCL_START
218
- @throw
219
- [NSException exceptionWithName:NSInvalidArgumentException
220
- reason:@"Cannot determine objective-C type of this number"
221
- userInfo:nil];
222
- // LCOV_EXCL_STOP
212
+ return result;
223
213
  }
224
214
 
225
215
  - (unsigned long long)unsignedLongLongValue
@@ -235,7 +225,6 @@ NS_ASSUME_NONNULL_BEGIN
235
225
  PyObjC_BEGIN_WITH_GIL
236
226
  if (PyLong_Check(value)) {
237
227
  result = PyLong_AsUnsignedLongLongMask(value);
238
- PyObjC_GIL_RETURN(result);
239
228
  } else if (PyFloat_Check(value)) {
240
229
  double temp = PyFloat_AsDouble(value);
241
230
  if (temp < 0) {
@@ -251,16 +240,17 @@ NS_ASSUME_NONNULL_BEGIN
251
240
  } else {
252
241
  result = (unsigned long long)temp;
253
242
  }
254
- PyObjC_GIL_RETURN(result);
255
- } // LCOV_BR_EXCL_LINE
243
+ } else {
244
+ // LCOV_EXCL_START
245
+ @throw [NSException
246
+ exceptionWithName:NSInvalidArgumentException
247
+ reason:@"Cannot determine objective-C type of this number"
248
+ userInfo:nil];
249
+ // LCOV_EXCL_STOP
250
+ }
256
251
  PyObjC_END_WITH_GIL
257
252
 
258
- // LCOV_EXCL_START
259
- @throw
260
- [NSException exceptionWithName:NSInvalidArgumentException
261
- reason:@"Cannot determine objective-C type of this number"
262
- userInfo:nil];
263
- // LCOV_EXCL_STOP
253
+ return result;
264
254
  }
265
255
 
266
256
  - (NSString*)description
@@ -401,6 +391,7 @@ NS_ASSUME_NONNULL_BEGIN
401
391
  }
402
392
  }
403
393
 
394
+ NSComparisonResult rv;
404
395
  PyObjC_BEGIN_WITH_GIL
405
396
  PyObject* other = id_to_python(number);
406
397
  int r, ok;
@@ -416,19 +407,21 @@ NS_ASSUME_NONNULL_BEGIN
416
407
  } // LCOV_EXCL_LINE
417
408
 
418
409
  if (r < 0) {
419
- PyObjC_GIL_RETURN(NSOrderedAscending);
410
+ rv = NSOrderedAscending;
420
411
  } else if (r > 0) {
421
- PyObjC_GIL_RETURN(NSOrderedDescending);
422
- } else { // LCOV_EXCL_LINE
423
- PyObjC_GIL_RETURN(NSOrderedSame);
412
+ rv = NSOrderedDescending;
413
+ } else {
414
+ rv = NSOrderedSame;
424
415
  }
425
416
 
426
417
  PyObjC_END_WITH_GIL
418
+ return rv;
427
419
  }
428
420
 
429
421
  #define COMPARE_METHOD(NAME, OPERATOR) \
430
422
  -(BOOL)NAME : (NSObject* _Nullable)number \
431
423
  { \
424
+ BOOL rv; \
432
425
  PyObjC_BEGIN_WITH_GIL \
433
426
  PyObject* other = id_to_python(number); \
434
427
  int r; \
@@ -443,12 +436,13 @@ NS_ASSUME_NONNULL_BEGIN
443
436
  } /* LCOV_EXCL_LINE */ \
444
437
  \
445
438
  if (r) { \
446
- PyObjC_GIL_RETURN(YES); \
439
+ rv = YES; \
447
440
  } else { /* LCOV_EXCL_LINE */ \
448
- PyObjC_GIL_RETURN(NO); \
441
+ rv = NO; \
449
442
  } \
450
443
  \
451
444
  PyObjC_END_WITH_GIL \
445
+ return rv; \
452
446
  }
453
447
 
454
448
  COMPARE_METHOD(isEqualTo, Py_EQ)
@@ -465,13 +459,14 @@ COMPARE_METHOD(isLessThanOrEqualTo, Py_LE)
465
459
 
466
460
  - (Class)classForArchiver
467
461
  {
462
+ Class result;
468
463
  PyObjC_BEGIN_WITH_GIL
469
464
  @try {
470
465
  if (PyFloat_CheckExact(value)) {
471
466
  /* Float is a C double and can be roundtripped using
472
467
  * NSNumber.
473
468
  */
474
- PyObjC_GIL_RETURN([NSNumber class]);
469
+ result = [NSNumber class];
475
470
  } else if (PyLong_CheckExact(value)) {
476
471
  /* If the value fits inside a long long or
477
472
  * unsigned long long encode as an NSNumber,
@@ -482,21 +477,21 @@ COMPARE_METHOD(isLessThanOrEqualTo, Py_LE)
482
477
  */
483
478
  (void)PyLong_AsLongLong(value);
484
479
  if (!PyErr_Occurred()) {
485
- PyObjC_GIL_RETURN([NSNumber class]);
480
+ result = [NSNumber class];
486
481
  } else { // LCOV_EXCL_LINE
487
482
  PyErr_Clear();
488
483
 
489
484
  (void)PyLong_AsUnsignedLongLong(value);
490
485
  if (!PyErr_Occurred()) {
491
- PyObjC_GIL_RETURN([NSNumber class]);
486
+ result = [NSNumber class];
492
487
  } else { // LCOV_EXCL_LINE
493
488
  PyErr_Clear();
494
489
 
495
- PyObjC_GIL_RETURN([self class]);
490
+ result = [self class];
496
491
  }
497
492
  }
498
493
  } else { // LCOV_EXCL_LINE
499
- PyObjC_GIL_RETURN([self class]);
494
+ result = [self class];
500
495
  }
501
496
 
502
497
  // LCOV_EXCL_START
@@ -506,7 +501,8 @@ COMPARE_METHOD(isLessThanOrEqualTo, Py_LE)
506
501
  }
507
502
  // LCOV_EXCL_STOP
508
503
  PyObjC_END_WITH_GIL
509
- }
504
+ return result;
505
+ } // LCOV_EXCL_LINE
510
506
 
511
507
  - (Class _Nullable)classForKeyedArchiver
512
508
  {
@@ -525,11 +521,32 @@ COMPARE_METHOD(isLessThanOrEqualTo, Py_LE)
525
521
 
526
522
  - (id)copyWithZone:(NSZone* _Nullable)__attribute__((__unused__)) zone
527
523
  {
528
- /* XXX: This is ok if value is a python builtin
529
- * but not for arbitrary python objects.
530
- */
531
- [self retain];
532
- return self;
524
+ id result;
525
+ PyObjC_BEGIN_WITH_GIL
526
+ if (PyLong_CheckExact(value) || PyFloat_CheckExact(value)
527
+ || Py_TYPE(value) == &PyBool_Type) {
528
+ /* The value is immutable, no need to copy */
529
+ result = self;
530
+ } else {
531
+ /* The value might be mutable, perform a copy */
532
+ PyObject* copied = PyObjC_Copy(value);
533
+ if (copied == NULL) {
534
+ PyObjC_GIL_FORWARD_EXC();
535
+ } // LCOV_EXCL_LINE
536
+
537
+ if (depythonify_python_object(copied, &result) == -1) {
538
+ Py_CLEAR(copied);
539
+ PyObjC_GIL_FORWARD_EXC();
540
+ } // LCOV_EXCL_LINE
541
+ Py_CLEAR(copied);
542
+ }
543
+
544
+ /* The result of copy should have +1 retainCount */
545
+ [result retain];
546
+
547
+ PyObjC_END_WITH_GIL
548
+
549
+ return result;
533
550
  }
534
551
 
535
552
  @end