AI Slop Code RIsk Monitor

nicotine-plus/nicotine-plus

Graphical client for the Soulseek peer-to-peer network

12.5 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for nicotine-plus/nicotine-plus, a Python project with 3,160 GitHub stars. SynthScan examined 73,768 lines of code across 210 source files, recording 718 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 12.5 (Moderate 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.

12.5
Adjusted Signal
12.5
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
3.2K
Stars
Python
Language
73.8K
Lines of Code
210
Files
718
Pattern Hits
2026-10-12
Scan Date
0.20
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 32.4/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 568 finding(s).

Hallucinated Dependency & Supply Chain Risk 2.6/100 · LOW

Are imports declared and package/API names verified? 12 finding(s).

Agent Over-Engineering Ratio 40.2/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 578 finding(s).

PR Review Velocity Impact 48.4/100 · MEDIUM

Which changes need focused human review? 718 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 3HIGH 40MEDIUM 16LOW 659

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 718 distinct pattern matches across 14 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.

Hyper-Verbose Identifiers430 hits · 441 pts
SeverityFileLineSnippetContext
LOW⚡pynicotine/chatrooms.py228 def request_add_room_operator(self, room, username):CODE
LOW⚡pynicotine/chatrooms.py231 def request_remove_room_member(self, room, username):CODE
LOW⚡pynicotine/chatrooms.py234 def request_remove_room_operator(self, room, username):CODE
LOW⚡pynicotine/chatrooms.py251 def request_cancel_room_ownership(self, room):CODE
LOW⚡pynicotine/chatrooms.py258 def request_cancel_room_membership(self, room):CODE
LOW⚡pynicotine/chatrooms.py265 def request_enable_room_invitations(self, enabled):CODE
LOWpynicotine/chatrooms.py316 def _room_invitation_rejected(self, username):CODE
LOWpynicotine/chatrooms.py469 def _room_operatorship_granted(self, msg):CODE
LOWpynicotine/chatrooms.py482 def _room_operatorship_revoked(self, msg):CODE
LOWpynicotine/logfacility.py188 def _close_inactive_log_files(self):CODE
LOWpynicotine/transfers.py183 def _load_legacy_transfers_file(transfers_file):CODE
LOWpynicotine/transfers.py436 def _update_transfer_progress(self, transfer, sock, stat_id, current_byte_offset=None, speed=None):CODE
LOWpynicotine/transfers.py516 def _enqueue_limited_transfers(self, username):CODE
LOW⚡pynicotine/interests.py121 def request_global_recommendations(self):CODE
LOW⚡pynicotine/interests.py124 def request_item_recommendations(self, item):CODE
LOW⚡pynicotine/interests.py127 def request_item_similar_users(self, item):CODE
LOWpynicotine/nowplaying.py115 def _parse_audioscrobbler_response(self, response_body):CODE
LOWpynicotine/privatechat.py152 def _private_message_queue_add(self, msg):CODE
LOWpynicotine/core.py304 def send_message_to_network_thread(self, message: InternalMessage):CODE
LOW⚡pynicotine/downloads.py687 def get_default_download_folder(self, username=None):CODE
LOW⚡pynicotine/downloads.py697 def get_incomplete_download_folder(self):CODE
LOWpynicotine/downloads.py159 def _get_transfer_list_file_path(self):CODE
LOWpynicotine/downloads.py196 def _open_incomplete_transfer(self, transfer):CODE
LOWpynicotine/downloads.py393 def _enqueue_limited_transfers(self, username):CODE
LOWpynicotine/downloads.py453 def _folder_downloaded_actions(self, username, folder_path):CODE
LOWpynicotine/downloads.py558 def _delete_stale_incomplete_downloads(self):CODE
LOWpynicotine/downloads.py610 def _retry_failed_connection_downloads(self):CODE
LOWpynicotine/downloads.py625 def _retry_failed_io_downloads(self):CODE
LOWpynicotine/downloads.py744 def get_complete_download_file_path(self, username, virtual_path, size, download_folder_path=None):CODE
LOWpynicotine/downloads.py768 def get_incomplete_download_file_path(self, username, virtual_path):CODE
LOWpynicotine/downloads.py790 def get_current_download_file_path(self, transfer):CODE
LOWpynicotine/downloads.py1016 def _requested_folder_timeout(self, requested_folder, is_offline=False):CODE
LOWpynicotine/downloads.py1043 def _folder_contents_response(self, msg):CODE
LOWpynicotine/downloads.py1095 def _transfer_request_downloads(self, msg):CODE
LOW⚡pynicotine/pluginsystem.py72 def public_room_message_notification(self, room, user, line):CODE
LOW⚡pynicotine/pluginsystem.py76 def search_request_notification(self, searchterm, user, token):CODE
LOW⚡pynicotine/pluginsystem.py80 def distrib_search_notification(self, searchterm, user, token):CODE
LOW⚡pynicotine/pluginsystem.py84 def incoming_private_chat_event(self, user, line):CODE
LOW⚡pynicotine/pluginsystem.py88 def incoming_private_chat_notification(self, user, line):CODE
LOW⚡pynicotine/pluginsystem.py92 def incoming_public_chat_event(self, room, user, line):CODE
LOW⚡pynicotine/pluginsystem.py96 def incoming_public_chat_notification(self, room, user, line):CODE
LOW⚡pynicotine/pluginsystem.py100 def outgoing_private_chat_event(self, user, line):CODE
LOW⚡pynicotine/pluginsystem.py104 def outgoing_private_chat_notification(self, user, line):CODE
LOW⚡pynicotine/pluginsystem.py108 def outgoing_public_chat_event(self, room, line):CODE
LOW⚡pynicotine/pluginsystem.py112 def outgoing_public_chat_notification(self, room, line):CODE
LOW⚡pynicotine/pluginsystem.py116 def outgoing_global_search_event(self, text):CODE
LOW⚡pynicotine/pluginsystem.py120 def outgoing_room_search_event(self, rooms, text):CODE
LOW⚡pynicotine/pluginsystem.py124 def outgoing_buddy_search_event(self, text):CODE
LOW⚡pynicotine/pluginsystem.py128 def outgoing_user_search_event(self, users, text):CODE
LOW⚡pynicotine/pluginsystem.py132 def outgoing_wishlist_search_event(self, text):CODE
LOW⚡pynicotine/pluginsystem.py136 def user_resolve_notification(self, user, ip_address, port, country):CODE
LOW⚡pynicotine/pluginsystem.py140 def server_connect_notification(self):CODE
LOW⚡pynicotine/pluginsystem.py144 def server_disconnect_notification(self, userchoice):CODE
LOW⚡pynicotine/pluginsystem.py148 def join_chatroom_notification(self, room):CODE
LOW⚡pynicotine/pluginsystem.py152 def leave_chatroom_notification(self, room):CODE
LOW⚡pynicotine/pluginsystem.py156 def user_join_chatroom_notification(self, room, user):CODE
LOW⚡pynicotine/pluginsystem.py160 def user_leave_chatroom_notification(self, room, user):CODE
LOW⚡pynicotine/pluginsystem.py164 def private_room_membership_granted_notification(self, room):CODE
LOW⚡pynicotine/pluginsystem.py168 def private_room_membership_revoked_notification(self, room):CODE
LOW⚡pynicotine/pluginsystem.py172 def private_room_member_added_notification(self, room, user):CODE
370 more matches not shown…
Empty Error Handlers37 hits · 185 pts
SeverityFileLineSnippetContext
HIGHpynicotine/transfers.py240except ValueError:CODE
HIGHpynicotine/transfers.py216except (AttributeError, ValueError):CODE
HIGHpynicotine/transfers.py327except TypeError:CODE
HIGHpynicotine/transfers.py337except TypeError:CODE
HIGHpynicotine/config.py729except Exception:CODE
HIGHpynicotine/nowplaying.py131except KeyError:CODE
HIGHpynicotine/downloads.py218except ImportError:CODE
HIGHpynicotine/downloads.py708except (AttributeError, OSError, ValueError):CODE
HIGHpynicotine/pluginsystem.py874except Exception:CODE
HIGHpynicotine/cli.py125except Exception:CODE
HIGHpynicotine/cli.py201except termios.error:CODE
HIGHpynicotine/utils.py324except IndexError:CODE
HIGHpynicotine/utils.py516except Exception:CODE
HIGHpynicotine/slskproto.py536except KeyError:CODE
HIGHpynicotine/shares.py515except Exception:CODE
HIGHpynicotine/shares.py1324except OSError:CODE
HIGHpynicotine/shares.py1220except OSError:CODE
HIGHpynicotine/tests/integration/test_startup.py44except Exception:CODE
HIGHpynicotine/external/tinytag.py252except OSError:CODE
HIGHpynicotine/external/tinytag.py2506except OverflowError:CODE
HIGHpynicotine/gtkgui/__init__.py36except ModuleNotFoundError:CODE
HIGHpynicotine/gtkgui/__init__.py32except GLib.Error:CODE
HIGHpynicotine/gtkgui/mainwindow.py469except AttributeError:CODE
HIGHpynicotine/gtkgui/mainwindow.py181except AttributeError:CODE
HIGHpynicotine/gtkgui/application.py51except (ImportError, ValueError):CODE
HIGHpynicotine/gtkgui/dialogs/chathistory.py188except OSError:CODE
HIGHpynicotine/gtkgui/dialogs/preferences.py3865except TypeError:CODE
HIGHpynicotine/gtkgui/dialogs/preferences.py4254except AttributeError:CODE
HIGHpynicotine/gtkgui/dialogs/preferences.py4297except AttributeError:CODE
HIGHpynicotine/gtkgui/widgets/combobox.py112except AttributeError:CODE
HIGHpynicotine/gtkgui/widgets/treeview.py495except KeyError:CODE
HIGHpynicotine/gtkgui/widgets/theme.py168except AttributeError:CODE
HIGHpynicotine/gtkgui/widgets/ui.py58except TypeError:CODE
HIGHpynicotine/gtkgui/widgets/filechooser.py340except TypeError:CODE
HIGHpynicotine/gtkgui/widgets/filechooser.py36except OSError:CODE
HIGHpynicotine/gtkgui/widgets/textentry.py392except (ImportError, ValueError):CODE
HIGHpynicotine/gtkgui/widgets/dialogs.py89except AttributeError:CODE
Excessive Try-Catch Wrapping89 hits · 96 pts
SeverityFileLineSnippetContext
LOWpynicotine/portmapper.py332 except Exception as error:CODE
LOWpynicotine/portmapper.py630 except Exception as natpmp_error:CODE
LOWpynicotine/portmapper.py637 except Exception as upnp_error:CODE
LOWpynicotine/portmapper.py673 except Exception as error:CODE
LOWpynicotine/logfacility.py162 except Exception as error:CODE
LOWpynicotine/logfacility.py251 except Exception as error:CODE
LOWpynicotine/logfacility.py276 except Exception as error:CODE
MEDIUMpynicotine/logfacility.py171def _close_log_file(self, log_file):CODE
LOWpynicotine/transfers.py364 except Exception as error:CODE
LOWpynicotine/config.py729 except Exception:CODE
LOWpynicotine/config.py759 except Exception:CODE
LOWpynicotine/config.py850 except Exception as error:CODE
LOWpynicotine/events.py285 except Exception as error:CODE
LOWpynicotine/nowplaying.py156 except Exception as error:CODE
LOWpynicotine/nowplaying.py164 except Exception as error:CODE
LOWpynicotine/nowplaying.py180 except Exception as error:CODE
LOWpynicotine/nowplaying.py188 except Exception as error:CODE
LOWpynicotine/nowplaying.py245 except Exception as error:CODE
LOWpynicotine/nowplaying.py301 except Exception as error:CODE
LOWpynicotine/nowplaying.py323 except Exception as error:CODE
LOWpynicotine/nowplaying.py338 except Exception as error:CODE
LOWpynicotine/__init__.py154 except Exception as error:CODE
LOWpynicotine/__init__.py164 except Exception as second_error:CODE
LOWpynicotine/core.py341 except Exception as error:CODE
MEDIUMpynicotine/core.py333def _check(self):CODE
LOWpynicotine/downloads.py447 except Exception as error:CODE
LOWpynicotine/downloads.py488 except Exception as error:CODE
LOWpynicotine/pluginsystem.py347 except Exception:CODE
LOWpynicotine/pluginsystem.py521 except Exception as error:CODE
LOWpynicotine/pluginsystem.py546 except Exception as error:CODE
LOWpynicotine/pluginsystem.py617 except Exception:CODE
LOWpynicotine/pluginsystem.py727 except Exception:CODE
LOWpynicotine/pluginsystem.py771 except Exception:CODE
LOWpynicotine/pluginsystem.py874 except Exception:CODE
LOWpynicotine/pluginsystem.py1085 except Exception as error:CODE
LOWpynicotine/pluginsystem.py1114 except Exception as error:CODE
LOWpynicotine/userinfo.py80 except Exception:CODE
LOWpynicotine/userinfo.py160 except Exception as error:CODE
MEDIUMpynicotine/userinfo.py152def save_user_picture(file_path, picture_bytes):CODE
LOWpynicotine/portchecker.py30 except Exception as error:CODE
MEDIUMpynicotine/portchecker.py25def _check_status(self, port):CODE
LOWpynicotine/cli.py10 except Exception as curses_error:CODE
LOWpynicotine/cli.py48 except Exception:CODE
LOWpynicotine/cli.py125 except Exception:CODE
LOWpynicotine/utils.py490 except Exception as error:CODE
LOWpynicotine/utils.py516 except Exception:CODE
LOWpynicotine/utils.py601 except Exception as error:CODE
LOWpynicotine/utils.py647 except Exception as error:CODE
LOWpynicotine/utils.py672 except Exception as error:CODE
LOWpynicotine/utils.py700 except Exception as error:CODE
LOWpynicotine/utils.py720 except Exception as error:CODE
LOWpynicotine/utils.py731 except Exception as second_error:CODE
MEDIUMpynicotine/utils.py654def load_file(file_path, load_func, use_old_file=False):CODE
LOWpynicotine/slskmessages.py3310 except Exception as error:CODE
MEDIUMpynicotine/slskmessages.py3294def _make_shares_list(self, share_groups):CODE
MEDIUMpynicotine/slskproto.py694def _pack_network_message(msg):CODE
LOWpynicotine/slskproto.py699 except Exception:CODE
LOWpynicotine/slskproto.py729 except Exception as error:CODE
LOWpynicotine/i18n.py65 except Exception as error:CODE
LOWpynicotine/uploads.py184 except Exception:CODE
29 more matches not shown…
Deep Nesting99 hits · 80 pts
SeverityFileLineSnippetContext
LOWsetup.py11CODE
LOWbuild-aux/macos/setup.py143CODE
LOWbuild-aux/appimage/setup.py143CODE
LOWbuild-aux/windows/setup.py143CODE
LOWpynicotine/portmapper.py111CODE
LOWpynicotine/portmapper.py281CODE
LOWpynicotine/transfers.py262CODE
LOWpynicotine/config.py619CODE
LOWpynicotine/config.py701CODE
LOWpynicotine/users.py341CODE
LOWpynicotine/nowplaying.py49CODE
LOWpynicotine/privatechat.py162CODE
LOWpynicotine/privatechat.py384CODE
LOWpynicotine/downloads.py558CODE
LOWpynicotine/downloads.py934CODE
LOWpynicotine/pluginsystem.py328CODE
LOWpynicotine/pluginsystem.py475CODE
LOWpynicotine/pluginsystem.py560CODE
LOWpynicotine/pluginsystem.py657CODE
LOWpynicotine/pluginsystem.py732CODE
LOWpynicotine/pluginsystem.py850CODE
LOWpynicotine/pluginsystem.py995CODE
LOWpynicotine/utils.py526CODE
LOWpynicotine/utils.py654CODE
LOWpynicotine/slskmessages.py3228CODE
LOWpynicotine/search.py259CODE
LOWpynicotine/search.py394CODE
LOWpynicotine/search.py466CODE
LOWpynicotine/search.py829CODE
LOWpynicotine/slskproto.py835CODE
LOWpynicotine/slskproto.py1129CODE
LOWpynicotine/slskproto.py1352CODE
LOWpynicotine/slskproto.py1902CODE
LOWpynicotine/slskproto.py2413CODE
LOWpynicotine/slskproto.py2602CODE
LOWpynicotine/slskproto.py2785CODE
LOWpynicotine/i18n.py39CODE
LOWpynicotine/uploads.py561CODE
LOWpynicotine/uploads.py1274CODE
LOWpynicotine/userbrowse.py203CODE
LOWpynicotine/userbrowse.py299CODE
LOWpynicotine/shares.py567CODE
LOWpynicotine/shares.py856CODE
LOWpynicotine/shares.py942CODE
LOWpynicotine/shares.py1281CODE
LOWpynicotine/plugins/core_commands/__init__.py624CODE
LOWpynicotine/external/tinytag.py339CODE
LOWpynicotine/external/tinytag.py404CODE
LOWpynicotine/external/tinytag.py454CODE
LOWpynicotine/external/tinytag.py656CODE
LOWpynicotine/external/tinytag.py789CODE
LOWpynicotine/external/tinytag.py1299CODE
LOWpynicotine/external/tinytag.py1444CODE
LOWpynicotine/external/tinytag.py1532CODE
LOWpynicotine/external/tinytag.py1728CODE
LOWpynicotine/external/tinytag.py1839CODE
LOWpynicotine/external/tinytag.py1996CODE
LOWpynicotine/external/tinytag.py2097CODE
LOWpynicotine/external/tinytag.py2281CODE
LOWpynicotine/external/tinytag.py2470CODE
39 more matches not shown…
Redundant / Tautological Comments22 hits · 34 pts
SeverityFileLineSnippetContext
LOWpynicotine/portmapper.py695 # Check if we want to do a port mappingCOMMENT
LOWpynicotine/transfers.py212 # Check if a dictionary is represented in string formatCOMMENT
LOWpynicotine/config.py609 # Check if we have specified a username or passwordCOMMENT
LOWpynicotine/config.py710 # Check if config section exists in defaultsCOMMENT
LOWpynicotine/config.py714 # Check if config option exists in defaultsCOMMENT
LOWpynicotine/config.py781 # Check if server value is validCOMMENT
LOWpynicotine/config.py787 # Check if port range value is validCOMMENT
LOW⚡pynicotine/downloads.py680 # Check if a custom download location was specifiedCOMMENT
LOW⚡pynicotine/downloads.py691 # Check if username subfolders should be created for downloadsCOMMENT
LOWpynicotine/downloads.py1140 # Check if download exists in our default download folderCOMMENT
LOWpynicotine/cli.py89 # Check if custom prompt is activeCOMMENT
LOWpynicotine/search.py666 # Check if file path contains phrase excluded from the search networkCOMMENT
LOWpynicotine/slskproto.py324 # Set IP_BIND_ADDRESS_NO_PORT to avoid reserving an ephemeral port in bind(),COMMENT
LOWpynicotine/slskproto.py807 # Check if there's already a connection for the specified usernameCOMMENT
LOWpynicotine/slskproto.py812 # Check if we have a pending PeerInit message (currently requesting user IP address)COMMENT
LOWpynicotine/uploads.py111 # Check if queued uploads can be started every 10 secondsCOMMENT
LOWpynicotine/shares.py549 # Check if file is marked as hidden on WindowsCOMMENT
LOWpynicotine/shares.py1046 # Check if virtual share name is already in useCOMMENT
LOWpynicotine/gtkgui/application.py975 # Check if exception occurred in a pluginCOMMENT
LOWpynicotine/gtkgui/widgets/trayicon.py565 # Check if custom icons existCOMMENT
LOWpynicotine/gtkgui/widgets/trayicon.py570 # Check if local icons existCOMMENT
LOWpynicotine/gtkgui/widgets/iconnotebook.py711 # Check if tab was removed before timer expiredCOMMENT
Hallucination Indicators3 hits · 30 pts
SeverityFileLineSnippetContext
CRITICALpynicotine/gtkgui/privatechat.py475 self.chats.window.application.chat_history.remove_user(self.user)CODE
CRITICALpynicotine/gtkgui/privatechat.py576 self.chats.window.application.chat_history.update_user(username, message)CODE
CRITICALpynicotine/gtkgui/dialogs/wishlist.py441 for tab in self.application.window.search.pages.values():CODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHbuild-aux/macos/testrun.py0verify the packaged application starts and keeps running.STRING
HIGHbuild-aux/appimage/testrun.py0verify the packaged application starts and keeps running.STRING
HIGHbuild-aux/windows/testrun.py0verify the packaged application starts and keeps running.STRING
Self-Referential Comments4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMpynicotine/portmapper.py377 # Create a UDP socket and set its timeoutCOMMENT
MEDIUMpynicotine/slskmessages.py25# This module contains message classes, that networking and UI threadCOMMENT
MEDIUMpynicotine/slskproto.py665 # Create a UDP socketCOMMENT
MEDIUMpynicotine/gtkgui/widgets/popupmenu.py239 """This function is called before a menu model needs to be manipulatedSTRING
AI Structural Patterns10 hits · 10 pts
SeverityFileLineSnippetContext
LOWpynicotine/slskmessages.py523CODE
LOWpynicotine/slskmessages.py3450CODE
LOWpynicotine/search.py50CODE
LOWpynicotine/search.py318CODE
LOWpynicotine/external/tinytag.py131CODE
LOWpynicotine/gtkgui/widgets/combobox.py17CODE
LOWpynicotine/gtkgui/widgets/treeview.py33CODE
LOWpynicotine/gtkgui/widgets/textview.py40CODE
LOWpynicotine/gtkgui/widgets/dialogs.py22CODE
LOWpynicotine/gtkgui/widgets/dialogs.py534CODE
Modern Structural Boilerplate8 hits · 9 pts
SeverityFileLineSnippetContext
LOWpynicotine/core.py48__all__ = ["Core", "UpdateChecker", "core"]CODE
LOW⚡pynicotine/external/tinytag.py1192 def _set_custom_field(self, custom_field_name: str, value: str) -> None:CODE
LOW⚡pynicotine/external/tinytag.py1199 def _set_grouping_work_fields(self) -> None:CODE
LOWpynicotine/external/tinytag.py306 def _set_field(self, fieldname: str, value: str | float) -> None:CODE
LOWpynicotine/external/tinytag.py325 def _set_other_field(self, fieldname: str, value: str) -> None:CODE
LOWpynicotine/external/tinytag.py434 def _set_field(self, fieldname: str, value: Image) -> None:CODE
LOWpynicotine/external/tinytag.py447 def _set_other_field(self, fieldname: str, value: Image) -> None:CODE
LOWpynicotine/external/tinytag.py1886 def _set_vorbis_comment_fields(self, fh: BinaryIO) -> None:CODE
Unused Imports7 hits · 7 pts
SeverityFileLineSnippetContext
LOWpynicotine/__init__.py17CODE
LOWpynicotine/__init__.py18CODE
LOWpynicotine/core.py3CODE
LOWpynicotine/plugins/auto_buddy_rooms/__init__.py4CODE
LOWpynicotine/external/tinytag.py37CODE
LOWpynicotine/gtkgui/__init__.py80CODE
LOWpynicotine/gtkgui/__init__.py93CODE
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMpynicotine/external/tinytag.py2117 # ----------------------------------------------COMMENT
Over-Commented Block3 hits · 2 pts
SeverityFileLineSnippetContext
LOWpynicotine/downloads.py1# SPDX-FileCopyrightText: 2020-2026 Nicotine+ ContributorsCOMMENT
LOWpynicotine/external/tinytag.py1# SPDX-FileCopyrightText: 2020-2026 Nicotine+ ContributorsCOMMENT
LOWpynicotine/external/tinytag.py21# all copies or substantial portions of the Software.COMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpynicotine/utils.py392 If the 'replacement' argument is given, every occurrence of 'placeholder'STRING
LOWpynicotine/gtkgui/widgets/trayicon.py70 self.show_hide_item = self._create_item("placeholder", self.application.on_window_hide_unhide)CODE