head 1.11; access; symbols pkgsrc-2026Q1:1.11.0.2 pkgsrc-2026Q1-base:1.11 pkgsrc-2025Q4:1.10.0.4 pkgsrc-2025Q4-base:1.10 pkgsrc-2025Q3:1.10.0.2 pkgsrc-2025Q3-base:1.10 pkgsrc-2025Q2:1.9.0.4 pkgsrc-2025Q2-base:1.9 pkgsrc-2025Q1:1.9.0.2 pkgsrc-2025Q1-base:1.9 pkgsrc-2024Q4:1.8.0.6 pkgsrc-2024Q4-base:1.8 pkgsrc-2024Q3:1.8.0.4 pkgsrc-2024Q3-base:1.8 pkgsrc-2024Q2:1.8.0.2 pkgsrc-2024Q2-base:1.8 pkgsrc-2024Q1:1.5.0.2 pkgsrc-2024Q1-base:1.5 pkgsrc-2023Q4:1.4.0.2 pkgsrc-2023Q4-base:1.4 pkgsrc-2023Q3:1.3.0.4 pkgsrc-2023Q3-base:1.3 pkgsrc-2023Q2:1.3.0.2 pkgsrc-2023Q2-base:1.3 pkgsrc-2023Q1:1.1.0.4 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.2 pkgsrc-2022Q4-base:1.1; locks; strict; comment @# @; 1.11 date 2025.12.30.14.18.21; author adam; state Exp; branches; next 1.10; commitid Ut95dVLLzzZwlroG; 1.10 date 2025.07.11.09.04.01; author adam; state Exp; branches; next 1.9; commitid XGVfN5jF1Yzu8j2G; 1.9 date 2025.02.05.08.05.34; author adam; state Exp; branches; next 1.8; commitid ffcpBhN62TRcPfIF; 1.8 date 2024.06.11.16.10.20; author adam; state Exp; branches; next 1.7; commitid Y3nHA7qfqi8MbAdF; 1.7 date 2024.06.06.14.48.37; author adam; state Exp; branches; next 1.6; commitid opAzt9btqWrPTVcF; 1.6 date 2024.04.02.17.25.52; author adam; state Exp; branches; next 1.5; commitid reZrsS2m7tfjRA4F; 1.5 date 2024.01.23.22.14.53; author adam; state Exp; branches; next 1.4; commitid P3GdCBUtPFfXHCVE; 1.4 date 2023.11.19.17.02.59; author adam; state Exp; branches; next 1.3; commitid qxrpVORZMVPo4fNE; 1.3 date 2023.06.18.05.03.01; author adam; state Exp; branches; next 1.2; commitid mHNGsD5lWxk42otE; 1.2 date 2023.04.07.05.25.13; author adam; state Exp; branches; next 1.1; commitid CZhywVWUK2vnt8kE; 1.1 date 2022.09.27.18.12.54; author adam; state Exp; branches; next ; commitid NlsfAUJrqLwjTwVD; desc @@ 1.11 log @py-pyobjc: updated to 12.1 12.1 12.0 incorrectly has support for Python 3.9 in packaging metadata. Update framework bindings for the macOS 26.1 SDK Instances of :type:bytearray can be used as the argument for a function or selector that expects a null-terminated C char array. Automatically disable KVO usage for subclasses of NSProxy defined in Python. Fix SystemError when calling objc.propertiesForClass(objc.objc_object). objc.classAddMethods no longer supports callable's whose __name__ attribute is a byte string. Clearer error messages when an entry in the methods added with objc.classAddMethod is invalid. Using objc.classAddMethods to add a method for which a custom IMP helper has been registered now works correctly (previously the default libffi IMP implementation was used in these cases), and likewise for using :funcsetattr to assign methods. It is no longer possible to use :func:objc.classAddMethods to override an existing method with an incompatible Objective-C signature, and likewise for using :func:setattr to do the same. It was already not possible to override a method from a super class with an incompatible Objective-C signature. It is now possible to use an :class:objc.objc_method instance in the method list argument for :func:objc.classAddMethod. -[OC_PythonObject copy] now actually copies the value if the value is not known to be immutable (such as subclasses of the builtin number types). @ text @$NetBSD: distinfo,v 1.10 2025/07/11 09:04:01 adam Exp $ BLAKE2s (pyobjc_framework_intentsui-12.1.tar.gz) = 12ed32932cc9c530ea23cdceb8f5368fd9d0f94fd9f0a937868c45f2efc7f58d SHA512 (pyobjc_framework_intentsui-12.1.tar.gz) = fc25a7dff87df0890a2a8ccb37c6dc35d05192bca0b22f0826de5b2f42e9ff830406e1df9cb43b6f92a2003c58ac05c8634a167cec7aac4e3e2b6e798b9e66e8 Size (pyobjc_framework_intentsui-12.1.tar.gz) = 19784 bytes @ 1.10 log @py-pyobjc*: updated to 11.1 11.1 The major change in this release is aligning behaviour of the core bridge with clang's documentation for automatic reference counting _ for initializer methods. In particular, PyObjC now correctly models that methods in the "init" family steal a reference to self and return a new reference. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.9 2025/02/05 08:05:34 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc_framework_intentsui-11.1.tar.gz) = 83e748bd4448a800d3e5b5663e9332d3141f6808cd64275538f9c29efdd2b472 SHA512 (pyobjc_framework_intentsui-11.1.tar.gz) = d752e1739d8cd7b4b67ff84f52588588650927e9948934a38e1bf9439bec73047c06d5d61653c67423d39d456132ecd48b1330baf34734db7a31616afa8a9b31 Size (pyobjc_framework_intentsui-11.1.tar.gz) = 21305 bytes @ 1.9 log @py-pyobjc: updated to 11.0 Version 11.0 The major change in this release is experimental support for free-threading (PEP 703) which was introduced as an experimental feature in Python 3.13. This required fairly significant changes in the core of PyObjC to change C Python API use and PyObjC internal APIs (mostly related to the use of borrowed references). Dropped support for Python 3.8. PyObjC 11 supports Python 3.9 and later. Updated metadata for the macOS 15.2 SDK, including bindings for the following frameworks: MediaExtension DeviceDiscoveryExtension Added minimal bindings to the Carbon framework. At this time only some functions and constants related to hotkeys are available. Please file an issue if you have a usecase for other APIs. Struct wrappers now support a number of functions from copy: copy.replace() (new in Python 3.13), copy.copy() and copy.deepcopy(). The __pyobjc_copy__ method has been removed from struct wrappers. This was never a public API. Use copy.deepcopy() instead. objc.FSRef.from_path`() now supports os.PathLike values as its arguments (as well as strings). Experimental support for the free-threading mode introduced in Python 3.13. The core bridge and framework bindings claim compatibility with free-threading as introduced as an experimental feature in Python 3.13. The support in PyObjC is also an experimental feature: I’ve reviewed code for free-threading issues and adjusted it where needed, but the code has seen only light testing w.r.t. concurrency. Some functionality that’s explicitly not thread-safe: Defining an Objective-C class with the same name in multiple threads concurrently. Splitting calls to alloc and init and calling init multiple times concurrently. E.g.: import threading from Cocoa import NSObject v = NSObject.alloc() t_list = [] for _ in range(2): t = threading.Thread(target=lambda: v.init()) t_list.append(t) t.start() for t in t_list: t.join() The internal mapping from Python values to their active Objective-C proxy value now uses weak references. This should not affect user code, other than being a bit more efficient. The internal interfaces for updating this mapping, and the reverse mapping from Objective-C values to their active Python proxy was changed to remove a small race condition. This was required for free threading support, but could in theory also bit hit when using the GIL. The data structure for mapping Python values to their Objective-C proxy has been rewritten to support free threading. This also simplifies the code, and should be small performance improvement for the regular build of Python. The TypeError raised when passing a non-sequence value to some APIs implemented in C now has a __cause__ with more detailed information. This is a side effect of dropping the use of PySequence_Fast in the implementation of PyObjC. Removed objc.options._nscoding_version, a private option that is no longer used. Changing the __block_signature__ of a block value when the current value of the signature is not None is no longer possible. Please file an issue if you have a use case for changing the signature of a block. Fix compatibility with Python 3.14 (alpha 3) Removed private function objc._sizeOfType because its unused. Fix memory leak when using Python callables as blocks. The memory leak also resulted in leaking a reference to the callable (and hence anything kept alive by that reference). The generic __new__ implementation now works as intended when registering methods that other than init... methods. Dropped ‘%n’ support in handling printf-format strings for variadic functions and methods. Two reasons for that: 1) supporting this properly should return the value writing to the %n location (requiring significant changes) and 2) Apple’s libraries require using static strings for ‘%n’ to work (at least on some platforms and versions of the OS) Fix manual bindings for AVAudioPCMBuffer methods for getting channel data (floatChannelData, int16ChannelData and int32ChannelData) fix broken bindings for CGWindowListCreateImageFromArray. The private __is_magic attribute on objc.objc_object has been renamed to __pyobjc_magic_coookie__. Various fixes to edge case behaviour that were found while improving test coverage. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.8 2024/06/11 16:10:20 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc_framework_intentsui-11.0.tar.gz) = 2cbc2f0e691e8a194849eb259c6ce6f2da1aa495e83db2f038d96692cf5db8ee SHA512 (pyobjc_framework_intentsui-11.0.tar.gz) = 64425a37b3c31b71c3f093df560007e3d02cff8f880d3377c059634e8dc6f4c3ddd69f74d23a5f2981b02e61eeea5daf6d49f48fc90efb432d1916bd6bab4023 Size (pyobjc_framework_intentsui-11.0.tar.gz) = 20774 bytes @ 1.8 log @py-pyobjc*: updated to 10.3.1 Version 10.3.1 Ensure __init__ can be used when user implements __new__. Version 10.3 dropped support for calling __init__, but that breaks a number of popular projects. Reintroduce the ability to use __init__ when a class or one of its super classes contains a user implemenentation of __new__. Code relying on the __new__ provided by PyObjC still cannot use __init__ for the reason explained in the 10.3 release notes. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.7 2024/06/06 14:48:37 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc_framework_intentsui-10.3.1.tar.gz) = 023ad1a36d4af5c27c79f18cc9c3bbeae12bce9e6160ed6a0007c4ff630e9593 SHA512 (pyobjc_framework_intentsui-10.3.1.tar.gz) = ce598a3d4e918e73cff87acf6672eec3e1098f397f92a0e5089506301ec73a0971cec8d7f7245fd779ff27d381a005b4240c1354bbd9883ef1633c0794309517 Size (pyobjc_framework_intentsui-10.3.1.tar.gz) = 18822 bytes @ 1.7 log @py-pyobjc*: updated to 10.3 Version 10.3 The release contains binary wheels for Python 3.13 PyObjC does at this time not support the experimental free threading support in Python 3.13. Removed the workaround for a bug in Xcode 15.0 The workaround is no longer necessary, and caused problems when building with the Command Line Tools development tools from Apple. Updated SDK bindings for macOS 14.5 A minor change in the (currently private) tooling I use for collecting the raw metadata resulted in minor fixes to the framework bindings, in particular for metadata for a number of block and function typed arguments and return values. It is now possible to create instances of Objective-C classes by calling the class, e.g. NSObject() instead of NSObject.alloc().init(). The implementation of __new__ forwards calls to the underlying SomeClass.alloc().init...() pattern. In particular, all public init methods are translated into sets of keyword arguments: Remove init or initWith from the start of the selector name Lowercase the first character of what’s left over The strings before colons are acceptable keywords, in that order For example, given a selector initWithX:y: the __new__ method will accept x, y as keyword arguments, in that order. Framework bindings have been updated with additional metadata to support this pattern, and the sets of keyword arguments are automatically calculated for subclasses in written in Python. The limitation on the order of keyword arguments may be lifted in a future version, it is currently present to keep the code closer to the Objective-C spelling which should make it easier to look up documentation on Apple’s website. For some Objective-C classes some of the init and new methods are not available even if they are available in super classes. Those methods are marked with NS_UNAVAILABLE in Apple’s headers. As of this version these methods are also not available in Python code, trying to call them will result in an exception. To make methods unavailable in Python classes set these methods to None, e.g.: ```python class MyObject(NSObject): init = None # NS_UNAVAILABLE ``` Added objc.registerUnavailableMethod(), objc.registerNewKeywordsFromSelector() and objc.registerNewKeywords() to support the generic __new__ in framework bindings. A limitation for registerUnavailableMethod is that it is currently not supported to reintroduce the method in a subclass, primarily because that functionality is not needed for framework bindings. Instantiating an Objective-C class by calling the class (e.g. invoking __new__) will not call __init__ even if one is defined. The implementation of a subclass of NSObject should always follow the Objective-C convention for initializing using one or more methods with a name starting with init. This can affect code that manually defines a __new__ method for an Objective-C class, in previous versions that was the only way to create instances in a Pythontic way. NSArray, NSMutableArray, NSSet and NSMutableSet accepted a sequence keyword argument in previous versions. This is no longer supported. It is still supported to create instances using a positional argument for a sequence, e.g. NSArray([1, 2, 3]). NSData, NSMutableData, NSDecimal, NSString and NSMutableString accepted a value keyword argument in previous versions. This is no longer supported. It is still supported to create instances using a positional argument, e.g. NSData(b"hello"). NSDictionary and NSMutableDictionary do not support the generic new interface because this conflicts with having a similar interface to dict for creating instances. That is, NSDictionary(a=4, b=5) is the same as NSDictionary({"a":4, "b":5}), and not like NSDictionary.alloc().initWithA_b_(4, 5). @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.6 2024/04/02 17:25:52 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc_framework_intentsui-10.3.tar.gz) = 6786c4d080cdafdc268f0c958d3cb4b8b96f5c55e49b9668e9ea8e7ff555cf31 SHA512 (pyobjc_framework_intentsui-10.3.tar.gz) = d4298c3ac5c0a9d0bdbbbcfff5dab37e23fe8254aa5861e0fe8da91601d2ffcee32496c4abee3aa9768802e4c3d0f7ea84838418258f2c5428bdba77b773d9bc Size (pyobjc_framework_intentsui-10.3.tar.gz) = 18791 bytes @ 1.6 log @py-pyobjc*: updated to 10.2 Version 10.2 Fix a number of warnings found by adding -Wpendantic to the CFLAGS for pyobjc-core Fix undefined behaviour warnings: Suppress the undefined behaviour warning about out of range values in double to (unsigned) long long in the OC_PythonNumber implementation as these are unavoidable when matching NSNumber behaviour. Switch to using memcpy instead of direct assignment in converting plain C values to/from Python because “packed” structs might result in accessing values through unaligned pointers. Updated bindings for the macOS 14.4 SDK (Xcode 15.3) Added bindings for the “BrowserEngineKit” framework on macOS 14.4 or later. Add obj.registerPathType() to register a Python type as a path like type with PyObjC. By default only pathlib.Path is registered as such. A minor backward compatibility issue is that instances of the registered types will be written to NSArchive and NSKeyArchive archives as instances of NSURL and won’t roundtrip back to the original Python type. This might change in future versions of PyObjC, at least for pathlib.Path. Instances of pathlib.Path (and other types registered with objc.registerPathType) are bridged into Objective-C as instances of NSURL. This means that these types can be used as values passed to APIs expecting a filesystem URL, e.g.: ```python path = pathlib.Path(“/Applications/Numbers.app”) bundle = NSBundle.bundleWithURL_(path) ``` Fix some warnings in pyobjc-core when testing with Python 3.13a4. Add support for NSBezierPathElementQuadraticCurveTo in NSBezierPath.elementAtIndex_associatedPoints_. Fix compilation error in pyobjc-framework-Cocoa with a recent deployment target. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.5 2024/01/23 22:14:53 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc-framework-IntentsUI-10.2.tar.gz) = dce1a4c0619c733790386d4edf1edc59900a9fef1a70a1ba0b9c5441d4f06827 SHA512 (pyobjc-framework-IntentsUI-10.2.tar.gz) = baffa5aa36a1f80e1709a9e04a462b3314aa3402250edc0bc6001459799956a87a486049704844b21b43c0a0f8cb67b719f460e36980ab379b16a60c332e06b4 Size (pyobjc-framework-IntentsUI-10.2.tar.gz) = 20391 bytes @ 1.5 log @py-pyobjc*: updated to 10.1 Version 10.1 Upgrade framework bindings for the macOS 14.2 SDK Make sure the install.py and develop.py scripts in the repository work when run out of tree. os.fspath(someURL) will not work with Cocoa URLs (NSURL, CFURLRef) that refer to local filesystem paths. TypeError will be raised for other URLs. This enables using regular Python filesystem APIs with URLs that refer to local filesystem paths. Fix compilation issue when building on macOS 13 or earlier Fix build error on ancient macOS versions where clang doesn’t support -flto=thin. Add a workaround for a crash in pyobjc-core when running the testsuite on macOS 10.14. Fix some issues found while running the testsuite on macOS 10.9 to macOS 13, instead of only testing on the latest macOS version. Most issues found where problems in the testsuite itself, but not all. Some of the changes skip tests on older macOS versions (10.12, 10.13 and 10.14) due to running into what appears to be crashing platform bugs. Fix dependencies between framework binding packages Fix build error with the current Python 3.13 alpha release (3.13a2). @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.4 2023/11/19 17:02:59 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc-framework-IntentsUI-10.1.tar.gz) = cdc0365e685673d0232e1c0bd808601685d7845ab9f725b0b5fe4dc195d25a57 SHA512 (pyobjc-framework-IntentsUI-10.1.tar.gz) = 6e04ea03be95ba9a6cf93785acc84f5a0044b33d02b39eb4e73614a04876f6fc7ec52197761218a6f0f6478fc60542bf24e3a0ebad0c09f6ef119f992c9eef64 Size (pyobjc-framework-IntentsUI-10.1.tar.gz) = 20377 bytes @ 1.4 log @py-pyobjc*: updated to 10.0 Version 10.0 Update bindings for macOS 14 Symbols newly introduced in macOS 14 were added to the existing bindings, and the following new bindings were introduced: Cinematic MediaExtension SensitiveContentAnalysis Symbols The “IMServicePlugIn” bindings are no longer available The entire framework was deprecated in macOS 10.13 and removed in macOS 14. The bindings can not be build using the latest SDK, and had (at best) limited use. PyObjC 10 requires Python 3.8 and no longer supports Python 3.7 Removed all MAC_OS_X_VERSION* constants from objc. These constants are needed in practice (switch to objc.available() to check for platform availability), and caused unnecessary code churn. The value for objc.options.deprecation_warnings is now a string instead of an integer. Fix unintended incompatibility with pytest in PyObjCTools.TestSupport The lazy loading machinery by default no longer uses objc.ObjCLazyModule, but uses module level __dir__ and __getattr__ instead. The class objc.ObjCLazyModule is still available, but is deprecated As a side effect of this objc is no longer an attribute of framework binding packages (e.g Foundation.objc is no longer a valid attribute). Another side effect of this is that all attributes added by the import system are now correctly present in the packages for framework bindings. And a final side effect is that private symbols (prefixed with underscore) are no longer imported from dependencies of framework bindings (more closely matching the from dependency import * behaviour that the lazy importer emulates. Add attribute __framework_identifier__ to all framework bindings with the identifier of the corresponding system framework. Introduce objc.createFrameworkDirAndGetattr() to create module level __dir__ and __getattr__ for use by framework bindings. Tests now validate the bundle identifier value used in framework bindings. This resulted in a number of changes to framework bindings with incorrect bundle identifier values. This shouldn’t affect user code because the bundle loader falls back on the framework path when the identifier cannot be found. Avoid test failures in pyobjc-core when pyobjc-framework-Quartz is not installed. A number of classes can no longer be subclasses in Python because they are marked as non-subclassable in the macOS 14 SDK (either directly or as “subclassing is deprecated”: CKAllowedSharingOptions, CKAsset, CKContainer, CKDatabase, CKDatabaseNotification, CKDatabaseSubscription, CKFetchRecordZoneChangesConfiguration, CKNotification, CKNotificationID, CKNotificationInfo, CKOperationConfiguration, CKOperationGroup, CKQuery, CKQueryCursor, CKQueryNotification, CKQuerySubscription, CKRecord, CKRecordID, CKRecordZone, CKRecordZoneID, CKRecordZoneNotification, CKRecordZoneSubscription, CKReference, CKServerChangeToken, CKShare, CKShareMetadata, CKShareParticipant, CKSubscription, CKSyncEngine, CKSyncEngineAccountChangeEvent, CKSyncEngineConfiguration, CKSyncEngineDidFetchChangesEvent, CKSyncEngineDidFetchRecordZoneChangesEvent, CKSyncEngineDidSendChangesEvent, CKSyncEngineEvent, CKSyncEngineFailedRecordSave, CKSyncEngineFailedZoneSave, CKSyncEngineFetchChangesOptions, CKSyncEngineFetchedDatabaseChangesEvent, CKSyncEngineFetchedRecordDeletion, CKSyncEngineFetchedRecordZoneChangesEvent, CKSyncEngineFetchedZoneDeletion, CKSyncEnginePendingDatabaseChange, CKSyncEnginePendingRecordZoneChange, CKSyncEnginePendingZoneDelete, CKSyncEnginePendingZoneSave, CKSyncEngineRecordZoneChangeBatch, CKSyncEngineSendChangesContext, CKSyncEngineSendChangesOptions, CKSyncEngineSentDatabaseChangesEvent, CKSyncEngineSentRecordZoneChangesEvent, CKSyncEngineState, CKSyncEngineStateSerialization, CKSyncEngineStateUpdateEvent, CKSyncEngineWillFetchChangesEvent, CKSyncEngineWillFetchRecordZoneChangesEvent, CKSyncEngineWillSendChangesEvent, CKSystemSharingUIObserver, CKUserIdentity, CKUserIdentityLookupInfo. The encoding of a number of basic types changes, in particular those of CoreFoundation struct types and SIMD struct types. None of this should affect user code. objc.getClassList now has an optional positional argument to ignore classes with a name that aren’t identifiers. Some of the functionality in CoreFoundation was rewritten in Swift in macOS 14, with Swift subclasses of NSArray and NSDictionary. Those classes break an invariant of PyObjC: the superclass of the root of the Swift class hierarchy changes when the class is instantiated for the first time (from NSObject to the correct superclass). PyObjC 10 contains a workaround for this by ignoring these classes unless they are needed to create a proxy for an instance (FB12286520). Fix crash when the method signature retrieved from the Objective-C runtime contains the class name for a method returning id. Remove old 32-bit support in metadata override files. Restructure objc.simd: The matrix types are now named simd_float3x3 instead of matrix_float3x3, with the older name as an alias (to match older system headers). Fix crash when loading the libdispatch bindings on recent macOS versions (at least macOS 13, possibly earlier) dispatch.dispatch_source_t is renamed to dispatch.dispatch_source_type_t to match the type name in C code. Xcode 15 has a bug when using weak symbols and targeting older macOS versions. Switch to the old linker when detecting Xcode 15. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.3 2023/06/18 05:03:01 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc-framework-IntentsUI-10.0.tar.gz) = 34192fa80ca6b99eee4236608dfcf5301690122a7f37fc46d5451398ff079ca1 SHA512 (pyobjc-framework-IntentsUI-10.0.tar.gz) = b7aaba23b794155fba2901bdf2f384963478df16f432b99b7e54777c7512531d215b74e35622c53fdf07fd605717b0dcf50ee1d69618a36fb0c7203d9f4831aa Size (pyobjc-framework-IntentsUI-10.0.tar.gz) = 20386 bytes @ 1.3 log @py-pyobjc*: updated to 9.2 9.2 Version 9.2 Added warning objc.ObjCSuperWarning that is used to warn about classes that use argument-less super without binding that name to objc.super. Document that objc.super must be used instead of builtin.super when calling superclass methods in a Cocoa subclass. Add minimal pyproject.toml to all subprojects Fix crash in pyobjc-core when using Python 3.12a7. Added explicit tests for dealing with Objective-C categories that are loaded while using classes from Python. Fix the version of macOS where the SafariServices framework is present. Fixed some issues found by testing on a macOS 10.11 system Trying to implement a method with SIMD types as arguments or return value will now give a more useful error when the bridge does not support the signature. Fix incomplete metadata for CoreMediaIO.CMIOObjectSetPropertyData Fix incorrect metadata Removed Quartz.CGColorConversionInfoCreateFromListWithArguments. This function was already documented as unsupported, but was still present in the framework wrapper. Removed Quartz.CVPixelBufferCreateWithPlanarBytes. This function requires a manual binding, but was still present with a generic (and non-working) binding. Removed CoreMedia.CMBufferQueueCreate, CoreMedia.CMBufferQueueGetCallbacksForSampleBuffersSortedByOutputPTS, CoreMedia.CMBufferQueueGetCallbacksForUnsortedSampleBuffers, CoreMedia.CMVideoFormatDescriptionGetH264ParameterSetAtIndex, CoreMedia.CMVideoFormatDescriptionGetHVECParameterSetAtIndex, These functions require a manual binding, but were still present with a generic (and non-working) binding. Explicitly exclude definitions from CMIOHardwarePlugIn.h from the CoreMediaIO bindings. Added deref_result_pointer key to the metadata for a return value. Use this when a callable returns a pointer to a single value (for example CMAudioFormatDescriptionGetMostCompatibleFormat) Removed unsupported functions from the ApplicationServices bindings (not named individually due to the size of the list). Also fixed annotations for other ApplicationServices bindings. Add manual binding for CFNetwork.CFNetServiceBrowserCreate, CFNetwork.CFNetServiceSetClient, and CFNetwork.CFNetServiceMonitorCreate. Fix incompatibility with Python 3.12 beta 1. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.2 2023/04/07 05:25:13 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc-framework-IntentsUI-9.2.tar.gz) = e74960cd5df113331dc99aa1d1d0606c74762ce201642a04bdf471c278012436 SHA512 (pyobjc-framework-IntentsUI-9.2.tar.gz) = 10388df2e0b93d56a94fa5cb015037896ad99459dd545832d978194c9ddb688238a92dae23bb09afd6db3a4f362310ead261b8e94b1dc5a1567dc4507c4dcb4d Size (pyobjc-framework-IntentsUI-9.2.tar.gz) = 19915 bytes @ 1.2 log @py-pyobjc: updated to 9.0.1 Version 9.0.1 * Fix metadata for webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler: and webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler: in the WebKit bindings. * Reintroduce support for bridgesupport files that was dropped in 9.0. There are external users for this interface and the replacement used by PyObjC itself is not yet in a state where it can be used by other projects. Framework bindings were updated for the SDK included in Xcode 14.1 * Fix bad markup in overview of wrapped frameworks * Fix compile error with Python 3.12 Version 9.0 Support for macOS 13 (Xcode 14 beta 4) Updated framework bindings for macOS 13 The list below lists the frameworks that have API changes that affect the framework bindings. Added bindings for the following frameworks (all new in macOS 13): AVRouting BackgroundAssets ExtensionKit HealthKit MetalFX SafetyKit SharedWithYou SharedWithYouCore ThreadNetwork The definition of a number of basic structs has moved in the SDK for macOS 13 and PyObjC conforms to this change on all platforms. In particular: CGPoint, CGSize, CGVector, CGRect, CGAffineTransform and CGAffineTransformComponents are now defined in the CoreFoundation module. NSPoint, NSSize and NSRect are now aliases for the corresponding CG* types (instead of the other way around in previous versions of PyObjC). Both changes should require no changes to scripts, unless code relies on the particular __name__ of a type. The extension API (“pyobjc-api.h”) now has nullability annotations, which may lead to compilation errors or warnings when compiling 3th-party extensions using this API. The extension API (“pyobjc-api.h”) has a changed interface for creating method IMPs, because of this extensions for older versions of PyObjC cannot be used with PyObjC 9. * PyObjC 9.0 requires Python 3.7 or later * Remove support for BridgeSupport files The bridge itself hasn’t used these files for a long time, and system bridgesupport files are basically unusable. * Remove objc._setClassExtender This was an internal function that’s no longer used by PyObjC itself. * Remove -[OC_PythonNumber getValue:forType:] This method is never actually used by the system and is not part of the NSNumber interface (but possibly was in the past) * Removed bindings for the Message and ServerNotification frameworks. Both frameworks were removed in macOS 10.9 and hence cannot be used on a platform that’s still supported by PyObjC. * Removed the type attribute for ObjCPointer The typestr attribute contains the same value and has more consistent naming with the rest of PyObjC. * Quarrtz.CVPixelBufferCreateWithBytes now conforms to the PyObjC standard for returning values: it returns a tuple of two values, the C return value and the value return through pixelBufferOut. In older versions the return value was only the value return through pixelBufferOut. 464: The encodings objc._C_NSBOOL and objc._C_BOOL are now treated exactly the same as the types BOOL and bool have the same size and representation on arm64 and x86_64. * Add support for SIMD types in APIs (types such as vector_float3) The python representation of these types are types with the same name in defined in objc.simd. Because the FFI library used by PyObjC (libffi) does not support these types the bridge only supports the method signatures found in system frameworks, other signatures will result in exceptions at runtime. The relevant libffi issue for this is 408. But note that even if that issue were to be fixed PyObjC likely won’t use SIMD support in libffi until that’s merged in the system version on macOS. Because of the previous change APIs that have a SIMD type are now callable from Python. Changes due to generic implementation for SIMD types: SpriteKit.SK3DNode.projectPoint_: The result is now objc.simd.vector_float3 instead of a tuple SpriteKit.SK3DNode.unprojectPoint_: The result is now objc.simd.vector_float3 instead of a tuple SpriteKit.SKFieldNode.direction: The result is now objc.simd.vector_float3 instead of a tuple SpriteKit.SKPhysicsWorld.sampleFieldsAt_: The result is now objc.simd.vector_float3 instead of a tuple Still not supported (requires some more infrastructure): SpriteKit.SKFieldNode.customFieldWithEvaluationBlock_ The registered metadata can now contain a key full_signature with the full encoding type signature for a method. This is used to replace the encoding extracted from the Objective-C runtime when one or more types have an empty encoding in the Objective-C runtime (such as the SIMD types mentioned earlier) The Objective-C proxy for Python methods that require a custom helper (instead of using libffi) now use imp_implementationWithBlock. * For a number of classes in AVFoundation the system actually uses instances from a parallel class hierarchy with _Tundra as a suffix of the class name. Updated the metadata generator to automatically register the same metadata updates for these classes as for the original classes. * Fix typos in CoreMedioIO metadata for CoreFoundation types * Added two new assertions to PyObjCTools.TestSupport.TestCase: assertArgIsIDLike assertResultIsIDLike These assert that the type of an argument or return value is a Objective-C or CoreFoundation object, or a pointer to one. Fix internal error when an object that cannot be used in a boolean context is used for an ObjC argument that expects a bool or BOOL value. * Fix incompatibility with Nuitka. Earlier version of PyObjC failed when compiled using Nuitka, this version does work when using Nuitka 1.1.6 or later. Limitations: The automatic calculation of the method signature in selector() assumes that methods return id for Nuitka compiled code. That should not be a problem in practice. As a side effect of this builtin functions are accepted as the callable for a selector, even when not specifying a signature (e.g. objc.selector(dir) now works). Fixed crash in objc.selector due to uninitialized memory. Move helpers for NSInvocation from pyobjc-framework-Cocoa to pyobjc-core. * Don’t use static buffer during creation of “native” selector objects This can avoid an objc.error exception when introspecting existing Cocoa classes. * Revert change that made it impossible to replace a method with a property. @ text @d1 1 a1 1 $NetBSD: distinfo,v 1.1 2022/09/27 18:12:54 adam Exp $ d3 3 a5 3 BLAKE2s (pyobjc-framework-IntentsUI-9.0.1.tar.gz) = 8f1026bda4ec4934c8108df4a749fbfba1c52eb9adedd79df0034b691dbeef1b SHA512 (pyobjc-framework-IntentsUI-9.0.1.tar.gz) = 9975c90a3c2a080a0a01339b3bb19423da164651a1babcdd78079d0a9f5c871aa8a962cbfcaf6716c17b3d045cc32c3f4afb871ae654129a16cea7f582379441 Size (pyobjc-framework-IntentsUI-9.0.1.tar.gz) = 19563 bytes @ 1.1 log @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. @ text @d1 1 a1 1 $NetBSD$ d3 3 a5 3 BLAKE2s (pyobjc-framework-IntentsUI-8.5.1.tar.gz) = 9bced24bddb887bf56aeb17b1c87deba51558b1888335aaa88bac743a510e2c1 SHA512 (pyobjc-framework-IntentsUI-8.5.1.tar.gz) = 640e81ddba6c23a751b8a1d9f638dbd977736863cb5662dfe8c9ab5c07b3788d4a8cd6198ec1c42192fab92a27e77bc55bd2ddcf2d72e9c4bbeae9d88311ac1a Size (pyobjc-framework-IntentsUI-8.5.1.tar.gz) = 19418 bytes @