head	1.5;
access;
symbols
	pkgsrc-2026Q1:1.5.0.6
	pkgsrc-2026Q1-base:1.5
	pkgsrc-2025Q4:1.5.0.4
	pkgsrc-2025Q4-base:1.5
	pkgsrc-2025Q3:1.5.0.2
	pkgsrc-2025Q3-base:1.5
	pkgsrc-2025Q2:1.4.0.2
	pkgsrc-2025Q2-base:1.4
	pkgsrc-2025Q1:1.3.0.8
	pkgsrc-2025Q1-base:1.3
	pkgsrc-2024Q4:1.3.0.6
	pkgsrc-2024Q4-base:1.3
	pkgsrc-2024Q3:1.3.0.4
	pkgsrc-2024Q3-base:1.3
	pkgsrc-2024Q2:1.3.0.2
	pkgsrc-2024Q2-base:1.3
	pkgsrc-2024Q1:1.2.0.4
	pkgsrc-2024Q1-base:1.2
	pkgsrc-2023Q4:1.2.0.2
	pkgsrc-2023Q4-base:1.2
	pkgsrc-2023Q3:1.1.0.4
	pkgsrc-2023Q3-base:1.1
	pkgsrc-2023Q2:1.1.0.2
	pkgsrc-2023Q2-base:1.1;
locks; strict;
comment	@# @;


1.5
date	2025.07.11.09.03.58;	author adam;	state Exp;
branches;
next	1.4;
commitid	XGVfN5jF1Yzu8j2G;

1.4
date	2025.04.23.12.45.15;	author adam;	state Exp;
branches;
next	1.3;
commitid	gmYFYOt52TvUTaSF;

1.3
date	2024.06.06.14.48.35;	author adam;	state Exp;
branches;
next	1.2;
commitid	opAzt9btqWrPTVcF;

1.2
date	2023.11.19.17.02.56;	author adam;	state Exp;
branches;
next	1.1;
commitid	qxrpVORZMVPo4fNE;

1.1
date	2023.06.18.05.02.58;	author adam;	state Exp;
branches;
next	;
commitid	mHNGsD5lWxk42otE;


desc
@@


1.5
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 <https://clang.llvm.org/docs/AutomaticReferenceCounting.html>_
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
@# $NetBSD: Makefile,v 1.4 2025/04/23 12:45:15 adam Exp $

PYOBJC_FRAMEWORK=	ExtensionKit

.include "../../devel/py-pyobjc/Makefile.common"

NOT_FOR_PLATFORM=	Darwin-2[0-1].*-* Darwin-1[0-9].*-* Darwin-[0-9].*-* # 13+

DEPENDS+=	${PYPKGPREFIX}-pyobjc-core>=${PYOBJC_VERS}:../../devel/py-pyobjc-core
DEPENDS+=	${PYPKGPREFIX}-pyobjc-framework-Cocoa>=${PYOBJC_VERS}:../../devel/py-pyobjc-framework-Cocoa

.include "../../lang/python/wheel.mk"
.include "../../mk/bsd.pkg.mk"
@


1.4
log
@py-pyobjc*: fix for setuptools>=78; bump revisions
@
text
@d1 1
a1 3
# $NetBSD: Makefile,v 1.3 2024/06/06 14:48:35 adam Exp $

PKGREVISION=	1
@


1.3
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: Makefile,v 1.2 2023/11/19 17:02:56 adam Exp $
d3 1
a3 1
.include "../../devel/py-pyobjc/Makefile.common"
d5 1
a5 1
WHEEL_NAME=	pyobjc_framework_ExtensionKit-${PYOBJC_VERS}
d7 1
a7 4
CATEGORIES=	devel python
MASTER_SITES=	${MASTER_SITE_PYPI:=p/pyobjc-framework-ExtensionKit/}

COMMENT=	Wrappers for the framework ExtensionKit on macOS
@


1.2
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: Makefile,v 1.1 2023/06/18 05:02:58 adam Exp $
d5 2
a6 2
DISTNAME=	pyobjc-framework-ExtensionKit-${PYOBJC_VERS}
PKGNAME=	${PYPKGPREFIX}-${DISTNAME}
@


1.1
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$
a13 2
USE_LANGUAGES=	c objc

d17 1
a17 1
.include "../../lang/python/egg.mk"
@

