Log Message: py-pyobjc*: updated to 8.5.1 Version 8.5 This release continues the work on test coverage in pyobjc-core, resulting in a \ number of minor bug fixes. Added two options to the build_ext command in the setup.py of pyobjc-core: --no-lto: Disable link time optimization --no-warnings-as-errors: Disable -Werror For struct bindings in frameworks the “in” operator no longer swallows \ exceptions raised by the __eq__ method. Improved handing of invalid type encodings for struct types. Fix crash while handling a struct wrapper with an invalid type encoding. Fix handling of empty structs (such as struct foo { }; in objc.repythonify(). The type for NSObject.pyobjc_instanceMethod and NSObject.pyobjc_classMethods now \ supports the GC protocol to avoid garbage collection issues when the value for \ these properties is stored as an attribute (which introduces a reference cycle) PyObjC should work with Python 3.11 alpha release, starting at alpha 6. Earlier \ alpha’s are not supported due to reverting a workaround for a bug that was \ fixed in alpha 6. NSObject.alloc = 42 now fails. It was already impossible to replace a selector \ by something else through instances (NSObject.new().description = 42 raises). Added objc.ObjCPointer.typestr with the same value as objc.ObjCPonter.type. The \ latter is now deprecated and will be removed in PyObjC 9. Better error messages when a class implementing a protocol inherits a method of \ the wrong kind (“class” vs. “instance”). The value of __slots__ in a class definition is now kept in the created class \ (previous versions always set the attribute to an empty tuple). This is primarily useful when __slots__ is a dict that is used to document \ attributes. Raise the correct exception when the name of a method is not an ASCII string. objc.loadSpecialVar() now better enforces that the module_globals argument is a \ Python dictionary. Fixed a crash in objc.loadSpecialVar() due to a missing pointer dereference. pip install pyobjc-framework-... for a framework that is not present on the \ current machine will now give a better error message when the “wheel” \ package is not installed. Setting an integer option in objc.options to a value of an incompatible type \ (such as a string) will now raise an exception as intended, instead of breaking \ the interpreter. Trying to delete an attribute from objc.options now raises \ :type:`AttributeError` instead of :type:`TypeError`. objc.selector now copies the default signature from its argument when that \ argument is another objc.selector. Until now this would raise an exception. Added some missing error checking in calls to PyObject_New() and PyObject_GC_New(). It is now possible to create an objc.selector from a callable that is not a \ function or bound method. This may require specifying the method signature in \ the call to objc.selector. For pyobjc-core the build_ext command in setup.py now includes the command-line \ option from the standaard command, which means python setup.py build_ext -j 4 \ can now be used for parallel builds. On my M1 laptop using python setup.py build_ext -j 8 halves the time needed to \ build the extension. The test command setup.py now supports the -v option to print test cases while \ they are run, in previoius versions this required using the --verbosity option. Improve error handling when dealing with “isHidden” selectors. Added pyobjc_hiddenSelectors(classmethods) to objc.objc_class This method returns a copy of the dictionary with “hidden” selectors, that \ is Objective-C selectors that are hidden from view. The method is primarily a debugging aid for development of PyObjC itself. ApplicationServices.AXIsProcessTrustedWithOptions and \ Quartrz.CGPDFArrayGetObject had incorrect metadata. The testsuites for the various framework bindings now have a test that does some \ basic checks on function and selector metadata. This test found the problem with \ CGPDFArrayGetObject. Added objc._C_ATOMIC and objc._C_COMPLEX, both extracted from the clang sources \ after finding some type encodings that PyObjC could not decode. objc._C_ATOMIC is ignored by PyObjC (for now), and objc._C_COMPLEX is not yet \ supported. Fix internal error for _C_OUT argument markup on arguments that are \ CoreFoundation types. This can only happen with invalid metadata definitions in framework bindings, \ and earlier versions this resulted in an internal assertion error. With this \ change the “output” argument is always None in the result. Fix metadata for a number of functions with a C string argument The metadata for the following functions was changed to have the correct type \ encoding for string argument, to fix issues with using non-ASCII (byte) strings. ApplicationServices.PMWorkflowSubmitPDFWithOptions CoreServices.LocaleRefGetPartString Foundation.NSGetSizeAndAlignment Network.nw_advertise_descriptor_create_bonjour_service Network.nw_browse_descriptor_create_bonjour_service Network.nw_browse_descriptor_get_bonjour_service_domain Network.nw_browse_descriptor_get_bonjour_service_type Network.nw_connection_copy_description Network.nw_content_context_create Network.nw_content_context_get_identifier Network.nw_endpoint_copy_address_string Network.nw_endpoint_copy_port_string Network.nw_endpoint_create_bonjour_service Network.nw_endpoint_create_host Network.nw_endpoint_create_url Network.nw_endpoint_get_bonjour_service_domain Network.nw_endpoint_get_bonjour_service_name Network.nw_endpoint_get_bonjour_service_type Network.nw_endpoint_get_hostname Network.nw_framer_create_definition Network.nw_framer_message_access_value Network.nw_framer_message_copy_object_value Network.nw_framer_message_set_object_value Network.nw_framer_message_set_value Network.nw_framer_options_set_object_value Network.nw_listener_create_with_port Network.nw_privacy_context_create Network.nw_quic_get_application_error_reason Network.nw_quic_set_application_error Network.nw_txt_record_access_key Network.nw_ws_options_add_additional_header Network.nw_ws_options_add_subprotocol Quartz.CGContextSelectFont Quartz.CGContextShowText Quartz.CGContextShowTextAtPoint Quartz.CGDataProviderCreateWithFilename Quartz.CGPDFArrayGetName Quartz.CGPDFContentStreamGetResource Quartz.CGPDFDictionaryGetArray Quartz.CGPDFDictionaryGetBoolean Quartz.CGPDFDictionaryGetName Quartz.CGPDFDocumentUnlockWithPassword Quartz.CGPDFScannerPopName Quartz.CGPDFTagTypeGetName While fixing this issue I found problems with the metadata for these functions: CoreMIDI.MIDIExternalDeviceCreate CoreMedia.CMBlockBufferAccessDataBytes CoreMedia.CMBlockBufferGetDataPointer CoreMedia.CMBufferQueueInstallTriggerHandler CoreMedia.CMBufferQueueInstallTriggerHandlerWithIntegerThreshold CoreMedia.CMTextFormatDescriptionGetJustification CoreServices.TECGetTextEncodingFromInternetNameOrMIB DVDPlayback.DVDGetScanRate MediaAccessibility.MACaptionAppearanceAddSelectedLanguage There’s also a new test that checks for this problem in all exposed functions. Fix incorrect reset of the “inline_list” attribute of the lazy importer, \ this could result in an incorrect TypeError when trying to access an \ non-existing attribute after looking at __all__. Fix uniqueness of symbols exposed in the OpenDirectory bindings. Unhide manual bindings for Security.SecKeychainFindGenericPassword and \ Security.SecKeychainFindInternetPassword.