pyobjc-core 10.0__tar.gz → 10.2__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 (507) hide show
  1. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/PyObjCTools/TestSupport.py +37 -11
  2. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_bridges.py +14 -0
  3. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_properties.py +2 -2
  4. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_protocols.py +1 -1
  5. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_pycoder.py +2 -2
  6. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_transform.py +1 -1
  7. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/PKG-INFO +2 -1
  8. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/SOURCES.txt +3 -0
  9. {pyobjc-core-10.0 → pyobjc-core-10.2}/License.txt +1 -1
  10. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonArray.m +5 -0
  11. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonDictionary.m +3 -0
  12. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonNumber.m +23 -2
  13. pyobjc-core-10.2/Modules/objc/OC_PythonURL.h +14 -0
  14. pyobjc-core-10.2/Modules/objc/OC_PythonURL.m +128 -0
  15. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonUnicode.m +2 -2
  16. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/block_support.m +2 -2
  17. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/bundle-variables.m +2 -2
  18. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/class-builder.m +2 -2
  19. pyobjc-core-10.2/Modules/objc/class-list.m +522 -0
  20. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/closure_pool.h +11 -0
  21. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/formal-protocol.m +2 -2
  22. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-foundation-nsdecimal.m +3 -1
  23. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-vector.m +155 -1
  24. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/libffi_extra.m +3 -3
  25. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/libffi_support.m +8 -8
  26. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/module.m +1 -1
  27. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc_support.m +165 -84
  28. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc_util.m +4 -3
  29. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/opaque-pointer.m +2 -2
  30. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/options.h +1 -0
  31. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/options.m +3 -1
  32. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc.h +2 -1
  33. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/struct-wrapper.m +1 -1
  34. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/metadata.m +9 -9
  35. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/metadatafunction.m +3 -4
  36. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/objectint.m +3 -3
  37. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/pythonset.m +2 -2
  38. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/sequence.m +4 -1
  39. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/vector.m +11 -2
  40. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/vectorcall.m +197 -1
  41. {pyobjc-core-10.0 → pyobjc-core-10.2}/PKG-INFO +2 -1
  42. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_archive_python.py +5 -1
  43. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_archiving_interop.py +2 -2
  44. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_archiving_secure_interop.py +2 -2
  45. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_blocks.py +1 -1
  46. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_bridgesupport.py +2 -2
  47. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_convenience.py +1 -1
  48. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_data_proxy.py +2 -2
  49. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_date_proxy.py +1 -1
  50. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_internals.py +21 -2
  51. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_keyvaluecoding.py +1 -1
  52. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_methodaccess.py +1 -1
  53. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nsdata.py +1 -1
  54. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nsdecimal.py +1 -1
  55. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nsobject.py +1 -1
  56. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_opaque.py +3 -1
  57. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_pointer_compat.py +3 -1
  58. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_protocol.py +0 -9
  59. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_splitsig.py +4 -0
  60. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_structs.py +28 -0
  61. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_subclass.py +6 -2
  62. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_testsupport.py +1 -1
  63. pyobjc-core-10.2/PyObjCTest/test_urlproxy.py +21 -0
  64. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_vector_proxy.py +3 -1
  65. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_vectorcall.py +711 -425
  66. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/generate-helpers-vector.py +10 -1
  67. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/pyobjc_setup.py +5 -4
  68. {pyobjc-core-10.0 → pyobjc-core-10.2}/setup.cfg +1 -0
  69. {pyobjc-core-10.0 → pyobjc-core-10.2}/setup.py +18 -0
  70. pyobjc-core-10.0/Modules/objc/class-list.m +0 -105
  71. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/00ReadMe.txt +0 -0
  72. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/GUITests/00ReadMe.txt +0 -0
  73. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/GUITests/test_modalsession.py +0 -0
  74. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/AsyncPythonInterpreter.py +0 -0
  75. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/ConsoleReactor.py +0 -0
  76. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/classes.nib +0 -0
  77. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/info.nib +0 -0
  78. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/keyedobjects.nib +0 -0
  79. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/classes.nib +0 -0
  80. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/info.nib +0 -0
  81. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/keyedobjects.nib +0 -0
  82. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/README.txt +0 -0
  83. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/RemotePyInterpreter.py +0 -0
  84. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/netrepr.py +0 -0
  85. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/remote_bootstrap.py +0 -0
  86. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/remote_console.py +0 -0
  87. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/remote_pipe.py +0 -0
  88. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/setup.py +0 -0
  89. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/tcpinterpreter.py +0 -0
  90. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/NonFunctional/RemotePyInterpreter/test_client.py +0 -0
  91. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/HelloWorld.py +0 -0
  92. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/autoreadme.py +0 -0
  93. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/instrumentSends.py +0 -0
  94. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/kvo-debugging.py +0 -0
  95. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/signal-demo.py +0 -0
  96. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/stdinreader.py +0 -0
  97. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/subclassing-objective-c.py +0 -0
  98. {pyobjc-core-10.0 → pyobjc-core-10.2}/Examples/Scripts/wmEnable.py +0 -0
  99. {pyobjc-core-10.0 → pyobjc-core-10.2}/HISTORIC.txt +0 -0
  100. {pyobjc-core-10.0 → pyobjc-core-10.2}/Install.txt +0 -0
  101. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/PyObjCTools/KeyValueCoding.py +0 -0
  102. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/PyObjCTools/MachSignals.py +0 -0
  103. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/PyObjCTools/Signals.py +0 -0
  104. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/__init__.py +0 -0
  105. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_bridgesupport.py +0 -0
  106. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_callable_docstr.py +0 -0
  107. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_category.py +0 -0
  108. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_compat.py +0 -0
  109. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_context.py +0 -0
  110. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience.py +0 -0
  111. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_mapping.py +0 -0
  112. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsarray.py +0 -0
  113. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsdata.py +0 -0
  114. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsdecimal.py +0 -0
  115. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsdictionary.py +0 -0
  116. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsobject.py +0 -0
  117. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsset.py +0 -0
  118. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_nsstring.py +0 -0
  119. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_convenience_sequence.py +0 -0
  120. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_descriptors.py +0 -0
  121. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_dyld.py +0 -0
  122. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_framework.py +0 -0
  123. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_informal_protocol.py +0 -0
  124. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_lazyimport.py +0 -0
  125. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_locking.py +0 -0
  126. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_pythonify.py +0 -0
  127. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/_structtype.py +0 -0
  128. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/objc/simd.py +0 -0
  129. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
  130. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/include/pyobjc-api.h +0 -0
  131. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/include/pyobjc-compat.h +0 -0
  132. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
  133. {pyobjc-core-10.0 → pyobjc-core-10.2}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
  134. {pyobjc-core-10.0 → pyobjc-core-10.2}/MANIFEST +0 -0
  135. {pyobjc-core-10.0 → pyobjc-core-10.2}/MANIFEST.in +0 -0
  136. {pyobjc-core-10.0 → pyobjc-core-10.2}/Misc/announcement.txt +0 -0
  137. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/_machsignals.m +0 -0
  138. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
  139. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
  140. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonData.h +0 -0
  141. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonData.m +0 -0
  142. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
  143. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
  144. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
  145. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
  146. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
  147. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
  148. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
  149. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
  150. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
  151. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
  152. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_NSBundleHack.h +0 -0
  153. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_NSBundleHack.m +0 -0
  154. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonArray.h +0 -0
  155. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonData.h +0 -0
  156. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonData.m +0 -0
  157. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonDate.h +0 -0
  158. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonDate.m +0 -0
  159. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonDictionary.h +0 -0
  160. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonEnumerator.h +0 -0
  161. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonEnumerator.m +0 -0
  162. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonNumber.h +0 -0
  163. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonObject.h +0 -0
  164. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonObject.m +0 -0
  165. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonSet.h +0 -0
  166. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonSet.m +0 -0
  167. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/OC_PythonUnicode.h +0 -0
  168. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/ObjCPointer.h +0 -0
  169. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/ObjCPointer.m +0 -0
  170. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/block_support.h +0 -0
  171. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/bundle-variables.h +0 -0
  172. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/class-builder.h +0 -0
  173. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/class-list.h +0 -0
  174. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/closure_pool.m +0 -0
  175. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/corefoundation.h +0 -0
  176. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/corefoundation.m +0 -0
  177. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/ctests.h +0 -0
  178. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/ctests.m +0 -0
  179. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/file_wrapper.h +0 -0
  180. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/file_wrapper.m +0 -0
  181. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/formal-protocol.h +0 -0
  182. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/fsref.h +0 -0
  183. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/fsref.m +0 -0
  184. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/function.h +0 -0
  185. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/function.m +0 -0
  186. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-authorization.m +0 -0
  187. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-foundation-nscoder.m +0 -0
  188. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-foundation-nsdata.m +0 -0
  189. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-foundation-nsinvocation.m +0 -0
  190. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers-foundation-nsobject.m +0 -0
  191. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/helpers.h +0 -0
  192. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/instance-var.h +0 -0
  193. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/instance-var.m +0 -0
  194. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/ivar-accessor.h +0 -0
  195. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/ivar-accessor.m +0 -0
  196. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/libffi_extra.h +0 -0
  197. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/libffi_support.h +0 -0
  198. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/memview.h +0 -0
  199. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/memview.m +0 -0
  200. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/meth-func.h +0 -0
  201. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/meth-func.m +0 -0
  202. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/method-accessor.h +0 -0
  203. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/method-accessor.m +0 -0
  204. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/method-imp.h +0 -0
  205. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/method-imp.m +0 -0
  206. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/method-signature.h +0 -0
  207. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/method-signature.m +0 -0
  208. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-NULL.h +0 -0
  209. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-NULL.m +0 -0
  210. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-class.h +0 -0
  211. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-class.m +0 -0
  212. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-object.h +0 -0
  213. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-object.m +0 -0
  214. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-runtime-compat.h +0 -0
  215. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc-runtime-compat.m +0 -0
  216. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc_super.h +0 -0
  217. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc_super.m +0 -0
  218. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc_support.h +0 -0
  219. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/objc_util.h +0 -0
  220. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/opaque-pointer.h +0 -0
  221. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pointer-support.h +0 -0
  222. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pointer-support.m +0 -0
  223. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/proxy-registry.h +0 -0
  224. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/proxy-registry.m +0 -0
  225. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc-api.h +0 -0
  226. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc-api.m +0 -0
  227. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc-assert.h +0 -0
  228. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc-compat.h +0 -0
  229. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc-compat.m +0 -0
  230. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc-unittest.h +0 -0
  231. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc_unicode.h +0 -0
  232. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/pyobjc_unicode.m +0 -0
  233. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/python-api-used.h +0 -0
  234. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/registry.h +0 -0
  235. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/registry.m +0 -0
  236. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/released-buffer.h +0 -0
  237. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/released-buffer.m +0 -0
  238. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/selector.h +0 -0
  239. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/selector.m +0 -0
  240. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/struct-sockaddr.h +0 -0
  241. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/struct-sockaddr.m +0 -0
  242. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/struct-wrapper.h +0 -0
  243. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/super-call.h +0 -0
  244. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/super-call.m +0 -0
  245. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/NULL.m +0 -0
  246. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/arrayint.m +0 -0
  247. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/arrays.m +0 -0
  248. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/block.m +0 -0
  249. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/bufsizeinarg.m +0 -0
  250. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/categories_base.m +0 -0
  251. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c42.m +0 -0
  252. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c43.m +0 -0
  253. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c44.m +0 -0
  254. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c45.m +0 -0
  255. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c46.m +0 -0
  256. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c47.m +0 -0
  257. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c48.m +0 -0
  258. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c49.m +0 -0
  259. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c50.m +0 -0
  260. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c51.m +0 -0
  261. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c52.m +0 -0
  262. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c53.m +0 -0
  263. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c54.m +0 -0
  264. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c55.m +0 -0
  265. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c56.m +0 -0
  266. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c57.m +0 -0
  267. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c58.m +0 -0
  268. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_c59.m +0 -0
  269. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp10.m +0 -0
  270. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp11.m +0 -0
  271. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp12.m +0 -0
  272. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp13.m +0 -0
  273. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp14.m +0 -0
  274. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp15.m +0 -0
  275. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp16.m +0 -0
  276. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp17.m +0 -0
  277. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp18.m +0 -0
  278. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp19.m +0 -0
  279. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp20.m +0 -0
  280. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp21.m +0 -0
  281. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp22.m +0 -0
  282. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp23.m +0 -0
  283. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp24.m +0 -0
  284. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp27.m +0 -0
  285. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp3.m +0 -0
  286. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp30.m +0 -0
  287. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp33.m +0 -0
  288. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp36.m +0 -0
  289. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp39.m +0 -0
  290. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp42.m +0 -0
  291. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp45.m +0 -0
  292. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp48.m +0 -0
  293. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp51.m +0 -0
  294. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp54.m +0 -0
  295. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp57.m +0 -0
  296. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp6.m +0 -0
  297. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp7.m +0 -0
  298. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp8.m +0 -0
  299. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_gp9.m +0 -0
  300. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p24.m +0 -0
  301. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p25.m +0 -0
  302. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p26.m +0 -0
  303. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p27.m +0 -0
  304. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p28.m +0 -0
  305. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p29.m +0 -0
  306. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p30.m +0 -0
  307. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p31.m +0 -0
  308. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p32.m +0 -0
  309. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p33.m +0 -0
  310. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p34.m +0 -0
  311. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p35.m +0 -0
  312. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p36.m +0 -0
  313. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p37.m +0 -0
  314. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p38.m +0 -0
  315. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p39.m +0 -0
  316. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p40.m +0 -0
  317. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/category_p41.m +0 -0
  318. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/cfsocket.m +0 -0
  319. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/classes.m +0 -0
  320. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/clinmeth.m +0 -0
  321. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/coding.m +0 -0
  322. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/copying.m +0 -0
  323. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/corefoundation.m +0 -0
  324. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/dataint.m +0 -0
  325. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/dateint.m +0 -0
  326. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/decimal.m +0 -0
  327. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/deprecations.m +0 -0
  328. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/dictint.m +0 -0
  329. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/enumeration.m +0 -0
  330. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/exceptions.m +0 -0
  331. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/filepointer.m +0 -0
  332. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/fsref.m +0 -0
  333. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/gcov.m +0 -0
  334. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/helpernsdata.m +0 -0
  335. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/helpernsobject.m +0 -0
  336. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/identity.m +0 -0
  337. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/initialize.m +0 -0
  338. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/instanceVariables.m +0 -0
  339. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/locking.m +0 -0
  340. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/methodaccess.m +0 -0
  341. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/methodlookup.m +0 -0
  342. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/methres1.m +0 -0
  343. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/methres2.m +0 -0
  344. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/misc.m +0 -0
  345. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/missing1.m +0 -0
  346. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/missing2.m +0 -0
  347. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/missing3.m +0 -0
  348. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/nsobjectcategory.m +0 -0
  349. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/nulldelimitedresult.m +0 -0
  350. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/opaque.m +0 -0
  351. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/pointersupport.m +0 -0
  352. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/properties.m +0 -0
  353. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/protected.m +0 -0
  354. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/protocol.m +0 -0
  355. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/pythonnumber.m +0 -0
  356. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/sockaddr.m +0 -0
  357. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/specialtypecodes.m +0 -0
  358. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/stringint.m +0 -0
  359. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/structargs.m +0 -0
  360. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/structpointer1.m +0 -0
  361. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/structpointer2.m +0 -0
  362. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/structs.m +0 -0
  363. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/testbndl.m +0 -0
  364. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/testbndl2.m +0 -0
  365. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/testclassandinst.m +0 -0
  366. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/testoutputinitializer.m +0 -0
  367. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/test/voidpointer.m +0 -0
  368. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/varlist.h +0 -0
  369. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/varlist.m +0 -0
  370. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/weakref.h +0 -0
  371. {pyobjc-core-10.0 → pyobjc-core-10.2}/Modules/objc/weakref.m +0 -0
  372. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/__init__.py +0 -0
  373. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
  374. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
  375. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
  376. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
  377. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
  378. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
  379. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
  380. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
  381. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/dump-nsarchive-securecoding.m +0 -0
  382. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/dump-nsarchive.m +0 -0
  383. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/fnd.py +0 -0
  384. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/helper_bridgesupport.py +0 -0
  385. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/keyvaluehelper.py +0 -0
  386. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/loader.py +0 -0
  387. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_NULL.py +0 -0
  388. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_allocatebuffer.py +0 -0
  389. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_api_import.py +0 -0
  390. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_array_interface.py +0 -0
  391. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_array_property.py +0 -0
  392. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_arrays.py +0 -0
  393. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_assocations.py +0 -0
  394. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_bridged_classes.py +0 -0
  395. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_bridges.py +0 -0
  396. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_bufsizeinarg.py +0 -0
  397. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_bundleFunctions.py +0 -0
  398. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_bundleVariables.py +0 -0
  399. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_callable_docstr.py +0 -0
  400. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_callbacks.py +0 -0
  401. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_categories.py +0 -0
  402. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_classandinst.py +0 -0
  403. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_classhooks.py +0 -0
  404. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_clinmeth.py +0 -0
  405. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_compat.py +0 -0
  406. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_context.py +0 -0
  407. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_conversion.py +0 -0
  408. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_copying.py +0 -0
  409. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_corefoundation.py +0 -0
  410. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_ctests.py +0 -0
  411. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_default_selector.py +0 -0
  412. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_deprecations.py +0 -0
  413. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_descriptors.py +0 -0
  414. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_dict_interface.py +0 -0
  415. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_dict_property.py +0 -0
  416. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_dict_proxy.py +0 -0
  417. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_dyld.py +0 -0
  418. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_enumerator.py +0 -0
  419. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_exceptions.py +0 -0
  420. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_filepointer.py +0 -0
  421. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_final.py +0 -0
  422. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_framework.py +0 -0
  423. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_fsref.py +0 -0
  424. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_functions.py +0 -0
  425. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_generic_class.py +0 -0
  426. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_hidden_selector.py +0 -0
  427. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_identity.py +0 -0
  428. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_imp.py +0 -0
  429. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_initialized.py +0 -0
  430. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_inspect_signatures.py +0 -0
  431. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_ivar.py +0 -0
  432. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_keyvalue.py +0 -0
  433. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_keyvalue_prop.py +0 -0
  434. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_lazy_import.py +0 -0
  435. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_leaks.py +0 -0
  436. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_list_proxy.py +0 -0
  437. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_locking.py +0 -0
  438. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_machsignals.py +0 -0
  439. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_metadata.py +0 -0
  440. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_metadata_function.py +0 -0
  441. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_metadata_imp.py +0 -0
  442. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_metadata_inheritance.py +0 -0
  443. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_metadata_py.py +0 -0
  444. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_metadata_py2py.py +0 -0
  445. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_method_prototypes.py +0 -0
  446. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_methodedits.py +0 -0
  447. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_methodlookup.py +0 -0
  448. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_methods.py +0 -0
  449. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_methods2.py +0 -0
  450. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_methres.py +0 -0
  451. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nscoder.py +0 -0
  452. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nsdate_proxy.py +0 -0
  453. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nsinvocation.py +0 -0
  454. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_nulldelimited.py +0 -0
  455. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_number_proxy.py +0 -0
  456. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_objc.py +0 -0
  457. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_objcpointer.py +0 -0
  458. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_object_property.py +0 -0
  459. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_object_proxy.py +0 -0
  460. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_options.py +0 -0
  461. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_outputinitializer.py +0 -0
  462. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_pickle.py +0 -0
  463. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_pickling_objc.py +0 -0
  464. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_posing.py +0 -0
  465. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_propertiesforclass.py +0 -0
  466. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_protected.py +0 -0
  467. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_protocolNamed.py +0 -0
  468. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_python_method.py +0 -0
  469. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_regr.py +0 -0
  470. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_set_interface.py +0 -0
  471. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_set_property.py +0 -0
  472. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_set_proxy.py +0 -0
  473. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_signals.py +0 -0
  474. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_signatures.py +0 -0
  475. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_simd.py +0 -0
  476. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_sockaddr.py +0 -0
  477. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_specialtypecodes_charbyte.py +0 -0
  478. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_specialtypecodes_charint.py +0 -0
  479. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_specialtypecodes_methdef.py +0 -0
  480. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_specialtypecodes_nsbool.py +0 -0
  481. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_specialtypecodes_struct.py +0 -0
  482. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_specialtypecodes_unichar.py +0 -0
  483. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_string_proxy.py +0 -0
  484. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_structpointer.py +0 -0
  485. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_synthesize.py +0 -0
  486. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_transform.py +0 -0
  487. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_transform_integration.py +0 -0
  488. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_typecheck.py +0 -0
  489. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_unicode.py +0 -0
  490. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_usekvo.py +0 -0
  491. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_varargs.py +0 -0
  492. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_varlist.py +0 -0
  493. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_version_support.py +0 -0
  494. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_voidpointer.py +0 -0
  495. {pyobjc-core-10.0 → pyobjc-core-10.2}/PyObjCTest/test_weakref.py +0 -0
  496. {pyobjc-core-10.0 → pyobjc-core-10.2}/README.txt +0 -0
  497. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/MANIFEST.in +0 -0
  498. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/comparebench.py +0 -0
  499. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/gen_archive.py +0 -0
  500. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/generate-category-tests.py +0 -0
  501. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/pyobjcbench.py +0 -0
  502. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/results/pyobjcbench-7.3.txt +0 -0
  503. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
  504. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
  505. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/runtests-with-nuitka.py +0 -0
  506. {pyobjc-core-10.0 → pyobjc-core-10.2}/Tools/runtests.py +0 -0
  507. {pyobjc-core-10.0 → pyobjc-core-10.2}/pyproject.toml +0 -0
@@ -276,7 +276,7 @@ def min_os_level(release):
276
276
  """
277
277
  return _unittest.skipUnless(
278
278
  os_level_key(os_release()) >= os_level_key(release),
279
- f"Requires OSX {release} or later",
279
+ f"Requires macOS {release} or later",
280
280
  )
281
281
 
282
282
 
@@ -292,7 +292,7 @@ def max_os_level(release):
292
292
  """
293
293
  return _unittest.skipUnless(
294
294
  os_level_key(os_release()) <= os_level_key(release),
295
- f"Requires OSX up to {release}",
295
+ f"Requires macOS up to {release}",
296
296
  )
297
297
 
298
298
 
@@ -310,13 +310,13 @@ def os_level_between(min_release, max_release):
310
310
  os_level_key(min_release)
311
311
  <= os_level_key(os_release())
312
312
  <= os_level_key(max_release),
313
- f"Requires OSX {min_release} up to {max_release}",
313
+ f"Requires macOS {min_release} up to {max_release}",
314
314
  )
315
315
 
316
316
 
317
317
  _poolclass = objc.lookUpClass("NSAutoreleasePool")
318
318
 
319
- # NOTE: On at least OSX 10.8 there are multiple proxy classes for CFTypeRef...
319
+ # NOTE: On at least macOS 10.8 there are multiple proxy classes for CFTypeRef...
320
320
  _nscftype = tuple(cls for cls in objc.getClassList(1) if "NSCFType" in cls.__name__)
321
321
 
322
322
  _typealias = {}
@@ -1199,7 +1199,6 @@ class TestCase(_unittest.TestCase):
1199
1199
  "c_array_delimited_by_null",
1200
1200
  "c_array_of_variable_length",
1201
1201
  "c_array_length_in_arg",
1202
- "c_array_delimited_by_null",
1203
1202
  "c_array_size_in_arg",
1204
1203
  }
1205
1204
  ):
@@ -1230,13 +1229,16 @@ class TestCase(_unittest.TestCase):
1230
1229
  )
1231
1230
 
1232
1231
  if exclude_cocoa:
1233
- import Cocoa
1232
+ try:
1233
+ import Cocoa
1234
1234
 
1235
- exclude_names = set(dir(Cocoa))
1235
+ exclude_names = set(dir(Cocoa))
1236
1236
 
1237
- # Don't exclude NSObject' because a number
1238
- # of frameworks define categories on this class.
1239
- exclude_names -= {"NSObject"}
1237
+ # Don't exclude NSObject' because a number
1238
+ # of frameworks define categories on this class.
1239
+ exclude_names -= {"NSObject"}
1240
+ except ImportError:
1241
+ exclude_names = set()
1240
1242
  else:
1241
1243
  exclude_names = set()
1242
1244
 
@@ -1291,6 +1293,24 @@ class TestCase(_unittest.TestCase):
1291
1293
  )
1292
1294
  )
1293
1295
 
1296
+ # Two (private) classes that end up being found in
1297
+ # test runs on macOS 10.12 and 10.13
1298
+ exclude_attrs.add("ABCDContact_ABCDContact_")
1299
+ exclude_attrs.add("ABCDGroup_ABCDGroup_")
1300
+
1301
+ # Some bindings in CoreAudio with false positives
1302
+ exclude_attrs.add("AudioHardwareClaimAudioDeviceID")
1303
+ exclude_attrs.add("AudioHardwareClaimAudioStreamID")
1304
+ exclude_attrs.add("AudioHardwareDevicePropertyChanged")
1305
+ exclude_attrs.add("AudioHardwareDevicesCreated")
1306
+ exclude_attrs.add("AudioHardwareDevicesDied")
1307
+ exclude_attrs.add("AudioHardwareStreamPropertyChanged")
1308
+ exclude_attrs.add("AudioHardwareStreamsCreated")
1309
+ exclude_attrs.add("AudioHardwareStreamsDied")
1310
+ exclude_attrs.add("AudioObjectCreate")
1311
+ exclude_attrs.add("AudioObjectPropertiesChanged")
1312
+ exclude_attrs.add("AudioObjectsPublishedAndDied")
1313
+
1294
1314
  # Calculate all (interesting) names in the module. This pokes into
1295
1315
  # the implementation details of objc.ObjCLazyModule to avoid loading
1296
1316
  # all attributes (which is expensive for larger bindings).
@@ -1364,7 +1384,6 @@ class TestCase(_unittest.TestCase):
1364
1384
  self._validateCallableMetadata(
1365
1385
  attr, nm, skip_simple_charptr_check=not exclude_cocoa
1366
1386
  )
1367
-
1368
1387
  elif isinstance(value, objc.function):
1369
1388
  with self.subTest(function=nm):
1370
1389
  self._validateCallableMetadata(value)
@@ -1387,6 +1406,13 @@ class TestCase(_unittest.TestCase):
1387
1406
  Run the test, same as unittest.TestCase.run, but every test is
1388
1407
  run with a fresh autorelease pool.
1389
1408
  """
1409
+ try:
1410
+ cls = objc.lookUpClass("NSApplication")
1411
+ except objc.error:
1412
+ pass
1413
+ else:
1414
+ cls.sharedApplication()
1415
+
1390
1416
  if _usepool and not self._skip_usepool:
1391
1417
  p = _poolclass.alloc().init()
1392
1418
  else:
@@ -1,5 +1,6 @@
1
1
  import collections.abc
2
2
  import datetime
3
+ import pathlib
3
4
 
4
5
  from objc import _objc
5
6
 
@@ -8,6 +9,7 @@ __all__ = [
8
9
  "registerMappingType",
9
10
  "registerSetType",
10
11
  "registerDateType",
12
+ "registerPathType",
11
13
  ]
12
14
 
13
15
  _objc.options._datetime_date_type = datetime.date
@@ -58,6 +60,17 @@ def registerDateType(type_object):
58
60
  _objc.options._date_types += (type_object,)
59
61
 
60
62
 
63
+ def registerPathType(type_object):
64
+ """
65
+ Register 'type' as a date-like type that will be proxied
66
+ as an NSDate subclass.
67
+ """
68
+ if _objc.options._path_types is None:
69
+ _objc.options._path_types = ()
70
+
71
+ _objc.options._path_types += (type_object,)
72
+
73
+
61
74
  registerListType(collections.abc.Sequence)
62
75
  registerListType(range)
63
76
  registerMappingType(collections.abc.Mapping)
@@ -67,3 +80,4 @@ registerSetType(frozenset)
67
80
  registerSetType(collections.abc.Set)
68
81
  registerDateType(datetime.date)
69
82
  registerDateType(datetime.datetime)
83
+ registerPathType(pathlib.Path)
@@ -248,7 +248,7 @@ class object_property:
248
248
  )
249
249
  signature = _C_NSBOOL + b"@:N^@o^@"
250
250
  validate = selector(self._validate, selector=selName, signature=signature)
251
- class_dict[validate.selector] = validate
251
+ class_dict[validate.selector.decode().replace(":", "_")] = validate
252
252
  instance_methods.add(validate)
253
253
 
254
254
  if self._depends_on:
@@ -266,7 +266,7 @@ class object_property:
266
266
  signature=b"@@:",
267
267
  isClassMethod=True,
268
268
  )
269
- class_dict[affecting.selector] = affecting
269
+ class_dict[affecting.selector.decode().replace(":", "_")] = affecting
270
270
  class_methods.add(affecting)
271
271
 
272
272
  def __get__(self, an_object, owner):
@@ -25,7 +25,7 @@ def protocolNamed(name):
25
25
  PROTOCOL_CACHE.setdefault(pname, p)
26
26
  if pname == name:
27
27
  return p
28
- for cls in _objc.getClassList(1):
28
+ for cls in _objc.getClassList(True):
29
29
  for p in _objc.protocolsForClass(cls):
30
30
  pname = p.__name__
31
31
  PROTOCOL_CACHE.setdefault(pname, p)
@@ -493,10 +493,10 @@ def load_reduce(coder, setValue):
493
493
 
494
494
  for k in state:
495
495
  v = state[k]
496
- if type(k) == objc.pyobjc_unicode:
496
+ if type(k) is objc.pyobjc_unicode:
497
497
  inst_dict[intern(k)] = v
498
498
 
499
- elif type(k) == str:
499
+ elif type(k) is str:
500
500
  inst_dict[intern(k)] = v
501
501
 
502
502
  else:
@@ -497,7 +497,7 @@ def transformAttribute(name, value, class_object, protocols):
497
497
  for cls in class_object.mro(): # pragma: no branch
498
498
  if not issubclass(cls, objc.objc_object):
499
499
  # Skip all non-objc class in the MRO to ignore
500
- # mixin classees.
500
+ # mixin classes.
501
501
  continue
502
502
  if selname in cls.pyobjc_hiddenSelectors(isclass):
503
503
  ishidden = True
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyobjc-core
3
- Version: 10.0
3
+ Version: 10.2
4
4
  Summary: Python<->ObjC Interoperability Module
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren, bbum, SteveM, LeleG, many others stretching back through the reaches of time...
@@ -25,6 +25,7 @@ Classifier: Programming Language :: Python :: 3.9
25
25
  Classifier: Programming Language :: Python :: 3.10
26
26
  Classifier: Programming Language :: Python :: 3.11
27
27
  Classifier: Programming Language :: Python :: 3.12
28
+ Classifier: Programming Language :: Python :: 3.13
28
29
  Classifier: Programming Language :: Python :: Implementation :: CPython
29
30
  Classifier: Programming Language :: Objective C
30
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
@@ -110,6 +110,8 @@ Modules/objc/OC_PythonObject.h
110
110
  Modules/objc/OC_PythonObject.m
111
111
  Modules/objc/OC_PythonSet.h
112
112
  Modules/objc/OC_PythonSet.m
113
+ Modules/objc/OC_PythonURL.h
114
+ Modules/objc/OC_PythonURL.m
113
115
  Modules/objc/OC_PythonUnicode.h
114
116
  Modules/objc/OC_PythonUnicode.m
115
117
  Modules/objc/ObjCPointer.h
@@ -472,6 +474,7 @@ PyObjCTest/test_transform.py
472
474
  PyObjCTest/test_transform_integration.py
473
475
  PyObjCTest/test_typecheck.py
474
476
  PyObjCTest/test_unicode.py
477
+ PyObjCTest/test_urlproxy.py
475
478
  PyObjCTest/test_usekvo.py
476
479
  PyObjCTest/test_varargs.py
477
480
  PyObjCTest/test_varlist.py
@@ -1,7 +1,7 @@
1
1
  (This is the MIT license, note that libffi-src is a separate product with its own license)
2
2
 
3
3
  Copyright 2002, 2003 - Bill Bumgarner, Ronald Oussoren, Steve Majewski, Lele Gaifax, et.al.
4
- Copyright 2003-2022 - Ronald Oussoren
4
+ Copyright 2003-2024 - Ronald Oussoren
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
7
7
 
@@ -622,6 +622,9 @@ NS_ASSUME_NONNULL_BEGIN
622
622
  }
623
623
  }
624
624
 
625
+ #pragma clang diagnostic push
626
+ #pragma clang diagnostic ignored "-Wunused-parameter"
627
+
625
628
  - (id)copyWithZone:(NSZone* _Nullable)zone
626
629
  {
627
630
  if (PyObjC_CopyFunc && PyObjC_CopyFunc != Py_None) {
@@ -651,6 +654,7 @@ NS_ASSUME_NONNULL_BEGIN
651
654
  }
652
655
  }
653
656
 
657
+
654
658
  - (id)mutableCopyWithZone:(NSZone* _Nullable)zone
655
659
  {
656
660
  NSObject* result;
@@ -672,6 +676,7 @@ NS_ASSUME_NONNULL_BEGIN
672
676
  [result retain];
673
677
  return result;
674
678
  }
679
+ #pragma clang diagnostic pop
675
680
 
676
681
  + (NSArray*)classFallbacksForKeyedArchiver
677
682
  {
@@ -570,6 +570,8 @@ PyObjC_FINAL_CLASS @interface OC_PythonDictionaryEnumerator : NSEnumerator {
570
570
  }
571
571
  }
572
572
 
573
+ #pragma clang diagnostic push
574
+ #pragma clang diagnostic ignored "-Wunused-parameter"
573
575
  - (id)mutableCopyWithZone:(NSZone* _Nullable)zone
574
576
  {
575
577
  NSObject* result;
@@ -600,6 +602,7 @@ PyObjC_FINAL_CLASS @interface OC_PythonDictionaryEnumerator : NSEnumerator {
600
602
  [result retain];
601
603
  return result;
602
604
  }
605
+ #pragma clang diagnostic pop
603
606
 
604
607
  @end /* interface OC_PythonDictionary */
605
608
 
@@ -123,7 +123,15 @@ NS_ASSUME_NONNULL_BEGIN
123
123
 
124
124
  - (BOOL)boolValue
125
125
  {
126
- return (BOOL)PyObject_IsTrue(value);
126
+ int r;
127
+ PyObjC_BEGIN_WITH_GIL
128
+ r = PyObject_IsTrue(value);
129
+ if (r == -1) {
130
+ PyObjC_GIL_FORWARD_EXC();
131
+ }
132
+ PyObjC_END_WITH_GIL
133
+
134
+ return !!r;
127
135
  }
128
136
 
129
137
  - (char)charValue
@@ -209,12 +217,19 @@ NS_ASSUME_NONNULL_BEGIN
209
217
  }
210
218
 
211
219
  - (long long)longLongValue
220
+ /* Disable float-cast-overflow checking when running
221
+ * with undefined behaviour sanitizer. The float cast
222
+ * below can result in undefined behaviour but is
223
+ * necessary to match Cocoa semantics.
224
+ */
225
+ __attribute__((no_sanitize("float-cast-overflow")))
212
226
  {
213
227
  long long result;
214
228
 
215
229
  PyObjC_BEGIN_WITH_GIL
216
230
  if (PyFloat_Check(value)) {
217
- result = (long long)PyFloat_AsDouble(value);
231
+ double float_result = PyFloat_AsDouble(value);
232
+ result = (long long)float_result;
218
233
  PyObjC_GIL_RETURN(result);
219
234
  } else if (PyLong_Check(value)) {
220
235
  result = PyLong_AsUnsignedLongLongMask(value);
@@ -231,6 +246,12 @@ NS_ASSUME_NONNULL_BEGIN
231
246
  }
232
247
 
233
248
  - (unsigned long long)unsignedLongLongValue
249
+ /* Disable float-cast-overflow checking when running
250
+ * with undefined behaviour sanitizer. The float cast
251
+ * below can result in undefined behaviour but is
252
+ * necessary to match Cocoa semantics.
253
+ */
254
+ __attribute__((no_sanitize("float-cast-overflow")))
234
255
  {
235
256
  unsigned long long result;
236
257
 
@@ -0,0 +1,14 @@
1
+ NS_ASSUME_NONNULL_BEGIN
2
+
3
+ PyObjC_FINAL_CLASS
4
+ @interface OC_PythonURL : NSURL {
5
+ PyObject* value;
6
+ }
7
+
8
+ + (instancetype _Nullable)URLWithPythonObject:(PyObject*)value;
9
+ - (id _Nullable)initWithPythonObject:(PyObject*)value;
10
+ - (PyObject*)__pyobjc_PythonObject__;
11
+
12
+ @end
13
+
14
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,128 @@
1
+ #include "pyobjc.h"
2
+ NS_ASSUME_NONNULL_BEGIN
3
+
4
+ @implementation OC_PythonURL
5
+
6
+ + (instancetype _Nullable)URLWithPythonObject:(PyObject*)object
7
+ {
8
+ return [[[self alloc] initWithPythonObject:object] autorelease];
9
+ }
10
+
11
+ - (id _Nullable)initWithPythonObject:(PyObject*)object
12
+ {
13
+ PyObject* fspath = PyOS_FSPath(object);
14
+ if (fspath == NULL) {
15
+ return nil;
16
+ }
17
+ if (!PyUnicode_Check(fspath)) {
18
+ Py_DECREF(fspath);
19
+ PyErr_Format(PyExc_ValueError, "os.fspath(%R) did not return a string", object);
20
+ return nil;
21
+ }
22
+
23
+ const char* utf8;
24
+ Py_ssize_t utf8_size;
25
+
26
+ utf8 = PyUnicode_AsUTF8AndSize(fspath, &utf8_size);
27
+ if (utf8 == NULL) {
28
+ Py_DECREF(fspath);
29
+ return nil;
30
+ }
31
+ if (utf8_size != (Py_ssize_t)strlen(utf8)) {
32
+ Py_DECREF(fspath);
33
+ PyErr_Format(PyExc_ValueError, "os.fspath(%R) result has embedded NULs", object);
34
+ return nil;
35
+ }
36
+
37
+ NSString* path = [[NSString alloc] initWithUTF8String:utf8];
38
+ Py_DECREF(fspath);
39
+ if (path == nil) {
40
+ return nil;
41
+ }
42
+
43
+ self = [super initFileURLWithPath:path];
44
+ [path release];
45
+ if (self == nil) {
46
+ return nil;
47
+ }
48
+
49
+ SET_FIELD_INCREF(value, object);
50
+ return self;
51
+ }
52
+
53
+ - (oneway void)release
54
+ {
55
+ /* See comment in OC_PythonUnicode */
56
+ if (unlikely(!Py_IsInitialized())) { // LCOV_BR_EXCL_LINE
57
+ // LCOV_EXCL_START
58
+ [super release];
59
+ return;
60
+ // LCOV_EXCL_STOP
61
+ }
62
+
63
+ PyObjC_BEGIN_WITH_GIL
64
+ @try {
65
+ [super release];
66
+ // LCOV_EXCL_START
67
+ } @catch (NSObject* exc) {
68
+ /* I'm 99% sure this path cannot be hit,
69
+ * this class cannot be subclassesed and
70
+ * -dealloc cannot raise.
71
+ */
72
+ PyObjC_LEAVE_GIL;
73
+ @throw;
74
+ }
75
+ // LCOV_EXCL_STOP
76
+
77
+ PyObjC_END_WITH_GIL
78
+ }
79
+
80
+ - (void)dealloc
81
+ {
82
+ if (unlikely(!Py_IsInitialized())) { // LCOV_BR_EXCL_LINE
83
+ // LCOV_EXCL_START
84
+ [super dealloc];
85
+ return;
86
+ // LCOV_EXCL_STOP
87
+ }
88
+
89
+ PyObjC_BEGIN_WITH_GIL
90
+ Py_XDECREF(value);
91
+ PyObjC_END_WITH_GIL
92
+
93
+ [super dealloc];
94
+ }
95
+
96
+ /*
97
+ * NSURL implements safe coding, that's something we cannot
98
+ * do for arbitrary python objects. Therefore punt and encode
99
+ * as a regular NSURL.
100
+ */
101
+ - (Class)classForCoder
102
+ {
103
+ return [NSURL class];
104
+ }
105
+
106
+ - (Class _Nullable)classForKeyedArchiver
107
+ {
108
+ return [NSURL class];
109
+ }
110
+
111
+
112
+ - (PyObject*)__pyobjc_PythonObject__
113
+ {
114
+ Py_XINCREF(value);
115
+ return value;
116
+ }
117
+
118
+ - (PyObject*)__pyobjc_PythonTransient__:(int*)cookie
119
+ {
120
+ *cookie = 0;
121
+ Py_XINCREF(value);
122
+ return value;
123
+ }
124
+ @end
125
+
126
+
127
+
128
+ NS_ASSUME_NONNULL_END
@@ -180,12 +180,12 @@ NS_ASSUME_NONNULL_BEGIN
180
180
 
181
181
  - (void)getCharacters:(unichar*)buffer range:(NSRange)aRange
182
182
  {
183
- return [[self __realObject__] getCharacters:buffer range:aRange];
183
+ [[self __realObject__] getCharacters:buffer range:aRange];
184
184
  }
185
185
 
186
186
  - (void)getCharacters:(unichar*)buffer
187
187
  {
188
- return [[self __realObject__] getCharacters:buffer];
188
+ [[self __realObject__] getCharacters:buffer];
189
189
  }
190
190
 
191
191
  /*
@@ -385,7 +385,7 @@ error:
385
385
  static void
386
386
  PyObjCBlock_CleanupCapsule(PyObject* ptr)
387
387
  {
388
- void* block_func = PyCapsule_GetPointer(ptr, "objc.__block_release__");
388
+ PyObjCBlockFunction block_func = (PyObjCBlockFunction)PyCapsule_GetPointer(ptr, "objc.__block_release__");
389
389
  if (block_func == NULL)
390
390
  return;
391
391
 
@@ -458,7 +458,7 @@ void* _Nullable PyObjCBlock_Create(PyObjCMethodSignature* signature, PyObject* c
458
458
  }
459
459
  block->invoke = block_func;
460
460
 
461
- block->invoke_cleanup = PyCapsule_New(block->invoke, "objc.__block_release__",
461
+ block->invoke_cleanup = PyCapsule_New((void*)(block->invoke), "objc.__block_release__",
462
462
  PyObjCBlock_CleanupCapsule);
463
463
  if (block->invoke_cleanup == NULL) { // LCOV_BR_EXCL_LINE
464
464
  PyObjCFFI_FreeBlockFunction(block->invoke); // LCOV_EXCL_LINE
@@ -387,7 +387,7 @@ PyObject* _Nullable PyObjC_loadFunctionList(PyObject* self __attribute__((__unus
387
387
  len = PySequence_Fast_GET_SIZE(seq);
388
388
  for (i = 0; i < len; i++) {
389
389
  PyObject* item = PySequence_Fast_GET_ITEM(seq, i);
390
- void* value;
390
+ function value;
391
391
  char* signature;
392
392
  PyObject* name;
393
393
  PyObject* doc;
@@ -417,7 +417,7 @@ PyObject* _Nullable PyObjC_loadFunctionList(PyObject* self __attribute__((__unus
417
417
  }
418
418
 
419
419
  } else {
420
- PyObject* py_val = PyObjCFunc_New(name, value, signature, doc, meta);
420
+ PyObject* py_val = PyObjCFunc_New(name, (void*)value, signature, doc, meta);
421
421
  if (py_val == NULL) {
422
422
  Py_DECREF(seq);
423
423
  return NULL;
@@ -749,13 +749,13 @@ object_method_dealloc(ffi_cif* cif __attribute__((__unused__)),
749
749
  PyObject* args[2] = {NULL, s};
750
750
  obj = PyObject_Vectorcall(delmethod, args + 1,
751
751
  1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
752
- _PyObjCObject_FreeDeallocHelper(s);
753
752
  if (obj == NULL) {
754
753
  PyErr_WriteUnraisable(delmethod);
755
754
  } else {
756
755
  Py_DECREF(obj);
757
756
  }
758
757
  Py_DECREF(delmethod);
758
+ _PyObjCObject_FreeDeallocHelper(s);
759
759
  }
760
760
  }
761
761
 
@@ -995,7 +995,7 @@ object_method_valueForKey_(ffi_cif* cif __attribute__((__unused__)), void* retva
995
995
  /* Parent doesn't know the key, try to create in the
996
996
  * python side, just like for plain python objects.
997
997
  *
998
- * NOTE: We have to be extermely careful in here, some classes,
998
+ * NOTE: We have to be extremely careful in here, some classes,
999
999
  * like NSManagedContext convert __getattr__ into a -valueForKey:,
1000
1000
  * and that can cause infinite loops.
1001
1001
  *