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,327 GitHub stars. SynthScan v2.0 examined 69,440 lines of code across 176 source files, recording 975 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-06-30
Last Push
10.3K
Stars
Python
Language
69.4K
Lines of Code
176
Files
975
Pattern Hits
2026-07-14
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 116LOW 832

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 975 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 Block465 hits · 366 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.txt21 # aiohttp-socksCOMMENT
LOWscripts/docker/requirements.txt41antlr4-python3-runtime==4.9.3COMMENT
LOWscripts/docker/requirements.txt61 # via thincCOMMENT
LOWscripts/docker/requirements.txt81 # viaCOMMENT
LOWscripts/docker/requirements.txt101 # viaCOMMENT
LOWscripts/docker/requirements.txt121 # viaCOMMENT
LOWscripts/docker/requirements.txt141cymem==2.0.13COMMENT
LOWscripts/docker/requirements.txt161 # viaCOMMENT
LOWscripts/docker/requirements.txt181fsspec==2026.6.0COMMENT
LOWscripts/docker/requirements.txt201greenlet==3.5.3COMMENT
LOWscripts/docker/requirements.txt221huggingface-hub==1.21.0COMMENT
LOWscripts/docker/requirements.txt241imageio==2.37.3COMMENT
LOWscripts/docker/requirements.txt261 # viaCOMMENT
LOWscripts/docker/requirements.txt281 # trimeshCOMMENT
LOWscripts/docker/requirements.txt301 # via -r ComfyUI/custom_nodes/ComfyUI-Manager/requirements.txtCOMMENT
LOWscripts/docker/requirements.txt321 # spacyCOMMENT
LOWscripts/docker/requirements.txt341 # blisCOMMENT
LOWscripts/docker/requirements.txt361 # opencv-contrib-pythonCOMMENT
LOWscripts/docker/requirements.txt381 # viaCOMMENT
LOWscripts/docker/requirements.txt401nvidia-cusparse==12.6.3.3COMMENT
LOWscripts/docker/requirements.txt421 # -r ComfyUI/custom_nodes/comfyui_controlnet_aux/requirements.txtCOMMENT
LOWscripts/docker/requirements.txt441 # viaCOMMENT
LOWscripts/docker/requirements.txt461pillow==12.2.0COMMENT
LOWscripts/docker/requirements.txt481preshed==3.0.13COMMENT
LOWscripts/docker/requirements.txt501 # accelerateCOMMENT
LOWscripts/docker/requirements.txt521 # viaCOMMENT
LOWscripts/docker/requirements.txt541 # pycolladaCOMMENT
LOWscripts/docker/requirements.txt561 # yacsCOMMENT
LOWscripts/docker/requirements.txt581 # spacyCOMMENT
LOWscripts/docker/requirements.txt601 # peftCOMMENT
LOWscripts/docker/requirements.txt621 # filterpyCOMMENT
LOWscripts/docker/requirements.txt661 # via spacyCOMMENT
LOWscripts/docker/requirements.txt681 # albucoreCOMMENT
LOWscripts/docker/requirements.txt701 # via -r ComfyUI/custom_nodes/ComfyUI-nunchaku/requirements.txtCOMMENT
LOWscripts/docker/requirements.txt721 # facexlibCOMMENT
LOWscripts/docker/requirements.txt741 # -r requirements.inCOMMENT
LOWscripts/docker/requirements.txt761 # via torchsdeCOMMENT
LOWscripts/docker/requirements.txt781 # viaCOMMENT
LOWscripts/docker/requirements.txt801 # pydantic-settingsCOMMENT
LOWscripts/docker/requirements.txt821webencodings==0.5.1COMMENT
LOWscripts/docker/requirements.txt841 # -r requirements.inCOMMENT
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 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt41 # via httpxCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt61certifi==2026.5.20COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt81 # sacremosesCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt101 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt121 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt141frozenlist==1.8.0COMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt161 # via httpcoreCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt181 # tokenizersCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt201 # from https://pypi.org/simpleCOMMENT
LOWai_diffusion/backend/requirements/macos-mps.txt221kornia-rs==0.1.14COMMENT
405 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.py558 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 Wrapping127 hits · 140 pts
SeverityFileLineSnippetContext
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.py175 except Exception as e:CODE
MEDIUMscripts/download_models.py176 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.py369 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.py45 except Exception:CODE
LOWai_diffusion/util.py64 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/ui/server.py969 except Exception:CODE
LOWai_diffusion/ui/server.py1022 except Exception as e:CODE
LOWai_diffusion/ui/server.py1035 except Exception as e:CODE
LOWai_diffusion/ui/server.py1061 except Exception as e:CODE
LOWai_diffusion/ui/server.py1074 except Exception as e:CODE
LOWai_diffusion/ui/server.py1152 except Exception as e:CODE
LOWai_diffusion/ui/server.py1183 except Exception as e:CODE
LOWai_diffusion/ui/server.py1212 except Exception as e:CODE
LOWai_diffusion/ui/server.py1225 except Exception:CODE
MEDIUMai_diffusion/ui/server.py1040def _install(self):CODE
MEDIUMai_diffusion/ui/server.py1065def _upgrade(self):CODE
LOWai_diffusion/ui/custom_workflow.py678 except Exception as e:CODE
MEDIUMai_diffusion/ui/custom_workflow.py675def wrapper(self, *args, **kwargs):CODE
LOWai_diffusion/ui/autocomplete.py186 except Exception: # default to general category if category unrecognisedCODE
67 more matches not shown…
Hyper-Verbose Identifiers136 hits · 136 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.py21def test_extent_scale_pixel_count():CODE
LOWtests/test_image.py103def test_image_from_packed_bytes():CODE
LOWtests/test_image.py116def test_image_compress_speed():CODE
LOWtests/test_image.py200def test_image_collection_each():CODE
LOWtests/test_image.py206def test_image_collection_map():CODE
LOWtests/test_image.py312def test_mask_to_image_offset():CODE
LOWtests/test_image.py324def test_mask_to_image_no_extent():CODE
LOWtests/test_image.py357def test_save_png_w_itxt_valid(tmp_path):CODE
LOWtests/test_image.py386def test_save_png_w_itxt_invalid(tmp_path):CODE
LOWtests/test_image.py398def test_save_png_with_metadata(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
LOWtests/test_text.py49def test_roundtrip_conversion():CODE
LOWtests/test_text.py71def test_strip_prompt_comment():CODE
76 more matches not shown…
Deep Nesting78 hits · 76 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.py184CODE
LOWscripts/download_models.py251CODE
LOWscripts/benchmark_html.py148CODE
LOWai_diffusion/persistence.py348CODE
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/ui/diffusion.py317CODE
LOWai_diffusion/ui/server.py159CODE
LOWai_diffusion/ui/server.py471CODE
LOWai_diffusion/ui/server.py998CODE
LOWai_diffusion/ui/server.py1219CODE
LOWai_diffusion/ui/widget.py444CODE
LOWai_diffusion/ui/generation.py255CODE
LOWai_diffusion/ui/generation.py287CODE
LOWai_diffusion/ui/generation.py952CODE
LOWai_diffusion/ui/generation.py992CODE
LOWai_diffusion/ui/theme.py56CODE
LOWai_diffusion/ui/style.py421CODE
LOWai_diffusion/ui/style.py828CODE
LOWai_diffusion/ui/style.py925CODE
LOWai_diffusion/ui/region.py279CODE
LOWai_diffusion/ui/upscale.py249CODE
LOWai_diffusion/ui/actions.py5CODE
LOWai_diffusion/ui/settings.py588CODE
LOWai_diffusion/ui/settings.py618CODE
LOWai_diffusion/ui/settings_widgets.py309CODE
LOWai_diffusion/ui/autocomplete.py160CODE
LOWai_diffusion/backend/server.py876CODE
LOWai_diffusion/backend/server.py912CODE
LOWai_diffusion/backend/server.py381CODE
LOWai_diffusion/backend/server.py682CODE
LOWai_diffusion/backend/cloud_client.py228CODE
LOWai_diffusion/backend/api.py351CODE
LOWai_diffusion/backend/network.py362CODE
LOWai_diffusion/backend/network.py39CODE
LOWai_diffusion/backend/network.py212CODE
LOWai_diffusion/backend/resources.py691CODE
LOWai_diffusion/backend/workflow.py471CODE
LOWai_diffusion/backend/workflow.py562CODE
LOWai_diffusion/backend/workflow.py906CODE
LOWai_diffusion/backend/workflow.py948CODE
LOWai_diffusion/backend/workflow.py1258CODE
LOWai_diffusion/backend/workflow.py1644CODE
LOWai_diffusion/backend/workflow.py1791CODE
LOWai_diffusion/backend/workflow.py1881CODE
LOWai_diffusion/backend/workflow.py1983CODE
LOWai_diffusion/backend/workflow.py277CODE
LOWai_diffusion/backend/comfy_client.py900CODE
LOWai_diffusion/backend/comfy_client.py351CODE
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.py358 # Create a minimal valid PNG fileCOMMENT
MEDIUMtests/test_image.py399 # 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.py671 # Create a separate embedding for each face ID (though more than 1 is questionable)COMMENT
AI Structural Patterns2 hits · 2 pts
SeverityFileLineSnippetContext
LOWscripts/download_models.py55CODE
LOWai_diffusion/backend/workflow.py1644CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/images.py163 # Check if this file already exists in manifest with same SHA256COMMENT
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/design.py272 def _update_image(self) -> None:CODE