Skip to content

Update dependencies#6872

Open
snejus wants to merge 1 commit into
masterfrom
update-deps
Open

Update dependencies#6872
snejus wants to merge 1 commit into
masterfrom
update-deps

Conversation

@snejus

@snejus snejus commented Jul 24, 2026

Copy link
Copy Markdown
Member
image

Ignore the sdist stuff, my uv.lock parser is in very early stages 😅

Copilot AI review requested due to automatic review settings July 24, 2026 16:07
@snejus
snejus requested a review from a team as a code owner July 24, 2026 16:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.

@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

❌ 19 Tests Failed:

Tests completed Failed Passed Skipped
2620 19 2601 112
View the top 3 failed test(s) by shortest run time
test\test_plugins.py::test_plugins::TestImportPlugin::test_import_plugin['autobpm']
Stack Traces | 0.004s run time
self = <test.test_plugins.TestImportPlugin object at 0x000001F2BAC32580>
caplog = <_pytest.logging.LogCaptureFixture object at 0x000001F2BAD6C9F0>
plugin_name = 'autobpm'

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.skipif(#x1B[90m#x1B[39;49;00m
        #x1B[95mnot#x1B[39;49;00m RUNNING_IN_CI,#x1B[90m#x1B[39;49;00m
        reason=(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mRequires all dependencies to be installed, which we can#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33m guarantee in the local environment.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ),#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_import_plugin#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, caplog, plugin_name):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Test that a plugin is importable without an error."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        caplog.set_level(logging.WARNING)#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.load_plugins(plugin_name)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33mPluginImportError#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m caplog.text, (#x1B[90m#x1B[39;49;00m
            #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mPlugin #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mplugin_name#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m has issues during import.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: Plugin 'autobpm' has issues during import.#x1B[0m
#x1B[1m#x1B[31mE       assert 'PluginImportError' not in 'WARNING  be...in autobpm\n'#x1B[0m
#x1B[1m#x1B[31mE         #x1B[0m
#x1B[1m#x1B[31mE         'PluginImportError' is contained here:#x1B[0m
#x1B[1m#x1B[31mE               raise PluginImportError(name) from exc#x1B[0m
#x1B[1m#x1B[31mE         ?           +++++++++++++++++#x1B[0m
#x1B[1m#x1B[31mE           beets.plugins.PluginImportError: Could not import plugin autobpm#x1B[0m

#x1B[1m#x1B[31mtest\test_plugins.py#x1B[0m:509: AssertionError
test\test_plugins.py::test_plugins::TestImportPlugin::test_import_plugin['chroma']
Stack Traces | 0.005s run time
self = <test.test_plugins.TestImportPlugin object at 0x000001F2BAD14350>
caplog = <_pytest.logging.LogCaptureFixture object at 0x000001F2BAD6D1D0>
plugin_name = 'chroma'

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.skipif(#x1B[90m#x1B[39;49;00m
        #x1B[95mnot#x1B[39;49;00m RUNNING_IN_CI,#x1B[90m#x1B[39;49;00m
        reason=(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mRequires all dependencies to be installed, which we can#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33m guarantee in the local environment.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ),#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_import_plugin#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, caplog, plugin_name):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Test that a plugin is importable without an error."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        caplog.set_level(logging.WARNING)#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.load_plugins(plugin_name)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33mPluginImportError#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m caplog.text, (#x1B[90m#x1B[39;49;00m
            #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mPlugin #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mplugin_name#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m has issues during import.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: Plugin 'chroma' has issues during import.#x1B[0m
#x1B[1m#x1B[31mE       assert 'PluginImportError' not in 'WARNING  be...gin chroma\n'#x1B[0m
#x1B[1m#x1B[31mE         #x1B[0m
#x1B[1m#x1B[31mE         'PluginImportError' is contained here:#x1B[0m
#x1B[1m#x1B[31mE               raise PluginImportError(name) from exc#x1B[0m
#x1B[1m#x1B[31mE         ?           +++++++++++++++++#x1B[0m
#x1B[1m#x1B[31mE           beets.plugins.PluginImportError: Could not import plugin chroma#x1B[0m

#x1B[1m#x1B[31mtest\test_plugins.py#x1B[0m:509: AssertionError
test\test_plugins.py::test_plugins::TestImportPlugin::test_import_plugin['sonosupdate']
Stack Traces | 0.005s run time
self = <test.test_plugins.TestImportPlugin object at 0x000001F2BAD60DC0>
caplog = <_pytest.logging.LogCaptureFixture object at 0x000001F2BAD88BB0>
plugin_name = 'sonosupdate'

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.mark.skipif(#x1B[90m#x1B[39;49;00m
        #x1B[95mnot#x1B[39;49;00m RUNNING_IN_CI,#x1B[90m#x1B[39;49;00m
        reason=(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mRequires all dependencies to be installed, which we can#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33mt#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33m guarantee in the local environment.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        ),#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_import_plugin#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, caplog, plugin_name):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Test that a plugin is importable without an error."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        caplog.set_level(logging.WARNING)#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.load_plugins(plugin_name)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[33m"#x1B[39;49;00m#x1B[33mPluginImportError#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[95min#x1B[39;49;00m caplog.text, (#x1B[90m#x1B[39;49;00m
            #x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33mPlugin #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mplugin_name#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m has issues during import.#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: Plugin 'sonosupdate' has issues during import.#x1B[0m
#x1B[1m#x1B[31mE       assert 'PluginImportError' not in 'WARNING  be...onosupdate\n'#x1B[0m
#x1B[1m#x1B[31mE         #x1B[0m
#x1B[1m#x1B[31mE         'PluginImportError' is contained here:#x1B[0m
#x1B[1m#x1B[31mE               raise PluginImportError(name) from exc#x1B[0m
#x1B[1m#x1B[31mE         ?           +++++++++++++++++#x1B[0m
#x1B[1m#x1B[31mE           beets.plugins.PluginImportError: Could not import plugin sonosupdate#x1B[0m

#x1B[1m#x1B[31mtest\test_plugins.py#x1B[0m:509: AssertionError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtOperationConfiguration::test_enforce_ratio
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtOperationConfiguration object at 0x000001F2B28CF390>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_enforce_ratio#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.enforce_ratio = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1002: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtOperationConfiguration::test_enforce_ratio_with_percent_margin
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtOperationConfiguration object at 0x000001F2B1679940>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_enforce_ratio_with_percent_margin#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.enforce_ratio = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        diff_by_width = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH_HEIGHT_DIFF / #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.margin_percent = diff_by_width * #x1B[94m0.5#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1021: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtOperationConfiguration::test_enforce_ratio_with_px_margin
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtOperationConfiguration object at 0x000001F2B1679810>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_enforce_ratio_with_px_margin#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.enforce_ratio = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.margin_px = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH_HEIGHT_DIFF * #x1B[94m0.5#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
                   ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1011: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtOperationConfiguration::test_minwidth
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtOperationConfiguration object at 0x000001F2B28CF250>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_minwidth#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.minwidth = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH / #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:995: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_deinterlaced
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B14C5040>
deinterlacer_mock = <MagicMock name='deinterlace' id='2142088351088'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_deinterlaced#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, deinterlacer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.deinterlace = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1074: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_deinterlaced_and_resized
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B16AA050>
resizer_mock = <MagicMock name='resize' id='2142088351760'>
deinterlacer_mock = <MagicMock name='deinterlace' id='2142088352096'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_deinterlaced_and_resized#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, resizer_mock, deinterlacer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.maxwidth = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH / #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.deinterlace = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1085: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_file_not_resized
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B1679A70>
resizer_mock = <MagicMock name='resize' id='2142088350080'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_file_not_resized#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, resizer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.max_filesize = #x1B[96mself#x1B[39;49;00m.IMAGE_FILESIZE#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1057: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_file_resized
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B28CF610>
resizer_mock = <MagicMock name='resize' id='2142088348736'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_file_resized#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, resizer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.max_filesize = #x1B[96mself#x1B[39;49;00m.IMAGE_FILESIZE // #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1052: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_file_resized_and_scaled
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B28AF9B0>
resizer_mock = <MagicMock name='resize' id='2142088350752'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_file_resized_and_scaled#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, resizer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.maxwidth = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH / #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.max_filesize = #x1B[96mself#x1B[39;49;00m.IMAGE_FILESIZE // #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1069: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_file_resized_but_not_scaled
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B1679BA0>
resizer_mock = <MagicMock name='resize' id='2142088350416'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_file_resized_but_not_scaled#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, resizer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.maxwidth = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH * #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.max_filesize = #x1B[96mself#x1B[39;49;00m.IMAGE_FILESIZE // #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1063: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_art.py::plugins::test_art::TestAlbumArtPerformOperation::test_resize
Stack Traces | 0.008s run time
self = <test.plugins.test_art.TestAlbumArtPerformOperation object at 0x000001F2B28CF4D0>
resizer_mock = <MagicMock name='resize' id='2142088347728'>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_resize#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, resizer_mock):#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.plugin.maxwidth = #x1B[96mself#x1B[39;49;00m.IMAGE_WIDTH / #x1B[94m2#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.get_album_art()#x1B[90m#x1B[39;49;00m
               ^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:1047: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mtest\plugins\test_art.py#x1B[0m:982: in get_album_art
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.plugin.art_for_album(Album(), [#x1B[33m"#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94mTrue#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:1586: in art_for_album
    #x1B[0m#x1B[94mif#x1B[39;49;00m candidate.validate(#x1B[96mself#x1B[39;49;00m) != ImageAction.BAD:#x1B[90m#x1B[39;49;00m
       ^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:232: in validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m._check = #x1B[96mself#x1B[39;49;00m._validate(plugin, skip_check_for)#x1B[90m#x1B[39;49;00m
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeetsplug\fetchart.py#x1B[0m:127: in _validate
    #x1B[0m#x1B[96mself#x1B[39;49;00m.size = ArtResizer.shared.get_size(#x1B[96mself#x1B[39;49;00m.path)#x1B[90m#x1B[39;49;00m
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.util.artresizer.ArtResizer object at 0x000001F2BA1BD940>
path_in = b'D:\\a\\beets\\beets\\test\\rsrc\\abbey-similar.jpg'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_size#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, path_in: #x1B[96mbytes#x1B[39;49;00m) -> #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, #x1B[96mint#x1B[39;49;00m] | #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Return the size of an image file as an int couple (width, height)#x1B[39;49;00m
    #x1B[33m    in pixels.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Only available locally.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method #x1B[95mis#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.local_method.get_size(path_in)#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mRuntimeError#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mimage cannot be obtained without artresizer backend#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       RuntimeError: image cannot be obtained without artresizer backend#x1B[0m

#x1B[1m#x1B[31mbeets\util\artresizer.py#x1B[0m:743: RuntimeError
test\plugins\test_autobpm.py::plugins::test_autobpm::TestAutoBPMPlugin::test_command_force
Stack Traces | 0.029s run time
self = <test.plugins.test_autobpm.TestAutoBPMPlugin object at 0x000001F2B28E4050>
item = Item(year=0, discogs_artistid=0, albumtypes=[], catalognum='', barcode='', initial_key=None, isrc='', bitrate_mode='',...e='tïtle 1', original_year=0, acoustid_fingerprint='', encoder_info='', artist_sort='', media='', r128_album_gain=None)

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_command_force#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, item):#x1B[90m#x1B[39;49;00m
        item.bpm = #x1B[94m10#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        item.store()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[96mself#x1B[39;49;00m.run_command(#x1B[33m"#x1B[39;49;00m#x1B[33mautobpm#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_autobpm.py#x1B[0m:36: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mbeets\test\helper.py#x1B[0m:157: in run_command
    #x1B[0mbeets.ui._raw_main(#x1B[96mlist#x1B[39;49;00m(args))#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:902: in _raw_main
    #x1B[0msubcommand, suboptions, subargs = parser.parse_subcommand(subargs)#x1B[90m#x1B[39;49;00m
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.ui.SubcommandsOptionParser object at 0x000001F2BAA92490>
args = []

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mparse_subcommand#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Given the `args` left unused by a `parse_global_options`,#x1B[39;49;00m
    #x1B[33m    return the invoked subcommand, the subcommand options, and the#x1B[39;49;00m
    #x1B[33m    subcommand arguments.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Help is default command#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m args:#x1B[90m#x1B[39;49;00m
            args = [#x1B[33m"#x1B[39;49;00m#x1B[33mhelp#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        cmdname = args.pop(#x1B[94m0#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        subcommand = #x1B[96mself#x1B[39;49;00m._subcommand_for_name(cmdname)#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m subcommand:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m UserError(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33munknown command #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mcmdname#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           beets.exceptions.UserError: unknown command 'autobpm'#x1B[0m

#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:737: UserError
test\plugins\test_autobpm.py::plugins::test_autobpm::TestAutoBPMPlugin::test_command_overwrite
Stack Traces | 0.032s run time
self = <test.plugins.test_autobpm.TestAutoBPMPlugin object at 0x000001F2B167A3F0>
item = Item(year=0, discogs_artistid=0, albumtypes=[], catalognum='', barcode='', initial_key=None, isrc='', bitrate_mode='',...e='tïtle 1', original_year=0, acoustid_fingerprint='', encoder_info='', artist_sort='', media='', r128_album_gain=None)

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_command_overwrite#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, item):#x1B[90m#x1B[39;49;00m
        item.bpm = #x1B[94m10#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        item.store()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.unload_plugins()#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.config[#x1B[96mself#x1B[39;49;00m.plugin][#x1B[33m"#x1B[39;49;00m#x1B[33moverwrite#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m.load_plugins()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[96mself#x1B[39;49;00m.run_command(#x1B[33m"#x1B[39;49;00m#x1B[33mautobpm#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_autobpm.py#x1B[0m:52: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mbeets\test\helper.py#x1B[0m:157: in run_command
    #x1B[0mbeets.ui._raw_main(#x1B[96mlist#x1B[39;49;00m(args))#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:902: in _raw_main
    #x1B[0msubcommand, suboptions, subargs = parser.parse_subcommand(subargs)#x1B[90m#x1B[39;49;00m
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.ui.SubcommandsOptionParser object at 0x000001F2BAA925D0>
args = []

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mparse_subcommand#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Given the `args` left unused by a `parse_global_options`,#x1B[39;49;00m
    #x1B[33m    return the invoked subcommand, the subcommand options, and the#x1B[39;49;00m
    #x1B[33m    subcommand arguments.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Help is default command#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m args:#x1B[90m#x1B[39;49;00m
            args = [#x1B[33m"#x1B[39;49;00m#x1B[33mhelp#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        cmdname = args.pop(#x1B[94m0#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        subcommand = #x1B[96mself#x1B[39;49;00m._subcommand_for_name(cmdname)#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m subcommand:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m UserError(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33munknown command #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mcmdname#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           beets.exceptions.UserError: unknown command 'autobpm'#x1B[0m

#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:737: UserError
test\plugins\test_autobpm.py::plugins::test_autobpm::TestAutoBPMPlugin::test_command_quiet
Stack Traces | 0.036s run time
self = <test.plugins.test_autobpm.TestAutoBPMPlugin object at 0x000001F2B167A520>
item = Item(year=0, discogs_artistid=0, albumtypes=[], catalognum='', barcode='', initial_key=None, isrc='', bitrate_mode='',...e='tïtle 1', original_year=0, acoustid_fingerprint='', encoder_info='', artist_sort='', media='', r128_album_gain=None)
caplog = <_pytest.logging.LogCaptureFixture object at 0x000001F2BEA40950>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_command_quiet#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, item, caplog):#x1B[90m#x1B[39;49;00m
        item.bpm = #x1B[94m10#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        item.store()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mwith#x1B[39;49;00m caplog.at_level(#x1B[33m"#x1B[39;49;00m#x1B[33mDEBUG#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m):#x1B[90m#x1B[39;49;00m
>           #x1B[96mself#x1B[39;49;00m.run_command(#x1B[33m"#x1B[39;49;00m#x1B[33mautobpm#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, #x1B[33m"#x1B[39;49;00m#x1B[33m--quiet#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_autobpm.py#x1B[0m:61: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mbeets\test\helper.py#x1B[0m:157: in run_command
    #x1B[0mbeets.ui._raw_main(#x1B[96mlist#x1B[39;49;00m(args))#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:902: in _raw_main
    #x1B[0msubcommand, suboptions, subargs = parser.parse_subcommand(subargs)#x1B[90m#x1B[39;49;00m
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.ui.SubcommandsOptionParser object at 0x000001F2BE5E4E90>
args = ['--quiet']

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mparse_subcommand#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Given the `args` left unused by a `parse_global_options`,#x1B[39;49;00m
    #x1B[33m    return the invoked subcommand, the subcommand options, and the#x1B[39;49;00m
    #x1B[33m    subcommand arguments.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Help is default command#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m args:#x1B[90m#x1B[39;49;00m
            args = [#x1B[33m"#x1B[39;49;00m#x1B[33mhelp#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        cmdname = args.pop(#x1B[94m0#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        subcommand = #x1B[96mself#x1B[39;49;00m._subcommand_for_name(cmdname)#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m subcommand:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m UserError(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33munknown command #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mcmdname#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           beets.exceptions.UserError: unknown command 'autobpm'#x1B[0m

#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:737: UserError
test\plugins\test_autobpm.py::plugins::test_autobpm::TestAutoBPMPlugin::test_command
Stack Traces | 0.037s run time
self = <test.plugins.test_autobpm.TestAutoBPMPlugin object at 0x000001F2B28CFED0>
item = Item(year=0, discogs_artistid=0, albumtypes=[], catalognum='', barcode='', initial_key=None, isrc='', bitrate_mode='',...e='tïtle 1', original_year=0, acoustid_fingerprint='', encoder_info='', artist_sort='', media='', r128_album_gain=None)

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_command#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, item):#x1B[90m#x1B[39;49;00m
        item.bpm = #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        item.store()#x1B[90m#x1B[39;49;00m
>       #x1B[96mself#x1B[39;49;00m.run_command(#x1B[33m"#x1B[39;49;00m#x1B[33mautobpm#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtest\plugins\test_autobpm.py#x1B[0m:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
#x1B[1m#x1B[31mbeets\test\helper.py#x1B[0m:157: in run_command
    #x1B[0mbeets.ui._raw_main(#x1B[96mlist#x1B[39;49;00m(args))#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:902: in _raw_main
    #x1B[0msubcommand, suboptions, subargs = parser.parse_subcommand(subargs)#x1B[90m#x1B[39;49;00m
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <beets.ui.SubcommandsOptionParser object at 0x000001F2BE6A6E40>
args = []

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mparse_subcommand#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, args):#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Given the `args` left unused by a `parse_global_options`,#x1B[39;49;00m
    #x1B[33m    return the invoked subcommand, the subcommand options, and the#x1B[39;49;00m
    #x1B[33m    subcommand arguments.#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[90m# Help is default command#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m args:#x1B[90m#x1B[39;49;00m
            args = [#x1B[33m"#x1B[39;49;00m#x1B[33mhelp#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        cmdname = args.pop(#x1B[94m0#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        subcommand = #x1B[96mself#x1B[39;49;00m._subcommand_for_name(cmdname)#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m subcommand:#x1B[90m#x1B[39;49;00m
>           #x1B[94mraise#x1B[39;49;00m UserError(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33munknown command #x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mcmdname#x1B[33m}#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           beets.exceptions.UserError: unknown command 'autobpm'#x1B[0m

#x1B[1m#x1B[31mbeets\ui\__init__.py#x1B[0m:737: UserError
test\plugins\test_autobpm.py::plugins::test_autobpm::TestAutoBPMPlugin::test_import
Stack Traces | 0.36s run time
self = <test.plugins.test_autobpm.TestAutoBPMPlugin object at 0x000001F2B28AFBF0>
importer = <beets.test.helper.ImportSessionFixture object at 0x000001F2BE6A6120>

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_import#x1B[39;49;00m(#x1B[96mself#x1B[39;49;00m, importer):#x1B[90m#x1B[39;49;00m
        importer.run()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
>       #x1B[94massert#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.lib.items().get().bpm == #x1B[94m117#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: assert 0 == 117#x1B[0m
#x1B[1m#x1B[31mE        +  where 0 = Item(year=2001, discogs_artistid=0, albumtypes=[], catalognum='', barcode='', initial_key=None, isrc='', bitrate_mode=...ag Track 1', original_year=0, acoustid_fingerprint='', encoder_info='', artist_sort='', media='', r128_album_gain=None).bpm#x1B[0m
#x1B[1m#x1B[31mE        +    where Item(year=2001, discogs_artistid=0, albumtypes=[], catalognum='', barcode='', initial_key=None, isrc='', bitrate_mode=...ag Track 1', original_year=0, acoustid_fingerprint='', encoder_info='', artist_sort='', media='', r128_album_gain=None) = get()#x1B[0m
#x1B[1m#x1B[31mE        +      where get = <beets.dbcore.db.Results object at 0x000001F2BEA0ADF0>.get#x1B[0m
#x1B[1m#x1B[31mE        +        where <beets.dbcore.db.Results object at 0x000001F2BEA0ADF0> = items()#x1B[0m
#x1B[1m#x1B[31mE        +          where items = <beets.library.library.Library object at 0x000001F2BE19BAC0>.items#x1B[0m
#x1B[1m#x1B[31mE        +            where <beets.library.library.Library object at 0x000001F2BE19BAC0> = <test.plugins.test_autobpm.TestAutoBPMPlugin object at 0x000001F2B28AFBF0>.lib#x1B[0m

#x1B[1m#x1B[31mtest\plugins\test_autobpm.py#x1B[0m:71: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants