Repository Analysis

pyodide/pyodide

Pyodide is a Python distribution for the browser and Node.js based on WebAssembly

12.0 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of pyodide/pyodide, a Python project with 14,733 GitHub stars. SynthScan v2.0 examined 100,037 lines of code across 453 source files, recording 827 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 12.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).

12.0
Adjusted Score
12.0
Raw Score
100%
Time Factor
2026-07-08
Last Push
14.7K
Stars
Python
Language
100.0K
Lines of Code
453
Files
827
Pattern Hits
2026-07-14
Scan Date
0.41
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 0HIGH 184MEDIUM 25LOW 618

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 827 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.

Cross-Language Confusion182 hits · 656 pts
SeverityFileLineSnippetContext
HIGHconftest.py315 return Array.from(pyodide._module.pyproxy_alloc_map.entries(), ([x, s]) => [x.type, x.toString(), "TraceCODE
HIGHsrc/py/_pyodide/_core_docs.py1422 result.push(convert(value.first))STRING
HIGHsrc/py/_pyodide/_core_docs.py1423 result.push(convert(value.second))STRING
HIGHsrc/py/_pyodide/_core_docs.py1567 >>> js_object.toString()STRING
HIGHsrc/py/_pyodide/_core_docs.py1626 result.push(convert(value.first))STRING
HIGHsrc/py/_pyodide/_core_docs.py1627 result.push(convert(value.second))STRING
HIGHsrc/py/pyodide/console.py253 >>> future = console.push("print('Hello, World!')") # doctest: +SKIPCODE
HIGHsrc/py/pyodide/console.py610 >>> future = console.push("import numpy as np; print(np.array([1, 2, 3]))") # doctest: +SKIPCODE
HIGHsrc/tests/test_streams.py140 stdout_codes.push(code);CODE
HIGHsrc/tests/test_streams.py211 null,CODE
HIGHsrc/tests/test_streams.py214 null,CODE
HIGHsrc/tests/test_streams.py249 null,CODE
HIGHsrc/tests/test_streams.py282 null,CODE
HIGHsrc/tests/test_streams.py313 null,CODE
HIGHsrc/tests/test_streams.py346 null,CODE
HIGHsrc/tests/test_streams.py433 this.writtenBuffers.push(buffer.slice());CODE
HIGHsrc/tests/test_streams.py610 result.push(new TextDecoder().decode(a));CODE
HIGHsrc/tests/test_streams.py59 stdoutStrings.push(s);STRING
HIGHsrc/tests/test_streams.py62 stderrStrings.push(s);STRING
HIGHsrc/tests/test_streams.py191 run_js("pyodide.setStdin({stdin: () => undefined})")STRING
HIGHsrc/tests/test_streams.py398 "read returned undefined; a correct implementation must return a number"STRING
HIGHsrc/tests/test_streams.py421 expected = "write returned undefined; a correct implementation must return a number"STRING
HIGHsrc/tests/test_pyproxy.py563 assert(() => d.__getitem__.prototype === undefined);CODE
HIGHsrc/tests/test_pyproxy.py567 assert(() => d.get.type === undefined);CODE
HIGHsrc/tests/test_pyproxy.py568 assert(() => d.set.type === undefined);CODE
HIGHsrc/tests/test_pyproxy.py1001 result.push(a.get(1));CODE
HIGHsrc/tests/test_pyproxy.py1002 result.push(b.get(1));CODE
HIGHsrc/tests/test_pyproxy.py2318 func = run_js("(a) => a.push(1, 2, 3)")CODE
HIGHsrc/tests/test_pyproxy.py93 pyproxy_to_string = run_js("(e) => e.toString()")CODE
HIGHsrc/tests/test_pyproxy.py591 assert(() => Test.prototype === undefined);CODE
HIGHsrc/tests/test_pyproxy.py713 assert(() => d.x === undefined);CODE
HIGHsrc/tests/test_pyproxy.py773 assert(() => t.prototype === undefined);CODE
HIGHsrc/tests/test_pyproxy.py818 assert(() => l.get.type === undefined);CODE
HIGHsrc/tests/test_pyproxy.py834 assert(() => l.length === 2 && l.get(1) === 7);CODE
HIGHsrc/tests/test_pyproxy.py1054 assertThrows(() => t.toString(), "PythonError", "");CODE
HIGHsrc/tests/test_pyproxy.py1111 assertThrows(() => t.toString(), "NoGilError", "");CODE
HIGHsrc/tests/test_pyproxy.py2526 const res = Object.fromEntries(Reflect.ownKeys(Function.prototype).map(k => [k.toString(), k in o]));CODE
HIGHsrc/tests/test_pyproxy.py2550 if(x && x.destroy) {CODE
HIGHsrc/tests/test_pyproxy.py125 result.push(pyodide.globals.has("xxxxx"));STRING
HIGHsrc/tests/test_pyproxy.py126 result.push(pyodide.globals.has("yyyyy"));STRING
HIGHsrc/tests/test_pyproxy.py127 result.push(pyodide.globals.has("globals"));STRING
HIGHsrc/tests/test_pyproxy.py128 result.push(pyodide.globals.has("open"));STRING
HIGHsrc/tests/test_pyproxy.py1382 undefined,STRING
HIGHsrc/tests/test_pyproxy.py1383 null,STRING
HIGHsrc/tests/test_pyproxy.py1392 assert(() => JSON.stringify(fpy.apply(undefined, input)) === JSON.stringify(fjs.apply(undefined, input)));STRING
HIGHsrc/tests/test_pyproxy.py1396 assertThrows(() => fjs.apply(undefined, error_input), "TypeError", "");STRING
HIGHsrc/tests/test_pyproxy.py1397 assertThrows(() => fpy.apply(undefined, error_input), "TypeError", "");STRING
HIGHsrc/tests/test_pyproxy.py1546 r.push(g.next());STRING
HIGHsrc/tests/test_pyproxy.py1547 r.push(g.next(3));STRING
HIGHsrc/tests/test_pyproxy.py1548 r.push(g.next(4));STRING
HIGHsrc/tests/test_pyproxy.py1549 r.push(g.next(5));STRING
HIGHsrc/tests/test_pyproxy.py1595 r.push(g.next());STRING
HIGHsrc/tests/test_pyproxy.py1596 r.push(g.return(5));STRING
HIGHsrc/tests/test_pyproxy.py1597 r.push(g.next());STRING
HIGHsrc/tests/test_pyproxy.py1662 r.push(g.next());STRING
HIGHsrc/tests/test_pyproxy.py1663 r.push(g.throw(new TypeError('hi')));STRING
HIGHsrc/tests/test_pyproxy.py1664 r.push(g.next());STRING
HIGHsrc/tests/test_pyproxy.py1712 r.push(await g.next());STRING
HIGHsrc/tests/test_pyproxy.py1713 r.push(await g.next(3));STRING
HIGHsrc/tests/test_pyproxy.py1714 r.push(await g.next(4));STRING
122 more matches not shown…
Hyper-Verbose Identifiers316 hits · 219 pts
SeverityFileLineSnippetContext
LOWconftest.py176def pytest_collection_modifyitems(config, items):STRING
LOWconftest.py281def extra_checks_test_wrapper(browser, trace_hiwire_refs, trace_pyproxies, item):STRING
LOWtools/create_lockfile_diff.py42def get_lockfile_url_from_makefile(branch: str | None = None) -> str:CODE
LOWtools/pytest_wrapper.py10def remove_num_threads_option(args: list[str]) -> None:CODE
LOWtools/bump_version.py90def python_version_to_js_version(version: str) -> Constant:CODE
LOWtools/backport.py54def get_needs_backport_pr_numbers() -> tuple[int, ...]:CODE
LOWtools/backport.py65def get_needs_backport_prs_strings() -> tuple[str, ...]:CODE
LOWtools/backport.py456 def remove_release_notes_from_unreleased_section(CODE
LOWtools/docker_image_tag.py20def latest_version_of_firefox() -> str:CODE
LOWtools/deploy_s3.py26def _validate_remote_prefix_to_remove(remote_prefix: Path) -> None:CODE
LOWtools/tests/test_bump_version.py278def test_bump_version_dirty_working_tree(tmp_path):CODE
LOWtools/tests/test_bump_version.py292def test_bump_version_updates_changelog_for_minor_release(tmp_path):CODE
LOWtools/tests/test_bump_version.py152def test_bump_version_dry_run(tmp_path):CODE
LOWtools/tests/test_bump_version.py171def test_bump_version_check_no_changes(tmp_path):CODE
LOWtools/tests/test_bump_version.py206def test_bump_version_check_with_changes(tmp_path):CODE
LOWtools/tests/test_bump_version.py216def test_bump_version_updates_files(tmp_path):CODE
LOWtools/tests/test_bump_version.py248def test_bump_version_dev_version(tmp_path):CODE
LOWtools/tests/test_bump_version.py261def test_bump_version_prerelease(tmp_path):CODE
LOWtools/tests/test_bump_version.py311def test_bump_version_does_not_update_changelog_for_patch_release(tmp_path):CODE
LOWtools/tests/test_bump_version.py325def test_bump_version_check_changelog_date(tmp_path):CODE
LOWtools/tests/test_bump_version.py342def test_bump_version_dry_run_does_not_update_changelog(tmp_path):CODE
LOWtools/tests/test_bump_version.py356def test_check_changelog_fails_with_unreleased(tmp_path):CODE
LOWtools/tests/test_bump_version.py367def test_check_changelog_fails_with_missing_version_header(tmp_path):CODE
LOWtools/tests/test_bump_version.py396def test_check_changelog_fails_with_no_blank_line_after_header(tmp_path):CODE
LOWtools/tests/test_bump_version.py424def test_check_changelog_fails_with_invalid_date_format(tmp_path):CODE
LOWtools/tests/test_bump_version.py453def test_update_changelog_fails_with_no_unreleased_section(tmp_path):CODE
LOWtools/tests/test_bump_version.py482def test_update_changelog_fails_when_version_already_exists(tmp_path):CODE
LOWtools/tests/test_backport.py180def test_add_backported_entries():CODE
LOWtools/tests/test_backport.py269def test_remove_backported_entries():CODE
LOWdocs/conf.py208def prevent_parens_after_js_class_xrefs():CODE
LOWdocs/conf.py220def calculate_pyodide_version(app):CODE
LOWdocs/conf.py348def prune_jsproxy_constructor_docs():CODE
LOWdocs/sphinx_pyodide/sphinx_pyodide/packages.py16def get_packages_summary_directive(app):CODE
LOWpackages/test-cpp-exceptions/test_cpp_exceptions.py5def test_uncaught_cpp_exceptions(selenium):CODE
LOWpackages/test-cpp-exceptions/test_cpp_exceptions.py35def test_cpp_exception_catching(selenium):CODE
LOWpackages/test-cpp-exceptions/test_cpp_exceptions.py72def test_cpp_exception_catching_invoke(selenium):CODE
LOWpackages/pytest-asyncio/inner_test_pytest_asyncio.py32def test_asyncio_marker_compatibility_with_xfail(pytester: Pytester):CODE
LOWpackages/pytest-asyncio/inner_test_pytest_asyncio.py53async def test_asyncio_marker_with_default_param(a_param=None):CODE
LOWpackages/numpy/test_numpy.py178def test_runpythonasync_numpy(selenium):STRING
LOWpackages/numpy/test_numpy.py259def test_get_buffer_roundtrip(selenium, arg):STRING
LOWpackages/numpy/test_numpy.py302def test_get_buffer_big_endian(selenium):STRING
LOWpackages/numpy/test_numpy.py329def test_get_buffer_error_messages(selenium):STRING
LOWpackages/micropip/test_micropip.py34def selenium_standalone_micropip(selenium_standalone_refresh):CODE
LOWpackages/micropip/test_micropip.py89def test_install_file_protocol_node(selenium_standalone_micropip):STRING
LOWpackages/micropip/test_micropip.py103def test_install_different_version(selenium_standalone_micropip):STRING
LOWpackages/micropip/test_micropip.py147def test_list_load_package_from_url(selenium_standalone_micropip, httpserver):STRING
LOWpackages/scipy/scipy-conftest.py340def pytest_collection_modifyitems(config, items):CODE
LOWsrc/py/ssl.py340 def _load_windows_store_certs(self, storename, purpose):CODE
LOWsrc/py/ssl.py395 def hostname_checks_common_name(self):CODE
LOWsrc/py/ssl.py403 def hostname_checks_common_name(self, value):CODE
LOWsrc/py/ssl.py567def _create_unverified_context(CODE
LOWsrc/py/ssl.py691 def verify_client_post_handshake(self):CODE
LOWsrc/py/ssl.py835 def verify_client_post_handshake(self):CODE
LOWsrc/py/_pyodide/_importhook.py213def add_note_to_module_not_found_error(e: ModuleNotFoundError) -> None:STRING
LOWsrc/py/_pyodide/_importhook.py238def register_module_not_found_hook(packages: Any) -> None:STRING
LOWsrc/py/_pyodide/jsbind.py158def get_attr_sig_method_helper(sig, attr):CODE
LOWsrc/py/pyodide/console.py405 def persistent_redirect_streams(self) -> None:CODE
LOWsrc/py/pyodide/console.py414 def persistent_restore_streams(self) -> None:CODE
LOWsrc/py/pyodide/console.py426 def _stdstreams_redirections_inner(self) -> Generator[None]:CODE
LOWsrc/py/pyodide/webloop.py316 async def shutdown_default_executor(self, timeout=None):CODE
256 more matches not shown…
Unused Imports175 hits · 116 pts
SeverityFileLineSnippetContext
LOWsrc/py/ssl.py17CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/ssl.py19CODE
LOWsrc/py/_pyodide/_core_docs.py20CODE
LOWsrc/py/_pyodide/__init__.py10CODE
LOWsrc/py/_pyodide/__init__.py10CODE
LOWsrc/py/pyodide/code.py6CODE
LOWsrc/py/pyodide/code.py6CODE
LOWsrc/py/pyodide/code.py6CODE
LOWsrc/py/pyodide/code.py6CODE
LOWsrc/py/pyodide/code.py6CODE
LOWsrc/py/pyodide/__init__.py17CODE
LOWsrc/py/pyodide/_core.py1CODE
LOWsrc/py/pyodide/ffi/__init__.py5CODE
LOWsrc/py/pyodide/ffi/__init__.py6CODE
LOWsrc/py/pyodide/ffi/__init__.py6CODE
LOWsrc/py/pyodide/http/_pyfetch.py5CODE
LOWsrc/py/pyodide/http/_pyfetch.py22CODE
LOWsrc/py/pyodide/http/__init__.py5CODE
LOWsrc/py/pyodide/http/__init__.py6CODE
LOWsrc/py/pyodide/http/__init__.py6CODE
LOWsrc/py/pyodide/http/__init__.py6CODE
LOWsrc/py/pyodide/http/__init__.py11CODE
LOWsrc/py/pyodide/http/__init__.py11CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
LOWsrc/tests/test_ssl_stub.py23CODE
115 more matches not shown…
Decorative Section Separators11 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMsrc/py/pyodide/_nodesock_transport.py54 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/py/pyodide/_nodesock_transport.py56 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/py/pyodide/_nodesock_transport.py84 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/py/pyodide/_nodesock_transport.py86 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/py/pyodide/_nodesock_transport.py158 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/py/pyodide/_nodesock_transport.py160 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/core/socket_syscalls.c15// ────────────COMMENT
MEDIUMsrc/tests/test_python_socket.py757# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/tests/test_python_socket.py759# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/tests/test_python_socket.py1016# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/tests/test_python_socket.py1018# ---------------------------------------------------------------------------COMMENT
Over-Commented Block36 hits · 36 pts
SeverityFileLineSnippetContext
LOWbenchmark/benchmarks/numpy_benchmarks/harris.py1# from: parakeet testbedCOMMENT
LOWtools/constraints.txt1# This file is used to track build constraints for packagesCOMMENT
LOWsrc/py/_pyodide/__init__.py1# _pyodide is imported at the very beginning of the initialization process so itCOMMENT
LOWsrc/py/_pyodide/__init__.py21 # sys.excepthook **except** traceback.print_exception uses the linecacheCOMMENT
LOWsrc/py/pyodide/__init__.py1# When the pyodide package is imported, both the js and the pyodide_js modulesCOMMENT
LOWsrc/core/jsproxy.c41#include "jsproxy.h"COMMENT
LOWsrc/core/jsproxy.c61#define IS_ARRAY (1 << 12)COMMENT
LOWsrc/core/jsproxy.c421// JsMethodCallSingleton is a special structure which we return fromCOMMENT
LOWsrc/core/jsproxy.c4161 PyObject* result = NULL;COMMENT
LOWsrc/core/jsproxy_call.c1#define PY_SSIZE_T_CLEANCOMMENT
LOWsrc/core/jsproxy_call.c21//COMMENT
LOWsrc/core/jsproxy_call.c41 int posparams_nmandatory;COMMENT
LOWsrc/core/error_handling.c1// clang-format offCOMMENT
LOWsrc/core/error_handling.c161COMMENT
LOWsrc/core/python2js.c1#define PY_SSIZE_T_CLEANCOMMENT
LOWsrc/core/python2js.c141//COMMENT
LOWsrc/core/python2js.c161// V8, Apple Silicon, two purpose-built binaries differing only in this file)COMMENT
LOWsrc/core/python2js.c181// list.join("") and see if one is faster than the other.COMMENT
LOWsrc/core/python2js.c921 "pyproxies",COMMENT
LOWsrc/core/socket_syscalls.c1#include "emscripten.h"COMMENT
LOWsrc/core/jsbind.c1#define PY_SSIZE_T_CLEANCOMMENT
LOWsrc/core/pyproxy.h81COMMENT
LOWsrc/core/jsmemops.h1// Macros to access memory from JavaScriptCOMMENT
LOWsrc/core/jsmemops.h21#define DEREF_F64(addr, offset) HEAPF64[(addr >>> 3) + offset]COMMENT
LOWsrc/core/error_handling.h1#ifndef ERROR_HANDLING_HCOMMENT
LOWsrc/core/error_handling.h81 } while (0)COMMENT
LOWsrc/core/python2js_buffer.c1#define PY_SSIZE_T_CLEANCOMMENT
LOWsrc/core/pyproxy.c1#define PY_SSIZE_T_CLEANCOMMENT
LOWsrc/core/pyproxy.c101#define HAS_SET (1 << 2)COMMENT
LOWsrc/core/pyproxy.c221COMMENT
LOWsrc/core/pyproxy.c321 }COMMENT
LOWsrc/core/pyproxy.ts601 // place the task wherever it likes.COMMENT
LOWsrc/core/stack_switching/pystate.c1#include "Python.h"COMMENT
LOWsrc/js/emscripten-settings.ts61 // Emscripten calls locateFile exactly one time with argumentCOMMENT
LOWsrc/js/types.ts41 export const HEAPU32: Uint32Array;COMMENT
LOWsrc/tests/python_tests.yaml1# This list is updated with tools/make_test_list.py script, which needsCOMMENT
Excessive Try-Catch Wrapping37 hits · 35 pts
SeverityFileLineSnippetContext
LOWconftest.py242 except Exception:STRING
LOWconftest.py295 except Exception:STRING
MEDIUMtools/bump_version.py190 print("Error: No '## Unreleased' section found in changelog", file=sys.stderr)CODE
MEDIUMtools/bump_version.py193 print(f"Error: '{version_header}' section found in changelog", file=sys.stderr)CODE
LOWdocs/sphinx_pyodide/sphinx_pyodide/util.py16 except Exception:CODE
LOWdocs/sphinx_pyodide/sphinx_pyodide/packages.py34 except Exception:CODE
LOWpackages/test-buffer/test_buffer.py87 except Exception as e:CODE
LOWpackages/_tests/test_packages_common.py41 except Exception as e:CODE
MEDIUMpackages/_tests/test_packages_common.py38def load_lockfile() -> PyodideLockSpec:CODE
LOWsrc/py/pyodide/_nodesock_transport.py38 except Exception:CODE
LOWsrc/py/pyodide/_nodesock_transport.py42 except Exception:CODE
LOWsrc/py/pyodide/_nodesock_transport.py149 except Exception as exc:CODE
LOWsrc/py/pyodide/_nodesock_transport.py183 except Exception as exc:CODE
MEDIUMsrc/py/pyodide/_nodesock_transport.py115def _read_loop(self) -> None:CODE
LOWsrc/py/pyodide/webloop.py126 except Exception as result_exception:CODE
LOWsrc/py/pyodide/webloop.py162 except Exception as e:CODE
LOWsrc/tests/test_console.py175 except Exception:CODE
MEDIUMsrc/tests/test_typeconversions.py27def no_hypothesis(x):CODE
LOWsrc/tests/test_typeconversions.py31 except Exception:CODE
LOWsrc/tests/test_stdlib_fixes.py123 except Exception:CODE
LOWsrc/tests/test_stdlib_fixes.py132 except Exception:CODE
LOWsrc/tests/test_filesystem.py75 except Exception as err:CODE
LOWsrc/tests/test_jsproxy.py3023 except Exception:CODE
LOWsrc/tests/test_jsproxy.py3057 except Exception:CODE
LOWsrc/tests/test_jsproxy.py3091 except Exception:CODE
LOWsrc/tests/test_stack_switching.py298 except Exception as e:CODE
MEDIUMsrc/tests/test_stack_switching.py295def f():CODE
LOWsrc/tests/test_webloop.py341 except Exception:STRING
LOWsrc/tests/test_webloop.py363 except Exception:STRING
LOWsrc/tests/test_webloop.py387 except Exception:STRING
LOWsrc/tests/test_webloop.py396 except Exception:STRING
LOWsrc/tests/test_pyodide.py1308 except Exception as e:CODE
LOWsrc/tests/test_pyodide.py1114 except Exception as e:STRING
LOWsrc/tests/test_pyodide.py1157 except Exception as ex:STRING
LOWsrc/tests/test_pyodide.py1215 except Exception as e:STRING
LOWsrc/tests/test_python_socket.py42 except Exception as e:CODE
LOWsrc/tests/test_python_socket.py1094 except Exception as e:CODE
Modern Structural Boilerplate25 hits · 27 pts
SeverityFileLineSnippetContext
LOWtools/update_emscripten.py64def update_patches(newtag: str) -> None:CODE
LOWtools/update_emscripten.py72def update_makefile_envs(oldtag: str, newtag: str) -> None:CODE
LOWtools/update_emscripten.py80def update_struct_info() -> None:CODE
LOWdocs/sphinx_pyodide/sphinx_pyodide/mdn_xrefs.py229__all__ = ["add_mdn_xrefs"]CODE
LOWdocs/sphinx_pyodide/sphinx_pyodide/jsdoc.py13__all__ = ["ts_xref_formatter", "patch_sphinx_js"]CODE
LOWdocs/sphinx_pyodide/sphinx_pyodide/jsdoc.py149def set_kind(obj: TopLevel) -> None:CODE
LOWpackages/test-simd/src/test_simd/__init__.py17__all__ = [CODE
LOWsrc/py/webbrowser.py8__all__ = ["open", "open_new", "open_new_tab", "get", "register", "Error"]CODE
LOWsrc/py/_pyodide/_core_docs.py1805__all__ = [CODE
LOWsrc/py/_pyodide/__init__.py12__all__ = ["_base", "_importhook"]CODE
LOWsrc/py/_pyodide/docs_argspec.py30__all__ = ["docs_argspec"]CODE
LOWsrc/py/pyodide/console.py30__all__ = ["Console", "PyodideConsole", "BANNER", "repr_shorten", "ConsoleFuture"]CODE
LOWsrc/py/pyodide/code.py108__all__ = [CODE
LOWsrc/py/pyodide/_nodesock_transport.py81 def set_protocol(self, protocol: asyncio.BaseProtocol) -> None:CODE
LOWsrc/py/pyodide/__init__.py15__all__ = ["__version__", "console", "code", "ffi", "http", "webloop"]CODE
LOWsrc/py/pyodide/_core.py3__all__ = ["IN_PYODIDE"]CODE
LOWsrc/py/pyodide/_state.py51__all__ = ["save_state", "restore_state"]CODE
LOWsrc/py/pyodide/webloop.py241 def set_debug(self, enabled: bool) -> None:CODE
LOWsrc/py/pyodide/webloop.py1094 def set_event_loop(self, loop: Any) -> None:CODE
LOWsrc/py/pyodide/webloop.py1135__all__ = ["WebLoop", "WebLoopPolicy", "PyodideFuture", "PyodideTask"]CODE
LOWsrc/py/pyodide/ffi/__init__.py34__all__ = [CODE
LOWsrc/py/pyodide/ffi/wrappers.py128__all__ = [CODE
LOWsrc/py/pyodide/http/pyxhr.py35__all__ = [CODE
LOWsrc/py/pyodide/http/__init__.py19__all__ = [CODE
LOWsrc/tests/test_pkg/__init__.py3__all__ = ["test1"]CODE
Self-Referential Comments7 hits · 22 pts
SeverityFileLineSnippetContext
MEDIUMtools/calculate_build_cache_key.py3# This file is a helper script to calculate the hash for cache keyCOMMENT
MEDIUMtools/tests/test_bump_version.py282 # Create an uncommitted changeCOMMENT
MEDIUMtools/tests/test_bump_version.py371 # Create a changelog without the version we're checkingCOMMENT
MEDIUMtools/tests/test_bump_version.py400 # Create a changelog with version header but no blank line afterCOMMENT
MEDIUMtools/tests/test_bump_version.py428 # Create a changelog with invalid date formatCOMMENT
MEDIUMtools/tests/test_bump_version.py457 # Create a changelog without ## Unreleased sectionCOMMENT
MEDIUMtools/tests/test_bump_version.py486 # Create a changelog that already has the version we're trying to bump toCOMMENT
Deep Nesting18 hits · 17 pts
SeverityFileLineSnippetContext
LOWconftest.py223CODE
LOWconftest.py281CODE
LOWbenchmark/benchmark.py158CODE
LOWbenchmark/benchmarks/pystone_benchmarks/pystone.py210CODE
LOWbenchmark/benchmarks/numpy_benchmarks/growcut.py23CODE
LOWbenchmark/benchmarks/numpy_benchmarks/fdtd.py9CODE
LOWbenchmark/benchmarks/numpy_benchmarks/hyantes.py9CODE
LOWtools/create_lockfile_diff.py42CODE
LOWtools/backport.py330CODE
LOWtools/create_xbuildenv.py20CODE
LOWtools/deploy_s3.py62CODE
LOWsrc/py/ssl.py472CODE
LOWsrc/py/_pyodide/_base.py619CODE
LOWsrc/py/pyodide/_nodesock_transport.py115CODE
LOWsrc/py/pyodide/webloop.py857CODE
LOWsrc/tests/test_pyproxy.py420CODE
LOWsrc/tests/test_package_loading.py152CODE
LOWsrc/tests/test_package_loading.py177CODE
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHpackages/scipy/scipy-pytest.js41 print('Hoping scipy tests are included in the scipy wheel')CODE
HIGHpackages/scipy/scipy-pytest.js44 print(pkg_list)CODE
AI Structural Patterns7 hits · 6 pts
SeverityFileLineSnippetContext
LOWconftest.py169CODE
LOWtools/deploy_s3.py62CODE
LOWsrc/py/ssl.py567CODE
LOWsrc/py/_pyodide/_base.py418CODE
LOWsrc/py/_pyodide/_base.py527CODE
LOWsrc/py/pyodide/console.py364CODE
LOWsrc/py/pyodide/webloop.py857CODE
Slop Phrases3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/py/pyodide/__init__.py11# pytest mocks for js or pyodide_js, so make sure to test "if IN_PYODIDE" beforeCOMMENT
LOWsrc/tests/test_ssl_stub.py20 # Guardrail to ensure we don't forget to update this test when Python version changesCOMMENT
LOWsrc/tests/test_ssl_stub.py20 # Guardrail to ensure we don't forget to update this test when Python version changesCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtools/check_compressed_size.py10# Usage:COMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/core/pyproxy.c1413 * The purpose of this function is to handle memory management when attachingCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/tests/test_database_driver.py335# No extra server configuration needed — just pass ssl=True on the client.COMMENT
Redundant / Tautological Comments2 hits · 1 pts
SeverityFileLineSnippetContext
LOWconftest.py198 # Check if user explicitly wants to run long_running testsSTRING
LOWdocs/sphinx_pyodide/sphinx_pyodide/util.py50 # Set wrapper to be our fake functionSTRING
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtools/tests/test_bump_version.py34 run(["git", "config", "user.email", "test@test.com"], cwd=tmp_path)CODE
Dead Code1 hit · 1 pts
SeverityFileLineSnippetContext
MEDIUMsrc/tests/test_pyproxy.py294CODE
Overly Generic Function Names1 hit · 0 pts
SeverityFileLineSnippetContext
LOWsrc/tests/test_pyodide.py1950 def helper(selenium):STRING