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