pyobjc-core 10.1__tar.gz → 10.3__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.1 → pyobjc_core-10.3}/Examples/GUITests/test_modalsession.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/setup.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/instrumentSends.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/PyObjCTools/KeyValueCoding.py +10 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/PyObjCTools/TestSupport.py +8 -5
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/__init__.py +2 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_bridges.py +14 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_bridgesupport.py +7 -6
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_context.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience.py +70 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_mapping.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsarray.py +11 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsdata.py +6 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsdecimal.py +4 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsdictionary.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsset.py +4 -3
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsstring.py +5 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_sequence.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_lazyimport.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_locking.py +1 -0
- pyobjc_core-10.3/Lib/objc/_new.py +161 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_properties.py +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_pycoder.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_transform.py +54 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/PKG-INFO +1 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/SOURCES.txt +8 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/License.txt +1 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonNumber.m +23 -2
- pyobjc_core-10.3/Modules/objc/OC_PythonURL.h +14 -0
- pyobjc_core-10.3/Modules/objc/OC_PythonURL.m +128 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonUnicode.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/block_support.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/bundle-variables.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/class-builder.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/class-builder.m +12 -5
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/formal-protocol.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/libffi_extra.m +3 -3
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/libffi_support.m +16 -9
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/module.m +1 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-class.m +31 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc_super.m +2 -16
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc_support.m +165 -84
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/opaque-pointer.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/options.h +2 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/options.m +7 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc.h +2 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc_unicode.m +0 -5
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/struct-wrapper.m +1 -1
- pyobjc_core-10.3/Modules/objc/test/genericnew.m +108 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/metadata.m +9 -9
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/metadatafunction.m +3 -3
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/objectint.m +3 -3
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/pythonset.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/sequence.m +4 -1
- pyobjc_core-10.3/Modules/objc/test/unavailable.m +81 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PKG-INFO +1 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/fnd.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/keyvaluehelper.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_archive_python.py +5 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_arrays.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_bridgesupport.py +10 -11
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_clinmeth.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_convenience.py +78 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_corefoundation.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_ctests.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_dict_interface.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_dyld.py +3 -3
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_filepointer.py +1 -0
- pyobjc_core-10.3/PyObjCTest/test_generic_new.py +195 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_keyvalue.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_leaks.py +4 -2
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_list_proxy.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_locking.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_metadata.py +2 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_metadata_function.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_metadata_imp.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_metadata_py.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_metadata_py2py.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_methodaccess.py +1 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_methods.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nsdecimal.py +1 -0
- pyobjc_core-10.3/PyObjCTest/test_nsunavailable.py +63 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_number_proxy.py +3 -6
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_opaque.py +3 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_pickling_objc.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_pointer_compat.py +3 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_regr.py +14 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_set_interface.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_set_proxy.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_signatures.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_specialtypecodes_charbyte.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_specialtypecodes_charint.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_specialtypecodes_methdef.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_specialtypecodes_nsbool.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_specialtypecodes_struct.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_specialtypecodes_unichar.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_structs.py +29 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_subclass.py +5 -1
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_synthesize.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_transform.py +51 -8
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_transform_integration.py +18 -8
- pyobjc_core-10.3/PyObjCTest/test_urlproxy.py +21 -0
- pyobjc_core-10.3/PyObjCTest/test_varargs.py +60 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/setup.py +10 -16
- pyobjc-core-10.1/PyObjCTest/test_posing.py +0 -42
- pyobjc-core-10.1/PyObjCTest/test_varargs.py +0 -61
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/00ReadMe.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/GUITests/00ReadMe.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/AsyncPythonInterpreter.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/ConsoleReactor.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/classes.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/info.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/keyedobjects.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/classes.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/info.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/keyedobjects.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/README.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/RemotePyInterpreter.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/netrepr.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/remote_bootstrap.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/remote_console.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/remote_pipe.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/tcpinterpreter.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/NonFunctional/RemotePyInterpreter/test_client.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/HelloWorld.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/autoreadme.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/kvo-debugging.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/signal-demo.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/stdinreader.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/subclassing-objective-c.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Examples/Scripts/wmEnable.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/HISTORIC.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Install.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/PyObjCTools/MachSignals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/PyObjCTools/Signals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_callable_docstr.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_category.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_compat.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_convenience_nsobject.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_descriptors.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_dyld.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_framework.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_informal_protocol.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_protocols.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_pythonify.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/_structtype.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/objc/simd.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/include/pyobjc-api.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/include/pyobjc-compat.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/MANIFEST +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/MANIFEST.in +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Misc/announcement.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/_machsignals.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonData.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonData.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_NSBundleHack.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_NSBundleHack.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonArray.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonArray.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonData.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonData.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonDate.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonDate.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonDictionary.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonDictionary.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonEnumerator.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonEnumerator.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonNumber.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonObject.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonObject.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonSet.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonSet.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/OC_PythonUnicode.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/ObjCPointer.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/ObjCPointer.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/block_support.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/bundle-variables.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/class-list.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/class-list.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/closure_pool.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/closure_pool.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/corefoundation.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/corefoundation.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/ctests.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/ctests.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/file_wrapper.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/file_wrapper.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/formal-protocol.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/fsref.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/fsref.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/function.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/function.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-authorization.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-foundation-nscoder.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-foundation-nsdata.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-foundation-nsdecimal.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-foundation-nsinvocation.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-foundation-nsobject.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers-vector.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/helpers.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/instance-var.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/instance-var.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/ivar-accessor.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/ivar-accessor.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/libffi_extra.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/libffi_support.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/memview.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/memview.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/meth-func.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/meth-func.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/method-accessor.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/method-accessor.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/method-imp.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/method-imp.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/method-signature.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/method-signature.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-NULL.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-NULL.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-class.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-object.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-object.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-runtime-compat.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc-runtime-compat.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc_super.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc_support.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc_util.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/objc_util.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/opaque-pointer.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pointer-support.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pointer-support.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/proxy-registry.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/proxy-registry.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc-api.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc-api.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc-assert.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc-compat.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc-compat.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc-unittest.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/pyobjc_unicode.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/python-api-used.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/registry.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/registry.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/released-buffer.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/released-buffer.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/selector.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/selector.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/struct-sockaddr.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/struct-sockaddr.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/struct-wrapper.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/super-call.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/super-call.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/NULL.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/arrayint.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/arrays.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/block.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/bufsizeinarg.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/categories_base.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c42.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c43.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c44.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c45.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c46.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c47.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c48.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c49.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c50.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c51.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c52.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c53.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c54.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c55.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c56.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c57.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c58.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_c59.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp10.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp11.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp12.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp13.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp14.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp15.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp16.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp17.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp18.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp19.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp20.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp21.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp22.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp23.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp24.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp27.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp3.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp30.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp33.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp36.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp39.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp42.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp45.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp48.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp51.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp54.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp57.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp6.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp7.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp8.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_gp9.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p24.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p25.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p26.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p27.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p28.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p29.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p30.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p31.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p32.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p33.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p34.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p35.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p36.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p37.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p38.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p39.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p40.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/category_p41.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/cfsocket.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/classes.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/clinmeth.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/coding.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/copying.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/corefoundation.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/dataint.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/dateint.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/decimal.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/deprecations.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/dictint.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/enumeration.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/exceptions.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/filepointer.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/fsref.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/gcov.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/helpernsdata.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/helpernsobject.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/identity.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/initialize.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/instanceVariables.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/locking.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/methodaccess.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/methodlookup.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/methres1.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/methres2.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/misc.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/missing1.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/missing2.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/missing3.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/nsobjectcategory.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/nulldelimitedresult.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/opaque.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/pointersupport.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/properties.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/protected.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/protocol.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/pythonnumber.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/sockaddr.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/specialtypecodes.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/stringint.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/structargs.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/structpointer1.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/structpointer2.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/structs.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/testbndl.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/testbndl2.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/testclassandinst.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/testoutputinitializer.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/vector.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/vectorcall.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/test/voidpointer.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/varlist.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/varlist.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/weakref.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Modules/objc/weakref.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/__init__.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/dump-nsarchive-securecoding.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/dump-nsarchive.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/helper_bridgesupport.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/loader.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_NULL.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_allocatebuffer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_api_import.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_archiving_interop.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_archiving_secure_interop.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_array_interface.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_array_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_assocations.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_blocks.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_bridged_classes.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_bridges.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_bufsizeinarg.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_bundleFunctions.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_bundleVariables.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_callable_docstr.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_callbacks.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_categories.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_classandinst.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_classhooks.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_compat.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_context.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_conversion.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_copying.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_data_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_date_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_default_selector.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_deprecations.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_descriptors.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_dict_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_dict_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_enumerator.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_exceptions.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_final.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_framework.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_fsref.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_functions.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_generic_class.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_hidden_selector.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_identity.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_imp.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_initialized.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_inspect_signatures.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_internals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_ivar.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_keyvalue_prop.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_keyvaluecoding.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_lazy_import.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_machsignals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_metadata_inheritance.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_method_prototypes.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_methodedits.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_methodlookup.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_methods2.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_methres.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nscoder.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nsdata.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nsdate_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nsinvocation.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nsobject.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_nulldelimited.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_objc.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_objcpointer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_object_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_object_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_options.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_outputinitializer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_pickle.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_propertiesforclass.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_protected.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_protocol.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_protocolNamed.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_python_method.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_set_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_signals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_simd.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_sockaddr.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_splitsig.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_string_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_structpointer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_testsupport.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_typecheck.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_unicode.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_usekvo.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_varlist.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_vector_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_vectorcall.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_version_support.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_voidpointer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/PyObjCTest/test_weakref.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/README.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/MANIFEST.in +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/comparebench.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/gen_archive.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/generate-category-tests.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/generate-helpers-vector.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/pyobjc_setup.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/pyobjcbench.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/results/pyobjcbench-7.3.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/runtests-with-nuitka.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/Tools/runtests.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/pyproject.toml +0 -0
- {pyobjc-core-10.1 → pyobjc_core-10.3}/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()
|
|
@@ -1229,13 +1229,16 @@ class TestCase(_unittest.TestCase):
|
|
|
1229
1229
|
)
|
|
1230
1230
|
|
|
1231
1231
|
if exclude_cocoa:
|
|
1232
|
-
|
|
1232
|
+
try:
|
|
1233
|
+
import Cocoa
|
|
1233
1234
|
|
|
1234
|
-
|
|
1235
|
+
exclude_names = set(dir(Cocoa))
|
|
1235
1236
|
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
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()
|
|
1239
1242
|
else:
|
|
1240
1243
|
exclude_names = set()
|
|
1241
1244
|
|
|
@@ -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
|
|
@@ -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)
|
|
@@ -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,161 @@
|
|
|
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)
|
|
@@ -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):
|