PyObjC 9.1b1
Ronald Oussoren via Pyobjc-dev <[email protected]> Mon, 3 Apr 2023 18:51:55 +0200
| Newsgroups | gmane.comp.python.pyobjc.devel,gmane.comp.python.apple |
|---|---|
| Message-ID | <[email protected]> |
--===============0896801190891236367==
Content-Type: multipart/alternative;
boundary="Apple-Mail=_BF80EBD9-B588-4F1D-84D4-469DD82E9E53"
--Apple-Mail=_BF80EBD9-B588-4F1D-84D4-469DD82E9E53
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8
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 =E2=80=9Cobjc.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 =E2=80=9Cpython_method" and =E2=80=9Cinformal_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 =E2=80=9CPyType_FromSpec"=
instead of using static =E2=80=9CPyTypeObject" 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>.=20
Ronald
=E2=80=94
Twitter / micro.blog: @ronaldoussoren
Mastodon: @[email protected].
Blog: https://blog.ronaldoussoren.net/
--Apple-Mail=_BF80EBD9-B588-4F1D-84D4-469DD82E9E53
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
charset=utf-8
<html><head><meta http-equiv=3D"content-type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"overflow-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;"><p =
style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">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").</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">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.</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">First of =
all the code that transforms class attributes, and in particular =
translates Python functions to =E2=80=9Cobjc.selector" objects, was =
rewritten from C to Python. This change should be transparant for =
users, other than some error cases and intentation changes:</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">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.</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">2. =
Coroutings (async methods, iterators) are no longer translated to a =
selector</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">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)</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">4. It is =
now possible to use varargs in a selector method when the implied number =
or arguments can be represented.</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">Furthermore =
the =E2=80=9Cpython_method" and =E2=80=9Cinformal_protocol" classes are =
now implemented in Python instead of Objective-C. Those should have no =
user-visible changes in behaviour.</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal;">Lastly a =
number of classes are now created using =E2=80=9CPyType_FromSpec" =
instead of using static =E2=80=9CPyTypeObject" 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.</p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; min-height: =
18px;"><br></p>
<p style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; color: =
rgb(130, 15, 119);"><span style=3D"color: #000000">As always the full =
changelog can be seen at =
</span><https://pyobjc.readthedocs.io/en/latest/changelog.html><span=
style=3D"color: #000000">. </span></p><p style=3D"margin: 0px; =
font-style: normal; font-variant-caps: normal; font-stretch: normal; =
font-size: 16px; line-height: normal; font-family: "Helvetica =
Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; color: =
rgb(130, 15, 119);"><span style=3D"color: #000000"><br></span></p><p =
style=3D"margin: 0px; font-style: normal; font-variant-caps: normal; =
font-stretch: normal; font-size: 16px; line-height: normal; font-family: =
"Helvetica Neue"; font-size-adjust: none; font-kerning: auto; =
font-variant-alternates: normal; font-variant-ligatures: normal; =
font-variant-numeric: normal; font-variant-east-asian: normal; =
font-variant-position: normal; font-feature-settings: normal; =
font-optical-sizing: auto; font-variation-settings: normal; color: =
rgb(130, 15, 119);"><span style=3D"color: =
#000000">Ronald</span></p><div>
<meta charset=3D"UTF-8"><div dir=3D"auto" style=3D"caret-color: rgb(0, =
0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: =
after-white-space;"><div dir=3D"auto" style=3D"overflow-wrap: =
break-word; -webkit-nbsp-mode: space; line-break: =
after-white-space;"><div style=3D"caret-color: rgb(0, 0, 0); color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;">=E2=80=94</div><div style=3D"caret-color: rgb(0, =
0, 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;"><br></div><div =
style=3D"caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;">Twitter / micro.blog: @ronaldoussoren</div><div =
style=3D"caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;">Mastodon: @[email protected].</div><div =
style=3D"caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;">Blog: https://blog.ronaldoussoren.net/</div></div></div>
</div>
<br></body></html>=
--Apple-Mail=_BF80EBD9-B588-4F1D-84D4-469DD82E9E53--
--===============0896801190891236367==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============0896801190891236367==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Pyobjc-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyobjc-dev
--===============0896801190891236367==--