The NetBSD Project

CVS log for pkgsrc/devel/py-pyobjc-framework-InputMethodKit/Makefile

[BACK] Up to [cvs.NetBSD.org] / pkgsrc / devel / py-pyobjc-framework-InputMethodKit

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.7: download - view: text, markup, annotated - select for diffs
Thu Jun 6 14:48:36 2024 UTC (6 months ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2024Q3-base, pkgsrc-2024Q3, pkgsrc-2024Q2-base, pkgsrc-2024Q2, HEAD
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +3 -3 lines
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).

Revision 1.6: download - view: text, markup, annotated - select for diffs
Sun Nov 19 17:02:58 2023 UTC (12 months, 3 weeks ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2024Q1-base, pkgsrc-2024Q1, pkgsrc-2023Q4-base, pkgsrc-2023Q4
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +2 -4 lines
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.

Revision 1.5: download - view: text, markup, annotated - select for diffs
Tue Sep 27 18:12:54 2022 UTC (2 years, 2 months ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2023Q3-base, pkgsrc-2023Q3, pkgsrc-2023Q2-base, pkgsrc-2023Q2, pkgsrc-2023Q1-base, pkgsrc-2023Q1, pkgsrc-2022Q4-base, pkgsrc-2022Q4
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +2 -3 lines
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.

Revision 1.4: download - view: text, markup, annotated - select for diffs
Tue Jan 4 20:53:28 2022 UTC (2 years, 11 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2022Q3-base, pkgsrc-2022Q3, pkgsrc-2022Q2-base, pkgsrc-2022Q2, pkgsrc-2022Q1-base, pkgsrc-2022Q1
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +2 -1 lines
*: bump PKGREVISION for egg.mk users

They now have a tool dependency on py-setuptools instead of a DEPENDS

Revision 1.3: download - view: text, markup, annotated - select for diffs
Thu Feb 8 19:54:22 2018 UTC (6 years, 10 months ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2021Q4-base, pkgsrc-2021Q4, pkgsrc-2021Q3-base, pkgsrc-2021Q3, pkgsrc-2021Q2-base, pkgsrc-2021Q2, pkgsrc-2021Q1-base, pkgsrc-2021Q1, pkgsrc-2020Q4-base, pkgsrc-2020Q4, pkgsrc-2020Q3-base, pkgsrc-2020Q3, pkgsrc-2020Q2-base, pkgsrc-2020Q2, pkgsrc-2020Q1-base, pkgsrc-2020Q1, pkgsrc-2019Q4-base, pkgsrc-2019Q4, pkgsrc-2019Q3-base, pkgsrc-2019Q3, pkgsrc-2019Q2-base, pkgsrc-2019Q2, pkgsrc-2019Q1-base, pkgsrc-2019Q1, pkgsrc-2018Q4-base, pkgsrc-2018Q4, pkgsrc-2018Q3-base, pkgsrc-2018Q3, pkgsrc-2018Q2-base, pkgsrc-2018Q2, pkgsrc-2018Q1-base, pkgsrc-2018Q1
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +3 -5 lines
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.

Revision 1.2: download - view: text, markup, annotated - select for diffs
Wed Jun 8 17:43:31 2016 UTC (8 years, 6 months ago) by wiz
Branches: MAIN
CVS tags: pkgsrc-2017Q4-base, pkgsrc-2017Q4, pkgsrc-2017Q3-base, pkgsrc-2017Q3, pkgsrc-2017Q2-base, pkgsrc-2017Q2, pkgsrc-2017Q1-base, pkgsrc-2017Q1, pkgsrc-2016Q4-base, pkgsrc-2016Q4, pkgsrc-2016Q3-base, pkgsrc-2016Q3, pkgsrc-2016Q2-base, pkgsrc-2016Q2
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +2 -2 lines
Switch to MASTER_SITES_PYPI.

Revision 1.1: download - view: text, markup, annotated - select for diffs
Sat Apr 25 10:40:50 2015 UTC (9 years, 7 months ago) by adam
Branches: MAIN
CVS tags: pkgsrc-2016Q1-base, pkgsrc-2016Q1, pkgsrc-2015Q4-base, pkgsrc-2015Q4, pkgsrc-2015Q3-base, pkgsrc-2015Q3, pkgsrc-2015Q2-base, pkgsrc-2015Q2
The PyObjC project aims to provide a bridge between the Python and Objective-C
programming languages. The bridge is intended to be fully bidirectional,
allowing the Python programmer to take full advantage of the power provided by
various Objective-C based toolkits and the Objective-C programmer transparent
access to Python based functionality.

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>