pyobjc-core 10.1__tar.gz → 11.0__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-11.0}/Examples/GUITests/test_modalsession.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/setup.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/instrumentSends.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/PyObjCTools/KeyValueCoding.py +10 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/PyObjCTools/TestSupport.py +45 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/__init__.py +2 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_bridges.py +11 -12
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_bridgesupport.py +12 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_context.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience.py +70 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_mapping.py +2 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsarray.py +11 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsdata.py +6 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsdecimal.py +4 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsdictionary.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsobject.py +6 -6
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsset.py +4 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_nsstring.py +5 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_convenience_sequence.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_lazyimport.py +3 -4
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_locking.py +1 -0
- pyobjc_core-11.0/Lib/objc/_new.py +178 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_properties.py +2 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_pycoder.py +3 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_transform.py +57 -4
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/pyobjc_core.egg-info/PKG-INFO +2 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/pyobjc_core.egg-info/SOURCES.txt +18 -1
- {pyobjc-core-10.1/Modules/objc → pyobjc_core-11.0/Lib/pyobjc_core.egg-info/include}/pyobjc-api.h +1 -1
- {pyobjc-core-10.1/Modules/objc → pyobjc_core-11.0/Lib/pyobjc_core.egg-info/include}/pyobjc-compat.h +80 -5
- pyobjc_core-11.0/Lib/pyobjc_core.egg-info/pyobjc-build-info.txt +3 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/License.txt +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/_machsignals.m +81 -42
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_NSBundleHack.m +48 -32
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonArray.m +110 -125
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonData.m +45 -71
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonDate.m +42 -105
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonDictionary.m +93 -96
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonEnumerator.m +9 -28
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonNumber.m +63 -89
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonObject.h +0 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonObject.m +61 -248
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonSet.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonSet.m +57 -82
- pyobjc_core-11.0/Modules/objc/OC_PythonURL.h +14 -0
- pyobjc_core-11.0/Modules/objc/OC_PythonURL.m +110 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonUnicode.m +36 -83
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/ObjCPointer.m +9 -4
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/block_support.h +0 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/block_support.m +145 -123
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/bundle-variables.m +83 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/class-builder.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/class-builder.m +113 -57
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/class-list.m +6 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/closure_pool.m +26 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/corefoundation.m +78 -50
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/ctests.m +142 -28
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/file_wrapper.m +130 -73
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/formal-protocol.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/formal-protocol.m +26 -36
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/fsref.m +23 -7
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/function.m +11 -22
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-authorization.m +15 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-foundation-nscoder.m +67 -53
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-foundation-nsdata.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-foundation-nsdecimal.m +32 -44
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-foundation-nsinvocation.m +82 -54
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-foundation-nsobject.m +9 -12
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers-vector.m +645 -205
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/instance-var.m +103 -43
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/ivar-accessor.m +23 -14
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/libffi_extra.m +3 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/libffi_support.h +2 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/libffi_support.m +542 -273
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/memview.m +2 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/meth-func.m +27 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/method-accessor.m +48 -19
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/method-imp.m +54 -22
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/method-signature.m +411 -273
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/module.m +241 -200
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-class.h +22 -30
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-class.m +885 -471
- pyobjc_core-11.0/Modules/objc/objc-object.h +57 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-object.m +410 -230
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-runtime-compat.h +4 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-runtime-compat.m +0 -7
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc_super.m +23 -28
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc_support.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc_support.m +299 -185
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc_util.h +71 -14
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc_util.m +493 -320
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/opaque-pointer.m +16 -19
- pyobjc_core-11.0/Modules/objc/options.h +47 -0
- pyobjc_core-11.0/Modules/objc/options.m +1268 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pointer-support.m +152 -42
- pyobjc_core-11.0/Modules/objc/proxy-registry.h +88 -0
- pyobjc_core-11.0/Modules/objc/proxy-registry.m +269 -0
- {pyobjc-core-10.1/Lib/pyobjc_core.egg-info/include → pyobjc_core-11.0/Modules/objc}/pyobjc-api.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc-api.m +0 -4
- {pyobjc-core-10.1/Lib/pyobjc_core.egg-info/include → pyobjc_core-11.0/Modules/objc}/pyobjc-compat.h +80 -5
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc-compat.m +0 -70
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc-unittest.h +1 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc.h +2 -5
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc_unicode.m +1 -8
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/python-api-used.h +27 -10
- pyobjc_core-11.0/Modules/objc/registry.m +296 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/selector.h +1 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/selector.m +177 -124
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/struct-wrapper.h +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/struct-wrapper.m +339 -136
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/super-call.m +209 -68
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/NULL.m +49 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/arrayint.m +88 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/arrays.m +51 -14
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/block.m +205 -20
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/bufsizeinarg.m +50 -16
- pyobjc_core-11.0/Modules/objc/test/categories_base.m +6308 -0
- pyobjc_core-11.0/Modules/objc/test/category_c42.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c43.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c44.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c45.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c46.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c47.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c48.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c49.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c50.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c51.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c52.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c53.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c54.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c55.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c56.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c57.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c58.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_c59.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp10.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp11.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp12.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp13.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp14.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp15.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp16.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp17.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp18.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp19.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp20.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp21.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp22.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp23.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp6.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp7.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp8.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_gp9.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p24.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p25.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p26.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p27.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p28.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p29.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p30.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p31.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p32.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p33.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p34.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p35.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p36.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p37.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p38.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p39.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p40.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/category_p41.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/cfsocket.m +83 -0
- pyobjc_core-11.0/Modules/objc/test/classes.m +79 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/clinmeth.m +50 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/coding.m +51 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/copying.m +50 -17
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/corefoundation.m +49 -23
- pyobjc_core-11.0/Modules/objc/test/dataint.m +101 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/dateint.m +50 -15
- pyobjc_core-11.0/Modules/objc/test/decimal.m +97 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/deprecations.m +52 -21
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/dictint.m +50 -15
- pyobjc_core-11.0/Modules/objc/test/enumeration.m +90 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/exceptions.m +50 -16
- pyobjc_core-11.0/Modules/objc/test/filepointer.m +101 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/fsref.m +49 -16
- pyobjc_core-11.0/Modules/objc/test/gcov.m +75 -0
- pyobjc_core-11.0/Modules/objc/test/genericnew.m +168 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/helpernsdata.m +50 -15
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/helpernsobject.m +51 -23
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/identity.m +49 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/initialize.m +54 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/instanceVariables.m +49 -23
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/locking.m +49 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/metadata.m +702 -25
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/metadatafunction.m +55 -30
- pyobjc_core-11.0/Modules/objc/test/methodaccess.m +83 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/methodlookup.m +50 -17
- pyobjc_core-11.0/Modules/objc/test/methres1.m +78 -0
- pyobjc_core-11.0/Modules/objc/test/methres2.m +78 -0
- pyobjc_core-11.0/Modules/objc/test/misc.m +80 -0
- pyobjc_core-11.0/Modules/objc/test/missing1.m +60 -0
- pyobjc_core-11.0/Modules/objc/test/missing2.m +63 -0
- pyobjc_core-11.0/Modules/objc/test/missing3.m +63 -0
- pyobjc_core-11.0/Modules/objc/test/nsobjectcategory.m +71 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/nulldelimitedresult.m +50 -22
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/objectint.m +54 -21
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/opaque.m +51 -18
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/pointersupport.m +49 -26
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/properties.m +49 -16
- pyobjc_core-11.0/Modules/objc/test/protected.m +84 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/protocol.m +55 -25
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/pythonnumber.m +49 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/pythonset.m +51 -18
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/sequence.m +54 -18
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/sockaddr.m +49 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/specialtypecodes.m +49 -29
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/stringint.m +51 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/structargs.m +58 -16
- pyobjc_core-11.0/Modules/objc/test/structpointer1.m +101 -0
- pyobjc_core-11.0/Modules/objc/test/structpointer2.m +69 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/structs.m +49 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/testbndl.m +179 -59
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/testbndl2.m +56 -19
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/testclassandinst.m +50 -24
- pyobjc_core-11.0/Modules/objc/test/testoutputinitializer.m +99 -0
- pyobjc_core-11.0/Modules/objc/test/unavailable.m +116 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/vector.m +50 -15
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/vectorcall.m +52 -17
- pyobjc_core-11.0/Modules/objc/test/voidpointer.m +96 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/varlist.m +28 -11
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PKG-INFO +2 -2
- pyobjc_core-11.0/PyObjCTest/.test_metadata.py.swp +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/fnd.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/keyvaluehelper.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_archive_python.py +82 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_arrays.py +1 -0
- pyobjc_core-11.0/PyObjCTest/test_blocks.py +1192 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_bridgesupport.py +20 -11
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_bufsizeinarg.py +37 -16
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_callable_docstr.py +48 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_categories.py +4 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_clinmeth.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_convenience.py +113 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_conversion.py +124 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_corefoundation.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_ctests.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_dict_interface.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_dyld.py +3 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_filepointer.py +1 -0
- pyobjc_core-11.0/PyObjCTest/test_free_threading.py +15 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_fsref.py +19 -1
- pyobjc_core-11.0/PyObjCTest/test_generic_new.py +332 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_imp.py +23 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_inspect_signatures.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_internals.py +36 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_ivar.py +52 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_keyvalue.py +82 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_lazy_import.py +21 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_leaks.py +4 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_list_proxy.py +25 -5
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_locking.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_machsignals.py +11 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_metadata.py +558 -5
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_metadata_function.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_metadata_imp.py +1 -0
- pyobjc_core-11.0/PyObjCTest/test_metadata_py.py +2134 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_metadata_py2py.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_methodaccess.py +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_methods.py +66 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_nscoder.py +8 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_nsdecimal.py +30 -4
- pyobjc_core-11.0/PyObjCTest/test_nsinvocation.py +107 -0
- pyobjc_core-11.0/PyObjCTest/test_nsunavailable.py +63 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_number_proxy.py +29 -6
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_objc.py +25 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_object_proxy.py +1 -24
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_opaque.py +23 -29
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_options.py +198 -20
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_pickling_objc.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_pointer_compat.py +29 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_protocol.py +9 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_protocolNamed.py +10 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_regr.py +102 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_set_interface.py +2 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_set_proxy.py +2 -3
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_signatures.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_sockaddr.py +30 -11
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_specialtypecodes_charbyte.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_specialtypecodes_charint.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_specialtypecodes_methdef.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_specialtypecodes_nsbool.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_specialtypecodes_struct.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_specialtypecodes_unichar.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_splitsig.py +45 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_string_proxy.py +2 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_structs.py +154 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_subclass.py +176 -1
- pyobjc_core-11.0/PyObjCTest/test_super_on_regular_classes.py +20 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_synthesize.py +1 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_testsupport.py +32 -2
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_transform.py +208 -10
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_transform_integration.py +18 -8
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_unicode.py +8 -0
- pyobjc_core-11.0/PyObjCTest/test_urlproxy.py +67 -0
- pyobjc_core-11.0/PyObjCTest/test_varargs.py +60 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_vectorcall.py +11 -3
- pyobjc_core-11.0/Tools/free-threading/_tools.py +45 -0
- pyobjc_core-11.0/Tools/free-threading/concurrent-class-list.py +11 -0
- pyobjc_core-11.0/Tools/free-threading/concurrent-dict-getting.py +26 -0
- pyobjc_core-11.0/Tools/free-threading/concurrent-iteration.py +23 -0
- pyobjc_core-11.0/Tools/free-threading/concurrent-proxies.py +25 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/generate-category-tests.py +60 -21
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/pyobjc_setup.py +121 -27
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/pyobjcbench.py +1 -1
- pyobjc_core-11.0/Tools/run-free-threading-tests.py +30 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/setup.cfg +1 -1
- {pyobjc-core-10.1 → pyobjc_core-11.0}/setup.py +48 -20
- pyobjc-core-10.1/Modules/objc/objc-object.h +0 -59
- pyobjc-core-10.1/Modules/objc/options.h +0 -42
- pyobjc-core-10.1/Modules/objc/options.m +0 -391
- pyobjc-core-10.1/Modules/objc/proxy-registry.h +0 -31
- pyobjc-core-10.1/Modules/objc/proxy-registry.m +0 -116
- pyobjc-core-10.1/Modules/objc/registry.m +0 -196
- pyobjc-core-10.1/Modules/objc/test/categories_base.m +0 -6918
- pyobjc-core-10.1/Modules/objc/test/category_c42.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c43.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c44.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c45.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c46.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c47.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c48.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c49.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c50.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c51.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c52.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c53.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c54.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c55.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c56.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c57.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c58.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_c59.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp10.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp11.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp12.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp13.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp14.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp15.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp16.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp17.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp18.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp19.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp20.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp21.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp22.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp23.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp6.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp7.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp8.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_gp9.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p24.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p25.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p26.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p27.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p28.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p29.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p30.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p31.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p32.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p33.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p34.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p35.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p36.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p37.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p38.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p39.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p40.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/category_p41.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/cfsocket.m +0 -50
- pyobjc-core-10.1/Modules/objc/test/classes.m +0 -46
- pyobjc-core-10.1/Modules/objc/test/dataint.m +0 -66
- pyobjc-core-10.1/Modules/objc/test/decimal.m +0 -64
- pyobjc-core-10.1/Modules/objc/test/enumeration.m +0 -55
- pyobjc-core-10.1/Modules/objc/test/filepointer.m +0 -68
- pyobjc-core-10.1/Modules/objc/test/gcov.m +0 -41
- pyobjc-core-10.1/Modules/objc/test/methodaccess.m +0 -48
- pyobjc-core-10.1/Modules/objc/test/methres1.m +0 -37
- pyobjc-core-10.1/Modules/objc/test/methres2.m +0 -38
- pyobjc-core-10.1/Modules/objc/test/misc.m +0 -47
- pyobjc-core-10.1/Modules/objc/test/missing1.m +0 -27
- pyobjc-core-10.1/Modules/objc/test/missing2.m +0 -30
- pyobjc-core-10.1/Modules/objc/test/missing3.m +0 -30
- pyobjc-core-10.1/Modules/objc/test/nsobjectcategory.m +0 -44
- pyobjc-core-10.1/Modules/objc/test/protected.m +0 -50
- pyobjc-core-10.1/Modules/objc/test/structpointer1.m +0 -78
- pyobjc-core-10.1/Modules/objc/test/structpointer2.m +0 -43
- pyobjc-core-10.1/Modules/objc/test/testoutputinitializer.m +0 -73
- pyobjc-core-10.1/Modules/objc/test/voidpointer.m +0 -62
- pyobjc-core-10.1/PyObjCTest/test_blocks.py +0 -554
- pyobjc-core-10.1/PyObjCTest/test_metadata_py.py +0 -1046
- pyobjc-core-10.1/PyObjCTest/test_nsinvocation.py +0 -33
- 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-11.0}/Examples/00ReadMe.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/GUITests/00ReadMe.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/AsyncPythonInterpreter.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/ConsoleReactor.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/classes.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/info.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/MainMenu.nib/keyedobjects.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/classes.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/info.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/English.lproj/RemotePyInterpreterDocument.nib/keyedobjects.nib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/README.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/RemotePyInterpreter.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/netrepr.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/remote_bootstrap.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/remote_console.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/remote_pipe.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/tcpinterpreter.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/NonFunctional/RemotePyInterpreter/test_client.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/HelloWorld.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/autoreadme.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/kvo-debugging.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/signal-demo.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/stdinreader.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/subclassing-objective-c.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Examples/Scripts/wmEnable.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/HISTORIC.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Install.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/PyObjCTools/MachSignals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/PyObjCTools/Signals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_callable_docstr.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_category.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_compat.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_descriptors.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_dyld.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_framework.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_informal_protocol.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_protocols.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_pythonify.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/_structtype.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/objc/simd.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/pyobjc_core.egg-info/dependency_links.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/pyobjc_core.egg-info/not-zip-safe +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Lib/pyobjc_core.egg-info/top_level.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/MANIFEST +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/MANIFEST.in +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Misc/announcement.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonArray.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonArray.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonData.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonData.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonDate.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonDate.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonDictionary.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonDictionary.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonNumber.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonNumber.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonSet.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonSet.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonUnicode.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_BuiltinPythonUnicode.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_NSBundleHack.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonArray.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonData.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonDate.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonDictionary.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonEnumerator.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonNumber.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/OC_PythonUnicode.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/ObjCPointer.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/bundle-variables.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/class-list.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/closure_pool.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/corefoundation.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/ctests.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/file_wrapper.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/fsref.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/function.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/helpers.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/instance-var.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/ivar-accessor.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/libffi_extra.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/memview.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/meth-func.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/method-accessor.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/method-imp.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/method-signature.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-NULL.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc-NULL.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/objc_super.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/opaque-pointer.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pointer-support.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc-assert.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/pyobjc_unicode.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/registry.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/released-buffer.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/released-buffer.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/struct-sockaddr.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/struct-sockaddr.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/super-call.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp24.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp27.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp3.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp30.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp33.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp36.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp39.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp42.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp45.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp48.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp51.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp54.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/test/category_gp57.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/varlist.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/weakref.h +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Modules/objc/weakref.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/__init__.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/archives/py2-oc2.3.keyed +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/archives/py2-oc2.3.plain +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/archives/py3-oc3.0.keyed +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/archives/py3-oc3.0.plain +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/data_bridgesupport/bundle_data/Test.bridgesupport +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/data_bridgesupport/with_data/Test.bridgesupport +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.bridgesupport +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/data_bridgesupport/with_data_dylib/Test.dylib +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/dump-nsarchive-securecoding.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/dump-nsarchive.m +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/helper_bridgesupport.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/loader.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_NULL.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_allocatebuffer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_api_import.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_archiving_interop.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_archiving_secure_interop.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_array_interface.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_array_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_assocations.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_bridged_classes.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_bridges.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_bundleFunctions.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_bundleVariables.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_callbacks.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_classandinst.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_classhooks.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_compat.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_context.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_copying.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_data_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_date_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_default_selector.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_deprecations.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_descriptors.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_dict_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_dict_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_enumerator.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_exceptions.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_final.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_framework.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_functions.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_generic_class.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_hidden_selector.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_identity.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_initialized.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_keyvalue_prop.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_keyvaluecoding.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_metadata_inheritance.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_method_prototypes.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_methodedits.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_methodlookup.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_methods2.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_methres.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_nsdata.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_nsdate_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_nsobject.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_nulldelimited.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_objcpointer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_object_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_outputinitializer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_pickle.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_propertiesforclass.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_protected.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_python_method.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_set_property.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_signals.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_simd.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_structpointer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_typecheck.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_usekvo.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_varlist.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_vector_proxy.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_version_support.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_voidpointer.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/PyObjCTest/test_weakref.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/README.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/MANIFEST.in +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/comparebench.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/gen_archive.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/generate-helpers-vector.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/results/pyobjcbench-7.3.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/results/pyobjcbench-8.0b1.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/results/pyobjcbench-8.0b2.txt +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/runtests-with-nuitka.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/Tools/runtests.py +0 -0
- {pyobjc-core-10.1 → pyobjc_core-11.0}/pyproject.toml +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()
|
|
@@ -803,7 +803,8 @@ class TestCase(_unittest.TestCase):
|
|
|
803
803
|
if st is None:
|
|
804
804
|
self.fail(
|
|
805
805
|
message
|
|
806
|
-
or "arg %d of %s
|
|
806
|
+
or "arg %d of %s: no callable specified for the block signature"
|
|
807
|
+
% (argno, method)
|
|
807
808
|
)
|
|
808
809
|
|
|
809
810
|
try:
|
|
@@ -848,7 +849,8 @@ class TestCase(_unittest.TestCase):
|
|
|
848
849
|
if st is None:
|
|
849
850
|
self.fail(
|
|
850
851
|
message
|
|
851
|
-
or "result of %s
|
|
852
|
+
or "result of %s: no callable specified for the block signature"
|
|
853
|
+
% (method)
|
|
852
854
|
)
|
|
853
855
|
|
|
854
856
|
try:
|
|
@@ -1105,6 +1107,23 @@ class TestCase(_unittest.TestCase):
|
|
|
1105
1107
|
self.assertEqual(clone, value)
|
|
1106
1108
|
self.assertIsInstance(clone, type(value))
|
|
1107
1109
|
|
|
1110
|
+
def assertFreeThreadedIfConfigured(self):
|
|
1111
|
+
"""
|
|
1112
|
+
Assert that the process is running in free-threaded mode when
|
|
1113
|
+
the interpreter was configured as such.
|
|
1114
|
+
"""
|
|
1115
|
+
|
|
1116
|
+
if not _get_config_var("Py_GIL_DISABLED"):
|
|
1117
|
+
# Not a free threaded build
|
|
1118
|
+
return
|
|
1119
|
+
|
|
1120
|
+
if "gil" in _sys._xoptions and _sys._xoptions["gil"]:
|
|
1121
|
+
# User runs with '-Xgil=1'
|
|
1122
|
+
return
|
|
1123
|
+
|
|
1124
|
+
# Check that the GIL is actually disabled
|
|
1125
|
+
self.assertFalse(_sys._is_gil_enabled(), "GIL is enabled")
|
|
1126
|
+
|
|
1108
1127
|
def _validateCallableMetadata(
|
|
1109
1128
|
self, value, class_name=None, skip_simple_charptr_check=False
|
|
1110
1129
|
):
|
|
@@ -1207,6 +1226,14 @@ class TestCase(_unittest.TestCase):
|
|
|
1207
1226
|
f"{value}: {idx}: pointer argument, but no by-ref annotation:{tp!r} {class_name or ''}"
|
|
1208
1227
|
)
|
|
1209
1228
|
|
|
1229
|
+
def _validateBundleIdentifier(self, module):
|
|
1230
|
+
if hasattr(module, "__bundle__"):
|
|
1231
|
+
self.assertHasAttr(module, "__framework_identifier__")
|
|
1232
|
+
self.assertEqual(
|
|
1233
|
+
module.__bundle__.bundleIdentifier(),
|
|
1234
|
+
module.__framework_identifier__,
|
|
1235
|
+
)
|
|
1236
|
+
|
|
1210
1237
|
def assertCallableMetadataIsSane(
|
|
1211
1238
|
self, module, *, exclude_cocoa=True, exclude_attrs=()
|
|
1212
1239
|
):
|
|
@@ -1220,22 +1247,20 @@ class TestCase(_unittest.TestCase):
|
|
|
1220
1247
|
# XXX: exclude_cocoa may exclude too much depending on
|
|
1221
1248
|
# import order.
|
|
1222
1249
|
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
self.assertHasAttr(module, "__framework_identifier__")
|
|
1226
|
-
self.assertEqual(
|
|
1227
|
-
module.__bundle__.bundleIdentifier(),
|
|
1228
|
-
module.__framework_identifier__,
|
|
1229
|
-
)
|
|
1250
|
+
with self.subTest("validate framework identifier"):
|
|
1251
|
+
self._validateBundleIdentifier(module)
|
|
1230
1252
|
|
|
1231
1253
|
if exclude_cocoa:
|
|
1232
|
-
|
|
1254
|
+
try:
|
|
1255
|
+
import Cocoa
|
|
1233
1256
|
|
|
1234
|
-
|
|
1257
|
+
exclude_names = set(dir(Cocoa))
|
|
1235
1258
|
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1259
|
+
# Don't exclude NSObject' because a number
|
|
1260
|
+
# of frameworks define categories on this class.
|
|
1261
|
+
exclude_names -= {"NSObject"}
|
|
1262
|
+
except ImportError:
|
|
1263
|
+
exclude_names = set()
|
|
1239
1264
|
else:
|
|
1240
1265
|
exclude_names = set()
|
|
1241
1266
|
|
|
@@ -1388,6 +1413,10 @@ class TestCase(_unittest.TestCase):
|
|
|
1388
1413
|
else:
|
|
1389
1414
|
continue
|
|
1390
1415
|
|
|
1416
|
+
# Quick check that the GIL is actually disabled. Testing this here isn't
|
|
1417
|
+
# ideal, but avoids changing all framework bindings.
|
|
1418
|
+
self.assertFreeThreadedIfConfigured()
|
|
1419
|
+
|
|
1391
1420
|
def __init__(self, methodName="runTest"):
|
|
1392
1421
|
super().__init__(methodName)
|
|
1393
1422
|
|
|
@@ -1405,8 +1434,8 @@ class TestCase(_unittest.TestCase):
|
|
|
1405
1434
|
"""
|
|
1406
1435
|
try:
|
|
1407
1436
|
cls = objc.lookUpClass("NSApplication")
|
|
1408
|
-
except objc.error:
|
|
1409
|
-
pass
|
|
1437
|
+
except objc.error: # pragma: no cover
|
|
1438
|
+
pass # pragma: no cover
|
|
1410
1439
|
else:
|
|
1411
1440
|
cls.sharedApplication()
|
|
1412
1441
|
|
|
@@ -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
|
|
@@ -19,9 +21,6 @@ def registerListType(type_object):
|
|
|
19
21
|
Register 'type' as a list-like type that will be proxied
|
|
20
22
|
as an NSMutableArray subclass.
|
|
21
23
|
"""
|
|
22
|
-
if _objc.options._sequence_types is None:
|
|
23
|
-
_objc.options._sequence_types = ()
|
|
24
|
-
|
|
25
24
|
_objc.options._sequence_types += (type_object,)
|
|
26
25
|
|
|
27
26
|
|
|
@@ -30,9 +29,6 @@ def registerMappingType(type_object):
|
|
|
30
29
|
Register 'type' as a dictionary-like type that will be proxied
|
|
31
30
|
as an NSMutableDictionary subclass.
|
|
32
31
|
"""
|
|
33
|
-
if _objc.options._mapping_types is None:
|
|
34
|
-
_objc.options._mapping_types = ()
|
|
35
|
-
|
|
36
32
|
_objc.options._mapping_types += (type_object,)
|
|
37
33
|
|
|
38
34
|
|
|
@@ -41,9 +37,6 @@ def registerSetType(type_object):
|
|
|
41
37
|
Register 'type' as a set-like type that will be proxied
|
|
42
38
|
as an NSMutableSet subclass.
|
|
43
39
|
"""
|
|
44
|
-
if _objc.options._set_types is None:
|
|
45
|
-
_objc.options._set_types = ()
|
|
46
|
-
|
|
47
40
|
_objc.options._set_types += (type_object,)
|
|
48
41
|
|
|
49
42
|
|
|
@@ -52,12 +45,17 @@ def registerDateType(type_object):
|
|
|
52
45
|
Register 'type' as a date-like type that will be proxied
|
|
53
46
|
as an NSDate subclass.
|
|
54
47
|
"""
|
|
55
|
-
if _objc.options._date_types is None:
|
|
56
|
-
_objc.options._date_types = ()
|
|
57
|
-
|
|
58
48
|
_objc.options._date_types += (type_object,)
|
|
59
49
|
|
|
60
50
|
|
|
51
|
+
def registerPathType(type_object):
|
|
52
|
+
"""
|
|
53
|
+
Register 'type' as a date-like type that will be proxied
|
|
54
|
+
as an NSDate subclass.
|
|
55
|
+
"""
|
|
56
|
+
_objc.options._path_types += (type_object,)
|
|
57
|
+
|
|
58
|
+
|
|
61
59
|
registerListType(collections.abc.Sequence)
|
|
62
60
|
registerListType(range)
|
|
63
61
|
registerMappingType(collections.abc.Mapping)
|
|
@@ -67,3 +65,4 @@ registerSetType(frozenset)
|
|
|
67
65
|
registerSetType(collections.abc.Set)
|
|
68
66
|
registerDateType(datetime.date)
|
|
69
67
|
registerDateType(datetime.datetime)
|
|
68
|
+
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)
|
|
@@ -668,7 +669,7 @@ def _parseBridgeSupport(data, globals, frameworkName, *args, **kwds): # noqa: A
|
|
|
668
669
|
)
|
|
669
670
|
|
|
670
671
|
|
|
671
|
-
if sys.version_info[:2] >= (3, 9):
|
|
672
|
+
if sys.version_info[:2] >= (3, 9): # pragma: no branch
|
|
672
673
|
|
|
673
674
|
def resource_exists(package, resource):
|
|
674
675
|
try:
|
|
@@ -677,7 +678,10 @@ if sys.version_info[:2] >= (3, 9):
|
|
|
677
678
|
except ImportError:
|
|
678
679
|
return False
|
|
679
680
|
|
|
680
|
-
|
|
681
|
+
def resource_string(package, resource):
|
|
682
|
+
return resources.files(package).joinpath(resource).read_text()
|
|
683
|
+
|
|
684
|
+
else: # pragma: no cover
|
|
681
685
|
|
|
682
686
|
def resource_exists(package, resource):
|
|
683
687
|
try:
|
|
@@ -686,14 +690,6 @@ else:
|
|
|
686
690
|
except ImportError:
|
|
687
691
|
return False
|
|
688
692
|
|
|
689
|
-
|
|
690
|
-
if sys.version_info[:2] >= (3, 9):
|
|
691
|
-
|
|
692
|
-
def resource_string(package, resource):
|
|
693
|
-
return resources.files(package).joinpath(resource).read_text()
|
|
694
|
-
|
|
695
|
-
else:
|
|
696
|
-
|
|
697
693
|
def resource_string(package, resource):
|
|
698
694
|
return resources.read_text(package, resource)
|
|
699
695
|
|
|
@@ -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 methods for Cocoa mapping types.
|
|
3
3
|
"""
|
|
4
|
+
|
|
4
5
|
__all__ = ("addConvenienceForBasicMapping",)
|
|
5
6
|
|
|
6
7
|
import collections.abc
|
|
@@ -117,7 +118,7 @@ def addConvenienceForBasicMapping(classname, readonly=True):
|
|
|
117
118
|
Add the convenience methods for a Cocoa mapping type
|
|
118
119
|
|
|
119
120
|
Used to add the basic collections.abc.Mapping or collections.abc.MutableMapping
|
|
120
|
-
APIs to a Cocoa class that has an API
|
|
121
|
+
APIs to a Cocoa class that has an API similar to NSDictionary.
|
|
121
122
|
"""
|
|
122
123
|
addConvenienceForClass(
|
|
123
124
|
classname, _CONVENIENCES_MAPPING_RO if readonly else _CONVENIENCES_MAPPING_RW
|
|
@@ -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)),
|
|
@@ -26,37 +26,37 @@ def nsobject_hash(self, _max=sys.maxsize, _const=((sys.maxsize + 1) * 2)):
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def nsobject__eq__(self, other):
|
|
29
|
-
if self.
|
|
29
|
+
if self.__pyobjc_magic_coookie__():
|
|
30
30
|
return self is other
|
|
31
31
|
return bool(self.isEqualTo_(other))
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def nsobject__ne__(self, other):
|
|
35
|
-
if self.
|
|
35
|
+
if self.__pyobjc_magic_coookie__():
|
|
36
36
|
return self is not other
|
|
37
37
|
return bool(self.isNotEqualTo_(other))
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
def nsobject__gt__(self, other):
|
|
41
|
-
if self.
|
|
41
|
+
if self.__pyobjc_magic_coookie__():
|
|
42
42
|
return NotImplemented
|
|
43
43
|
return bool(self.isGreaterThan_(other))
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
def nsobject__ge__(self, other):
|
|
47
|
-
if self.
|
|
47
|
+
if self.__pyobjc_magic_coookie__():
|
|
48
48
|
return NotImplemented
|
|
49
49
|
return bool(self.isGreaterThanOrEqualTo_(other))
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
def nsobject__lt__(self, other):
|
|
53
|
-
if self.
|
|
53
|
+
if self.__pyobjc_magic_coookie__():
|
|
54
54
|
return NotImplemented
|
|
55
55
|
return bool(self.isLessThan_(other))
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def nsobject__le__(self, other):
|
|
59
|
-
if self.
|
|
59
|
+
if self.__pyobjc_magic_coookie__():
|
|
60
60
|
return NotImplemented
|
|
61
61
|
return bool(self.isLessThanOrEqualTo_(other))
|
|
62
62
|
|
|
@@ -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
|
)
|