Repository Analysis

OctoPrint/OctoPrint

OctoPrint is the snappy web interface for your 3D printer!

10.0 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of OctoPrint/OctoPrint, a Python project with 9,037 GitHub stars. SynthScan v2.0 examined 242,896 lines of code across 632 source files, recording 1701 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 10.0 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

10.0
Adjusted Score
10.0
Raw Score
100%
Time Factor
2026-07-14
Last Push
9.0K
Stars
Python
Language
242.9K
Lines of Code
632
Files
1.7K
Pattern Hits
2026-07-14
Scan Date
0.14
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 70HIGH 16MEDIUM 48LOW 1567

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1701 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hallucination Indicators70 hits · 815 pts
SeverityFileLineSnippetContext
CRITICAL…elloworld/octoprint_helloworld/static/js/helloworld.js23 self.newUrl(self.settings.settings.plugins.helloworld.url());CODE
CRITICAL…toprint/plugins/achievements/static/js/achievements.js317 !self.settings.settings.plugins.achievements.timezone() &&CODE
CRITICAL…toprint/plugins/achievements/static/js/achievements.js394 self.timezoneSetting(self.settings.settings.plugins.achievements.timezone());CODE
CRITICAL…toprint/plugins/achievements/static/js/achievements.js399 self.settings.settings.plugins.achievements.timezone() !==CODE
CRITICAL…toprint/plugins/achievements/static/js/achievements.js403 self.settings.settings.plugins.achievements.timezone()CODE
CRITICAL…toprint/plugins/achievements/static/js/achievements.js411 self.settings.settings.plugins.achievements.timezone() !==CODE
CRITICAL…plugins/serial_connector/static/js/serial_connector.js15 self.settings.settings.plugins.serial_connector.log()CODE
CRITICAL…plugins/serial_connector/static/js/serial_connector.js51 self.settings.settings.plugins.serial_connector.ignoreEmptyPorts()CODE
CRITICALsrc/octoprint/plugins/eventmanager/static/js/events.js41 self.settingsViewModel.settings.plugins.eventmanager.subscriptions.push(CODE
CRITICALsrc/octoprint/plugins/eventmanager/static/js/events.js53 self.settingsViewModel.settings.plugins.eventmanager.subscriptions.remove(CODE
CRITICAL…print/plugins/announcements/static/js/announcements.js304 self.settings.settings.plugins.announcements.display_limit();CODE
CRITICAL…print/plugins/announcements/static/js/announcements.js305 var maxLength = self.settings.settings.plugins.announcements.summary_limit();CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js36 self.settings.settings.plugins.softwareupdate.octoprint_type() ===CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js42 self.settings.settings.plugins.softwareupdate.octoprint_type() ===CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js183 !self.settings.settings.plugins.softwareupdate.ignore_throttled()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js307 self.settings.settings.plugins.softwareupdate.queued_updates()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js321 self.settings.settings.plugins.softwareupdate.octoprint_branch_mappings(),CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js332 self.settings.settings.plugins.softwareupdate.cache_ttl()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js335 self.settings.settings.plugins.softwareupdate.notify_users()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js339 self.settings.settings.plugins.softwareupdate.octoprint_type()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js342 self.settings.settings.plugins.softwareupdate.octoprint_release_channel()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js345 self.settings.settings.plugins.softwareupdate.octoprint_checkout_folder()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js348 self.settings.settings.plugins.softwareupdate.octoprint_tracked_branch()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js351 self.settings.settings.plugins.softwareupdate.octoprint_pip_target()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js355 self.settings.settings.plugins.softwareupdate.pip_enable_check()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js359 self.settings.settings.plugins.softwareupdate.minimum_free_storage()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js363 self.settings.settings.plugins.softwareupdate.credentials.github_set()CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js368 self.settings.settings.plugins.softwareupdate.octoprint_checkout_folder(CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js371 self.settings.settings.plugins.softwareupdate.octoprint_type(CODE
CRITICAL…int/plugins/softwareupdate/static/js/softwareupdate.js485 !self.settings.settings.plugins.softwareupdate.notify_users()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js392 !self.settingsViewModel.settings.plugins.pluginmanager.ignore_throttled()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js993 self.settingsViewModel.settings.plugins.pluginmanager.confirm_disable()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1180 self.settingsViewModel.settings.plugins.pluginmanager.repository_restricted()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1190 self.settingsViewModel.settings.plugins.pluginmanager.repository_restricted(CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1639 self.settingsViewModel.settings.plugins.pluginmanager.repository()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1642 self.settingsViewModel.settings.plugins.pluginmanager.repository_ttl()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1645 self.settingsViewModel.settings.plugins.pluginmanager.notices()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1648 self.settingsViewModel.settings.plugins.pluginmanager.notices_ttl()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1651 self.settingsViewModel.settings.plugins.pluginmanager.pip_args()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1654 self.settingsViewModel.settings.plugins.pluginmanager.pip_force_user()CODE
CRITICAL…print/plugins/pluginmanager/static/js/pluginmanager.js1657 self.settingsViewModel.settings.plugins.pluginmanager.confirm_disable()CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js127 self.settings.settings.plugins.gcodeviewer.alwaysCompress(),CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js129 self.settings.settings.plugins.gcodeviewer.compressionSizeThreshold(),CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js405 self.settings.settings.plugins.gcodeviewer.alwaysCompress.subscribe(CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js408 self.settings.settings.plugins.gcodeviewer.compressionSizeThreshold.subscribe(CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js541 self.settings.settings.plugins.gcodeviewer.skipUntilThis()CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js676 self.settings.settings.plugins.gcodeviewer.sizeThreshold() ||CODE
CRITICAL…octoprint/plugins/gcodeviewer/static/js/gcodeviewer.js679 self.settings.settings.plugins.gcodeviewer.mobileSizeThreshold())CODE
CRITICAL…_notification/static/js/action_command_notification.js18 self.settings.settings.plugins.action_command_notification.filter()CODE
CRITICAL…_notification/static/js/action_command_notification.js87 self.settings.settings.plugins.action_command_notification.enable_popups()CODE
CRITICALsrc/octoprint/plugins/tracking/static/js/usage.js23 self.settingsViewModel.settings.plugins.tracking.enabled(true);CODE
CRITICALsrc/octoprint/plugins/tracking/static/js/usage.js29 self.settingsViewModel.settings.plugins.tracking.enabled(false);CODE
CRITICALsrc/octoprint/plugins/tracking/static/js/usage.js78 self.settingsViewModel.settings.plugins.tracking.enabled()CODE
CRITICALsrc/octoprint/plugins/backup/static/js/backup.js146 self.config_path(self.settings.settings.plugins.backup.path());CODE
CRITICAL…print/plugins/errortracking/static/js/errortracking.js13 if (self.settings.settings.plugins.errortracking.enabled()) return;CODE
CRITICAL…print/plugins/errortracking/static/js/errortracking.js17 self.settings.settings.plugins.softwareupdate.octoprint_release_channel();CODE
CRITICAL…print/plugins/errortracking/static/js/errortracking.js118 self.settings.settings.plugins.softwareupdate.octoprint_release_channel.subscribe(CODE
CRITICALsrc/octoprint/plugins/logging/static/js/logging.js31 self.settings.settings.plugins.logging.plugintimings_log_warning()CODE
CRITICALsrc/octoprint/plugins/health_check/__init__.py216 if not octoprint.access.permissions.Permissions.PLUGIN_HEALTH_CHECK_CHECK.can():CODE
CRITICAL…toprint/plugins/health_check/static/js/health_check.js298 self.settings.settings.plugins.health_check.checks.filesystem_storage.warning_threshold();CODE
10 more matches not shown…
Hyper-Verbose Identifiers637 hits · 622 pts
SeverityFileLineSnippetContext
LOWsetup.py6def copy_files_build_py_factory(files, baseclass):CODE
LOWtests/test_daemon.py56 def test_double_fork_failed_first(self, mock_exit, mock_fork):CODE
LOWtests/test_daemon.py78 def test_double_fork_failed_second(CODE
LOWtests/test_daemon.py258 def test_stop_not_running_no_error(self, mock_exit):CODE
LOWtests/test_daemon.py344 def test_is_running_false_no_pid(self):CODE
LOWtests/test_daemon.py356 def test_is_running_false_pidfile_removed(self, mock_kill):CODE
LOWtests/test_daemon.py376 def test_is_running_false_pidfile_error(self, mock_kill):CODE
LOWtests/test_daemon.py465 def test_remove_pidfile_exists(self, mock_remove, mock_isfile):CODE
LOWtests/test_daemon.py478 def test_remove_pidfile_doesnt_exist(self, mock_remove, mock_isfile):CODE
LOWtests/test_events.py42def test_escape_system_commands(params, shell, expected):CODE
LOWtests/test_events.py69def test_handle_system_commands(mocked_printer, param, shell, expected_call):CODE
LOWtests/settings/test_settings.py147 def test_should_have_regex_filters(self):CODE
LOWtests/settings/test_settings.py156 def test_should_have_suppress_temperature_regex(self):CODE
LOWtests/settings/test_settings.py1262 def test_prefix_caching_has_populates(self):CODE
LOWtests/settings/test_settings.py1270 def test_prefix_caching_get_populates(self):CODE
LOWtests/settings/test_settings.py1278 def test_prefix_caching_scalars_ignored(self):CODE
LOWtests/settings/test_settings.py1285 def test_prefix_caching_set_invalidates(self):CODE
LOWtests/settings/test_settings.py57 def test_basedir_initialization(self):CODE
LOWtests/settings/test_settings.py69 def test_basedir_folder_creation(self):CODE
LOWtests/settings/test_settings.py92 def test_basedir_initialization_with_custom_basedir(self):CODE
LOWtests/settings/test_settings.py116 def test_basedir_initialization_with_custom_config(self):CODE
LOWtests/settings/test_settings.py170 def test_temperature_regex_should_not_match(self):CODE
LOWtests/settings/test_settings.py199 def test_temperature_regex_matches(self):CODE
LOWtests/settings/test_settings.py397 def test_set_boolean_convert_string_true(self, value):CODE
LOWtests/settings/test_settings.py408 def test_set_boolean_convert_any_false(self, value):CODE
LOWtests/settings/test_settings.py535 def test_get_preprocessor_parent_path(self):CODE
LOWtests/settings/test_settings.py566 def test_set_preprocessor_parent_path(self):CODE
LOWtests/settings/test_settings.py582 def test_set_external_modification(self):CODE
LOWtests/settings/test_settings.py605 def test_update_callback_change(CODE
LOWtests/settings/test_settings.py618 def test_update_callback_reset_to_default(self):CODE
LOWtests/settings/test_settings.py629 def test_update_callback_wrong_path(self):CODE
LOWtests/settings/test_settings.py640 def test_update_callback_removal(self):CODE
LOWtests/settings/test_settings.py660 def test_update_callback_child_write(self):CODE
LOWtests/settings/test_settings.py673 def test_overlay_add_and_remove(self):CODE
LOWtests/settings/test_settings.py688 def test_overlay_add_and_remove_deprecated(self):CODE
LOWtests/settings/test_settings.py730 def test_serial_compat_overlay(self, serial_key, expected):CODE
LOWtests/settings/test_settings.py741 def test_serial_compat_overlay_updates(self, source_path, new_value, serial_key):CODE
LOWtests/settings/test_settings.py753 def test_blocklist_compat_overlay(self, settings_key, expected):CODE
LOWtests/settings/test_settings.py758 def test_webcam_compat_overlay(self):CODE
LOWtests/settings/test_settings.py866 def test_migrate_trusted_proxies(self, config, expected_config, expected_return):CODE
LOWtests/settings/test_settings.py938 def test_migrate_terminal_filters(self, filters, expected_filters, expected_return):CODE
LOWtests/settings/test_settings.py945 def test_migrate_terminal_filters_no_key(self):CODE
LOWtests/settings/test_settings.py1031 def blocklist_compat_settings(self):CODE
LOWtests/settings/test_settings.py1198 def test_del_by_path_with_subtree(self):CODE
LOWtests/settings/test_settings.py1306 def test_prefix_caching_del_invalidates(self):CODE
LOWtests/settings/test_settings.py1325 def test_prefix_caching_custom_defaults(self):CODE
LOWtests/access/groups/test_groupmanager.py21def group_manager_with_temp_file():CODE
LOWtests/access/groups/test_groupmanager.py49 def test_cyclic_subgroup_self_reference(self):CODE
LOWtests/access/groups/test_groupmanager.py62 def test_cyclic_subgroup_indirect(self):CODE
LOWtests/access/users/test_users.py33 def test_settings_change_propagates(self):CODE
LOWtests/access/users/test_usermanager.py38def test_nologin_user_check_password_always_false(password):CODE
LOWtests/util/test_version.py21 def test_get_comparable_version(self, version, cut, expected):CODE
LOWtests/util/test_version.py34 def test_get_comparable_version_base(self):CODE
LOWtests/util/test_net.py17def patched_ifaddr_get_adapters():CODE
LOWtests/util/test_net.py117def test_get_netmask_broken_address():CODE
LOWtests/util/test_net.py240def test_usable_trusted_proxies(proxies, add_localhost, expected):CODE
LOWtests/util/test_net.py244def test_usable_trusted_proxies_from_settings():CODE
LOWtests/util/test_net.py281def test_get_forwarded_for_addresses(forwarded_for, expected):CODE
LOWtests/util/test_net.py346def test_get_trusted_forwarded_for_addresses(forwarded_for, trusted_proxies, expected):CODE
LOWtests/util/test_net.py402def test_contains_trusted_source(trusted, forwarded_for, trusted_proxies, expected):CODE
577 more matches not shown…
Excessive Try-Catch Wrapping520 hits · 502 pts
SeverityFileLineSnippetContext
LOWtests/settings/test_settings.py143 except Exception:CODE
LOWtests/settings/test_settings.py113 except Exception:CODE
LOWtests/settings/test_settings.py967 except Exception:CODE
LOWtests/util/test_version.py26 except Exception as exc:CODE
LOWdocs/sphinxext/pydanticext.py31 except Exception:CODE
LOWsrc/octoprint_client/__init__.py50 except Exception:CODE
MEDIUMsrc/octoprint/timelapse.py463def unregister_callback(callback):CODE
MEDIUMsrc/octoprint/timelapse.py1290def _try_generate_thumbnail(cls, ffmpeg, movie_path):CODE
LOWsrc/octoprint/timelapse.py129 except Exception:CODE
LOWsrc/octoprint/timelapse.py176 except Exception:CODE
LOWsrc/octoprint/timelapse.py315 except Exception:CODE
LOWsrc/octoprint/timelapse.py381 except Exception:CODE
LOWsrc/octoprint/timelapse.py487 except Exception:CODE
LOWsrc/octoprint/timelapse.py874 except Exception:CODE
LOWsrc/octoprint/timelapse.py884 except Exception:CODE
LOWsrc/octoprint/timelapse.py905 except Exception as e:CODE
LOWsrc/octoprint/timelapse.py919 except Exception:CODE
LOWsrc/octoprint/timelapse.py1256 except Exception:CODE
LOWsrc/octoprint/timelapse.py1263 except Exception:CODE
LOWsrc/octoprint/timelapse.py1281 except Exception:CODE
LOWsrc/octoprint/timelapse.py1314 except Exception as ex:CODE
LOWsrc/octoprint/_version.py207 except Exception:STRING
LOWsrc/octoprint/_version.py235 except Exception:STRING
LOWsrc/octoprint/events.py200 except Exception:CODE
LOWsrc/octoprint/events.py213 except Exception:CODE
LOWsrc/octoprint/events.py473 except Exception:CODE
LOWsrc/octoprint/events.py568 except Exception:CODE
MEDIUMsrc/octoprint/events.py182def _work(self):CODE
MEDIUMsrc/octoprint/events.py543def process():CODE
LOWsrc/octoprint/__init__.py143 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py152 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py161 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py97 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py115 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py177 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py186 except Exception as ex:CODE
LOWsrc/octoprint/__init__.py543 except Exception:CODE
LOWsrc/octoprint/__init__.py729 except Exception:CODE
LOWsrc/octoprint/__init__.py1001 except Exception as e:CODE
LOWsrc/octoprint/__init__.py1006 except Exception as e:CODE
LOWsrc/octoprint/__init__.py1040 except Exception:CODE
LOWsrc/octoprint/environment.py32 except Exception:CODE
LOWsrc/octoprint/environment.py64 except Exception:CODE
LOWsrc/octoprint/environment.py83 except Exception:CODE
LOWsrc/octoprint/environment.py93 except Exception:CODE
LOWsrc/octoprint/environment.py103 except Exception:CODE
LOWsrc/octoprint/environment.py121 except Exception:CODE
LOWsrc/octoprint/environment.py138 except Exception:CODE
LOWsrc/octoprint/environment.py160 except Exception:CODE
LOWsrc/octoprint/environment.py187 except Exception:CODE
MEDIUMsrc/octoprint/environment.py46def run_detection(self, notify_plugins=True):CODE
LOWsrc/octoprint/daemon.py146 except Exception:CODE
MEDIUMsrc/octoprint/settings/__init__.py1106def process(path):CODE
MEDIUMsrc/octoprint/settings/__init__.py1216def remove_path_update_callback(self, path, callback):CODE
LOWsrc/octoprint/settings/__init__.py741 except Exception:CODE
LOWsrc/octoprint/settings/__init__.py778 except Exception:CODE
LOWsrc/octoprint/settings/__init__.py819 except Exception:CODE
LOWsrc/octoprint/settings/__init__.py953 except Exception:CODE
LOWsrc/octoprint/settings/__init__.py1111 except Exception:CODE
LOWsrc/octoprint/settings/__init__.py1133 except Exception:CODE
460 more matches not shown…
Deep Nesting251 hits · 175 pts
SeverityFileLineSnippetContext
LOWsetup.py6CODE
LOWsetup.py10CODE
LOWtools/scan-deps.py53CODE
LOWtests/plugins/serial_connector/test_serial_comm.py295CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py101CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py167CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py269CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py302CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py110CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py277CODE
LOW…plugins/serial_connector/test_serial_baudrate_lists.py305CODE
LOW…ts/plugins/serial_connector/test_settings_migration.py20CODE
LOWtests/http_api/test_settings_api.py7CODE
LOWtests/server/util/test_util.py159CODE
LOWtests/server/util/test_flask.py521CODE
LOWdocs/sphinxext/pydanticext.py286CODE
LOWdocs/sphinxext/codeblockext.py116CODE
LOWsrc/octoprint_setuptools/__init__.py47CODE
LOWsrc/octoprint_setuptools/__init__.py124CODE
LOWsrc/octoprint/timelapse.py78CODE
LOWsrc/octoprint/timelapse.py162CODE
LOWsrc/octoprint/timelapse.py304CODE
LOWsrc/octoprint/timelapse.py355CODE
LOWsrc/octoprint/timelapse.py494CODE
LOWsrc/octoprint/timelapse.py109CODE
LOWsrc/octoprint/timelapse.py855CODE
LOWsrc/octoprint/timelapse.py879CODE
LOWsrc/octoprint/timelapse.py1139CODE
LOWsrc/octoprint/timelapse.py1269CODE
LOWsrc/octoprint/_version.py247CODE
LOWsrc/octoprint/events.py182CODE
LOWsrc/octoprint/__init__.py704CODE
LOWsrc/octoprint/__init__.py777CODE
LOWsrc/octoprint/__init__.py912CODE
LOWsrc/octoprint/__init__.py865CODE
LOWsrc/octoprint/__init__.py934CODE
LOWsrc/octoprint/settings/__init__.py2431CODE
LOWsrc/octoprint/settings/__init__.py203CODE
LOWsrc/octoprint/settings/__init__.py811CODE
LOWsrc/octoprint/settings/__init__.py1101CODE
LOWsrc/octoprint/settings/__init__.py1283CODE
LOWsrc/octoprint/settings/__init__.py1403CODE
LOWsrc/octoprint/settings/__init__.py1521CODE
LOWsrc/octoprint/settings/__init__.py1674CODE
LOWsrc/octoprint/settings/__init__.py1731CODE
LOWsrc/octoprint/settings/__init__.py1962CODE
LOWsrc/octoprint/settings/__init__.py2254CODE
LOWsrc/octoprint/access/users.py279CODE
LOWsrc/octoprint/access/users.py345CODE
LOWsrc/octoprint/access/users.py429CODE
LOWsrc/octoprint/access/users.py812CODE
LOWsrc/octoprint/access/groups.py224CODE
LOWsrc/octoprint/access/permissions.py25CODE
LOWsrc/octoprint/util/plugins.py57CODE
LOWsrc/octoprint/util/connectivity.py198CODE
LOWsrc/octoprint/util/gcodeInterpreter.py331CODE
LOWsrc/octoprint/util/net.py74CODE
LOWsrc/octoprint/util/__init__.py109CODE
LOWsrc/octoprint/util/__init__.py518CODE
LOWsrc/octoprint/util/__init__.py640CODE
191 more matches not shown…
Unused Imports79 hits · 70 pts
SeverityFileLineSnippetContext
LOWdocs/sphinxext/codeblockext.py1CODE
LOWsrc/octoprint_setuptools/__init__.py3CODE
LOWsrc/octoprint_setuptools/__init__.py3CODE
LOWsrc/octoprint_setuptools/__init__.py3CODE
LOWsrc/octoprint_setuptools/__init__.py3CODE
LOWsrc/octoprint/util/comm.py9CODE
LOWsrc/octoprint/util/__init__.py28CODE
LOWsrc/octoprint/util/__init__.py29CODE
LOWsrc/octoprint/util/__init__.py35CODE
LOWsrc/octoprint/util/__init__.py36CODE
LOWsrc/octoprint/util/__init__.py36CODE
LOWsrc/octoprint/util/__init__.py41CODE
LOWsrc/octoprint/util/__init__.py41CODE
LOWsrc/octoprint/util/__init__.py41CODE
LOWsrc/octoprint/util/json/__init__.py4CODE
LOWsrc/octoprint/util/json/__init__.py5CODE
LOWsrc/octoprint/util/json/__init__.py5CODE
LOWsrc/octoprint/util/json/__init__.py5CODE
LOWsrc/octoprint/plugins/serial_connector/connector.py32CODE
LOWsrc/octoprint/plugins/serial_connector/connector.py33CODE
LOWsrc/octoprint/plugins/serial_connector/connector.py34CODE
LOWsrc/octoprint/plugins/serial_connector/connector.py34CODE
LOW…/octoprint/plugins/softwareupdate/updaters/__init__.py5CODE
LOW…/octoprint/plugins/softwareupdate/updaters/__init__.py5CODE
LOW…/octoprint/plugins/softwareupdate/updaters/__init__.py5CODE
LOW…/octoprint/plugins/softwareupdate/updaters/__init__.py5CODE
LOW…/octoprint/plugins/softwareupdate/updaters/__init__.py5CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOW…rint/plugins/softwareupdate/version_checks/__init__.py6CODE
LOWsrc/octoprint/plugins/errortracking/__init__.py14CODE
LOW…/octoprint/plugins/health_check/checks/gtt_unusable.py11CODE
LOWsrc/octoprint/plugin/__init__.py22CODE
LOWsrc/octoprint/plugin/__init__.py22CODE
LOWsrc/octoprint/plugin/__init__.py23CODE
LOWsrc/octoprint/server/__init__.py17CODE
LOWsrc/octoprint/server/__init__.py21CODE
LOWsrc/octoprint/server/__init__.py21CODE
LOWsrc/octoprint/server/__init__.py21CODE
LOWsrc/octoprint/server/__init__.py33CODE
LOWsrc/octoprint/server/__init__.py33CODE
LOWsrc/octoprint/server/__init__.py34CODE
LOWsrc/octoprint/server/__init__.py54CODE
LOWsrc/octoprint/server/__init__.py54CODE
LOWsrc/octoprint/server/__init__.py1254CODE
LOWsrc/octoprint/server/views.py30CODE
LOWsrc/octoprint/server/util/__init__.py29CODE
LOWsrc/octoprint/server/util/__init__.py29CODE
LOWsrc/octoprint/server/util/__init__.py29CODE
LOWsrc/octoprint/server/api/__init__.py57CODE
19 more matches not shown…
Over-Commented Block70 hits · 67 pts
SeverityFileLineSnippetContext
LOWrequirements.txt1###COMMENT
LOW.github/workflows/build.yml301COMMENT
LOWsrc/octoprint/__init__.py1101COMMENT
LOWsrc/octoprint/util/pip.py341 "to be used by OctoPrint. Please upgrade your pip version."COMMENT
LOWsrc/octoprint/util/pip.py521COMMENT
LOW…stomcontrolmanager/static/css/customcontrolmanager.css1#settings_plugin_customcontrolmanager .customcontrolmananger-add-buttons{text-align:center}#settings_plugin_customcontroCOMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py2701 ):COMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py2961 if firmware_name is None:COMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py6601 # If it is, we just throw away T (it's redundant). ItCOMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py6621 #COMMENT
LOW…t/plugins/softwareupdate/static/css/softwareupdate.css1#settings_plugin_softwareupdate_updatelist{display:block;width:auto;overflow-x:hidden;padding-right:2px;margin-bottom:1eCOMMENT
LOW…t/plugins/softwareupdate/version_checks/commandline.py21 if not online and not check.get("offline", False):COMMENT
LOW…int/plugins/pluginmanager/static/css/pluginmanager.css1#settings_plugin_pluginmanager_pluginlist{height:calc(100vh - 450px);display:block;width:auto;overflow-x:hidden;padding-COMMENT
LOW…toprint/plugins/gcodeviewer/static/css/gcodeviewer.css1#gcode .progress{width:588px}#gcode .progress .bar{-webkit-transition:width 0s linear;-moz-transition:width 0s linear;-oCOMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js21 //COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js1481 dist--;COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js1541 // including commercial applications, and to alter it and redistribute itCOMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js1581 // (C) 2014-2017 Vitaly Puzrin and Andrey TupitsinCOMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js1681 //COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js1741COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js2221 // let init = 0;COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js4221COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js4661 constants: constants$1COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js4921COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js5101 // (C) 2014-2017 Vitaly Puzrin and Andrey TupitsinCOMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js5521 /* set return parameters */COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js7261 copy = state.offset - copy;COMMENT
LOWsrc/octoprint/plugins/gcodeviewer/static/js/lib/pako.js7581 inflate: inflate_2$1,COMMENT
LOWsrc/octoprint/plugins/appkeys/static/css/appkeys.css1#settings_plugin_appkeys_allkeys_table .settings_plugin_appkeys_actions,#settings_plugin_appkeys_userkeys_table .settingCOMMENT
LOWsrc/octoprint/plugins/backup/static/css/backup.css1#settings_plugin_backup_backup_table .settings_plugin_backup_actions{width:75px;text-align:center}#settings_plugin_backuCOMMENT
LOWsrc/octoprint/server/util/sockjs.py641COMMENT
LOWsrc/octoprint/static/css/recovery.css1#workdialog .pre-output span{display:block}#workdialog .pre-output .message{font-weight:700}#workdialog .pre-output .errCOMMENT
LOWsrc/octoprint/static/less/octoprint.less1501 }COMMENT
LOW…rint/static/less/bootstrap/responsive-768px-979px.less1//COMMENT
LOWsrc/octoprint/static/less/bootstrap/sprites.less1//COMMENT
LOWsrc/octoprint/static/js/lib/hls.js121 */COMMENT
LOWsrc/octoprint/static/js/lib/hls.js541 // slash), then the embedded URL inherits the base URL pathCOMMENT
LOWsrc/octoprint/static/js/lib/hls.js15301 // frag[Ø] : [0,10]COMMENT
LOWsrc/octoprint/static/js/lib/hls.js16901 0x5f: 0xf3,COMMENT
LOWsrc/octoprint/static/js/lib/hls.js16941 // lowercase a, circumflex accentCOMMENT
LOWsrc/octoprint/static/js/lib/hls.js17001 // uppercase I, with diaresisCOMMENT
LOWsrc/octoprint/static/js/lib/less.js2441 sel.push(new Selector(elements));COMMENT
LOWsrc/octoprint/static/js/lib/less.js3181 },COMMENT
LOWsrc/octoprint/static/js/lib/less.js3621 this.setParent(this.rules, this);COMMENT
LOWsrc/octoprint/static/js/lib/less.js6461 });COMMENT
LOWsrc/octoprint/static/js/lib/less.js6481 // for example, if a value doesn't hold any variables, operationsCOMMENT
LOWsrc/octoprint/static/js/lib/less.js6701 // color: #fff;COMMENT
LOWsrc/octoprint/static/js/lib/less.js6721 //COMMENT
LOWsrc/octoprint/static/js/lib/less.js7221 //COMMENT
LOWsrc/octoprint/static/js/lib/less.js7441 // ...COMMENT
LOWsrc/octoprint/static/js/lib/less.js7541 //COMMENT
LOWsrc/octoprint/static/js/lib/less.js9081 // // Return which of `color1` and `color2` has the greatest contrast with `color`COMMENT
LOWsrc/octoprint/static/js/lib/less.js9101 // if (luma > luma1) {COMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js81 }COMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js101 // of the widget element on plugin initialization.COMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js121 // The following option limits the number of files uploaded with oneCOMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js141 // data and set to 'redirect' if this option is empty:COMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js161 // By default, failed (abort or error) file uploads are removed from theCOMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js201 // using this option, which accepts an array of objects with name andCOMMENT
LOWsrc/octoprint/static/js/lib/jquery/jquery.fileupload.js241COMMENT
10 more matches not shown…
Cross-Language Confusion8 hits · 59 pts
SeverityFileLineSnippetContext
HIGHsrc/octoprint/plugins/serial_connector/serial_comm.py3664 # nothing sent but also no job active, so we can just return falseCOMMENT
HIGHsrc/octoprint/plugins/serial_connector/serial_comm.py4363 # we are no longer printing, return falseCOMMENT
HIGHsrc/octoprint/plugins/serial_connector/serial_comm.py4367 # job is on hold, return falseCOMMENT
HIGHsrc/octoprint/plugins/serial_connector/serial_comm.py4380 # end of file, return falseCOMMENT
HIGHsrc/octoprint/plugins/serial_connector/serial_comm.py4393 # line from file sent, return trueCOMMENT
HIGHsrc/octoprint/plugins/serial_connector/serial_comm.py4409 # line from script sent, return trueCOMMENT
HIGHsrc/octoprint/server/util/flask.py219 flask_ctx.push()CODE
HIGHsrc/octoprint/server/util/webassets.py174 log.error("Error in JS assets for plugin {plugin}:", `${{error.message}}\n${{error.stack || error}}`);CODE
Docstring Block Structure6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHsrc/octoprint/util/files.py83 Converts the provided input filename to a 8.3 DOS compatible filename. If ``existing_filenames`` is provided, the STRING
HIGHsrc/octoprint/util/files.py162 Tries to find a collision free translation of "<filename>.<extension>" to the 8.3 DOS compatible format, prevenSTRING
HIGHsrc/octoprint/util/version.py181 Args: version_string: The version string for which to create a comparable version instance cut: optSTRING
HIGHsrc/octoprint/util/commandline.py130 Calls a command and raises an error if it doesn't return with return code 0 Args: command STRING
HIGHsrc/octoprint/util/text.py22 Sanitizes text by running it through slugify and optionally emoji translating. Examples: >>> sanitize("HeSTRING
HIGHsrc/octoprint/server/util/flask.py1429Compares the provided lastmodified value with the value of the If-Modified-Since header. If ``lastmodified`` is an STRING
AI Slop Vocabulary10 hits · 17 pts
SeverityFileLineSnippetContext
LOWsrc/octoprint_client/__init__.py59 # now, normally we could just use functools.partial for something likeCOMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py3664 # nothing sent but also no job active, so we can just return falseCOMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py6692 # whatever that was, it was not an integer, so we'll just use the whole line as filename and set size/timestCOMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py6777 # Good job Malyan. Why use a : when you can also just use a ., right? Let's revert that.COMMENT
MEDIUMsrc/octoprint/plugins/serial_connector/config_schema.py176 """Command to send in order to initiate a handshake with the printer."""STRING
LOWsrc/octoprint/plugins/softwareupdate/__init__.py2114 # if there was an unignorable error, we just return errorCOMMENT
LOWsrc/octoprint/plugins/virtual_printer/virtual.py810 # we'll just use json.dumps to generate the string, and then remove the quotes and spacesCOMMENT
LOWsrc/octoprint/plugins/virtual_printer/virtual.py816 # we'll just use this to echo a message, to allow playing around with pause triggersCOMMENT
MEDIUMsrc/octoprint/static/js/lib/less.js10936 // TODO - could do with adding more robust error handlingCOMMENT
MEDIUMsrc/octoprint/static/js/lib/jquery/jquery.js10821// understands anonymous AMD modules. A named AMD is safest and most robustCOMMENT
AI Structural Patterns23 hits · 16 pts
SeverityFileLineSnippetContext
LOWtests/util/test_repeated_timer.py33CODE
LOWsrc/octoprint_client/__init__.py257CODE
LOWsrc/octoprint_setuptools/__init__.py524CODE
LOWsrc/octoprint_setuptools/__init__.py573CODE
LOWsrc/octoprint/timelapse.py1090CODE
LOWsrc/octoprint/__init__.py60CODE
LOWsrc/octoprint/__init__.py254CODE
LOWsrc/octoprint/util/__init__.py1249CODE
LOWsrc/octoprint/plugins/pluginmanager/__init__.py939CODE
LOWsrc/octoprint/plugins/pluginmanager/__init__.py1053CODE
LOWsrc/octoprint/plugins/virtual_printer/virtual.py1666CODE
LOWsrc/octoprint/plugins/backup/__init__.py976CODE
LOWsrc/octoprint/plugins/backup/__init__.py1200CODE
LOWsrc/octoprint/plugin/__init__.py42CODE
LOWsrc/octoprint/plugin/core.py846CODE
LOWsrc/octoprint/plugin/core.py1216CODE
LOWsrc/octoprint/plugin/core.py1310CODE
LOWsrc/octoprint/server/__init__.py265CODE
LOWsrc/octoprint/server/util/flask.py262CODE
LOWsrc/octoprint/server/util/flask.py1410CODE
LOWsrc/octoprint/server/util/tornado.py1323CODE
LOWsrc/octoprint/cli/client.py26CODE
LOWsrc/octoprint/slicing/__init__.py225CODE
Synthetic Comment Markers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHCONTRIBUTING.md307Code or documentation that is initially generated by AI and subsequently edited will still be considered AI-generated. ACODE
HIGH.github/workflows/issue_automation.yml84 It looks like you didn't upload a [system info bundle](https://community.octoprint.org/t/29887) as requestedCODE
Overly Generic Function Names6 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/util/test_fast_deepcopy.py18 def test_function(self):CODE
LOWtests/util/test_resettable_timer.py16 def test_function(self):CODE
LOWsrc/octoprint/plugins/appkeys/__init__.py184 def handle_request(self):CODE
LOWsrc/octoprint/server/util/tornado.py897 async def handle_request(self, request, body=None, future=None):CODE
LOWsrc/octoprint/static/js/lib/jquery/jquery.flot.js1083 function processData() {CODE
LOWsrc/octoprint/static/js/lib/jquery/jquery.js4401function getData( data ) {CODE
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMdocs/plugins/examples/read_m115_response.py10 # Create a dict with all the keys/values returned by the M115 requestCOMMENT
MEDIUMsrc/octoprint/plugin/core.py1248 # Create a simple dummy entry first ...COMMENT
Modern Structural Boilerplate6 hits · 5 pts
SeverityFileLineSnippetContext
LOWsrc/octoprint/timelapse.py36logger = logging.getLogger(__name__)CODE
LOWsrc/octoprint/settings/__init__.py404 def set_by_path(self, path: list[str], value: Any) -> None:CODE
LOWsrc/octoprint/util/__init__.py47logger = logging.getLogger(__name__)CODE
LOWsrc/octoprint/plugins/virtual_printer/virtual.py1926 def _setPosition(self, line: str) -> None:STRING
LOWsrc/octoprint/plugins/health_check/checks/__init__.py44 def update_settings(self, settings: dict = None) -> None:CODE
LOWsrc/octoprint/printer/connection.py275 def set_job(self, job: PrintJob, *args, **kwargs) -> None:CODE
Slop Phrases3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/octoprint/settings/__init__.py428 # make sure to clear anything below the path (e.g. switching from dictCOMMENT
LOWsrc/octoprint/plugins/serial_connector/serial_comm.py1538 # make sure to ignore the "file selected" later on, otherwise we'll reset our progress dataCOMMENT
LOWsrc/octoprint/server/util/flask.py369 # without stripping original scheme header first, make sure to only useCOMMENT
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/playwright/specs/login.spec.js155 await page.getByTestId("mfa-dummy-token").fill(mfaCredentials.token);CODE
LOWtests/playwright/specs/login.spec.js163 await page.getByTestId("mfa-dummy-token").fill("bzzt, wrong");CODE
LOWsrc/octoprint/static/js/app/helpers.js1065 textInput.attr("placeholder", placeholder);CODE
LOWsrc/octoprint/static/js/app/viewmodels/files.js2061 .prop("placeholder", response.suggestion || "");CODE
Dead Code2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMsrc/octoprint/filemanager/storage/common.py171CODE
MEDIUMsrc/octoprint/filemanager/storage/common.py177CODE
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/octoprint/_version.py69# ---------------------------------------------------------------------------------------COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/octoprint/static/js/lib/less.js10705 // TODO: Add tests for browser @pluginCOMMENT