music library manager and MusicBrainz tagger
This report summarizes scanner evidence for beetbox/beets, a Python project with 15,778 GitHub stars. SynthScan examined 117,978 lines of code across 359 source files, recording 1668 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 16.1 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1329 finding(s).
Are imports declared and package/API names verified? 238 finding(s).
Are wrappers, guards, and repeated structures necessary? 1265 finding(s).
Which changes need focused human review? 1668 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1668 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/test_library.py | 58 | def test_load_restores_data_from_db(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 64 | def test_load_clears_dirty_flags(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 72 | def test_store_changes_database_value(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 79 | def test_store_only_writes_dirty_fields(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 86 | def test_store_clears_dirty_flags(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 91 | def test_store_album_cascades_flex_deletes(self): | CODE |
| LOW⚡ | test/test_library.py | 171 | def test_set_does_not_dirty_if_value_unchanged(self, item): | CODE |
| LOW⚡ | test/test_library.py | 175 | def test_set_memoryview_path_normalizes_to_bytes(self, item): | CODE |
| LOW⚡ | test/test_library.py | 182 | def test_invalid_field_raises_attributeerror(self, item): | CODE |
| LOW⚡ | test/test_library.py | 207 | def test_directory_works_with_trailing_slash(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 212 | def test_directory_works_without_trailing_slash(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 217 | def test_destination_substitutes_metadata_values(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 225 | def test_destination_preserves_extension(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 231 | def test_lower_case_extension(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 237 | def test_destination_pads_some_indices(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 249 | def test_destination_pads_date_values(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 257 | def test_destination_escapes_slashes(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 265 | def test_destination_escapes_leading_dot(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 272 | def test_destination_preserves_legitimate_slashes(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 279 | def test_destination_long_names_truncated(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 285 | def test_destination_long_names_keep_extension(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 291 | def test_distination_windows_removes_both_separators(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 346 | def test_multi_value_string_query_path(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 355 | def test_multi_value_match_query_path(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 364 | def test_multi_value_string_query_path_no_substring_match(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 373 | def test_albumtype_query_path(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 397 | def test_get_formatted_does_not_replace_separators(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 404 | def test_get_formatted_pads_with_zero(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 410 | def test_get_formatted_uses_kbps_bitrate(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 416 | def test_get_formatted_uses_khz_samplerate(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 422 | def test_get_formatted_datetime(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 434 | def test_artist_falls_back_to_albumartist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 441 | def test_albumartist_falls_back_to_artist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 448 | def test_artist_overrides_albumartist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 455 | def test_albumartist_overrides_artist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 462 | def test_unicode_extension_in_fragment(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 469 | def test_asciify_character_expanding_to_slash(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 476 | def test_destination_with_replacements(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 484 | def test_destination_stays_in_basedir_with_empty_leading_field( | CODE |
| LOW⚡ | test/test_library.py | 528 | def test_album_field_in_template(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 538 | def test_formatted_item_value(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 547 | def test_get_method_with_default(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 551 | def test_get_method_with_specified_default(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 579 | def test_artist_falls_back_to_albumartist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 584 | def test_albumartist_falls_back_to_artist(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 589 | def test_both_artist_and_albumartist_empty(self, item_in_db): | CODE |
| LOW⚡ | test/test_library.py | 680 | def test_nonexistent_function(self, item): | CODE |
| LOW⚡ | test/test_library.py | 684 | def test_if_def_field_return_self(self, item): | CODE |
| LOW⚡ | test/test_library.py | 689 | def test_if_def_field_not_defined(self, item): | CODE |
| LOW⚡ | test/test_library.py | 742 | def test_unique_expands_to_disambiguating_year(self, items): | CODE |
| LOW⚡ | test/test_library.py | 746 | def test_unique_with_default_arguments_uses_albumtype(self, items): | CODE |
| LOW⚡ | test/test_library.py | 754 | def test_unique_expands_to_nothing_for_distinct_albums(self, items): | CODE |
| LOW⚡ | test/test_library.py | 762 | def test_adding_album_invalidates_memoized_result(self, items): | CODE |
| LOW⚡ | test/test_library.py | 888 | def test_sunique_expands_to_disambiguating_year(self, items): | CODE |
| LOW⚡ | test/test_library.py | 892 | def test_sunique_with_default_arguments_uses_trackdisambig(self, items): | CODE |
| LOW⚡ | test/test_library.py | 900 | def test_sunique_expands_to_nothing_for_distinct_singletons(self, items): | CODE |
| LOW⚡ | test/test_library.py | 908 | def test_unique_separates_raw_query_groups(self, items, singleton_first): | CODE |
| LOW⚡ | test/test_library.py | 939 | def test_store_invalidates_disambiguator(self, items): | CODE |
| LOW⚡ | test/test_library.py | 947 | def test_sunique_does_not_match_album(self, items): | CODE |
| LOW⚡ | test/test_library.py | 952 | def test_sunique_skips_config_for_album_item(self, items): | CODE |
| 1101 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_library.py | 3 | CODE | |
| LOW | test/conftest.py | 1 | CODE | |
| LOW | test/test_importer.py | 3 | CODE | |
| LOW | test/plugins/test_discogs.py | 3 | CODE | |
| LOW | test/plugins/test_albumtypes.py | 3 | CODE | |
| LOW | test/plugins/test_fetchart.py | 1 | CODE | |
| LOW | test/plugins/test_subsonicupdate.py | 3 | CODE | |
| LOW | test/plugins/conftest.py | 1 | CODE | |
| LOW | test/plugins/test_musicbrainz.py | 3 | CODE | |
| LOW | test/plugins/test_hook.py | 1 | CODE | |
| LOW | test/plugins/test_importadded_convert.py | 3 | CODE | |
| LOW | test/plugins/test_convert.py | 1 | CODE | |
| LOW | test/plugins/test_plexupdate.py | 3 | CODE | |
| LOW | test/plugins/test_mbpseudo.py | 1 | CODE | |
| LOW | test/plugins/test_tidal.py | 3 | CODE | |
| LOW | test/plugins/test_embedart.py | 1 | CODE | |
| LOW | test/plugins/lyrics_pages.py | 1 | CODE | |
| LOW | test/plugins/test_aura.py | 1 | CODE | |
| LOW | test/plugins/test_smartplaylist.py | 2 | CODE | |
| LOW | test/plugins/test_ftintitle.py | 3 | CODE | |
| LOW | test/plugins/test_lyrics.py | 3 | CODE | |
| LOW | test/plugins/test_importadded.py | 3 | CODE | |
| LOW | test/plugins/test_art.py | 3 | CODE | |
| LOW | beetsplug/duplicates.py | 3 | CODE | |
| LOW | beetsplug/replaygain.py | 1 | CODE | |
| LOW | beetsplug/fuzzy.py | 3 | CODE | |
| LOW | beetsplug/missing.py | 3 | CODE | |
| LOW | beetsplug/titlecase.py | 5 | CODE | |
| LOW | beetsplug/bucket.py | 3 | CODE | |
| LOW | beetsplug/_typing.py | 1 | CODE | |
| LOW | beetsplug/autobpm.py | 3 | CODE | |
| LOW | beetsplug/advancedrewrite.py | 3 | CODE | |
| LOW | beetsplug/acousticbrainz.py | 3 | CODE | |
| LOW | beetsplug/fetchart.py | 3 | CODE | |
| LOW | beetsplug/mbcollection.py | 1 | CODE | |
| LOW | beetsplug/convert.py | 3 | CODE | |
| LOW | beetsplug/plexupdate.py | 13 | CODE | |
| LOW | beetsplug/musicbrainz.py | 3 | CODE | |
| LOW | beetsplug/hook.py | 3 | CODE | |
| LOW | beetsplug/lyrics.py | 3 | CODE | |
| LOW | beetsplug/mbsync.py | 3 | CODE | |
| LOW | beetsplug/ftintitle.py | 3 | CODE | |
| LOW | beetsplug/bpm.py | 3 | CODE | |
| LOW | beetsplug/importfeeds.py | 6 | CODE | |
| LOW | beetsplug/edit.py | 3 | CODE | |
| LOW | beetsplug/mpdstats.py | 1 | CODE | |
| LOW | beetsplug/fromfilename.py | 5 | CODE | |
| LOW | beetsplug/limit.py | 10 | CODE | |
| LOW | beetsplug/export.py | 3 | CODE | |
| LOW | beetsplug/zero.py | 3 | CODE | |
| LOW | beetsplug/loadext.py | 3 | CODE | |
| LOW | beetsplug/play.py | 3 | CODE | |
| LOW | beetsplug/random.py | 1 | CODE | |
| LOW | beetsplug/bench.py | 3 | CODE | |
| LOW | beetsplug/mbsubmit.py | 10 | CODE | |
| LOW | beetsplug/keyfinder.py | 3 | CODE | |
| LOW | beetsplug/lastimport.py | 1 | CODE | |
| LOW | beetsplug/bareasc.py | 7 | CODE | |
| LOW | beetsplug/bpsync.py | 3 | CODE | |
| LOW | beetsplug/kodiupdate.py | 12 | CODE | |
| 175 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/plugins/test_mpdstats.py | 61 | except KeyboardInterrupt: | CODE |
| HIGH | test/plugins/test_bpd.py | 26 | except RuntimeError: | CODE |
| HIGH | beetsplug/replaygain.py | 1560 | except SystemExit: | CODE |
| HIGH | beetsplug/replaygain.py | 1627 | except (SystemExit, KeyboardInterrupt): | CODE |
| HIGH | beetsplug/replaygain.py | 1254 | except queue.Empty: | CODE |
| HIGH | beetsplug/fetchart.py | 571 | except KeyError: | CODE |
| HIGH | beetsplug/mpdstats.py | 167 | except mpd.ConnectionError: | CODE |
| HIGH | beetsplug/mpdstats.py | 435 | except KeyboardInterrupt: | CODE |
| HIGH | beetsplug/aura.py | 673 | except ImportError: | CODE |
| HIGH | beetsplug/ipfs.py | 139 | except AttributeError: | CODE |
| HIGH | beetsplug/ipfs.py | 328 | except AttributeError: | CODE |
| HIGH | beetsplug/ipfs.py | 168 | except IndexError: | CODE |
| HIGH | beetsplug/ipfs.py | 318 | except AttributeError: | CODE |
| HIGH | beetsplug/mbpseudo.py | 82 | except ValueError: | CODE |
| HIGH | beetsplug/absubmit.py | 81 | except ABSubmitError: | CODE |
| HIGH | beetsplug/beatport.py | 290 | except ValueError: | CODE |
| HIGH | beetsplug/web/__init__.py | 263 | except ValueError: | CODE |
| HIGH | beetsplug/bpd/__init__.py | 1251 | except ArgumentNotFoundError: | CODE |
| HIGH | beetsplug/bpd/__init__.py | 877 | except ConnectionError: | CODE |
| HIGH | beetsplug/discogs/states.py | 255 | except IndexError: | CODE |
| HIGH | beets/__init__.py | 35 | except confuse.NotFoundError: | CODE |
| HIGH | beets/ui/__init__.py | 43 | except ImportError: | CODE |
| HIGH | beets/ui/commands/modify.py | 173 | except KeyError: | CODE |
| HIGH | beets/importer/tasks.py | 1208 | except ImportError: | CODE |
| HIGH | beets/importer/tasks.py | 1214 | except ImportError: | CODE |
| HIGH | beets/importer/session.py | 240 | except ImportAbortError: | CODE |
| HIGH | beets/util/__init__.py | 535 | except OSError: | CODE |
| HIGH | beets/library/models.py | 267 | except KeyError: | CODE |
| HIGH | beets/dbcore/query.py | 741 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/util/test_functemplate.py | 8 | CODE | |
| LOW | test/plugins/test_bpd.py | 124 | CODE | |
| LOW | test/plugins/test_bpd.py | 331 | CODE | |
| LOW | beetsplug/duplicates.py | 361 | CODE | |
| LOW | beetsplug/replaygain.py | 962 | CODE | |
| LOW | beetsplug/replaygain.py | 965 | CODE | |
| LOW | beetsplug/titlecase.py | 173 | CODE | |
| LOW | beetsplug/advancedrewrite.py | 103 | CODE | |
| LOW | beetsplug/acousticbrainz.py | 170 | CODE | |
| LOW | beetsplug/acousticbrainz.py | 275 | CODE | |
| LOW | beetsplug/fetchart.py | 99 | CODE | |
| LOW | beetsplug/fetchart.py | 260 | CODE | |
| LOW | beetsplug/fetchart.py | 423 | CODE | |
| LOW | beetsplug/fetchart.py | 526 | CODE | |
| LOW | beetsplug/fetchart.py | 900 | CODE | |
| LOW | beetsplug/fetchart.py | 1130 | CODE | |
| LOW | beetsplug/fetchart.py | 1286 | CODE | |
| LOW | beetsplug/fetchart.py | 1536 | CODE | |
| LOW | beetsplug/fetchart.py | 1580 | CODE | |
| LOW | beetsplug/fetchart.py | 534 | CODE | |
| LOW | beetsplug/convert.py | 422 | CODE | |
| LOW | beetsplug/convert.py | 590 | CODE | |
| LOW | beetsplug/musicbrainz.py | 714 | CODE | |
| LOW | beetsplug/lyrics.py | 1272 | CODE | |
| LOW | beetsplug/mbsync.py | 110 | CODE | |
| LOW | beetsplug/importfeeds.py | 96 | CODE | |
| LOW | beetsplug/edit.py | 414 | CODE | |
| LOW | beetsplug/edit.py | 445 | CODE | |
| LOW | beetsplug/types.py | 16 | CODE | |
| LOW | beetsplug/zero.py | 34 | CODE | |
| LOW | beetsplug/zero.py | 100 | CODE | |
| LOW | beetsplug/bpsync.py | 145 | CODE | |
| LOW | beetsplug/aura.py | 243 | CODE | |
| LOW | beetsplug/deezer.py | 265 | CODE | |
| LOW | beetsplug/listenbrainz.py | 202 | CODE | |
| LOW | beetsplug/playlist.py | 155 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 30 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 111 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 182 | CODE | |
| LOW | beetsplug/subsonicplaylist.py | 112 | CODE | |
| LOW | beetsplug/ipfs.py | 308 | CODE | |
| LOW | beetsplug/badfiles.py | 204 | CODE | |
| LOW | beetsplug/importsource.py | 71 | CODE | |
| LOW | beetsplug/mbpseudo.py | 190 | CODE | |
| LOW | beetsplug/chroma.py | 467 | CODE | |
| LOW | beetsplug/embedart.py | 105 | CODE | |
| LOW | beetsplug/embedart.py | 130 | CODE | |
| LOW | beetsplug/spotify.py | 831 | CODE | |
| LOW | beetsplug/the.py | 18 | CODE | |
| LOW | beetsplug/bpd/gstplayer.py | 224 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 435 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 934 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 1310 | CODE | |
| LOW | beetsplug/bpd/__init__.py | 1497 | CODE | |
| LOW | beetsplug/discogs/__init__.py | 511 | CODE | |
| LOW | beetsplug/discogs/__init__.py | 601 | CODE | |
| LOW | beets/ui/__init__.py | 212 | CODE | |
| LOW | beets/ui/__init__.py | 397 | CODE | |
| LOW | beets/ui/__init__.py | 522 | CODE | |
| LOW | beets/ui/commands/update.py | 32 | CODE | |
| 33 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/plugins/test_web.py | 308 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 333 | # Create an item with a file | COMMENT |
| MEDIUM | test/plugins/test_web.py | 361 | # Create an item with a file | COMMENT |
| MEDIUM | test/plugins/test_web.py | 388 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 425 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 452 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 479 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 504 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 541 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 568 | # Create a temporary album | COMMENT |
| MEDIUM | test/plugins/test_web.py | 599 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_web.py | 641 | # Create a temporary item | COMMENT |
| MEDIUM | test/plugins/test_bpd.py | 342 | # Create a config file: | COMMENT |
| MEDIUM | test/plugins/test_lastgenre.py | 762 | # Initialize plugin instance and item | COMMENT |
| MEDIUM | test/plugins/test_spotify.py | 191 | # Create a mock item with Japanese metadata | COMMENT |
| MEDIUM | beetsplug/convert.py | 736 | # Create a temporary file for the conversion. | COMMENT |
| MEDIUM | beetsplug/bareasc.py | 2 | # This module is adapted from Fuzzy in accordance to the licence of | COMMENT |
| MEDIUM | beetsplug/kodiupdate.py | 35 | # Create the payload. Id seems to be mandatory. | COMMENT |
| MEDIUM | beets/ui/commands/__init__.py | 1 | """This module provides the default commands for beets' command-line | STRING |
| MEDIUM | beets/importer/stages.py | 277 | # Create a new task for tagging the current items | COMMENT |
| MEDIUM | beets/util/color.py | 166 | # Define a regular expression to match ANSI codes. | COMMENT |
| MEDIUM | beets/util/functemplate.py | 1 | """This module implements a string formatter based on the standard PEP | STRING |
| MEDIUM | beets/util/functemplate.py | 193 | # Create a subexpression that joins the result components of | COMMENT |
| MEDIUM | beets/library/library.py | 133 | # Create the album structure using metadata from the first item. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/util/test_lyrics.py | 0 | [00:00.00] some synced lyrics / quelques paroles synchronisées [00:00.50] [00:01.00] some more synced lyrics / quelques | STRING |
| HIGH | test/library/test_migrations.py | 0 | [00:00.00] some synced lyrics / quelques paroles synchronisées [00:00.50] [00:01.00] some more synced lyrics / quelques | STRING |
| HIGH | test/plugins/test_lyrics.py | 0 | [00:00.00] some synced lyrics / quelques paroles synchronisées [00:00.50] [00:01.00] some more synced lyrics / quelques | STRING |
| HIGH | beetsplug/kodiupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/sonosupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/embyupdate.py | 0 | listens for beets db change and register the update for the end. | STRING |
| HIGH | beetsplug/beatport.py | 0 | get the path to the json file for storing the oauth token. | STRING |
| HIGH | beetsplug/spotify.py | 0 | get the path to the json file for storing the oauth token. | STRING |
| HIGH | beetsplug/discogs/__init__.py | 0 | get the path to the json file for storing the oauth token. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_logging.py | 256 | except Exception as e: | CODE |
| LOW | test/test_logging.py | 266 | except Exception as e: | CODE |
| LOW | test/test_logging.py | 311 | except Exception: | CODE |
| MEDIUM | test/test_logging.py | 249 | def listener1(self): | CODE |
| MEDIUM | test/test_logging.py | 259 | def listener2(self): | CODE |
| LOW | beetsplug/duplicates.py | 253 | except Exception: | CODE |
| LOW | beetsplug/titlecase.py | 246 | except Exception as e: | CODE |
| LOW | beetsplug/autobpm.py | 109 | except Exception as exc: | CODE |
| LOW | beetsplug/autobpm.py | 116 | except Exception as exc: | CODE |
| LOW | beetsplug/deezer.py | 278 | except Exception as e: | CODE |
| LOW | beetsplug/scrub.py | 93 | except Exception: | CODE |
| LOW | beetsplug/subsonicupdate.py | 167 | except Exception as error: | CODE |
| LOW | beetsplug/beatport.py | 198 | except Exception as e: | CODE |
| LOW | beetsplug/embedart.py | 171 | except Exception as e: | CODE |
| LOW | beetsplug/thumbnails.py | 185 | except Exception: | CODE |
| LOW | beetsplug/inline.py | 116 | except Exception as exc: | CODE |
| LOW | beetsplug/inline.py | 128 | except Exception as exc: | CODE |
| LOW | beetsplug/replace.py | 117 | except Exception as e: | CODE |
| LOW | beetsplug/replace.py | 126 | except Exception as e: | CODE |
| MEDIUM | beetsplug/bpd/gstplayer.py | 115 | print(f"Error: {err}") | CODE |
| LOW | beetsplug/bpd/__init__.py | 1035 | except Exception: | CODE |
| LOW | beetsplug/bpd/__init__.py | 1163 | except Exception: | CODE |
| LOW | beetsplug/lastgenre/client.py | 78 | except Exception as exc: | CODE |
| LOW | beetsplug/metasync/itunes.py | 82 | except Exception: | CODE |
| LOW | beetsplug/discogs/__init__.py | 517 | except Exception as exc: | CODE |
| LOW | beets/plugins.py | 527 | except Exception as exc: | CODE |
| LOW | beets/plugins.py | 545 | except Exception: | CODE |
| LOW | beets/metadata_plugins.py | 72 | except Exception as e: | CODE |
| LOW | beets/metadata_plugins.py | 427 | except Exception as e: | CODE |
| MEDIUM | beets/metadata_plugins.py | 193 | def data_source_mismatch_penalty(self) -> float: | CODE |
| LOW | beets/importer/tasks.py | 1454 | except Exception as exc: | CODE |
| LOW | beets/importer/state.py | 80 | except Exception as exc: | CODE |
| MEDIUM | beets/importer/state.py | 73 | def _open(self) -> None: | CODE |
| LOW | beets/util/__init__.py | 642 | except Exception as exc: | CODE |
| LOW | beets/util/functemplate.py | 175 | except Exception as exc: | CODE |
| LOW | beets/util/functemplate.py | 559 | except Exception: # Handle any exceptions thrown by compiled version. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | beetsplug/mpdstats.py | 266 | def update_rating(self, item: Item | None, skipped: bool) -> None: | CODE |
| LOW | beetsplug/zero.py | 100 | def _set_pattern(self, field: str) -> None: | CODE |
| LOW | beetsplug/importadded.py | 122 | def update_album_times(self, lib: Library, album: Album) -> None: | CODE |
| LOW | beetsplug/importadded.py | 147 | def update_item_times(self, lib: Library, item: Item) -> None: | CODE |
| LOW | beetsplug/importadded.py | 165 | def update_after_write_time(self, item: Item, path: bytes) -> None: | CODE |
| LOW | beetsplug/playlist.py | 155 | def update_playlist(self, filename: str, base_dir: bytes) -> None: | CODE |
| LOW | beetsplug/smartplaylist.py | 386 | def update_playlists(self, lib: Library) -> None: | CODE |
| LOW | beetsplug/_utils/__init__.py | 3 | __all__ = ["art", "vfs"] | CODE |
| LOW | beetsplug/bpd/gstplayer.py | 118 | def _set_volume(self, volume: float) -> None: | CODE |
| LOW | beets/logging.py | 45 | __all__ = [ | CODE |
| LOW | beets/logging.py | 196 | def set_global_level(self, level: int) -> None: | CODE |
| LOW | beets/context.py | 19 | def set_music_dir(value: bytes) -> None: | CODE |
| LOW | beets/ui/commands/update.py | 169 | def update_func(lib: Library, opts: UpdateCLIOpts, args: list[str]) -> None: | CODE |
| LOW | beets/ui/commands/version.py | 31 | __all__ = ["version_cmd"] | CODE |
| LOW | beets/ui/commands/__init__.py | 60 | __all__ = ["default_commands"] | CODE |
| LOW | beets/importer/tasks.py | 272 | def set_choice(self, choice: Action | AlbumMatch | TrackMatch) -> None: | CODE |
| LOW | beets/importer/tasks.py | 476 | def set_fields(self, lib: library.Library) -> None: | CODE |
| LOW | beets/importer/tasks.py | 985 | def set_fields(self, lib: library.Library) -> None: | CODE |
| LOW | beets/importer/tasks.py | 1038 | def set_choice(self, choice: Action | AlbumMatch | TrackMatch) -> None: | CODE |
| LOW | beets/importer/session.py | 91 | def set_config(self, config: confuse.ConfigView) -> None: | CODE |
| LOW | beets/importer/__init__.py | 16 | __all__ = [ | CODE |
| LOW | beets/library/models.py | 580 | def set_art(self, path: bytes, copy: bool = True) -> None: | CODE |
| LOW | beets/library/__init__.py | 21 | __all__ = [ | CODE |
| LOW | beets/autotag/__init__.py | 36 | __all__ = [ | CODE |
| LOW | beets/dbcore/db.py | 715 | def set_parse(self, key: str, string: str) -> None: | CODE |
| LOW | beets/dbcore/__init__.py | 21 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/plugins/test_web.py | 742 | # Check if any user data fields are using non-escaping <%= %> | COMMENT |
| LOW | test/plugins/test_replaygain.py | 86 | # Check if required plugins can be loaded by instantiating a | COMMENT |
| LOW | beetsplug/titlecase.py | 215 | # Check if A-Z is all uppercase or all lowercase | COMMENT |
| LOW | beetsplug/play.py | 177 | # Check if the selection exceeds configured threshold. If True, | COMMENT |
| LOW | beetsplug/ipfs.py | 177 | # Check if query is a hash | COMMENT |
| LOW | beetsplug/absubmit.py | 187 | # Close the file, so the extractor can overwrite it. | COMMENT |
| LOW | beetsplug/spotify.py | 280 | # Check if this is the audio features endpoint | COMMENT |
| LOW | beetsplug/embyupdate.py | 181 | # Check if at least a apikey or password is given. | COMMENT |
| LOW | beets/importer/tasks.py | 1470 | # Check if the file has an extension, | COMMENT |
| LOW | beets/util/artresizer.py | 633 | # Check if a local backend is available, and store an instance of the | COMMENT |
| LOW | beets/util/lyrics.py | 56 | # Set seed to 0 for deterministic results | COMMENT |
| LOW | beets/library/models.py | 991 | # Open the file. | COMMENT |
| LOW | beets/autotag/match.py | 65 | # Assign items to tracks | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | beetsplug/web/static/jquery.js | 9255 | // AMD modules. A named AMD is safest and most robust way to register. | COMMENT |
| LOW | beetsplug/tidal/__init__.py | 142 | # We just return early here as a lookup via isrc should | COMMENT |
| LOW | beetsplug/tidal/__init__.py | 165 | # We just return early here as a lookup via isrc should | COMMENT |
| MEDIUM | beets/exceptions.py | 2 | """UI exception. Commands should throw this in order to display | STRING |
| MEDIUM | beets/ui/__init__.py | 76 | # test harness, it doesn't have an `encoding` attribute. Just use | COMMENT |
| LOW | beets/importer/tasks.py | 1555 | # and add the current directory. If so, just add the directory | COMMENT |
| MEDIUM | beets/test/helper.py | 391 | # A test harness for all beets tests. | COMMENT |
| LOW | beets/util/__init__.py | 1096 | # Therefore, we just use `Any` here, which is not ideal, but works. | COMMENT |
| LOW | beets/util/functemplate.py | 374 | # Start of a group has no meaning hear; just pass | COMMENT |
| MEDIUM | beets/util/pipeline.py | 1 | """Simple but robust implementation of generator/coroutine-based | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/ui/test_ui.py | 181 | self.run_command("--config", str(self.cli_config_path), "test") | COMMENT |
| LOW | test/ui/test_ui.py | 201 | # def test_multiple_cli_config_overwrite(self): | COMMENT |
| LOW | beetsplug/web/static/underscore.js | 1 | // Underscore.js 1.2.2 | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 1 | // Backbone.js 0.5.3 | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 41 | return this; | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 61 | // | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 941 | // *{"event selector": "callback"}* | COMMENT |
| LOW | beetsplug/web/static/backbone.js | 1021 | // ------------- | COMMENT |
| LOW | beetsplug/web/static/jquery.js | 1381 | COMMENT | |
| LOW | beetsplug/web/static/jquery.js | 9241 | COMMENT | |
| LOW | beets/ui/commands/completion_base.sh | 1 | # Completion for the `beet` command | COMMENT |
| LOW | beets/ui/commands/completion_base.sh | 21 | # ---- | COMMENT |
| LOW | beets/util/__init__.py | 1081 | name: str = "" | COMMENT |
| LOW | beets/util/id_extractors.py | 21 | # - plain integer, optionally wrapped in brackets and prefixed by an | COMMENT |
| LOW | beets/dbcore/db.py | 1121 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | beetsplug/_typing.py | 21 | # Both lyrics fields may be null, even when 'instrumental' is False. | COMMENT |
| HIGH | beets/dbcore/db.py | 520 | setattr(self, key, self._type(key).null) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/plugins/test_aura.py | 15 | def helper(session_helper): | CODE |
| LOW | test/plugins/test_lyrics.py | 33 | def helper(module_helper): | CODE |
| LOW | test/plugins/test_random.py | 12 | def helper(class_helper): | CODE |
| LOW | test/dbcore/test_sort.py | 21 | def helper(class_helper): | CODE |
| LOW | test/dbcore/test_query.py | 41 | def helper(class_helper): | CODE |
| LOW | test/dbcore/test_query.py | 307 | def helper(self): | CODE |
| LOW | beetsplug/lyrics.py | 246 | def handle_request(self) -> Iterator[None]: | CODE |
| LOW | beets/plugins.py | 449 | def helper(func: TFunc[str]) -> TFunc[str]: | CODE |
| LOW | beets/plugins.py | 463 | def helper(func: TFunc[Item]) -> TFunc[Item]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | beets/ui/commands/completion_base.sh | 2 | # ================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | beets/autotag/hooks.py | 158 | CODE | |
| LOW | beets/autotag/hooks.py | 273 | CODE | |
| LOW | beets/autotag/hooks.py | 393 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | beetsplug/missing.py | 264 | # TODO: Implement caching that without breaking other stuff | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/rsrc/lyrics/examplecom/beetssong.txt | 353 | cf_page_artist = 'John Doe'; | CODE |