Source: luma.core Version: 2.4.0-1 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20231212 ftbfs-trixie
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > debian/rules build > dh build --with python3 --with sphinxdoc --buildsystem=pybuild > dh_update_autotools_config -O--buildsystem=pybuild > dh_autoreconf -O--buildsystem=pybuild > dh_auto_configure -O--buildsystem=pybuild > I: pybuild base:310: python3.11 setup.py config > running config > dh_auto_build -O--buildsystem=pybuild > I: pybuild base:310: /usr/bin/python3 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/sprite_system.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/mixin.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/image_composition.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/error.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/cmdline.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/const.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/lib.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/threadpool.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/render.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/bitmap_font.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/virtual.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/device.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/framebuffer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/ansi_color.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > copying luma/core/util.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/legacy > copying luma/core/legacy/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/legacy > copying luma/core/legacy/font.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/legacy > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface > copying luma/core/interface/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface > copying luma/core/interface/parallel.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface > copying luma/core/interface/serial.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/luma/core/interface > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:310: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build; python3.11 -m pytest > tests > ============================= test session starts > ============================== > platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0 -- > /usr/bin/python3.11 > cachedir: .pytest_cache > rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build > configfile: pytest.ini > collecting ... collected 210 items > > tests/test_ansi_color.py::test_parse_str_no_escape PASSED > tests/test_ansi_color.py::test_parse_str_valid_ansi_colors PASSED > tests/test_ansi_color.py::test_parse_str_valid_ansi_colors_extended_codeset > PASSED > tests/test_ansi_color.py::test_parse_str_multiple_ansi_colors PASSED > tests/test_ansi_color.py::test_parse_str_unknown_ansi_colors_ignored PASSED > tests/test_ansi_color.py::test_strip_ansi_codes PASSED > tests/test_bitbang.py::test_data PASSED > tests/test_bitbang.py::test_cleanup PASSED > tests/test_bitbang.py::test_cleanup_custom_pins PASSED > tests/test_bitbang.py::test_unsupported_gpio_platform SKIPPED (RPi.G...) > tests/test_bitmap_font.py::test_load_from_pillow_font SKIPPED > tests/test_bitmap_font.py::test_load_from_pillow_exceptions SKIPPED > tests/test_bitmap_font.py::test_mapping SKIPPED > tests/test_bitmap_font.py::test_load_sprite_table SKIPPED > tests/test_bitmap_font.py::test_load_sprite_table_exceptions_1 PASSED > tests/test_bitmap_font.py::test_load_sprite_table_exceptions_2 SKIPPED > tests/test_bitmap_font.py::test_dumps_loads_saves_load SKIPPED > tests/test_bitmap_font.py::test_loads_exception PASSED > tests/test_bitmap_font.py::test_combine PASSED > tests/test_bitmap_font.py::test_embedded_font PASSED > tests/test_bitmap_font.py::test_embedded_font_exceptions PASSED > tests/test_bitmap_font.py::test_metrics PASSED > tests/test_bitmap_font.py::test_glyph_index PASSED > tests/test_canvas.py::test_canvas_background FAILED > tests/test_canvas.py::test_canvas_wrong_size PASSED > tests/test_character.py::test_init SKIPPED > tests/test_character.py::test_setter_getter SKIPPED > tests/test_cmdline.py::test_get_interface_types PASSED > tests/test_cmdline.py::test_ensure_cmdline_opt_contains_all_interfaces PASSED > tests/test_cmdline.py::test_get_display_types PASSED > tests/test_cmdline.py::test_get_choices_unknown_module PASSED > tests/test_cmdline.py::test_get_library_version PASSED > tests/test_cmdline.py::test_get_library_for_display_type PASSED > tests/test_cmdline.py::test_load_config_file_parse PASSED > tests/test_cmdline.py::test_create_parser PASSED > tests/test_cmdline.py::test_make_interface_noop PASSED > tests/test_cmdline.py::test_make_interface_i2c PASSED > tests/test_cmdline.py::test_make_interface_spi SKIPPED (RPi.GPIO is ...) > tests/test_cmdline.py::test_make_interface_gpio_cs_spi SKIPPED (RPi....) > tests/test_cmdline.py::test_make_interface_spi_alt_gpio SKIPPED (spi...) > tests/test_cmdline.py::test_make_interface_bitbang SKIPPED (RPi.GPIO...) > tests/test_cmdline.py::test_make_interface_pcf8574 PASSED > tests/test_cmdline.py::test_make_interface_bitbang_6800 SKIPPED (RPi...) > tests/test_cmdline.py::test_make_interface_bitbang_6800_alt_gpio PASSED > tests/test_cmdline.py::test_create_device PASSED > tests/test_cmdline.py::test_create_device_oled SKIPPED (RPi.GPIO is ...) > tests/test_cmdline.py::test_create_device_lcd PASSED > tests/test_cmdline.py::test_create_device_led_matrix PASSED > tests/test_cmdline.py::test_create_device_emulator PASSED > tests/test_cmdline.py::test_create_device_core PASSED > tests/test_cmdline.py::test_make_interface_ftdi_spi PASSED > tests/test_cmdline.py::test_make_interface_ftdi_i2c PASSED > tests/test_dummy_device.py::test_capture_noops PASSED > tests/test_dummy_device.py::test_portrait PASSED > tests/test_dummy_device.py::test_dither PASSED > tests/test_framebuffer.py::test_full_frame PASSED > tests/test_framebuffer.py::test_diff_to_previous PASSED > tests/test_framebuffer.py::test_diff_to_previous_debug PASSED > tests/test_framerate_regulator.py::test_init_default PASSED > tests/test_framerate_regulator.py::test_init_unlimited PASSED > tests/test_framerate_regulator.py::test_init_30fps PASSED > tests/test_framerate_regulator.py::test_sleep PASSED > tests/test_framerate_regulator.py::test_effective_FPS PASSED > tests/test_framerate_regulator.py::test_average_transit_time PASSED > tests/test_ftdi_i2c.py::test_init PASSED > tests/test_ftdi_i2c.py::test_command PASSED > tests/test_ftdi_i2c.py::test_data PASSED > tests/test_ftdi_i2c.py::test_cleanup PASSED > tests/test_ftdi_i2c.py::test_init_device_address_error PASSED > tests/test_ftdi_spi.py::test_init PASSED > tests/test_ftdi_spi.py::test_command PASSED > tests/test_ftdi_spi.py::test_data PASSED > tests/test_ftdi_spi.py::test_cleanup PASSED > tests/test_gpio_cs_spi.py::test_init PASSED > tests/test_gpio_cs_spi.py::test_init_invalid_bus_speed PASSED > tests/test_gpio_cs_spi.py::test_command PASSED > tests/test_gpio_cs_spi.py::test_data PASSED > tests/test_gpio_cs_spi.py::test_cleanup PASSED > tests/test_gpio_cs_spi.py::test_init_device_not_found SKIPPED (spide...) > tests/test_gpio_cs_spi.py::test_unsupported_gpio_platform SKIPPED (R...) > tests/test_history.py::test_restore_throws_error_when_empty PASSED > tests/test_history.py::test_save_and_restore_reverts_image PASSED > tests/test_history.py::test_drop_and_restore PASSED > tests/test_i2c.py::test_init_device_not_found PASSED > tests/test_i2c.py::test_init_device_permission_error PASSED > tests/test_i2c.py::test_init_device_address_error PASSED > tests/test_i2c.py::test_init_no_bus PASSED > tests/test_i2c.py::test_init_bus_provided PASSED > tests/test_i2c.py::test_command PASSED > tests/test_i2c.py::test_i2c_command_device_not_found_error PASSED > tests/test_i2c.py::test_i2c_data PASSED > tests/test_i2c.py::test_i2c_data_chunked PASSED > tests/test_i2c.py::test_cleanup PASSED > tests/test_image_composition.py::test_composable_image_none PASSED > tests/test_image_composition.py::test_composable_image_image PASSED > tests/test_image_composition.py::test_composable_image_ctor PASSED > tests/test_image_composition.py::test_composable_image_crop_same PASSED > tests/test_image_composition.py::test_composable_image_crop_size_smaller_than_image_size > PASSED > tests/test_image_composition.py::test_composable_image_crop_size_greater_than_image_size > PASSED > tests/test_image_composition.py::test_composable_image_crop_offset PASSED > tests/test_image_composition.py::test_image_composition_ctor PASSED > tests/test_image_composition.py::test_image_add_image_none PASSED > tests/test_image_composition.py::test_image_remove_image_none PASSED > tests/test_image_composition.py::test_image_count PASSED > tests/test_image_composition.py::test_refresh_no_images PASSED > tests/test_image_composition.py::test_refresh PASSED > tests/test_legacy.py::test_textsize PASSED > tests/test_legacy.py::test_text_space PASSED > tests/test_legacy.py::test_text_char PASSED > tests/test_legacy.py::test_show_message PASSED > tests/test_legacy_fonts.py::test_font[ATARI_FONT] PASSED > tests/test_legacy_fonts.py::test_font[CP437_FONT] PASSED > tests/test_legacy_fonts.py::test_font[SINCLAIR_FONT] PASSED > tests/test_legacy_fonts.py::test_font[SPECCY_FONT] PASSED > tests/test_legacy_fonts.py::test_font[LCD_FONT] PASSED > tests/test_legacy_fonts.py::test_font[UKR_FONT] PASSED > tests/test_legacy_fonts.py::test_font[TINY_FONT] PASSED > tests/test_legacy_fonts.py::test_font[SEG7_FONT] PASSED > tests/test_lib.py::test_rpio_gpio PASSED > tests/test_lib.py::test_spidev PASSED > tests/test_lib.py::test_multi PASSED > tests/test_linux_framebuffer_device.py::test_display_id_as_dev_fb_number > SKIPPED > tests/test_linux_framebuffer_device.py::test_display_id_from_environ PASSED > tests/test_linux_framebuffer_device.py::test_unknown_display_id PASSED > tests/test_linux_framebuffer_device.py::test_read_screen_resolution PASSED > tests/test_linux_framebuffer_device.py::test_read_bits_per_pixel PASSED > tests/test_linux_framebuffer_device.py::test_display[16-False] SKIPPED > tests/test_linux_framebuffer_device.py::test_display[24-False] SKIPPED > tests/test_linux_framebuffer_device.py::test_display[24-True] SKIPPED > tests/test_linux_framebuffer_device.py::test_display[32-False] SKIPPED > tests/test_linux_framebuffer_device.py::test_display[32-True] SKIPPED > tests/test_linux_framebuffer_device.py::test_unsupported_bit_depth PASSED > tests/test_linux_framebuffer_device.py::test_cleanup PASSED > tests/test_mixin.py::test_display_not_implemented PASSED > tests/test_observable.py::test_length PASSED > tests/test_observable.py::test_iteration PASSED > tests/test_observable.py::test_getattribute PASSED > tests/test_observable.py::test_getitem PASSED > tests/test_observable.py::test_setitem PASSED > tests/test_observable.py::test_setslice PASSED > tests/test_observable.py::test_delitem PASSED > tests/test_observable.py::test_getslice PASSED > tests/test_observable.py::test_repr PASSED > tests/test_parallel.py::test_data PASSED > tests/test_parallel.py::test_wrong_number_of_pins PASSED > tests/test_parallel.py::test_cleanup PASSED > tests/test_parallel.py::test_unsupported_gpio_platform SKIPPED (RPi....) > tests/test_parallel_device.py::test_4bit PASSED > tests/test_parallel_device.py::test_8bit PASSED > tests/test_pcf8574.py::test_command PASSED > tests/test_pcf8574.py::test_i2c_command_device_not_found_error PASSED > tests/test_pcf8574.py::test_i2c_data PASSED > tests/test_pcf8574.py::test_cleanup PASSED > tests/test_persist.py::test_persist PASSED > tests/test_proportional.py::test_narrow_char PASSED > tests/test_proportional.py::test_wide_char PASSED > tests/test_proportional.py::test_space_char PASSED > tests/test_proportional.py::test_doublequote_char PASSED > tests/test_proportional.py::test_trim_not_nonzero PASSED > tests/test_proportional.py::test_unicode_not_supported PASSED > tests/test_sevensegment.py::test_init PASSED > tests/test_sevensegment.py::test_overflow PASSED > tests/test_sevensegment.py::test_setter_getter PASSED > tests/test_spi.py::test_init PASSED > tests/test_spi.py::test_init_invalid_bus_speed PASSED > tests/test_spi.py::test_command PASSED > tests/test_spi.py::test_data PASSED > tests/test_spi.py::test_cleanup PASSED > tests/test_spi.py::test_init_device_not_found SKIPPED (spidev is not...) > tests/test_spi.py::test_unsupported_gpio_platform SKIPPED (RPi.GPIO ...) > tests/test_spi.py::test_cs_high_ignored PASSED > tests/test_spritesheet.py::test_init PASSED > tests/test_spritesheet.py::test_len PASSED > tests/test_spritesheet.py::test_caching PASSED > tests/test_spritesheet.py::test_get PASSED > tests/test_spritesheet.py::test_get_string PASSED > tests/test_spritesheet.py::test_get_outofrange PASSED > tests/test_spritesheet.py::test_animate_unknown_seq PASSED > tests/test_spritesheet.py::test_animate_finite_seq PASSED > tests/test_spritesheet.py::test_animate_slow_seq PASSED > tests/test_spritesheet.py::test_animate_infinite_seq PASSED > tests/test_spritesheet.py::test_animate_subroutine PASSED > tests/test_terminal.py::test_default_text FAILED > tests/test_terminal.py::test_wrapped_text FAILED > tests/test_terminal.py::test_tab_alignment FAILED > tests/test_terminal.py::test_control_chars FAILED > tests/test_terminal.py::test_scrolling FAILED > tests/test_terminal.py::test_alt_colors FAILED > tests/test_terminal.py::test_ansi_colors FAILED > tests/test_terminal.py::test_ansi_colors_wrapped FAILED > tests/test_terminal.py::test_ansi_colors_scroll FAILED > tests/test_terminal.py::test_accented_charset SKIPPED > tests/test_tolerant.py::test_default PASSED > tests/test_tolerant.py::test_custom_missing PASSED > tests/test_tolerant.py::test_with_proportional PASSED > tests/test_util.py::test_mutablestring PASSED > tests/test_util.py::test_mutablestring_unicode PASSED > tests/test_util.py::test_from_16_to_8_to_16 PASSED > tests/test_util.py::test_bytes_to_nibbles PASSED > tests/test_viewport.py::test_range_overlap_over12 PASSED > tests/test_viewport.py::test_range_overlap_over123 PASSED > tests/test_viewport.py::test_range_overlap_over23 PASSED > tests/test_viewport.py::test_range_overlap_over234 PASSED > tests/test_viewport.py::test_range_overlap_over34 PASSED > tests/test_viewport.py::test_range_overlap_over4 PASSED > tests/test_viewport.py::test_range_overlap_over_none PASSED > tests/test_viewport.py::test_snapshot_last_updated PASSED > tests/test_viewport.py::test_viewport_set_position FAILED > tests/test_viewport.py::test_viewport_hotspot PASSED > tests/test_viewport.py::test_viewport_dithering PASSED > > =================================== FAILURES > =================================== > ____________________________ test_canvas_background > ____________________________ > > def test_canvas_background(): > img_path = get_reference_image('background.png') > with open(get_reference_image('dither.png'), 'rb') as p1: > with open(img_path, 'rb') as p2: > bgnd = Image.open(p1) > reference = Image.open(p2) > device = dummy() > > with canvas(device, background=bgnd) as draw: > draw.rectangle((20, 15, device.width - 20, device.height > - 15), > fill='black', outline='white') > draw.text((36, 22), 'Background', fill='white') > draw.text((52, 32), 'Test', fill='white') > > > assert_identical_image(reference, device.image, img_path) > > tests/test_canvas.py:34: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=1 size=128x64 at > 0x7F87B9276310> > target = <PIL.Image.Image image mode=1 size=128x64 at 0x7F87B7B7C310> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/background.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/background.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ______________________________ test_default_text > _______________________________ > > def test_default_text(): > reference = 'quick_brown_fox.png' > device = dummy() > term = terminal(device) > > > assert_text(device, term, reference, [ > "The quick brown fox jumps over the lazy dog" > ]) > > tests/test_terminal.py:40: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B58FB510> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58FAE50> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ______________________________ test_wrapped_text > _______________________________ > > def test_wrapped_text(): > reference = 'quick_brown_fox_word_wrap.png' > device = dummy() > term = terminal(device, word_wrap=True, animate=False) > > > assert_text(device, term, reference, [ > "The quick brown fox jumps over the lazy dog" > ]) > > tests/test_terminal.py:50: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B599A6D0> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B5998E50> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox_word_wrap.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/quick_brown_fox_word_wrap.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ______________________________ test_tab_alignment > ______________________________ > > def test_tab_alignment(): > reference = 'tab_align.png' > device = dummy() > term = terminal(device, animate=False) > > > assert_text(device, term, reference, [ > "1\t32\t999", > "999\t1\t32" > ]) > > tests/test_terminal.py:60: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B58FDF90> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B57ADB10> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/tab_align.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/tab_align.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ______________________________ test_control_chars > ______________________________ > > def test_control_chars(): > reference = 'control_chars.png' > device = dummy() > term = terminal(device, animate=False) > > > assert_text(device, term, reference, [ > 'foo\rbar\bspam\teggs\n\nham and cheese on rye' > ]) > > tests/test_terminal.py:71: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B5787390> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B5786C50> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/control_chars.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/control_chars.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ________________________________ test_scrolling > ________________________________ > > def test_scrolling(): > reference = 'scroll_text.png' > device = dummy() > term = terminal(device, animate=False) > > > assert_text(device, term, reference, [ > "it oozed over the blackness, and heard Harris's sleepy voice > asking " > "where we drew near it, so they spread their handkerchiefs on the > back " > "of Harris and Harris's friend as to avoid running down which, we > managed " > "to get out of here while this billing and cooing is on. We'll go > down " > "to eat vegetables. He said they were demons." > ]) > > tests/test_terminal.py:81: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B590E250> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B590D750> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/scroll_text.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/scroll_text.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > _______________________________ test_alt_colors > ________________________________ > > def test_alt_colors(): > reference = 'alt_colors.png' > device = dummy() > term = terminal(device, color="blue", bgcolor="grey", animate=False) > > > assert_text(device, term, reference, [ > "blue on grey" > ]) > > tests/test_terminal.py:95: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B57ADB90> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B57AC650> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/alt_colors.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/alt_colors.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > _______________________________ test_ansi_colors > _______________________________ > > def test_ansi_colors(): > reference = 'ansi_colors.png' > device = dummy() > term = terminal(device, animate=False) > > > assert_text(device, term, reference, [ > "hello \033[31mworld\033[0m ansi colors here!", > "this is \033[7mreversed\033[7m!", > "\033[44;37mBlue\033[0m \033[46;30mCyan" > ]) > > tests/test_terminal.py:105: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B57A2310> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58D7F50> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ___________________________ test_ansi_colors_wrapped > ___________________________ > > def test_ansi_colors_wrapped(): > reference = 'ansi_colors_wrapped.png' > device = dummy() > term = terminal(device, word_wrap=True, animate=False) > > > assert_text(device, term, reference, [ > "hello \033[31mworld\033[0m ansi colors\t\033[32mwrap\033[0m\t?", > "this is \033[7mreversed\033[7m!", > "\033[43;30mYellow\033[0m \033[45;37mMagenta" > ]) > > tests/test_terminal.py:117: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B584AA10> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B584A550> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_wrapped.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_wrapped.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > ___________________________ test_ansi_colors_scroll > ____________________________ > > def test_ansi_colors_scroll(): > reference = 'ansi_colors_scroll.png' > device = dummy() > term = terminal(device, word_wrap=True, animate=False) > > > assert_text(device, term, reference, [ > "hello \033[31mworld\033[0m ansi colors\t\033[32mwrap\033[0m\t?", > "this is \033[7mreversed\033[7m!", > "\033[43;30mYellow\033[0m \033[44;37mBlue abcdefg hijklmn", > "\033[41;30mRed\033[0m \033[42;37mGreen" > ]) > > tests/test_terminal.py:129: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_terminal.py:32: in assert_text > assert_identical_image(reference, device.image, img_path) > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B58FD450> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58FD8D0> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_scroll.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/ansi_colors_scroll.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > __________________________ test_viewport_set_position > __________________________ > > def test_viewport_set_position(): > img_path = get_reference_image('set_position.png') > > with open(img_path, 'rb') as p: > reference = Image.open(p) > device = dummy() > virtual = viewport(device, 200, 200) > > # Use the same drawing primitives as the demo > with canvas(virtual) as draw: > baseline_data.primitives(virtual, draw) > > virtual.set_position((20, 30)) > > > assert_identical_image(reference, device.image, img_path) > > tests/test_viewport.py:124: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > reference = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=128x64 at > 0x7F87B58D85D0> > target = <PIL.Image.Image image mode=RGB size=128x64 at 0x7F87B58D99D0> > img_path = > '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/set_position.png' > > def assert_identical_image(reference, target, img_path): > """ > :param img_path: Location of image. > :type img_path: str > """ > bbox = ImageChops.difference(reference, target).getbbox() > > assert bbox is None, f'{img_path} is not identical to generated image' > E AssertionError: > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build/tests/reference/images/set_position.png > is not identical to generated image > > tests/helpers.py:75: AssertionError > =========================== short test summary info > ============================ > SKIPPED [1] tests/test_bitbang.py:75: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_bitmap_font.py:152: Skipped > SKIPPED [1] tests/test_bitmap_font.py:169: Skipped > SKIPPED [1] tests/test_bitmap_font.py:198: Skipped > SKIPPED [1] tests/test_bitmap_font.py:219: Skipped > SKIPPED [1] tests/test_bitmap_font.py:246: Skipped > SKIPPED [1] tests/test_bitmap_font.py:262: Skipped > SKIPPED [1] tests/test_character.py:16: Skipped > SKIPPED [1] tests/test_character.py:25: Skipped > SKIPPED [1] tests/test_cmdline.py:192: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_cmdline.py:212: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_cmdline.py:233: spidev is not supported on this > platform: Linux > SKIPPED [1] tests/test_cmdline.py:248: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_cmdline.py:283: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_cmdline.py:342: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [2] tests/helpers.py:66: spidev is not supported on this platform: > Linux > SKIPPED [1] tests/test_gpio_cs_spi.py:104: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_linux_framebuffer_device.py:35: Skipped > SKIPPED [5] tests/test_linux_framebuffer_device.py:83: Skipped > SKIPPED [1] tests/test_parallel.py:83: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_spi.py:103: RPi.GPIO is not supported on this > platform: Linux > SKIPPED [1] tests/test_terminal.py:138: Skipped > ================== 11 failed, 172 passed, 27 skipped in 6.18s > ================== > E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_luma.core/build; python3.11 -m pytest > tests > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 > returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2023/12/12/luma.core_2.4.0-1_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.