AI Slop Code RIsk Monitor

Acly/krita-ai-diffusion

Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required.

19.0 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Acly/krita-ai-diffusion, a Python project with 10,690 GitHub stars. SynthScan examined 69,284 lines of code across 177 source files, recording 976 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 19.0 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

19.0
Adjusted Signal
19.0
Raw Pattern Score
100%
Time Factor
2026-10-03
Last Push
10.7K
Stars
Python
Language
69.3K
Lines of Code
177
Files
976
Pattern Hits
2026-10-12
Scan Date
0.27
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 34.6/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 14.8/100 · LOW

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

Agent Over-Engineering Ratio 37.2/100 · MEDIUM

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

PR Review Velocity Impact 65.0/100 · HIGH

Which changes need focused human review? 976 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 0HIGH 48MEDIUM 119LOW 809

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 976 distinct pattern matches across 12 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.

Over-Commented Block435 hits · 350 pts
SeverityFileLineSnippetContext
LOWtests/test_workflow.py1281 (output_dir / "meta.json").write_text(json.dumps(meta, indent=4))COMMENT
LOWtests/test_workflow.py1301# "target": [COMMENT
LOWtests/test_workflow.py1321# "negative": "<redacted>",COMMENT
LOWtests/test_workflow.py1341# },COMMENT
LOWtests/test_workflow.py1361# lineart = Image.create(Extent(3000, 2000))COMMENT
LOWscripts/docker/requirements.txt1# This file was autogenerated by uv via the following command:COMMENT
LOWscripts/docker/requirements.txt21aiosignal==1.4.0COMMENT
LOWscripts/docker/requirements.txt41argostranslate==1.11.0COMMENT
LOWscripts/docker/requirements.txt61certifi==2026.7.22COMMENT
LOWscripts/docker/requirements.txt81 # huggingface-hubCOMMENT
LOWscripts/docker/requirements.txt101 # via comfyui-workflow-templatesCOMMENT
LOWscripts/docker/requirements.txt121ctranslate2==4.8.1COMMENT
LOWscripts/docker/requirements.txt141 # spandrelCOMMENT
LOWscripts/docker/requirements.txt161 # aiohttpCOMMENT
LOWscripts/docker/requirements.txt181gitpython==3.1.59COMMENT
LOWscripts/docker/requirements.txt201 # weaselCOMMENT
LOWscripts/docker/requirements.txt221 # -r ComfyUI/custom_nodes/comfyui_controlnet_aux/requirements.txtCOMMENT
LOWscripts/docker/requirements.txt241kornia==0.8.3COMMENT
LOWscripts/docker/requirements.txt261markupsafe==3.0.3COMMENT
LOWscripts/docker/requirements.txt281 # via sympyCOMMENT
LOWscripts/docker/requirements.txt301 # -r ComfyUI/custom_nodes/comfyui_controlnet_aux/requirements.txtCOMMENT
LOWscripts/docker/requirements.txt321 # opencv-python-headlessCOMMENT
LOWscripts/docker/requirements.txt341 # nvidia-cusolverCOMMENT
LOWscripts/docker/requirements.txt361 # nvidia-cusolverCOMMENT
LOWscripts/docker/requirements.txt381 # viaCOMMENT
LOWscripts/docker/requirements.txt401 # onnxruntimeCOMMENT
LOWscripts/docker/requirements.txt421platformdirs==4.11.3COMMENT
LOWscripts/docker/requirements.txt441 # -r ComfyUI/requirements.txtCOMMENT
LOWscripts/docker/requirements.txt461 # viaCOMMENT
LOWscripts/docker/requirements.txt481 # via pydantic-settingsCOMMENT
LOWscripts/docker/requirements.txt501regex==2026.7.19COMMENT
LOWscripts/docker/requirements.txt521 # referencingCOMMENT
LOWscripts/docker/requirements.txt541 # viaCOMMENT
LOWscripts/docker/requirements.txt581 # via spacyCOMMENT
LOWscripts/docker/requirements.txt601 # albucoreCOMMENT
LOWscripts/docker/requirements.txt621 # viaCOMMENT
LOWscripts/docker/requirements.txt641torchaudio==2.11.0COMMENT
LOWscripts/docker/requirements.txt661 # huggingface-hubCOMMENT
LOWscripts/docker/requirements.txt681 # spacyCOMMENT
LOWscripts/docker/requirements.txt701typing-inspection==0.4.4COMMENT
LOWscripts/docker/requirements.txt721 # via ftfyCOMMENT
LOWscripts/docker/requirements.txt741yarl==1.24.5COMMENT
LOWai_diffusion/ui/interval_slider.py1# From https://github.com/biolab/orange3COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt1# This file was autogenerated by uv via the following command:COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt21 # via albumentationsCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt41attrs==26.1.0COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt61 # requestsCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt81 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt101 # viaCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt121flatbuffers==25.12.19COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt141 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt161 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt181iopath==0.1.10COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt201 # via korniaCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt221 # via markdown-it-pyCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt241 # thincCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt261 # imageioCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt281 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt301 # argostranslateCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt321 # torchvisionCOMMENT
375 more matches not shown…
Decorative Section Separators90 hits · 250 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_model.py118# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py120# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py130# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py132# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py302# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py304# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py440# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py442# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_model.py593 # ── document setup: two paint layers ──────────────────────────────COMMENT
MEDIUM⚡tests/test_model.py598 # ── region setup: each region linked to one layer ─────────────────COMMENT
MEDIUM⚡tests/test_model.py605 # ── build a job with two JobRegions, one per document layer ───────COMMENT
MEDIUM⚡tests/test_model.py612 # ── apply with replace behavior ───────────────────────────────────COMMENT
MEDIUM⚡tests/test_model.py673 # ── regions ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_model.py680 # ── job ──────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_model.py688 # ── apply ────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_model.py696 # ── check: layer1 placed into a new group ─────────────────────────COMMENT
MEDIUMtests/test_model.py32# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py34# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py487# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py489# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py502 # ── first call: a brand-new layer should be created ───────────────COMMENT
MEDIUMtests/test_model.py650 # ── document setup ────────────────────────────────────────────────COMMENT
MEDIUMtests/test_model.py717 # ── check: old layers hidden, new result layers visible ───────────COMMENT
MEDIUMtests/test_layer.py12# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py14# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py35# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_layer.py178# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_layer.py180# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py258# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py260# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_connection.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_connection.py17# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_connection.py29# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_connection.py31# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py27# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py52# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py54# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py76 # ── model 1: set several tracked properties ──────────────────────COMMENT
MEDIUMtests/test_persistence.py92 # ── model 2: fresh doc, load recently used ────────────────────────COMMENT
MEDIUMtests/test_persistence.py112# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py114# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py148 # ── restore from the same krita_doc ──────────────────────────────────COMMENT
MEDIUMtests/test_persistence.py175# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py177# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_persistence.py207 # ── restore ───────────────────────────────────────────────────────────COMMENT
MEDIUMtests/mock/krita.py16# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py18# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py37# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py39# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py60# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py62# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py83# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py98# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py100# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py116# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py118# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mock/krita.py131# ---------------------------------------------------------------------------COMMENT
30 more matches not shown…
Cross-Language Confusion27 hits · 182 pts
SeverityFileLineSnippetContext
HIGH⚡tests/test_model.py315 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGH⚡tests/test_model.py319 client.push(ClientMessage(ClientEvent.progress, job.id, progress=0.5))CODE
HIGH⚡tests/test_model.py326 client.push(ClientMessage(ClientEvent.finished, job.id, images=result_images))CODE
HIGH⚡tests/test_model.py340 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGH⚡tests/test_model.py343 client.push(ClientMessage(ClientEvent.upload, job.id, progress=0.3))CODE
HIGH⚡tests/test_model.py349 client.push(ClientMessage(ClientEvent.progress, job.id, progress=0.6))CODE
HIGH⚡tests/test_model.py353 client.push(ClientMessage(ClientEvent.interrupted, job.id))CODE
HIGH⚡tests/test_model.py366 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGH⚡tests/test_model.py369 client.push(CODE
HIGH⚡tests/test_model.py389 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGH⚡tests/test_model.py392 client.push(ClientMessage(ClientEvent.progress, job.id, progress=0.5))CODE
HIGH⚡tests/test_model.py396 client.push(ClientMessage(ClientEvent.error, job.id, error="CUDA out of memory"))CODE
HIGH⚡tests/test_model.py411 client.push(ClientMessage(ClientEvent.queued, job1.id))CODE
HIGH⚡tests/test_model.py413 client.push(ClientMessage(ClientEvent.progress, job1.id, progress=0.4))CODE
HIGH⚡tests/test_model.py418 client.push(ClientMessage(ClientEvent.disconnected, ""))CODE
HIGH⚡tests/test_model.py419 client.push(ClientMessage(ClientEvent.connected, ""))CODE
HIGH⚡tests/test_model.py426 client.push(ClientMessage(ClientEvent.queued, job2.id))CODE
HIGH⚡tests/test_model.py428 client.push(ClientMessage(ClientEvent.progress, job2.id, progress=0.7))CODE
HIGH⚡tests/test_model.py432 client.push(ClientMessage(ClientEvent.finished, job2.id, images=result_images))CODE
HIGHscripts/benchmark_html.py647 const rightColIdx = rightSelect ? (parseInt(rightSelect) + 1) : null;CODE
HIGHscripts/benchmark_html.py652 if (rightColIdx && rightColIdx < cells.length) {CODE
HIGHai_diffusion/settings.py181 ServerMode.undefined,CODE
HIGHai_diffusion/ui/settings.py560 self._server_mode.setVisible(mode is not ServerMode.undefined)CODE
HIGHai_diffusion/model/properties.py186 return value.toString()CODE
HIGHai_diffusion/model/region.py58 new_ids_string = ",".join(id.toString() for id in ids)CODE
HIGHai_diffusion/model/root.py127 elif settings.server_mode in [ServerMode.undefined, ServerMode.external]:CODE
HIGHai_diffusion/model/root.py143 or settings.server_mode not in [ServerMode.undefined, ServerMode.external]CODE
Excessive Try-Catch Wrapping132 hits · 148 pts
SeverityFileLineSnippetContext
MEDIUMinstall.py24 print("Error: Unsupported operating system:", sys.platform, file=sys.stderr)CODE
MEDIUMinstall.py28 print("Error: Krita pykrita folder does not exist:", pykrita, file=sys.stderr)CODE
MEDIUMinstall.py40 print("Error: Existing file or folder at", link, file=sys.stderr)CODE
LOWtests/conftest.py250 except Exception:CODE
LOWtests/test_server.py265 except Exception:CODE
LOWtests/test_server.py285 except Exception:CODE
LOWtests/test_text.py158 except Exception as e:CODE
LOWtests/test_text.py163 except Exception as e:CODE
LOWscripts/download_models.py169 except Exception as e:CODE
MEDIUMscripts/download_models.py170 print(f"Error downloading {model.name} (attempt {attempt}): {e}")CODE
LOWscripts/images.py121 except Exception as e:CODE
LOWscripts/images.py189 except Exception as e:CODE
LOWscripts/images.py216 except Exception as e:CODE
MEDIUMscripts/images.py217 print(f"Error: {e}", file=sys.stderr)CODE
LOWscripts/file_server.py76 except Exception as e:CODE
LOWscripts/benchmark_html.py33 except Exception as e:CODE
LOWscripts/benchmark_html.py111 except Exception as e:CODE
MEDIUMscripts/benchmark_html.py112 print(f"Error loading meta.json from {benchmark_dir}: {e}")CODE
LOWscripts/benchmark_html.py144 except Exception:CODE
LOWscripts/benchmark_html.py582 except Exception as e:STRING
MEDIUM⚡scripts/benchmark_html.py707 print(f"Error: Directory not found: {bench_dir}")STRING
MEDIUM⚡scripts/benchmark_html.py710 print(f"Error: Not a directory: {bench_dir}")STRING
MEDIUM⚡scripts/benchmark_html.py715 print("Error: At least one benchmark directory is required")STRING
LOWscripts/benchmark_html.py727 except Exception as e:STRING
MEDIUMscripts/benchmark_html.py728 print(f"Error: {e}")STRING
LOWai_diffusion/files.py185 except Exception as e:CODE
LOWai_diffusion/persistence.py54 except Exception as e:CODE
LOWai_diffusion/persistence.py71 except Exception as e:CODE
LOWai_diffusion/persistence.py131 except Exception as e:CODE
LOWai_diffusion/persistence.py141 except Exception as e:CODE
LOWai_diffusion/persistence.py382 except Exception as e:CODE
MEDIUMai_diffusion/persistence.py51def from_settings():CODE
MEDIUMai_diffusion/persistence.py137def __del__(self):CODE
LOWai_diffusion/style.py396 except Exception as e:CODE
LOWai_diffusion/util.py48 except Exception:CODE
LOWai_diffusion/util.py67 except Exception:CODE
LOWai_diffusion/platform_tools.py57 except Exception: # noqaCODE
LOWai_diffusion/platform_tools.py87 except Exception as e:CODE
LOWai_diffusion/eventloop.py47 except Exception: # noqaCODE
LOWai_diffusion/localization.py20 except Exception as e:CODE
LOWai_diffusion/localization.py45 except Exception as e:CODE
LOWai_diffusion/localization.py60 except Exception as e:CODE
LOWai_diffusion/localization.py72 except Exception as e:CODE
LOWai_diffusion/localization.py78 except Exception as e:CODE
LOWai_diffusion/document.py357 except Exception:CODE
LOWai_diffusion/settings.py561 except Exception as e:CODE
LOWai_diffusion/settings.py579 except Exception as e:CODE
LOWai_diffusion/layer.py455 except Exception as e:CODE
MEDIUMai_diffusion/layer.py442def active(self):CODE
LOWai_diffusion/image.py535 except Exception as e:CODE
LOWai_diffusion/ui/server.py960 except Exception:CODE
LOWai_diffusion/ui/server.py1013 except Exception as e:CODE
LOWai_diffusion/ui/server.py1026 except Exception as e:CODE
LOWai_diffusion/ui/server.py1052 except Exception as e:CODE
LOWai_diffusion/ui/server.py1065 except Exception as e:CODE
LOWai_diffusion/ui/server.py1143 except Exception as e:CODE
LOWai_diffusion/ui/server.py1174 except Exception as e:CODE
LOWai_diffusion/ui/server.py1203 except Exception as e:CODE
LOWai_diffusion/ui/server.py1216 except Exception:CODE
MEDIUMai_diffusion/ui/server.py1031def _install(self):CODE
72 more matches not shown…
Hyper-Verbose Identifiers140 hits · 138 pts
SeverityFileLineSnippetContext
LOWtests/test_resolution.py39def test_scaled_extent_no_scaling():CODE
LOW⚡tests/test_resolution.py53def test_scaled_extent_upscale():CODE
LOW⚡tests/test_resolution.py63def test_scaled_extent_upscale_small():CODE
LOW⚡tests/test_resolution.py72def test_scaled_extent_downscale():CODE
LOWtests/test_resolution.py98def test_compute_checkpoint_resolution(extent: Extent, preferred: int, expected):CODE
LOWtests/test_resolution.py152def test_prepare_highres_inpaint():CODE
LOWtests/test_resolution.py230def test_prepare_no_downscale(input: Extent):CODE
LOWtests/test_resolution.py253def test_prepare_max_pixel_count(input, sd_ver, expected_initial, expected_desired):CODE
LOWtests/test_resolution.py276def test_prepare_resolution_multiplier(input, multiplier, expected_initial, expected_desired):CODE
LOWtests/test_resolution.py287def test_prepare_resolution_multiplier_inputs(multiplier):CODE
LOWtests/test_resolution.py306def test_prepare_resolution_multiplier_max(multiplier, expected):CODE
LOWtests/test_resources.py40def test_same_name_same_model():CODE
LOW⚡tests/test_model.py308async def test_job_queued_progress_finished(workflows_dir: Path):CODE
LOW⚡tests/test_model.py333async def test_job_queued_upload_progress_interrupted(workflows_dir: Path):CODE
LOW⚡tests/test_model.py359async def test_job_payment_required(workflows_dir: Path):CODE
LOW⚡tests/test_model.py382async def test_job_queued_progress_error(workflows_dir: Path):CODE
LOW⚡tests/test_model.py403async def test_job_disconnect_reconnect(workflows_dir: Path):CODE
LOW⚡tests/test_model.py586async def test_apply_region_replace(workflows_dir: Path):CODE
LOWtests/conftest.py41def pytest_collection_modifyitems(session, config, items: list[pytest.Item]):CODE
LOWtests/test_comfy_workflow.py33def test_inputs_required_and_merged(info: ComfyObjectInfo):CODE
LOWtests/test_comfy_workflow.py49def test_params_defaults_for_various_types(info: ComfyObjectInfo):CODE
LOWtests/test_comfy_workflow.py63def test_options_for_combo_types(info: ComfyObjectInfo):CODE
LOWtests/test_comfy_workflow.py107def test_defaults_legacy_combo(info: ComfyObjectInfo):CODE
LOWtests/test_layer.py69def test_active_layer_changes():CODE
LOWtests/test_layer.py87def test_layer_removal_and_active_change_together():CODE
LOWtests/test_layer.py114def test_layer_moved_to_different_parent():CODE
LOW⚡tests/test_layer.py183def test_active_already_observed():CODE
LOWtests/test_layer.py203def test_active_in_tree_but_manager_stale():CODE
LOWtests/test_layer.py225def test_active_not_in_tree_falls_back_to_last_active():CODE
LOW⚡tests/test_connection.py35async def test_connect_success_and_disconnect():CODE
LOWtests/test_connection.py60async def test_connect_network_error():CODE
LOWtests/test_connection.py80async def test_connect_missing_resources():CODE
LOWtests/test_connection.py100async def test_listen_messages_and_reconnect():CODE
LOWtests/test_image.py23def test_extent_scale_pixel_count():CODE
LOWtests/test_image.py115def test_write_ai_generated_xmp(tmp_path, format, workflow_kind, source_type):CODE
LOWtests/test_image.py129def test_image_from_packed_bytes():CODE
LOWtests/test_image.py142def test_image_compress_speed():CODE
LOWtests/test_image.py226def test_image_collection_each():CODE
LOWtests/test_image.py232def test_image_collection_map():CODE
LOWtests/test_image.py338def test_mask_to_image_offset():CODE
LOWtests/test_image.py350def test_mask_to_image_no_extent():CODE
LOWtests/test_image.py383def test_save_png_w_itxt_valid(tmp_path):CODE
LOWtests/test_image.py412def test_save_png_w_itxt_invalid(tmp_path):CODE
LOWtests/test_image.py424def test_save_png_with_metadata(tmp_path):CODE
LOWtests/test_image.py437def test_read_png_text_preserves_newlines(tmp_path):CODE
LOWtests/test_workflow.py234def test_anima_lllite_control_workflow():CODE
LOWtests/test_workflow.py370def test_prepare_prompt_layers(arch: Arch):CODE
LOWtests/test_workflow.py402def test_prepare_prompt_instructions():CODE
LOWtests/test_workflow.py420def test_prepare_prompt_inpaint(arch):CODE
LOWtests/test_workflow.py513def test_inpaint_odd_resolution(qtapp, client):CODE
LOWtests/test_workflow.py528def test_inpaint_area_conditioning(qtapp, client):CODE
LOWtests/test_workflow.py543def test_inpaint_remove_object(qtapp, client):CODE
LOWtests/test_workflow.py616def test_differential_diffusion(qtapp, client):CODE
LOWtests/test_workflow.py826def test_control_canny_downscale(qtapp, client):CODE
LOWtests/test_workflow.py835def test_create_control_image(qtapp, client: Client, mode):CODE
LOWtests/test_workflow.py854def test_create_open_pose_vector(qtapp, client: Client):CODE
LOWtests/test_workflow.py918def test_style_composition_sdxl(qtapp, client):CODE
LOWtests/test_workflow.py1071def test_fill_control_max_pixels(qtapp, client):CODE
LOWtests/test_workflow.py1093def test_outpaint_resolution_multiplier(qtapp, client):CODE
LOWtests/test_server.py248def test_rename_extracted_folder(scenario):CODE
80 more matches not shown…
Empty Error Handlers21 hits · 105 pts
SeverityFileLineSnippetContext
HIGHtests/conftest.py167except asyncio.CancelledError:CODE
HIGHscripts/download_models.py43except ImportError:CODE
HIGHscripts/design.py144except RuntimeError:CODE
HIGHscripts/design.py148except RuntimeError:CODE
HIGHscripts/design.py249except RuntimeError:CODE
HIGHscripts/design.py253except RuntimeError:CODE
HIGHscripts/design.py258except RuntimeError:CODE
HIGHscripts/design.py265except RuntimeError:CODE
HIGHai_diffusion/style.py167except KeyError:CODE
HIGHai_diffusion/platform_tools.py57except Exception: # noqaCODE
HIGHai_diffusion/eventloop.py47except Exception: # noqaCODE
HIGHai_diffusion/extension.py34except ImportError:CODE
HIGHai_diffusion/pose.py134except ValueError:CODE
HIGHai_diffusion/backend/server.py519except asyncio.CancelledError:CODE
HIGHai_diffusion/backend/server.py534except asyncio.CancelledError:CODE
HIGHai_diffusion/backend/cloud_client.py176except asyncio.CancelledError:CODE
HIGHai_diffusion/backend/cloud_client.py313except asyncio.CancelledError:CODE
HIGHai_diffusion/backend/network.py58except Exception: # noqaCODE
HIGHai_diffusion/backend/comfy_client.py299except asyncio.CancelledError:CODE
HIGHai_diffusion/backend/comfy_client.py441except asyncio.CancelledError:CODE
HIGHai_diffusion/model/connection.py207except asyncio.CancelledError:CODE
Deep Nesting78 hits · 75 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py41CODE
LOWtests/conftest.py42CODE
LOWtests/test_service.py165CODE
LOWtests/test_workflow.py745CODE
LOWtests/test_server.py270CODE
LOWtests/test_client.py67CODE
LOWscripts/download_models.py178CODE
LOWscripts/download_models.py245CODE
LOWscripts/benchmark_html.py148CODE
LOWai_diffusion/persistence.py361CODE
LOWai_diffusion/style.py156CODE
LOWai_diffusion/pose.py215CODE
LOWai_diffusion/text.py159CODE
LOWai_diffusion/text.py229CODE
LOWai_diffusion/settings.py103CODE
LOWai_diffusion/settings.py541CODE
LOWai_diffusion/layer.py241CODE
LOWai_diffusion/image.py496CODE
LOWai_diffusion/ui/diffusion.py317CODE
LOWai_diffusion/ui/server.py160CODE
LOWai_diffusion/ui/server.py470CODE
LOWai_diffusion/ui/server.py989CODE
LOWai_diffusion/ui/server.py1210CODE
LOWai_diffusion/ui/widget.py442CODE
LOWai_diffusion/ui/generation.py256CODE
LOWai_diffusion/ui/generation.py288CODE
LOWai_diffusion/ui/generation.py953CODE
LOWai_diffusion/ui/generation.py993CODE
LOWai_diffusion/ui/theme.py56CODE
LOWai_diffusion/ui/style.py834CODE
LOWai_diffusion/ui/style.py932CODE
LOWai_diffusion/ui/region.py279CODE
LOWai_diffusion/ui/upscale.py250CODE
LOWai_diffusion/ui/actions.py5CODE
LOWai_diffusion/ui/settings.py590CODE
LOWai_diffusion/ui/settings.py620CODE
LOWai_diffusion/ui/settings_widgets.py309CODE
LOWai_diffusion/ui/autocomplete.py160CODE
LOWai_diffusion/backend/server.py834CODE
LOWai_diffusion/backend/server.py870CODE
LOWai_diffusion/backend/server.py340CODE
LOWai_diffusion/backend/server.py640CODE
LOWai_diffusion/backend/cloud_client.py228CODE
LOWai_diffusion/backend/api.py351CODE
LOWai_diffusion/backend/network.py377CODE
LOWai_diffusion/backend/network.py44CODE
LOWai_diffusion/backend/network.py223CODE
LOWai_diffusion/backend/resources.py693CODE
LOWai_diffusion/backend/workflow.py457CODE
LOWai_diffusion/backend/workflow.py605CODE
LOWai_diffusion/backend/workflow.py903CODE
LOWai_diffusion/backend/workflow.py945CODE
LOWai_diffusion/backend/workflow.py1247CODE
LOWai_diffusion/backend/workflow.py1634CODE
LOWai_diffusion/backend/workflow.py1777CODE
LOWai_diffusion/backend/workflow.py1867CODE
LOWai_diffusion/backend/workflow.py1969CODE
LOWai_diffusion/backend/workflow.py260CODE
LOWai_diffusion/backend/comfy_client.py899CODE
LOWai_diffusion/backend/comfy_client.py350CODE
18 more matches not shown…
Unused Imports41 hits · 40 pts
SeverityFileLineSnippetContext
LOWtests/test_model.py4CODE
LOWtests/test_layer.py3CODE
LOWtests/test_connection.py3CODE
LOWtests/test_persistence.py4CODE
LOWtests/mock/krita.py7CODE
LOWtests/mock/client.py3CODE
LOWai_diffusion/persistence.py1CODE
LOWai_diffusion/style.py1CODE
LOWai_diffusion/__init__.py24CODE
LOWai_diffusion/text.py1CODE
LOWai_diffusion/document.py1CODE
LOWai_diffusion/settings.py1CODE
LOWai_diffusion/layer.py1CODE
LOWai_diffusion/image.py1CODE
LOWai_diffusion/ui/diffusion.py1CODE
LOWai_diffusion/ui/server.py1CODE
LOWai_diffusion/ui/widget.py1CODE
LOWai_diffusion/ui/generation.py1CODE
LOWai_diffusion/ui/theme.py1CODE
LOWai_diffusion/ui/style.py1CODE
LOWai_diffusion/ui/region.py1CODE
LOWai_diffusion/ui/control.py1CODE
LOWai_diffusion/ui/animation.py1CODE
LOWai_diffusion/ui/live.py1CODE
LOWai_diffusion/ui/settings.py1CODE
LOWai_diffusion/ui/settings_widgets.py1CODE
LOWai_diffusion/backend/server.py1CODE
LOWai_diffusion/backend/client.py1CODE
LOWai_diffusion/backend/network.py1CODE
LOWai_diffusion/backend/resources.py1CODE
LOWai_diffusion/backend/workflow.py1CODE
LOWai_diffusion/backend/comfy_client.py1CODE
LOWai_diffusion/backend/resolution.py1CODE
LOWai_diffusion/backend/comfy_workflow.py1CODE
LOWai_diffusion/model/custom_workflow.py46CODE
LOWai_diffusion/model/region.py1CODE
LOWai_diffusion/model/control.py1CODE
LOWai_diffusion/model/model.py1CODE
LOWai_diffusion/model/jobs.py1CODE
LOWai_diffusion/model/connection.py1CODE
LOWai_diffusion/model/root.py1CODE
Self-Referential Comments7 hits · 21 pts
SeverityFileLineSnippetContext
MEDIUMtests/conftest.py24# Create the Qt application instance at module level, before any test module isCOMMENT
MEDIUMtests/test_image.py384 # Create a minimal valid PNG fileCOMMENT
MEDIUMtests/test_image.py425 # Create a simple imageCOMMENT
MEDIUMtests/test_updates.py51 # Create an existing installationCOMMENT
MEDIUMtests/test_updates.py70 # Create a new plugin versionCOMMENT
MEDIUMscripts/benchmark_html.py180 # Create a column for each architectureCOMMENT
MEDIUMai_diffusion/backend/workflow.py714 # Create a separate embedding for each face ID (though more than 1 is questionable)COMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/images.py163 # Check if this file already exists in manifest with same SHA256COMMENT
LOWai_diffusion/image.py303 # Check if the qt6-image-formats package is installed, which adds WEBP supportCOMMENT
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWscripts/download_models.py53CODE
LOWai_diffusion/backend/workflow.py1634CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/design.py272 def _update_image(self) -> None:CODE