Repository Analysis

Acly/krita-ai-diffusion

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

17.5 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Acly/krita-ai-diffusion, a Python project with 10,520 GitHub stars. SynthScan v2.0 examined 69,214 lines of code across 177 source files, recording 956 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 17.5 places this repository in the Moderate 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).

17.5
Adjusted Score
17.5
Raw Score
100%
Time Factor
2026-08-28
Last Push
10.5K
Stars
Python
Language
69.2K
Lines of Code
177
Files
956
Pattern Hits
2026-08-29
Scan Date
0.15
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 27MEDIUM 119LOW 810

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 956 distinct pattern matches across 11 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.

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
MEDIUMtests/test_model.py118# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py130# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py132# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py302# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py304# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py440# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py442# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_model.py593 # ── document setup: two paint layers ──────────────────────────────COMMENT
MEDIUMtests/test_model.py598 # ── region setup: each region linked to one layer ─────────────────COMMENT
MEDIUMtests/test_model.py605 # ── build a job with two JobRegions, one per document layer ───────COMMENT
MEDIUMtests/test_model.py612 # ── apply with replace behavior ───────────────────────────────────COMMENT
MEDIUMtests/test_model.py673 # ── regions ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_model.py680 # ── job ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_model.py688 # ── apply ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/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
MEDIUMtests/test_layer.py178# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py180# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py258# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_layer.py260# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_connection.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_connection.py17# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_connection.py29# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/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
HIGHtests/test_model.py315 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGHtests/test_model.py319 client.push(ClientMessage(ClientEvent.progress, job.id, progress=0.5))CODE
HIGHtests/test_model.py326 client.push(ClientMessage(ClientEvent.finished, job.id, images=result_images))CODE
HIGHtests/test_model.py340 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGHtests/test_model.py343 client.push(ClientMessage(ClientEvent.upload, job.id, progress=0.3))CODE
HIGHtests/test_model.py349 client.push(ClientMessage(ClientEvent.progress, job.id, progress=0.6))CODE
HIGHtests/test_model.py353 client.push(ClientMessage(ClientEvent.interrupted, job.id))CODE
HIGHtests/test_model.py366 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGHtests/test_model.py369 client.push(CODE
HIGHtests/test_model.py389 client.push(ClientMessage(ClientEvent.queued, job.id))CODE
HIGHtests/test_model.py392 client.push(ClientMessage(ClientEvent.progress, job.id, progress=0.5))CODE
HIGHtests/test_model.py396 client.push(ClientMessage(ClientEvent.error, job.id, error="CUDA out of memory"))CODE
HIGHtests/test_model.py411 client.push(ClientMessage(ClientEvent.queued, job1.id))CODE
HIGHtests/test_model.py413 client.push(ClientMessage(ClientEvent.progress, job1.id, progress=0.4))CODE
HIGHtests/test_model.py418 client.push(ClientMessage(ClientEvent.disconnected, ""))CODE
HIGHtests/test_model.py419 client.push(ClientMessage(ClientEvent.connected, ""))CODE
HIGHtests/test_model.py426 client.push(ClientMessage(ClientEvent.queued, job2.id))CODE
HIGHtests/test_model.py428 client.push(ClientMessage(ClientEvent.progress, job2.id, progress=0.7))CODE
HIGHtests/test_model.py432 client.push(ClientMessage(ClientEvent.finished, job2.id, images=result_images))CODE
HIGHscripts/benchmark_html.py649 const rightColIdx = rightSelect ? (parseInt(rightSelect) + 1) : null;CODE
HIGHscripts/benchmark_html.py654 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.py170 except Exception as e:CODE
MEDIUMscripts/download_models.py171 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.py588 except Exception as e:STRING
MEDIUMscripts/benchmark_html.py709 print(f"Error: Directory not found: {bench_dir}")STRING
MEDIUMscripts/benchmark_html.py712 print(f"Error: Not a directory: {bench_dir}")STRING
MEDIUMscripts/benchmark_html.py717 print("Error: At least one benchmark directory is required")STRING
LOWscripts/benchmark_html.py729 except Exception as e:STRING
MEDIUMscripts/benchmark_html.py730 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.py47 except Exception:CODE
LOWai_diffusion/util.py66 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
LOWtests/test_resolution.py53def test_scaled_extent_upscale():CODE
LOWtests/test_resolution.py63def test_scaled_extent_upscale_small():CODE
LOWtests/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
LOWtests/test_model.py308async def test_job_queued_progress_finished(workflows_dir: Path):CODE
LOWtests/test_model.py333async def test_job_queued_upload_progress_interrupted(workflows_dir: Path):CODE
LOWtests/test_model.py359async def test_job_payment_required(workflows_dir: Path):CODE
LOWtests/test_model.py382async def test_job_queued_progress_error(workflows_dir: Path):CODE
LOWtests/test_model.py403async def test_job_disconnect_reconnect(workflows_dir: Path):CODE
LOWtests/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
LOWtests/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
LOWtests/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…
Deep Nesting79 hits · 78 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.py179CODE
LOWscripts/download_models.py246CODE
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.py422CODE
LOWai_diffusion/ui/style.py835CODE
LOWai_diffusion/ui/style.py933CODE
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.py683CODE
LOWai_diffusion/backend/workflow.py452CODE
LOWai_diffusion/backend/workflow.py543CODE
LOWai_diffusion/backend/workflow.py887CODE
LOWai_diffusion/backend/workflow.py929CODE
LOWai_diffusion/backend/workflow.py1239CODE
LOWai_diffusion/backend/workflow.py1625CODE
LOWai_diffusion/backend/workflow.py1768CODE
LOWai_diffusion/backend/workflow.py1858CODE
LOWai_diffusion/backend/workflow.py1960CODE
LOWai_diffusion/backend/workflow.py258CODE
LOWai_diffusion/backend/comfy_client.py898CODE
19 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.py652 # 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.py1625CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/design.py272 def _update_image(self) -> None:CODE