String shapes and encodings

Claude Paroz <[email protected]> Mon, 6 Jun 2022 16:28:59 +0200
Newsgroups gmane.comp.python.reportlab.user
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------qt20xFsF6b9G1Z0yi8txk4cS
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

In the spirit of Python3 strings being always Unicode, I think that 
ReportLab String shape should behave the same and accept only Python 
strings.
I admit this might be slightly backwards incompatible, but it could be a 
first step in string handling simplification in ReportLab. The next step 
could be a similar patch for platypus Paragraph.

Claude
-- 
www.2xlibre.net
--------------qt20xFsF6b9G1Z0yi8txk4cS
Content-Type: text/x-patch; charset=UTF-8;
 name="0001-String-shapes-accept-Python-strings.patch"
Content-Disposition: attachment;
 filename="0001-String-shapes-accept-Python-strings.patch"
Content-Transfer-Encoding: base64

RnJvbSA4YTM5OTJlYzE4NDQ4OWU4ZmFjMWI4MGE0MTJiZDNhNWUwNDA3OTJiIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGUgUGFyb3ogPGNsYXVkZUAyeGxpYnJlLm5l
dD4KRGF0ZTogTW9uLCA2IEp1biAyMDIyIDE2OjEzOjAwICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gU3RyaW5nIHNoYXBlcyBhY2NlcHQgUHl0aG9uIHN0cmluZ3MKCi0tLQogc3JjL3JlcG9y
dGxhYi9ncmFwaGljcy9zaGFwZXMucHkgICAgIHwgIDYgKysrLS0tCiBzcmMvcmVwb3J0bGFi
L2dyYXBoaWNzL3Rlc3RzaGFwZXMucHkgfCAgMiArLQogc3JjL3JlcG9ydGxhYi9saWIvdmFs
aWRhdG9ycy5weSAgICAgIHwgIDQgKystLQogdGVzdHMvdGVzdF9wZGZiYXNlX2VuY29kaW5n
cy5weSAgICAgIHwgMTYgKystLS0tLS0tLS0tLS0tLQogdGVzdHMvdGVzdF9wbGF0eXB1c19w
YXJhcGFyc2VyLnB5ICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRp
b25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvcmVwb3J0bGFiL2dy
YXBoaWNzL3NoYXBlcy5weSBiL3NyYy9yZXBvcnRsYWIvZ3JhcGhpY3Mvc2hhcGVzLnB5Cmlu
ZGV4IGJlZGQ4Yzk5Li4yMzkwMjJmNiAxMDA2NDQKLS0tIGEvc3JjL3JlcG9ydGxhYi9ncmFw
aGljcy9zaGFwZXMucHkKKysrIGIvc3JjL3JlcG9ydGxhYi9ncmFwaGljcy9zaGFwZXMucHkK
QEAgLTE1MjMsNyArMTUyMyw3IEBAIGNsYXNzIFN0cmluZyhTaGFwZSk6CiAgICAgICAgIHNl
bGYuc2V0UHJvcGVydGllcyhrdykKIAogICAgIGRlZiBnZXRFYXN0KHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi54ICsgc3RyaW5nV2lkdGgoc2VsZi50ZXh0LHNlbGYuZm9udE5hbWUs
c2VsZi5mb250U2l6ZSwgc2VsZi5lbmNvZGluZykKKyAgICAgICAgcmV0dXJuIHNlbGYueCAr
IHN0cmluZ1dpZHRoKHNlbGYudGV4dCxzZWxmLmZvbnROYW1lLHNlbGYuZm9udFNpemUpCiAK
ICAgICBkZWYgY29weShzZWxmKToKICAgICAgICAgbmV3ID0gc2VsZi5fX2NsYXNzX18oc2Vs
Zi54LCBzZWxmLnksIHNlbGYudGV4dCkKQEAgLTE1MzMsNyArMTUzMyw3IEBAIGNsYXNzIFN0
cmluZyhTaGFwZSk6CiAgICAgZGVmIGdldEJvdW5kcyhzZWxmKToKICAgICAgICAgIyBhc3N1
bWVzIGNvbnN0YW50IGRyb3Agb2YgMC4yKnNpemUgdG8gYmFzZWxpbmUKICAgICAgICAgdCA9
IHNlbGYudGV4dAotICAgICAgICB3ID0gc3RyaW5nV2lkdGgodCxzZWxmLmZvbnROYW1lLHNl
bGYuZm9udFNpemUsc2VsZi5lbmNvZGluZykKKyAgICAgICAgdyA9IHN0cmluZ1dpZHRoKHQs
c2VsZi5mb250TmFtZSxzZWxmLmZvbnRTaXplKQogICAgICAgICB0QSA9IHNlbGYudGV4dEFu
Y2hvcgogICAgICAgICB4ID0gc2VsZi54CiAgICAgICAgIGlmIHRBIT0nc3RhcnQnOgpAQCAt
MTU0Miw3ICsxNTQyLDcgQEAgY2xhc3MgU3RyaW5nKFNoYXBlKToKICAgICAgICAgICAgIGVs
aWYgdEE9PSdlbmQnOgogICAgICAgICAgICAgICAgIHggLT0gdwogICAgICAgICAgICAgZWxp
ZiB0QT09J251bWVyaWMnOgotICAgICAgICAgICAgICAgIHggLT0gbnVtZXJpY1hTaGlmdCh0
QSx0LHcsc2VsZi5mb250TmFtZSxzZWxmLmZvbnRTaXplLHNlbGYuZW5jb2RpbmcpCisgICAg
ICAgICAgICAgICAgeCAtPSBudW1lcmljWFNoaWZ0KHRBLHQsdyxzZWxmLmZvbnROYW1lLHNl
bGYuZm9udFNpemUpCiAgICAgICAgIHJldHVybiAoeCwgc2VsZi55IC0gMC4yICogc2VsZi5m
b250U2l6ZSwgeCt3LCBzZWxmLnkgKyBzZWxmLmZvbnRTaXplKQogCiBjbGFzcyBVc2VyTm9k
ZShfRHJhd1RpbWVSZXNpemVhYmxlKToKZGlmZiAtLWdpdCBhL3NyYy9yZXBvcnRsYWIvZ3Jh
cGhpY3MvdGVzdHNoYXBlcy5weSBiL3NyYy9yZXBvcnRsYWIvZ3JhcGhpY3MvdGVzdHNoYXBl
cy5weQppbmRleCBlODc0NGJkOC4uZWQ4ZTljNDYgMTAwNjQ0Ci0tLSBhL3NyYy9yZXBvcnRs
YWIvZ3JhcGhpY3MvdGVzdHNoYXBlcy5weQorKysgYi9zcmMvcmVwb3J0bGFiL2dyYXBoaWNz
L3Rlc3RzaGFwZXMucHkKQEAgLTExMiw3ICsxMTIsNyBAQCBkZWYgZ2V0RHJhd2luZzAxKCk6
CiAgICAgRCA9IERyYXdpbmcoNDAwLCAyMDApCiAgICAgRC5hZGQoUmVjdCg1MCwgNTAsIDMw
MCwgMTAwLCBmaWxsQ29sb3I9Y29sb3JzLnllbGxvdykpCiAgICAgRC5hZGQoU3RyaW5nKDE4
MCwxMDAsICdIZWxsbyBXb3JsZCcsIGZpbGxDb2xvcj1jb2xvcnMucmVkKSkKLSAgICBELmFk
ZChTdHJpbmcoMTgwLDg2LCBiJ1NwZWNpYWwgY2hhcmFjdGVycyBceGMyXHhhMlx4YzJceGE5
XHhjMlx4YWVceGMyXHhhM1x4Y2VceGIxXHhjZVx4YjInLCBmaWxsQ29sb3I9Y29sb3JzLnJl
ZCkpCisgICAgRC5hZGQoU3RyaW5nKDE4MCw4NiwgJ1NwZWNpYWwgY2hhcmFjdGVycyBceGEy
XHhhOVx4YWVceGEzXHUwM2IxXHUwM2IyJywgZmlsbENvbG9yPWNvbG9ycy5yZWQpKQogCiAg
ICAgcmV0dXJuIEQKIApkaWZmIC0tZ2l0IGEvc3JjL3JlcG9ydGxhYi9saWIvdmFsaWRhdG9y
cy5weSBiL3NyYy9yZXBvcnRsYWIvbGliL3ZhbGlkYXRvcnMucHkKaW5kZXggZmY0ZTcyYzMu
LjZjM2M5ZGU1IDEwMDY0NAotLS0gYS9zcmMvcmVwb3J0bGFiL2xpYi92YWxpZGF0b3JzLnB5
CisrKyBiL3NyYy9yZXBvcnRsYWIvbGliL3ZhbGlkYXRvcnMucHkKQEAgLTUsNyArNSw3IEBA
IF9fdmVyc2lvbl9fPSczLjUuMzMnCiBfX2RvY19fPSIiIlN0YW5kYXJkIHZlcmlmeWluZyBm
dW5jdGlvbnMgdXNlZCBieSBhdHRybWFwLiIiIgogCiBpbXBvcnQgY29kZWNzLCByZQotZnJv
bSByZXBvcnRsYWIubGliLnV0aWxzIGltcG9ydCBpc1NlcSwgaXNCeXRlcywgaXNTdHIKK2Zy
b20gcmVwb3J0bGFiLmxpYi51dGlscyBpbXBvcnQgaXNTZXEsIGlzQnl0ZXMsIGlzU3RyLCBp
c1VuaWNvZGUKIGZyb20gcmVwb3J0bGFiLmxpYiBpbXBvcnQgY29sb3JzCiB0cnk6CiAgICAg
X3JlX1BhdHRlcm4gPSByZS5QYXR0ZXJuCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIF9pc0Jv
b2xlYW4oVmFsaWRhdG9yKToKIAogY2xhc3MgX2lzU3RyaW5nKFZhbGlkYXRvcik6CiAgICAg
ZGVmIHRlc3Qoc2VsZix4KToKLSAgICAgICAgcmV0dXJuIGlzU3RyKHgpCisgICAgICAgIHJl
dHVybiBpc1VuaWNvZGUoeCkKIAogY2xhc3MgX2lzQ29kZWMoVmFsaWRhdG9yKToKICAgICBk
ZWYgdGVzdChzZWxmLHgpOgpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdF9wZGZiYXNlX2VuY29k
aW5ncy5weSBiL3Rlc3RzL3Rlc3RfcGRmYmFzZV9lbmNvZGluZ3MucHkKaW5kZXggNmJmYWZk
NTMuLjZlYzM4MWEzIDEwMDY0NAotLS0gYS90ZXN0cy90ZXN0X3BkZmJhc2VfZW5jb2Rpbmdz
LnB5CisrKyBiL3Rlc3RzL3Rlc3RfcGRmYmFzZV9lbmNvZGluZ3MucHkKQEAgLTE1LDggKzE1
LDggQEAgaW1wb3J0IGNvZGVjcwogdGV4dFBhdCA9IHJlLmNvbXBpbGUocidcKFteKF0qXCkn
KQogCiAjdGVzdCBzZW50ZW5jZXMKLXRlc3RDcDEyNTIgPSBiJ2NvcHlyaWdodCBceGE5IHRy
YWRlbWFyayBceDk5IHJlZ2lzdGVyZWQgXHhhZSBSZXBvcnRMYWIhIE9sXHhlOSEnCi10ZXN0
VW5pID0gdGVzdENwMTI1Mi5kZWNvZGUoJ2NwMTI1MicpCit0ZXN0VW5pID0gJ2NvcHlyaWdo
dCBceGE5IHRyYWRlbWFyayBcdTIxMjIgcmVnaXN0ZXJlZCBceGFlIFJlcG9ydExhYiEgT2xc
eGU5IScKK3Rlc3RDcDEyNTIgPSB0ZXN0VW5pLmVuY29kZSgnY3AxMjUyJykKIHRlc3RVVEY4
ID0gdGVzdFVuaS5lbmNvZGUoJ3V0Zi04JykKICMgZXhwZWN0ZWQgcmVzdWx0IGlzIG9jdGFs
LWVzY2FwZWQgdGV4dCBpbiB0aGUgUERGCiBleHBlY3RlZENwMTI1MiA9IGVzY2FwZVBERih0
ZXN0Q3AxMjUyKQpAQCAtMTM4LDE4ICsxMzgsNiBAQCBjbGFzcyBUZXh0RW5jb2RpbmdUZXN0
Q2FzZShOZWFyVGVzdENhc2UpOgogICAgICAgICBwNC5kcmF3T24oYywgMzAwLCAzMDApCiAg
ICAgICAgIGMucmVjdCgzMDAsMzAwLHcsaCkKIAotICAgICAgICAjIG5vdyBhIGdyYXBoaWMK
LSAgICAgICAgZDEgPSBEcmF3aW5nKDQwMCw1MCkKLSAgICAgICAgZDEuYWRkKEVsbGlwc2Uo
MjAwLDI1LDIwMCwxMi41LCBmaWxsQ29sb3I9Tm9uZSkpCi0gICAgICAgIGQxLmFkZChTdHJp
bmcoMjAwLDI1LHRlc3RVVEY4LCB0ZXh0QW5jaG9yPSdtaWRkbGUnLCBlbmNvZGluZz0ndXRm
LTgnKSkKLSAgICAgICAgZDEuZHJhd09uKGMsIDEwMCwgMTUwKQotCi0gICAgICAgICMgbm93
IGEgZ3JhcGhpYyBpbiB1dGY4Ci0gICAgICAgIGQyID0gRHJhd2luZyg0MDAsNTApCi0gICAg
ICAgIGQyLmFkZChFbGxpcHNlKDIwMCwyNSwyMDAsMTIuNSwgZmlsbENvbG9yPU5vbmUpKQot
ICAgICAgICBkMi5hZGQoU3RyaW5nKDIwMCwyNSx0ZXN0VVRGOCwgZm9udE5hbWU9J1ZlcmEn
LCB0ZXh0QW5jaG9yPSdtaWRkbGUnLCBlbmNvZGluZz0ndXRmLTgnKSkKLSAgICAgICAgZDIu
ZHJhd09uKGMsIDEwMCwgMTAwKQotCiAgICAgICAgICMgbm93IGEgZ3JhcGhpYyBpbiBVbmlj
b2RlIHdpdGggVDEgZm9udAogICAgICAgICBkMyA9IERyYXdpbmcoNDAwLDUwKQogICAgICAg
ICBkMy5hZGQoRWxsaXBzZSgyMDAsMjUsMjAwLDEyLjUsIGZpbGxDb2xvcj1Ob25lKSkKZGlm
ZiAtLWdpdCBhL3Rlc3RzL3Rlc3RfcGxhdHlwdXNfcGFyYXBhcnNlci5weSBiL3Rlc3RzL3Rl
c3RfcGxhdHlwdXNfcGFyYXBhcnNlci5weQppbmRleCA5ZWU1MTM4OC4uNzIwZTFjNTcgMTAw
NjQ0Ci0tLSBhL3Rlc3RzL3Rlc3RfcGxhdHlwdXNfcGFyYXBhcnNlci5weQorKysgYi90ZXN0
cy90ZXN0X3BsYXR5cHVzX3BhcmFwYXJzZXIucHkKQEAgLTYyLDkgKzYyLDkgQEAgY2xhc3Mg
UGFyYVBhcnNlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0
RW50aXR5KHNlbGYpOgogICAgICAgICAiTnVtZXJpYyBlbnRpdGllcyBzaG91bGQgYmUgdW5l
c2NhcGVkIGJ5IHBhcnNlciIKLSAgICAgICAgdHh0ID0gYiJIZWxsbyAmIzE2OTsgY29weXJp
Z2h0IgorICAgICAgICB0eHQgPSAiSGVsbG8gJiMxNjk7IGNvcHlyaWdodCIKICAgICAgICAg
ZnJhZ0xpc3QgPSBQYXJhUGFyc2VyKCkucGFyc2UodHh0LCBzZWxmLnN0eWxlKVsxXQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFt4LnRleHQgZm9yIHggaW4gZnJhZ0xpc3RdLCBbdSdI
ZWxsbyAnLCB1J1x4YTknLCB1JyBjb3B5cmlnaHQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbeC50ZXh0IGZvciB4IGluIGZyYWdMaXN0XSwgWydIZWxsbyAnLCAnXHhhOScsICcg
Y29weXJpZ2h0J10pCiAKICAgICBkZWYgdGVzdEVzY2FwZWQoc2VsZik6CiAgICAgICAgICJF
c2NhcGVkIGhpZ2gtYml0IHN0dWZmIHNob3VsZCBnbyBzdHJhaWdodCB0aHJvdWdoIgotLSAK
Mi4zMC4yCgo=

--------------qt20xFsF6b9G1Z0yi8txk4cS
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline