PyObjC 9.1 is one of the rare times that I'm publishing explicit beta releases.
PyObjC 9.1b1 is available on PyPI ("pip install pyobjc-9.1b1").
This release contains the usual SDK updates (macOS 13.3) and minor bugfixes,
but more importantly it contains some major changes to pyobjc-core. Because of
this I kindly request that you test this beta release and let me know about any
problems.
First of all the code that transforms class attributes, and in particular
translates Python functions to “objc.selector" objects, was rewritten from C to
Python. This change should be transparant for users, other than some error
cases and intentation changes:
1. The new code is smarter about recognizing if a method is intended to be used
as an Objetive-C selector and will not translate multi-word PEP8 compatable
names (e.g. "my_,method"). This reduces the need to use the python_selector
decorator.
2. Coroutings (async methods, iterators) are no longer translated to a selector
3. The new code will translate *all* callables, which may lead to needing to
use the python_method decorator in some cases (e.g. when using a builtin
function as a class attribute)
4. It is now possible to use varargs in a selector method when the implied
number or arguments can be represented.
Furthermore the “python_method" and “informal_protocol" classes are now
implemented in Python instead of Objective-C. Those should have no user-visible
changes in behaviour.
Lastly a number of classes are now created using “PyType_FromSpec" instead of
using static “PyTypeObject" definitions. That results in minor change in
behaviour when using Python 3.9 or earlier: In those versions it is not
possible to make these classes immutable. Don't rely on this behaviour.
As always the full changelog can be seen at
<https://pyobjc.readthedocs.io/en/latest/changelog.html>.
Ronald
—
Twitter / micro.blog: @ronaldoussoren
Mastodon: @[email protected].
Blog: https://blog.ronaldoussoren.net/
_______________________________________________
Pythonmac-SIG maillist - [email protected]
https://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG