mirror of
https://github.com/micropython/micropython.git
synced 2025-12-21 04:10:15 +01:00
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c5_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_p4) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_hardfp) (push) Has been cancelled
qemu port / build_and_test_arm (thumb_softfp) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
qemu port / build_and_test_rv64 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / repr_b (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, true, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, true, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, true, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
This does not actually cover any additional lines, but it does cover new functionality not previously covered. Signed-off-by: Jeff Epler <jepler@unpythonic.net>
93 lines
2.1 KiB
Python
93 lines
2.1 KiB
Python
def f():
|
|
return 4
|
|
def g(_):
|
|
return 5
|
|
def h():
|
|
return 6
|
|
|
|
print(f'no interpolation')
|
|
print(f"no interpolation")
|
|
print(f"""no interpolation""")
|
|
|
|
x, y = 1, 2
|
|
print(f'{x}')
|
|
print(f'{x:08x}')
|
|
print(f'a {x} b {y} c')
|
|
print(f'a {x:08x} b {y} c')
|
|
|
|
print(f'a {"hello"} b')
|
|
print(f'a {f() + g("foo") + h()} b')
|
|
|
|
def foo(a, b):
|
|
return f'{x}{y}{a}{b}'
|
|
print(foo(7, 8))
|
|
|
|
# ':' character within {...} that should not be interpreted as format specifiers.
|
|
print(f"a{[0,1,2][0:2]}")
|
|
print(f"a{[0,15,2][0:2][-1]:04x}")
|
|
|
|
# Nested '{' and '}' characters.
|
|
print(f"a{ {0,1,2}}")
|
|
|
|
# PEP-0498 specifies that handling of double braces '{{' or '}}' should
|
|
# behave like str.format.
|
|
print(f'{{}}')
|
|
print(f'{{{4*10}}}', '{40}')
|
|
|
|
# A single closing brace, unlike str.format should raise a syntax error.
|
|
# MicroPython instead raises ValueError at runtime from the substitution.
|
|
try:
|
|
eval("f'{{}'")
|
|
except (ValueError, SyntaxError):
|
|
# MicroPython incorrectly raises ValueError here.
|
|
print('SyntaxError')
|
|
|
|
# Allow literal tuples
|
|
print(f"a {1,} b")
|
|
print(f"a {x,y,} b")
|
|
print(f"a {x,1} b")
|
|
|
|
# f-strings with conversion specifiers (only support !r and !s).
|
|
a = "123"
|
|
print(f"{a!r}")
|
|
print(f"{a!s}")
|
|
try:
|
|
eval('print(f"{a!x}")')
|
|
except (ValueError, SyntaxError):
|
|
# CPython detects this at compile time, MicroPython fails with ValueError
|
|
# when the str.format is executed.
|
|
print("ValueError")
|
|
|
|
# Mixing conversion specifiers with formatting.
|
|
print(f"{a!r:8s}")
|
|
print(f"{a!s:8s}")
|
|
|
|
# Still allow ! in expressions.
|
|
print(f"{'1' if a != '456' else '0'!r:8s}")
|
|
print(f"{'1' if a != '456' else '0'!s:8s}")
|
|
|
|
# Concatenation of adjacent f-strings.
|
|
print(f"" f"")
|
|
print(f"a" f"b")
|
|
print(f"{x}" f"{y}")
|
|
print(
|
|
f"a{x}b---------------------------------"
|
|
f"cd---------------------------------"
|
|
f"e{y}f---------------------------------"
|
|
)
|
|
|
|
# Raw f-strings.
|
|
print(rf"\r\a\w {'f'} \s\t\r\i\n\g")
|
|
print(fr"\r{x}")
|
|
|
|
# Format specifiers with nested replacement fields
|
|
space = 5
|
|
prec = 2
|
|
print(f"{3.14:{space}.{prec}}")
|
|
|
|
space_prec = "5.2"
|
|
print(f"{3.14:{space_prec}}")
|
|
|
|
radix = "x"
|
|
print(f"{314:{radix}}")
|