./devel/py-pyobjc-core, Bridge between Python and Objective-C

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 10.3.1, Package name: py311-pyobjc-core-10.3.1, Maintainer: pkgsrc-users

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.


Required to run:
[devel/py-setuptools] [devel/libffi] [lang/python37]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 913.112 KB

Version history: (Expand)


CVS history: (Expand)


   2024-04-02 19:26:02 by Adam Ciarcinski | Files touched by this commit (150) | Package updated
Log message:
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.
   2024-01-23 23:15:03 by Adam Ciarcinski | Files touched by this commit (154) | Package updated
Log message:
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).
   2023-11-19 18:03:09 by Adam Ciarcinski | Files touched by this commit (457) | Package updated
Log message:
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.
   2023-06-18 07:03:10 by Adam Ciarcinski | Files touched by this commit (143) | Package updated
Log message:
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.
   2023-04-07 07:17:24 by Adam Ciarcinski | Files touched by this commit (4)
Log message:
py-pyobjc-core: avoid -Werror
   2022-09-27 20:13:03 by Adam Ciarcinski | Files touched by this commit (177) | Package updated
Log message:
py-pyobjc*: updated to 8.5.1

Version 8.5

This release continues the work on test coverage in pyobjc-core, resulting in a \ 
number of minor bug fixes.

Added two options to the build_ext command in the setup.py of pyobjc-core:

--no-lto: Disable link time optimization
--no-warnings-as-errors: Disable -Werror
For struct bindings in frameworks the “in” operator no longer swallows \ 
exceptions raised by the __eq__ method.

Improved handing of invalid type encodings for struct types.

Fix crash while handling a struct wrapper with an invalid type encoding.

Fix handling of empty structs (such as struct foo { }; in objc.repythonify().

The type for NSObject.pyobjc_instanceMethod and NSObject.pyobjc_classMethods now \ 
supports the GC protocol to avoid garbage collection issues when the value for \ 
these properties is stored as an attribute (which introduces a reference cycle)

PyObjC should work with Python 3.11 alpha release, starting at alpha 6. Earlier \ 
alpha’s are not supported due to reverting a workaround for a bug that was \ 
fixed in alpha 6.

NSObject.alloc = 42 now fails. It was already impossible to replace a selector \ 
by something else through instances (NSObject.new().description = 42 raises).

Added objc.ObjCPointer.typestr with the same value as objc.ObjCPonter.type. The \ 
latter is now deprecated and will be removed in PyObjC 9.

Better error messages when a class implementing a protocol inherits a method of \ 
the wrong kind (“class” vs. “instance”).

The value of __slots__ in a class definition is now kept in the created class \ 
(previous versions always set the attribute to an empty tuple).

This is primarily useful when __slots__ is a dict that is used to document \ 
attributes.

Raise the correct exception when the name of a method is not an ASCII string.

objc.loadSpecialVar() now better enforces that the module_globals argument is a \ 
Python dictionary.

Fixed a crash in objc.loadSpecialVar() due to a missing pointer dereference.

pip install pyobjc-framework-... for a framework that is not present on the \ 
current machine will now give a better error message when the “wheel” \ 
package is not installed.

Setting an integer option in objc.options to a value of an incompatible type \ 
(such as a string) will now raise an exception as intended, instead of breaking \ 
the interpreter.

Trying to delete an attribute from objc.options now raises \ 
:type:`AttributeError` instead of :type:`TypeError`.

objc.selector now copies the default signature from its argument when that \ 
argument is another objc.selector.

Until now this would raise an exception.

Added some missing error checking in calls to PyObject_New() and PyObject_GC_New().

It is now possible to create an objc.selector from a callable that is not a \ 
function or bound method. This may require specifying the method signature in \ 
the call to objc.selector.

For pyobjc-core the build_ext command in setup.py now includes the command-line \ 
option from the standaard command, which means python setup.py build_ext -j 4 \ 
can now be used for parallel builds.

On my M1 laptop using python setup.py build_ext -j 8 halves the time needed to \ 
build the extension.

The test command setup.py now supports the -v option to print test cases while \ 
they are run, in previoius versions this required using the --verbosity option.

Improve error handling when dealing with “isHidden” selectors.

Added pyobjc_hiddenSelectors(classmethods) to objc.objc_class

This method returns a copy of the dictionary with “hidden” selectors, that \ 
is Objective-C selectors that are hidden from view.

The method is primarily a debugging aid for development of PyObjC itself.

ApplicationServices.AXIsProcessTrustedWithOptions and \ 
Quartrz.CGPDFArrayGetObject had incorrect metadata.

The testsuites for the various framework bindings now have a test that does some \ 
basic checks on function and selector metadata. This test found the problem with \ 
CGPDFArrayGetObject.

Added objc._C_ATOMIC and objc._C_COMPLEX, both extracted from the clang sources \ 
after finding some type encodings that PyObjC could not decode.

objc._C_ATOMIC is ignored by PyObjC (for now), and objc._C_COMPLEX is not yet \ 
supported.

Fix internal error for _C_OUT argument markup on arguments that are \ 
CoreFoundation types.

This can only happen with invalid metadata definitions in framework bindings, \ 
and earlier versions this resulted in an internal assertion error. With this \ 
change the “output” argument is always None in the result.

Fix metadata for a number of functions with a C string argument

The metadata for the following functions was changed to have the correct type \ 
encoding for string argument, to fix issues with using non-ASCII (byte) strings.

ApplicationServices.PMWorkflowSubmitPDFWithOptions
CoreServices.LocaleRefGetPartString
Foundation.NSGetSizeAndAlignment
Network.nw_advertise_descriptor_create_bonjour_service
Network.nw_browse_descriptor_create_bonjour_service
Network.nw_browse_descriptor_get_bonjour_service_domain
Network.nw_browse_descriptor_get_bonjour_service_type
Network.nw_connection_copy_description
Network.nw_content_context_create
Network.nw_content_context_get_identifier
Network.nw_endpoint_copy_address_string
Network.nw_endpoint_copy_port_string
Network.nw_endpoint_create_bonjour_service
Network.nw_endpoint_create_host
Network.nw_endpoint_create_url
Network.nw_endpoint_get_bonjour_service_domain
Network.nw_endpoint_get_bonjour_service_name
Network.nw_endpoint_get_bonjour_service_type
Network.nw_endpoint_get_hostname
Network.nw_framer_create_definition
Network.nw_framer_message_access_value
Network.nw_framer_message_copy_object_value
Network.nw_framer_message_set_object_value
Network.nw_framer_message_set_value
Network.nw_framer_options_set_object_value
Network.nw_listener_create_with_port
Network.nw_privacy_context_create
Network.nw_quic_get_application_error_reason
Network.nw_quic_set_application_error
Network.nw_txt_record_access_key
Network.nw_ws_options_add_additional_header
Network.nw_ws_options_add_subprotocol
Quartz.CGContextSelectFont
Quartz.CGContextShowText
Quartz.CGContextShowTextAtPoint
Quartz.CGDataProviderCreateWithFilename
Quartz.CGPDFArrayGetName
Quartz.CGPDFContentStreamGetResource
Quartz.CGPDFDictionaryGetArray
Quartz.CGPDFDictionaryGetBoolean
Quartz.CGPDFDictionaryGetName
Quartz.CGPDFDocumentUnlockWithPassword
Quartz.CGPDFScannerPopName
Quartz.CGPDFTagTypeGetName
While fixing this issue I found problems with the metadata for these functions:

CoreMIDI.MIDIExternalDeviceCreate
CoreMedia.CMBlockBufferAccessDataBytes
CoreMedia.CMBlockBufferGetDataPointer
CoreMedia.CMBufferQueueInstallTriggerHandler
CoreMedia.CMBufferQueueInstallTriggerHandlerWithIntegerThreshold
CoreMedia.CMTextFormatDescriptionGetJustification
CoreServices.TECGetTextEncodingFromInternetNameOrMIB
DVDPlayback.DVDGetScanRate
MediaAccessibility.MACaptionAppearanceAddSelectedLanguage
There’s also a new test that checks for this problem in all exposed functions.

Fix incorrect reset of the “inline_list” attribute of the lazy importer, \ 
this could result in an incorrect TypeError when trying to access an \ 
non-existing attribute after looking at __all__.

Fix uniqueness of symbols exposed in the OpenDirectory bindings.

Unhide manual bindings for Security.SecKeychainFindGenericPassword and \ 
Security.SecKeychainFindInternetPassword.
   2022-01-04 21:55:40 by Thomas Klausner | Files touched by this commit (1595)
Log message:
*: bump PKGREVISION for egg.mk users

They now have a tool dependency on py-setuptools instead of a DEPENDS
   2021-12-08 17:07:18 by Adam Ciarcinski | Files touched by this commit (3063)
Log message:
revbump for icu and libffi