mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
* common: implement remaining builtin text codecs Move utf-16/32/7, unicode-escape, raw-unicode-escape and the bytes escape transform into rustpython-common and call them from _codecs instead of _pycodecs. Assisted-by: Claude:grok-4.6 * host_env: share locale grouping, uuid and pipe state Add localeconv_numeric so grouping keeps a CHAR_MAX terminator, UuidCreateSequential for _uuid, and GetNamedPipeHandleStateW. Assisted-by: Claude:grok-4.6 * Fix utf-7 clippy and the utf-16-be snippet length Assisted-by: Claude:grok-4.6 * codecs: treat escape decode as final and accept str unicode_escape_decode and raw_unicode_escape_decode default final to true and accept a str as UTF-8. Fix clippy on wide_order, escape encode, and encode closures. Remove expectedFailure markers that now pass. Assisted-by: Grok:grok-4.6
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
# Shared wide / escape codecs from rustpython-common.
|
|
|
|
assert "hi".encode("utf-16-le") == b"h\x00i\x00"
|
|
assert "hi".encode("utf-16-be") == b"\x00h\x00i"
|
|
assert b"h\x00i\x00".decode("utf-16-le") == "hi"
|
|
assert b"\x00h\x00i".decode("utf-16-be") == "hi"
|
|
|
|
# BOM form: native utf-16 writes a BOM and decodes it back.
|
|
assert "hi".encode("utf-16").decode("utf-16") == "hi"
|
|
assert "hi".encode("utf-32").decode("utf-32") == "hi"
|
|
assert "hi".encode("utf-32-le") == b"h\x00\x00\x00i\x00\x00\x00"
|
|
assert b"h\x00\x00\x00i\x00\x00\x00".decode("utf-32-le") == "hi"
|
|
|
|
assert "café".encode("unicode-escape") == b"caf\\xe9"
|
|
assert b"caf\\xe9".decode("unicode-escape") == "café"
|
|
assert "A\u0100".encode("raw-unicode-escape") == b"A\\u0100"
|
|
assert b"A\\u0100".decode("raw-unicode-escape") == "A\u0100"
|
|
|
|
assert "+".encode("utf-7") == b"+-"
|
|
assert b"+-".decode("utf-7") == "+"
|
|
|
|
import _codecs
|
|
|
|
assert _codecs.escape_encode(b"a\tb") == (b"a\\tb", 3)
|
|
assert _codecs.escape_decode(rb"a\tb") == (b"a\tb", 4)
|
|
assert _codecs.utf_16_ex_decode(b"\xff\xfeh\x00i\x00", "strict", 0, True)[0] == "hi"
|
|
assert (
|
|
_codecs.utf_32_ex_decode(b"\xff\xfe\x00\x00h\x00\x00\x00", "strict", 0, True)[0]
|
|
== "h"
|
|
)
|