head	1.4;
access;
symbols
	pkgsrc-2026Q1:1.4.0.10
	pkgsrc-2026Q1-base:1.4
	pkgsrc-2025Q4:1.4.0.8
	pkgsrc-2025Q4-base:1.4
	pkgsrc-2025Q3:1.4.0.6
	pkgsrc-2025Q3-base:1.4
	pkgsrc-2025Q2:1.4.0.4
	pkgsrc-2025Q2-base:1.4
	pkgsrc-2025Q1:1.4.0.2
	pkgsrc-2025Q1-base:1.4
	pkgsrc-2024Q4:1.3.0.10
	pkgsrc-2024Q4-base:1.3
	pkgsrc-2024Q3:1.3.0.8
	pkgsrc-2024Q3-base:1.3
	pkgsrc-2024Q2:1.3.0.6
	pkgsrc-2024Q2-base:1.3
	pkgsrc-2024Q1:1.3.0.4
	pkgsrc-2024Q1-base:1.3
	pkgsrc-2023Q4:1.3.0.2
	pkgsrc-2023Q4-base:1.3
	pkgsrc-2023Q3:1.2.0.28
	pkgsrc-2023Q3-base:1.2
	pkgsrc-2023Q2:1.2.0.26
	pkgsrc-2023Q2-base:1.2
	pkgsrc-2023Q1:1.2.0.24
	pkgsrc-2023Q1-base:1.2
	pkgsrc-2022Q4:1.2.0.22
	pkgsrc-2022Q4-base:1.2
	pkgsrc-2022Q3:1.2.0.20
	pkgsrc-2022Q3-base:1.2
	pkgsrc-2022Q2:1.2.0.18
	pkgsrc-2022Q2-base:1.2
	pkgsrc-2022Q1:1.2.0.16
	pkgsrc-2022Q1-base:1.2
	pkgsrc-2021Q4:1.2.0.14
	pkgsrc-2021Q4-base:1.2
	pkgsrc-2021Q3:1.2.0.12
	pkgsrc-2021Q3-base:1.2
	pkgsrc-2021Q2:1.2.0.10
	pkgsrc-2021Q2-base:1.2
	pkgsrc-2021Q1:1.2.0.8
	pkgsrc-2021Q1-base:1.2
	pkgsrc-2020Q4:1.2.0.6
	pkgsrc-2020Q4-base:1.2
	pkgsrc-2020Q3:1.2.0.4
	pkgsrc-2020Q3-base:1.2
	pkgsrc-2020Q2:1.2.0.2
	pkgsrc-2020Q2-base:1.2
	pkgsrc-2020Q1:1.1.0.16
	pkgsrc-2020Q1-base:1.1
	pkgsrc-2019Q4:1.1.0.18
	pkgsrc-2019Q4-base:1.1
	pkgsrc-2019Q3:1.1.0.14
	pkgsrc-2019Q3-base:1.1
	pkgsrc-2019Q2:1.1.0.12
	pkgsrc-2019Q2-base:1.1
	pkgsrc-2019Q1:1.1.0.10
	pkgsrc-2019Q1-base:1.1
	pkgsrc-2018Q4:1.1.0.8
	pkgsrc-2018Q4-base:1.1
	pkgsrc-2018Q3:1.1.0.6
	pkgsrc-2018Q3-base:1.1
	pkgsrc-2018Q2:1.1.0.4
	pkgsrc-2018Q2-base:1.1
	pkgsrc-2018Q1:1.1.0.2
	pkgsrc-2018Q1-base:1.1;
locks; strict;
comment	@# @;


1.4
date	2025.02.05.08.05.39;	author adam;	state Exp;
branches;
next	1.3;
commitid	ffcpBhN62TRcPfIF;

1.3
date	2023.11.19.17.03.03;	author adam;	state Exp;
branches;
next	1.2;
commitid	qxrpVORZMVPo4fNE;

1.2
date	2020.05.23.07.03.48;	author adam;	state Exp;
branches;
next	1.1;
commitid	jQYXATRuTGrNJk9C;

1.1
date	2018.02.08.19.54.24;	author adam;	state Exp;
branches;
next	;
commitid	PDvL9sTj8FZqQ5qA;


desc
@@


1.4
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
@@@comment $NetBSD: PLIST,v 1.3 2023/11/19 17:03:03 adam Exp $
${PYSITELIB}/${WHEEL_INFODIR}/METADATA
${PYSITELIB}/${WHEEL_INFODIR}/RECORD
${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
${PYSITELIB}/${WHEEL_INFODIR}/pyobjc-build-info.txt
${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
${PYSITELIB}/Photos/_Photos.so
${PYSITELIB}/Photos/__init__.py
${PYSITELIB}/Photos/__init__.pyc
${PYSITELIB}/Photos/__init__.pyo
${PYSITELIB}/Photos/_metadata.py
${PYSITELIB}/Photos/_metadata.pyc
${PYSITELIB}/Photos/_metadata.pyo
@


1.3
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
@@comment $NetBSD: PLIST,v 1.2 2020/05/23 07:03:48 adam Exp $
d5 1
d7 1
a7 1
${PYSITELIB}/Photos/_Photos.abi3.so
@


1.2
log
@py-pyobjc: updated to 6.2

Version 6.2

The project has moved from Bitbucket to Github

Remove most remnants of Python 2 support

Clean up code quality issues found using flake8

Add pre-commit hook to run black on all Python code.

Fix protocol conformance testing when explicitly implementing a protocol

Before this bugfix a class explicitly conforming to a protocol could not implement any method that wasn’t declared in the protocol, the bridge would erroneously raise an exception when checking the additional method.

Issue reported by Georg Seifert.

Fix Python 3 issues in PyObjCTools.Conversion

Reported by vinolin asokan.

PyObjCTools.Conversio.propertyListFromPythonCollection didn’t
recursively convert members of lists and tuples.

PyObjCTools.Conversio.propertyListFromPythonCollection and PyObjCTools.Conversio.pythonCollectionFromPropertyList now support sets.

Update metadata for Xcode 11.4 (beta 2)

Added bindings for framework AutomaticAssessmentConfiguration.framework introduced in macOS 10.15.4

In some cases the compiler uses the type encoding “^{NSObject=#}” instead of “@@”.

Reported by Georg Seifert.

Added bindings for the Metal framework (new in macOS 10.11)

Most framework bindings now use the limited ABI for the included C extensions, reducing the number of wheels that are needed. The exception are the bindings for Cocoa, Quartz and libdispatch, those use functionality not available in the limited ABI.

The bridge itself (pyobjc-core) still uses the full CPython API.

The CoreAudio bindings also don’t use the limited ABI for now, those need more work to work with that ABI.
@
text
@d1 5
a5 7
@@comment $NetBSD: PLIST,v 1.1 2018/02/08 19:54:24 adam Exp $
${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
${PYSITELIB}/${EGG_INFODIR}/not-zip-safe
${PYSITELIB}/${EGG_INFODIR}/requires.txt
${PYSITELIB}/${EGG_INFODIR}/top_level.txt
@


1.1
log
@py-pyobjc: updated to 4.1

Version 4.1:
Protection agains buffer overflow and negative indexes in __getitem__ and __setitem__ for objc.varlist instances.

Fix incorrect metadata for +[NSEvent addLocalMonitorForEventsMatchingMask:handler:]

Fix incorrect and misleading error message in the exception that is raised when return a value from a block that should not return a value.

Issue 223: Fix hard crash when executing help(Cocoa)
Fetching the help for PyObjC framework wrappers isn’t very useful due to the sheer size of the output (4.5 million lines of output for help(Cocoa) at the moment), but shouldn’t cause a hard crash of the interpreter.

Issue 218: Explictly cause an ImportError when reloading `objc._objc`
Reloading the PyObjC core extension now raises an ImportError because this cannot work and used to raise a rather vague error.

Updated metadata for Xcode 9.2

Added missing `MAC_OS_X_VERSION_*` constants

Fix memory error in struct wrappers which resulted in a use-after-free error in the initializer for structs.

Add bindings for frameworks Security, SecurityFoundation and and SecurityInterface.
The bindings for the Security framework don’t expose a number of older APIs that were deprecated in macOS 10.7.

Add bindings to libdispatch.
These bindings require macOS 10.8 or later, libdispatch was available earlier but macOS 10.8 changed the API in such a way that wrapping became a lot easier.
@
text
@d1 1
a1 1
@@comment $NetBSD: PLIST,v 1.1 2015/04/25 10:42:24 adam Exp $
d8 1
a8 1
${PYSITELIB}/Photos/_Photos.so
@

