[Python-announce] TatSu v5.17.0

Juancarlo AƱez via Python-announce-list <[email protected]> Mon, 16 Feb 2026 16:09:00 -0400
Newsgroups gmane.comp.python.announce
Message-ID <CAL8UGB7Dyc5yg=BXC9h1dCpLsHSEVN4_UQiJ2x+migj3=s7NcQ@mail.gmail.com>
56ucIFRhdFN1IGlzIGEgdG9vbCB0aGF0IHRha2VzIGdyYW1tYXJzIGluIGEgc3VwZXJzZXQgb2Yg
RUJORiBhcyBpbnB1dCwgYW5kDQpvdXRwdXRzIG1lbW9pemluZyAoUGFja3JhdCkgUEVHIHBhcnNl
cnMgaW4gUHl0aG9uLiBUaGUgY2xhc3NpYyB2YXJpYXRpb25zDQpvZiBFQk5GIChUb21hc3NldHRp
LCBFYXN5RXh0ZW5kLCBXaXJ0aCkgYW5kIElTTyBFQk5GIGFyZSBhbHNvIHN1cHBvcnRlZCBhcw0K
aW5wdXQgZ3JhbW1hciBmb3JtYXQuDQoNClRoZSBPdmVyZHVlIE1ham9yIFJlZmFjdG9yaW5nDQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KTWFpbnRlbmFuY2Ug
YW5kIGNvbnRyaWJ1dGlvbnMgdG8gVGF0U3UgaGF2ZSBiZWVuIG1vcmUgZGlmZmljdWx0IHRoYW4N
Cm5lY2Vzc2FyeSBiZWNhdXNlIG9mIHRoZSB3YXkgdGhlIGNvZGUgZXZvbHZlZCB0aHJvdWdoIGl0
cyBsaWZldGltZS4NCg0KLSBWZXJ5IGxvbmcgbW9kdWxlcyBhbmQgY2xhc3NlcyB0aGF0IHRyeSB0
byBkbyB0b28gbXVjaA0KLSBBbGdvcml0aG1zIGRpZmZpY3VsdCB0byB1bmRlcnN0YW5kIG9yIHdp
dGggaW5jb3JyZWN0IHNlbWFudGljcw0KLSBCYXNpYyBmZWF0dXJlcyBtaXNzaW5nLCBiZWNhdXNl
IHRoZSBhYm92ZSBtYWRlIHRoZW0gaGFyZCB0byBpbXBsZW1lbnQNCg0KVGhpcyByZWxlYXNlIGlz
IGEgbWFqb3IgcmVmYWN0b3Jpbmcgb2YgdGhlIGNvZGUgaW4gVGF0U3UuDQoNCi0gQ29tcGxleCBt
b2R1bGVzIHdlcmUgcGFydGl0aW9uZWQgaW50byBzdWItbW9kdWxlcyBhbmQgY2xhc3NlcyB3aXRo
DQogIHdlbGwtZGVmaW5lZCBwdXJwb3NlDQotIFNldmVyYWwgYWxnb3JpdGhtcyB3ZXJlIHJld3Jp
dHRlbiB0byBtYWtlIHRoZWlyIHNlbWFudGljcyBjbGVhciBhbmQNCiAgZXZpZGVudCwgYW5kIHRo
ZWlyIGltcGxlbWVudGF0aW9uIG1vcmUgZWZmaWNpZW50DQotIE1hbnkgdW5pdCB0ZXN0cyB3ZXJl
IGFkZGVkIHRvIGFzc2VydCB0aGUgc2VtYW50aWNzIG9mIGNvbXBsZXgNCiAgYWxnb3JpdGhtcw0K
LSBTZXZlcmFsIHVzZXItZmFjaW5nIGZlYXR1cmVzIHdlcmUgYWRkZWQgYXMgdGhleSBiZWNhbWUg
ZWFzaWVyIHRvDQogIGltcGxlbWVudA0KDQpGb3IgdGhlIGRldGFpbHMgYWJvdXQgdGhlIG1hbnkg
Y2hhbmdlcyBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgdGhlIGNvbW1pdA0KbG9nLg0KDQotIHB5cGk6
IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9UYXRTdS8NCi0gZG9jczogaHR0cHM6Ly90YXRzdS5y
ZWFkdGhlZG9jcy5pby8NCi0gcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL25lb2dlbnkvVGF0U3UN
Cg0KRXZlcnkgZWZmb3J0IGhhcyBiZWVuIG1hZGUgdG8gcHJlc2VydmUgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHkgYnkNCmtlZXBpbmcgbW9zdCB1bml0IHRlc3RzIGludGFjdCBhbmQgdGVzdGluZyB3
aXRoIHByb2plY3RzIHdpdGggbGFyZ2UNCmdyYW1tYXJzIGFuZCBjb21wbGV4IHByb2Nlc3Npbmcu
IElmIHNvbWV0aGluZyBlc2NhcGVkIHRob3NlIHRlc3RzLCB0aGVyZQ0Kd2lsbCBiZSBhIGJ1Z2Zp
eCByZWxlYXNlIHdpdGggdGhlIGZpeGVzIHNvb24gZW5vdWdoLg0KDQpVc2VyLUZhY2luZyBDaGFu
Z2VzDQoNCi0gVGhlIFRhdFN1IGRvY3VtZW50YXRpb24gaGFzIGJlZW4gaW1wcm92ZWQgYW5kIGV4
cGFuZGVkLCBhbmQgaXQgaGFzIGENCiAgYmV0dGVyIGxvb2smZmVlbCB3aXRoIGltcHJvdmVkIG5h
dmlnYXRpb24uDQoNCi0gVGF0U3UgZG9lc27igJl0IGNhcmUgYWJvdXQgZmlsZSBuYW1lcywgYnV0
IHRoZSBkZWZhdWx0IGV4dGVuc2lvbiB1c2VkIGluDQogIHVuaXQgdGVzdHMsIGV4YW1wbGVzLCBh
bmQgZG9jdW1lbnRhdGlvbiBmb3IgZ3JhbW1hcnMgaXMgbm93IC50YXRzdQ0KDQotIEVCTkYsIGJv
dGggSVNPIGFuZCB0aGUgY2xhc3NpYyB2YXJpYXRpb25zLCBpcyBmdWxseSBzdXBwb3J0ZWQgYXMN
CiAgZ3JhbW1hciBpbnB1dCBmb3JtYXQNCg0KLSBOb3cgdGF0c3UucGFyc2UoLi4uLiwgYXNtb2Rl
bD1UcnVlKSBwcm9kdWNlcyBhIG1vZGVsIHRoYXQgbWF0Y2hlcyB0aGUNCiAgOjpUeXBlIGRlY2xh
cmF0aW9ucyBpbiB0aGVpciBncmFtbWFyIChzZWUgdGhlIG1vZGVscyBkb2N1bWVudGF0aW9uIGZv
cg0KICBhIHRob3JvdWdoIHJldmlldyBvZiB0aGUgZmVhdHVyZXMpLg0KDQotIHdhbGtlcnMuTm9k
ZVdhbGtlciBub3cgaGFuZGxlcyBhbGwga25vd24gdHlwZXMgb2YgaW5wdXQuIEFsc286DQoNCiAg
LSBEZXB0aEZpcnN0V2Fsa2VyIHdhcyByZWltcGxlbWVudGVkIHRvIGVuc3VyZSBERlMgc2VtYW50
aWNzDQogIC0gUG9zdE9yZGVyRGVwdGhGaXJzdFdhbGtlciB3YWxrcyBjaGlsZHJlbiBiZWZvcmUg
cGFyZW50cw0KICAtIFByZU9yZGVyV2Fsa2VyIHdhcyBicm9rZW4gYW5kIGNyYXp5LiBJdCB3YXMg
cmV3cml0dGVuIGFzIGENCiAgICBCcmVhZHRoRmlyc3RXYWxrZXIgd2l0aCB0aGUgY29ycmVjdCBz
ZW1hbnRpY3MNCg0KLSBDb25zdGFudCBleHByZXNzaW9ucyBpbiBhIGdyYW1tYXIgYXJlIG5vdyBl
dmFsdWF0ZWQgZGVlcGx5IHdpdGgNCiAgbXVsdGlwbGUgcGFzc2VzIG9mIGV2YWwoKSBhcyB0byBw
cm9kdWNlIHJlc3VsdHMgdGhhdCBhcmUgaW50dWl0aXZlbHkNCiAgY29ycmVjdDoNCg0KICAgICAg
ICAgIGRlZiB0ZXN0X2NvbnN0YW50X21hdGgoKToNCiAgICAgICAgICAgICAgZ3JhbW1hciA9IHIi
IiINCiAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gYTpgN2AgYjpgMmAgQDpgYGB7YX0gLyB7Yn1g
YGAgJCA7DQogICAgICAgICAgICAgICIiIg0KICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZShn
cmFtbWFyLCAnJywgdHJhY2U9VHJ1ZSkNCiAgICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSAz
LjUNCg0KLSBFdmFsdWF0aW9uIG9mIFB5dGhvbiBleHByZXNzaW9ucyBieSB0aGUgcGFyc2luZyBl
bmdpbmUgbm93IHVzZQ0KICBzYWZlX2V2YWwoKSwgYSBoYXJkZW5lZCBmaXJld2FsbCBhcm91bmQg
bW9zdCBzZWN1cml0eSBhdHRhY2tzDQogIHRhcmdldGluZyBldmFsKCkgKHNlZSB0aGUgc2FmZWV2
YWwgbW9kdWxlIGZvciBkZXRhaWxzKQ0KDQotIEJlY2F1c2UgTm9uZSBpcyBhIHZhbGlkIGluaXRp
YWwgdmFsdWUgZm9yIGF0dHJpYnV0ZXMgYW5kIGEgZnJlcXVlbnQNCiAgcmV0dXJuIHZhbHVlIGZv
ciBjYWxsYWJsZXMsIHRoZSByZXF1aXJlZCBsb2dpYyBmb3IgdW5kZWZpbmVkIHZhbHVlcw0KICB3
YXMgbW92ZWQgdG8gdGhlIG5vdG5vbmUgbW9kdWxlLCB3aGljaCBkZWNsYXJlcyBVbmRlZmluZWQg
YXMgYW4gYWxpYXMNCiAgZm9yIG5vdG5vbmUuTm90Tm9uZQ0KDQogICAgICAgIEluIFsxXTogZnJv
bSB0YXRzdS51dGlsLnVuZGVmaW5lZCBpbXBvcnQgVW5kZWZpbmVkDQogICAgICAgIEluIFsyXTog
dSA9IFVuZGVmaW5lZA0KICAgICAgICBJbiBbM106IHUgaXMgTm9uZQ0KICAgICAgICBPdXRbM106
IEZhbHNlDQogICAgICAgIEluIFs0XTogdSBpcyBVbmRlZmluZWQNCiAgICAgICAgT3V0WzRdOiBU
cnVlDQogICAgICAgIEluIFs1XTogVW5kZWZpbmVkIGlzIE5vbmUNCiAgICAgICAgT3V0WzVdOiBG
YWxzZQ0KICAgICAgICBJbiBbNl06IGQgPSB1IG9yICdPSycNCiAgICAgICAgSW4gWzddOiBkDQog
ICAgICAgIE91dFs3XTogJ09LJw0KDQotIG9iamVjdG1vZGVsLk5vZGUgd2FzIHJld3JpdHRlbiB0
byBnaXZlIGl0IGNsZWFyIHNlbWFudGljcyBhbmQNCiAgZWZmaWNpZW5jeQ0KDQogIC0gTmV3IGF0
dHJpYnV0ZXMgdG8gTm9kZSBhZnRlciBpbml0aWFsaXphdGlvbiBnZW5lcmF0ZSBhIHdhcm5pbmcg
aWYNCiAgICB0aGUgbmFtZSBvZiBhIG1ldGhvZCBpcyBiZWluZyBzaGFkb3dlZC4gVGhpcyBjaGFu
Z2UgYXZvaWRzIGNvbmZ1c2luZw0KICAgIEBkYXRhY2xhc3MsIHdoaWNoIGlzIHVzZWQgaW4gZ2Vu
ZXJhdGVkIG9iamVjdCBtb2RlbHMuDQogIC0gTm9kZSBlcXVhbGl0eSBpcyBleHBsaWNpdGx5IGRl
ZmluZWQgYXMgb2JqZWN0IGlkZW50aXR5LiBObyBhdHRlbXB0cw0KICAgIGFyZSBtYWRlIGF0IGNv
bXBhcmluZyBOb2RlIHN0cnVjdHVyYWxseS4NCiAgLSBOb2RlLmNoaWxkcmVuKCkgaGFzIHRoZSBl
eHBlY3RlZCBzZW1hbnRpY3MsIGFuZCBpcyBtdWNoIG1vcmUNCiAgICBlZmZpY2llbnQuDQoNCi0g
Tm9kZS5wYXJzZWluZm8gaXMgbm93IGhvbm9yZWQgYnkgdGhlIHBhcnNpbmcgZW5naW5lIChwcmV2
aW91c2x5LCBvbmx5DQogIHJlc3VsdHMgb2YgdHlwZSBBU1QgY291bGQgaGF2ZSBhIHBhcnNlaW5m
bykuIEdlbmVyYXRpb24gb2YgcGFyc2VpbmZvDQogIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFu
ZCBpcyBlbmFibGVkIGJ5IHBhc3NpbmcgcGFyZXNlaW5mbz1UcnVlIHRvDQogIHRoZSBBUEkgZW50
cnkgcG9pbnRzLg0KDQogICAgICAgICAgICBkZWYgdGVzdF9ub2RlX3BhcnNlaW5mbyhzZWxmKToN
CiAgICAgICAgICAgICAgZ3JhbW1hciA9ICIiIg0KICAgICAgICAgICAgICAgICAgQEBncmFtbWFy
IDo6IFRlc3QNCiAgICAgICAgICAgICAgICAgIHN0YXJ0OjpUZXN0ID0gdHJ1ZSB8IGZhbHNlIDsN
CiAgICAgICAgICAgICAgICAgIHRydWUgPSAidGVzdCIgQDpgVHJ1ZWAgJDsNCiAgICAgICAgICAg
ICAgICAgIGZhbHNlID0gInRlc3QiIEA6YEZhbHNlYCAkOw0KICAgICAgICAgICAgICAiIiINCg0K
ICAgICAgICAgICAgICB0ZXh0ID0gJ3Rlc3QnDQogICAgICAgICAgICAgIG5vZGUgPSB0YXRzdS5w
YXJzZShncmFtbWFyLCB0ZXh0LCBhc21vZGVsPVRydWUsDQpwYXJzZWluZm89VHJ1ZSwgKQ0KICAg
ICAgICAgICAgICBhc3NlcnQgdHlwZShub2RlKS5fX25hbWVfXyA9PSAnVGVzdCcNCiAgICAgICAg
ICAgICAgYXNzZXJ0IG5vZGUuYXN0IGlzIFRydWUNCiAgICAgICAgICAgICAgYXNzZXJ0IG5vZGUu
cGFyc2VpbmZvIGlzIG5vdCBOb25lDQogICAgICAgICAgICAgIGFzc2VydCBub2RlLnBhcnNlaW5m
by5wb3MgPT0gMA0KICAgICAgICAgICAgICBhc3NlcnQgbm9kZS5wYXJzZWluZm8uZW5kcG9zID09
IGxlbih0ZXh0KQ0KDQotIFN5bnRoZXRpYyBjbGFzc2VzIGNyZWF0ZWQgYnkgc3ludGguc3ludGhl
dGl6ZSgpIGR1cmluZyBwYXJzaW5nIHdpdGgNCiAgTW9kZWxCdWlsZGVyU2VtYW50aWNzIGJlaGF2
ZSBtb3JlIGNvbnNpc3RlbnRseSwgYW5kIG5vdyBoYXZlIGEgYmFzZQ0KICBjbGFzcyBvZiBjbGFz
cyBTeW50aE5vZGUoQmFzZU5vZGUpDQoNCi0gTm93IGFzdC5BU1QgaGFzIGNvbnNpc3RlbnQgc2Vt
YW50aWNzIG9mIGEgZGljdCB0aGF0IGFsbG93cyBhY2Nlc3MgdG8NCiAgY29udGVudHMgdXNpbmcg
dGhlIGF0dHJpYnV0ZSBpbnRlcmZhY2UNCg0KLSBhc2pzb24oKSBhbmQgZnJpZW5kcyBub3cgY292
ZXIgYWxsIGtub3duIGNhc2VzIHdpdGggaW1wcm92ZWQNCiAgY29uc2lzdGVuY3kgYW5kIGVmZmlj
aWVuY3ksIHNvIHRoZXJlIGFyZSBsZXNzIGRlbWFuZHMgb3ZlciBjbGllbnRzIG9mDQogIHRoZSBB
UEkNCg0KLSBFbnRyeSBwb2ludHMgbm8gbG9uZ2VyIGxpc3QgYSBsYXJnZSBzdWJzZXQgb2YgdGhl
IGNvbmZpZ3VyYXRpb24NCiAgb3B0aW9ucyBkZWZpbmVkIGluIFBhcnNlckNvbmZpZywgYnV0IHN0
aWxsIGFjY2VwdCB0aGVtIHRocm91Z2gNCiAgKipzZXR0aW5ncyBrZXl3b3JkIGFyZ3VtZW50cy4g
Tm93IFBhcnNlckNvbmZpZyB2ZXJpZmllcyB0aGF0IHRoZQ0KICBzZXR0aW5ncyBwYXNzZWQgdG8g
YXJlIHZhbGlkLCBlbGltaW5hdGluZyB0aGUgZnJ1c3RyYXRpb24gb2YgcGFzc2luZw0KICBhbiBp
bmNvcnJlY3Qgc2V0dGluZyBuYW1lIChhIHR5cG8pIGFuZCBob3BpbmcgaXQgaGFzIHRoZSBpbnRl
bmRlZA0KICBlZmZlY3QuDQoNCi0gVGF0U3Ugc3RpbGwgaGFzIG5vIGxpYnJhcnkgZGVwZW5kZW5j
aWVzIGZvciBpdHMgY29yZSBmdW5jdGlvbmFsaXR5LA0KICBidXQgc2V2ZXJhbCBsaWJyYXJpZXMg
YXJlIHVzZWQgZHVyaW5nIGl0cyBkZXZlbG9wbWVudCBhbmQgdGVzdGluZy4gVGhlDQogIFRhdFN1
IGRldmVsb3BtZW50IGNvbmZpZ3VyYXRpb24gdXNlcyB1diBhbmQgaGF0Y2guIFNldmVyYWwNCiAg
cmVxdWlyZW1lbnRzLXh5ei50eHQgZmlsZXMgYXJlIGdlbmVyYXRlZCBpbiBmYXZvciBvZiB0aG9z
ZSB1c2luZyBwaXANCiAgd2l0aCBweWVudiwgdmlydHVhbGVudndyYXBwZXIsIG9yIHZpcnR1YWxl
bnYNCg0KLSBBbGwgYXR0ZW1wdHMgYXQgcmVjb3ZlcmluZyBjb21tZW50cyBmcm9tIHBhcnNlZCBp
bnB1dCB3ZXJlIHJlbW92ZWQuIEl0DQogIG5ldmVyIHdvcmtlZCwgc28gaXQgaGFkIG5vIHVzZS4g
Q29tbWVudCByZWNvdmVyeSBtYXkgYmUgYXR0ZW1wdGVkIGluDQogIHRoZSBmdXR1cmUuDQoNCi0g
QWxsIHByZS1leGlzdGluZyBncmFtbWFycyBhcmUgY29tcGF0aWJsZSB3aXRoIHRoaXMgdmVyc2lv
biBvZiBUYXRTdS4NCg0KLSBQcmV2aW91c2x5IGdlbmVyYXRlZCBQeXRob24gcGFyc2VycyBhbmQg
bW9kZWxzLCB3b3JrIHdpdGggdGhpcyB2ZXJzaW9uDQogIG9mIFRhdFN1LCB5ZXQgeW91IHNob3Vs
ZCBjb25zaWRlciBnZW5lcmF0aW5nIHRoZW0gYW5ldyB0byB0YWtlDQogIGFkdmFudGFnZSBvZiB0
aGUgaW1wcm92ZWQgc3BlZWQsIGxheW91dCwgYW5kIGZlYXR1cmVzLg0KDQotIENBVkVBVDogU2V2
ZXJhbCBmdW5jdGlvbnMsIG1ldGhvZHMsIGFuZCBhcmd1bWVudCBuYW1lcyB3ZXJlDQogIGRlcHJl
Y2F0ZWQuIFRoZXkgY2FuIHN0aWxsIGJlIHVzZWQsIGJ1dCB3YXJuaW5ncyB3aWxsIGJlIGlzc3Vl
ZCBhdA0KICBydW50aW1lLg0KDQotIENBVkVBVDogSWYgdGhlcmUgYXJlIGludmFsaWQgc3RyaW5n
cyBvciByZWdleCBwYXR0ZXJucyBpbiB5b3VyDQogIGdyYW1tYXJzIFlPVSBNVVNUIGZpeCB0aGVt
IGJlY2F1c2Ugbm93IHRoZSBncmFtbWFyIHBhcnNlciB2YWxpZGF0ZXMNCiAgc3RyaW5ncyBhbmQg
cGF0dGVybnMuDQoNCi0gTWFueSBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgVGF0U3UgZGVmaW5lcyBm
b3IgaXRzIG93biB1c2UgYXJlIHVzZWZ1bCBpbg0KICBvdGhlciBjb250ZXh0cy4gU29tZSBleGFt
cGxlcyBhcmU6DQoNCiAgICAgICAgICBmcm9tIHRhdHN1LnNhZmVldmFsIGltcG9ydCBpc19ldmFs
X3NhZmUNCiAgICAgICAgICBmcm9tIHRhdHN1LnNhZmVldmFsIGltcG9ydCBoYXNzaGFibGUNCiAg
ICAgICAgICBmcm9tIHRhdHN1LnNhZmVldmFsIGltcG9ydCBtYWtlX2hhc2hhYmxlDQogICAgICAg
ICAgZnJvbSB0YXRzdS51dGlsIGltcG9ydCBzYWZlX25hbWUNCiAgICAgICAgICBmcm9tIHRhdHN1
LnV0aWwubWlzYyBpbXBvcnQgZmluZF9mcm9tX3JlbWF0Y2gNCiAgICAgICAgICBmcm9tIHRhdHN1
LnV0aWwubWlzYyBpbXBvcnQgdG9wc29ydA0KICAgICAgICAgIGZyb20gdGF0c3UudXRpbC51bmRl
ZmluZWQgaW1wb3J0IFVuZGVmaW5lZA0KICAgICAgICAgICMgLi4uDQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS0NCkp1YW5jYXJsbyBBw7Fleg0KbWFpbHRvOmFwYWxh
bGFAZ21haWwuY29tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpQeXRob24tYW5ub3VuY2UtbGlzdCBtYWlsaW5nIGxpc3QgLS0gcHl0aG9uLWFubm91bmNl
LWxpc3RAcHl0aG9uLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHB5dGhvbi1h
bm5vdW5jZS1saXN0LWxlYXZlQHB5dGhvbi5vcmcKaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFp
bG1hbjMvL2xpc3RzL3B5dGhvbi1hbm5vdW5jZS1saXN0LnB5dGhvbi5vcmcKTWVtYmVyIGFkZHJl
c3M6IHB5dGhvbi1weXRob24tYW5ub3VuY2UtbGlzdEBtLmdtYW5lLW14Lm9yZwo=