AI Slop Code RIsk Monitor

Kozea/WeasyPrint

The awesome document factory

10.7 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Kozea/WeasyPrint, a Python project with 9,672 GitHub stars. SynthScan examined 81,163 lines of code across 178 source files, recording 1020 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 10.7 (Moderate 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.

10.7
Adjusted Signal
10.7
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
9.7K
Stars
Python
Language
81.2K
Lines of Code
178
Files
1.0K
Pattern Hits
2026-10-12
Scan Date
0.09
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 35.2/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 3.8/100 · LOW

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

Agent Over-Engineering Ratio 27.5/100 · MEDIUM

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

PR Review Velocity Impact 49.9/100 · MEDIUM

Which changes need focused human review? 1020 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 16MEDIUM 11LOW 993

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 1020 distinct pattern matches across 15 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.

Hyper-Verbose Identifiers669 hits · 413 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py107def assert_different_renderings(request, *args, **kwargs):CODE
LOW⚡tests/test_pdf.py383def test_relative_links_no_height():STRING
LOW⚡tests/test_pdf.py393def test_relative_links_missing_base():STRING
LOW⚡tests/test_pdf.py403def test_relative_links_internal():STRING
LOWtests/test_pdf.py420def test_relative_links_anchors():STRING
LOWtests/test_pdf.py436def test_relative_links_different_base():STRING
LOWtests/test_pdf.py444def test_relative_links_same_base():STRING
LOWtests/test_pdf.py475def test_anchor_multiple_pages():STRING
LOWtests/test_pdf.py517def test_embed_images_from_pages():STRING
LOWtests/test_pdf.py556def test_embedded_files_attachments(tmp_path):STRING
LOWtests/test_pdf.py625def test_attachments_data_with_anchor():STRING
LOWtests/test_pdf.py664def test_attachments_none_empty():STRING
LOWtests/test_pdf.py732def test_default_rdf_metadata():STRING
LOWtests/test_pdf.py768def test_color_spaces_with_icc_output_intent():STRING
LOW⚡tests/test_pdf.py791def test_pdf_tags_inline_table():STRING
LOW⚡tests/test_pdf.py799def test_pdf_tags_anonymous_table_cells():STRING
LOW⚡tests/test_pdf.py809def test_pdf_tags_split_table_with_caption():STRING
LOWtests/test_pdf.py820def test_pdf_tags_nested_lists_order():STRING
LOWtests/test_pdf.py842def test_pdf_tags_table_headers():STRING
LOWtests/test_pdf.py918def test_svg_gradient_color_ops_before_path():STRING
LOWtests/test_fonts.py26def test_font_face_harfbuzz_face_lifetime():CODE
LOWtests/test_fonts.py67def test_ligatures_word_space():CODE
LOWtests/test_fonts.py107def test_kerning_ligature_deactivate():CODE
LOWtests/test_fonts.py134def test_font_face_descriptors():CODE
LOWtests/test_html.py338def test_parse_integer_invalid(string):STRING
LOWtests/test_html.py359def test_parse_non_negative_integer(string, expected):STRING
LOWtests/test_html.py374def test_parse_non_negative_integer_invalid(string):STRING
LOWtests/test_html.py392def test_parse_dimension_value(string, expected):STRING
LOWtests/test_html.py411def test_parse_dimension_value_invalid(string):STRING
LOWtests/test_html.py448def test_map_to_pixel_length_invalid(string):STRING
LOWtests/test_html.py466def test_map_to_dimension_property(string, expected):STRING
LOWtests/test_html.py485def test_map_to_dimension_property_invalid(string):STRING
LOWtests/test_html.py502def test_map_to_dimension_property_ignoring_zero(string, expected):STRING
LOWtests/test_html.py524def test_map_to_dimension_property_ignoring_zero_invalid(string):STRING
LOWtests/test_text.py326def test_text_align_justify_all():CODE
LOWtests/test_text.py406def test_text_align_not_enough_space():CODE
LOWtests/test_text.py421def test_text_align_justify_no_space():CODE
LOWtests/test_text.py478def test_text_align_justify_no_break_between_children():CODE
LOWtests/test_text.py1056def test_overflow_wrap_trailing_space(wrap, text, body_width, expected_width):CODE
LOWtests/test_text.py1073def test_overflow_wrap_no_break_on_space():CODE
LOWtests/test_text.py1089def test_line_break_before_trailing_space():CODE
LOWtests/test_text.py89def test_line_breaking_trailing_inline_width():STRING
LOWtests/test_text.py164def test_text_font_size_very_small():STRING
LOWtests/test_text.py438def test_text_align_justify_text_indent():STRING
LOWtests/test_text.py638def test_text_indent_multipage(indent):STRING
LOWtests/test_text.py821def test_hyphenate_manual_keep_hyphen():STRING
LOWtests/test_text.py928def test_hyphenate_limit_chars(css, result):STRING
LOWtests/test_text.py947def test_hyphenate_limit_chars_punctuation(css):STRING
LOWtests/test_text.py1004def test_wrap_overflow_word_break(span_css, expected_lines):STRING
LOWtests/test_text.py1102def test_line_break_before_nested_trailing_space():STRING
LOWtests/test_text.py1347def test_text_transform_lang_uppercase(lang, lowercase, uppercase):STRING
LOWtests/test_text.py1367def test_text_transform_lang_lowercase(lang, uppercase, lowercase):STRING
LOWtests/test_text.py1399def test_text_transform_capitalize(original, transformed, lang_code):STRING
LOWtests/test_text.py1406def test_text_floating_pre_line():STRING
LOWtests/test_text.py1492def test_first_letter_line_height():STRING
LOWtests/test_text.py1511def test_first_letter_text_transform():STRING
LOWtests/test_text.py1559def test_first_line_line_height():STRING
LOWtests/test_text.py1578def test_first_line_text_transform():STRING
LOWtests/test_text.py1628def test_first_line_first_letter():STRING
LOWtests/test_api.py232def test_css_base_url_as_path():CODE
609 more matches not shown…
Deep Nesting205 hits · 202 pts
SeverityFileLineSnippetContext
LOWtests/testing_utils.py108CODE
LOWtests/testing_utils.py142CODE
LOWtests/testing_utils.py111CODE
LOWtests/test_api.py1259CODE
LOWtests/layout/test_table.py2348CODE
LOWtests/layout/test_table.py2402CODE
LOWtests/layout/test_page.py1137CODE
LOWtests/layout/test_inline.py147CODE
LOWweasyprint/html.py312CODE
LOWweasyprint/anchors.py30CODE
LOWweasyprint/images.py290CODE
LOWweasyprint/images.py368CODE
LOWweasyprint/images.py262CODE
LOWweasyprint/images.py695CODE
LOWweasyprint/stacking.py69CODE
LOWweasyprint/urls.py122CODE
LOWweasyprint/urls.py162CODE
LOWweasyprint/__main__.py57CODE
LOWweasyprint/svg/defs.py282CODE
LOWweasyprint/svg/defs.py442CODE
LOWweasyprint/svg/__init__.py457CODE
LOWweasyprint/svg/__init__.py618CODE
LOWweasyprint/svg/__init__.py729CODE
LOWweasyprint/svg/__init__.py806CODE
LOWweasyprint/svg/css.py13CODE
LOWweasyprint/svg/css.py68CODE
LOWweasyprint/svg/bounding_box.py68CODE
LOWweasyprint/svg/utils.py27CODE
LOWweasyprint/svg/utils.py149CODE
LOWweasyprint/svg/utils.py166CODE
LOWweasyprint/svg/text.py25CODE
LOWweasyprint/svg/path.py18CODE
LOWweasyprint/css/counters.py23CODE
LOWweasyprint/css/counters.py44CODE
LOWweasyprint/css/counters.py103CODE
LOWweasyprint/css/functions.py126CODE
LOWweasyprint/css/functions.py177CODE
LOWweasyprint/css/functions.py23CODE
LOWweasyprint/css/targets.py184CODE
LOWweasyprint/css/units.py58CODE
LOWweasyprint/css/__init__.py282CODE
LOWweasyprint/css/__init__.py301CODE
LOWweasyprint/css/__init__.py349CODE
LOWweasyprint/css/__init__.py603CODE
LOWweasyprint/css/__init__.py668CODE
LOWweasyprint/css/__init__.py737CODE
LOWweasyprint/css/__init__.py792CODE
LOWweasyprint/css/__init__.py810CODE
LOWweasyprint/css/__init__.py1376CODE
LOWweasyprint/css/__init__.py1493CODE
LOWweasyprint/css/__init__.py62CODE
LOWweasyprint/css/__init__.py163CODE
LOWweasyprint/css/__init__.py204CODE
LOWweasyprint/css/__init__.py1114CODE
LOWweasyprint/css/__init__.py1157CODE
LOWweasyprint/css/tokens.py159CODE
LOWweasyprint/css/tokens.py187CODE
LOWweasyprint/css/tokens.py236CODE
LOWweasyprint/css/tokens.py337CODE
LOWweasyprint/css/tokens.py368CODE
145 more matches not shown…
Cross-File Repetition13 hits · 65 pts
SeverityFileLineSnippetContext
HIGHtests/test_api.py0________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ___STRING
HIGHtests/draw/test_image.py0________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ___STRING
HIGHtests/draw/test_transform.py0________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ___STRING
HIGHtests/draw/test_overflow.py0________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ________ __rbbb__ __bbbb__ __bbbb__ __bbbb__ ________ ___STRING
HIGHtests/draw/test_list.py0__________ __________ __________ __________ __________ __________ __________ __________ __________ __________STRING
HIGHtests/draw/test_background.py0__________ __________ __________ __________ __________ __________ __________ __________ __________ __________STRING
HIGHtests/draw/svg/test_gradients.py0__________ __________ __________ __________ __________ __________ __________ __________ __________ __________STRING
HIGHtests/draw/svg/test_transform.py0_rrrrrrr_ _rr___rr_ _rr___rr_ _rr___rr_ _rrrrrrr_ _rrrrrrr_ _________ _________ _________STRING
HIGHtests/draw/svg/test_units.py0_rrrrrrr_ _rr___rr_ _rr___rr_ _rr___rr_ _rrrrrrr_ _rrrrrrr_ _________ _________ _________STRING
HIGHtests/draw/svg/test_shapes.py0_rrrrrrr_ _rr___rr_ _rr___rr_ _rr___rr_ _rrrrrrr_ _rrrrrrr_ _________ _________ _________STRING
HIGHtests/draw/svg/test_transform.py0<style> @page { size: 9px } svg { display: block } </style> <svg width="9px" height="9px" xmlns="http://www.w3.org/2000/STRING
HIGHtests/draw/svg/test_shapes.py0<style> @page { size: 9px } svg { display: block } </style> <svg width="9px" height="9px" xmlns="http://www.w3.org/2000/STRING
HIGHtests/draw/svg/test_clip.py0<style> @page { size: 9px } svg { display: block } </style> <svg width="9px" height="9px" xmlns="http://www.w3.org/2000/STRING
Fake / Example Data62 hits · 62 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_text.py522 <body><strong>Lorem ipsum dolor<em>sit amet</em></strong>''')CODE
LOW⚡tests/test_text.py510 'Lorem ipsum dolor<em>sit amet</em>',STRING
LOW⚡tests/test_text.py511 'Lorem ipsum <em>dolorsit</em> amet',STRING
LOW⚡tests/test_text.py512 'Lorem ipsum <em></em>dolorsit amet',STRING
LOW⚡tests/test_text.py513 'Lorem ipsum<em> </em>dolorsit amet',STRING
LOW⚡tests/test_text.py514 'Lorem ipsum<em> dolorsit</em> amet',STRING
LOW⚡tests/test_text.py515 'Lorem ipsum <em>dolorsit </em>amet',STRING
LOWtests/test_boxes.py225 ('p', 'Text', 'Lorem ipsum '),STRING
LOWtests/test_boxes.py724 <p><q>Lorem ipsum <q>dolor</q> sit amet</q></p>CODE
LOWtests/test_boxes.py731 ('q', 'Text', 'Lorem ipsum '),STRING
LOWtests/test_boxes.py777 <p><q>Lorem ipsum <q>dolor</q> sit amet</q></p>CODE
LOWtests/test_boxes.py784 ('q', 'Text', 'Lorem ipsum '),STRING
LOWtests/test_boxes.py804 <p><q>Lorem ipsum <q>dolor</q> sit amet</q></p>CODE
LOWtests/test_boxes.py811 ('q', 'Text', 'Lorem ipsum '),STRING
LOWtests/test_boxes.py830 <p lang="fr"><q>Lorem ipsum <q>dolor</q> sit amet</q></p>CODE
LOWtests/test_boxes.py837 ('q', 'Text', 'Lorem ipsum '),STRING
LOW⚡tests/test_boxes.py856 <p lang="fr_CH"><q>Lorem ipsum <q>dolor</q> sit amet</q></p>CODE
LOW⚡tests/test_boxes.py863 ('q', 'Text', 'Lorem ipsum '),STRING
LOWtests/test_boxes.py882 <p lang="fr_CH_alt"><q>Lorem ipsum <q>dolor</q> sit amet</q></p>CODE
LOWtests/test_boxes.py889 ('q', 'Text', 'Lorem ipsum '),STRING
LOWtests/test_boxes.py917 <p>lorem ipsumCODE
LOWtests/test_boxes.py1239 <p>lorem ipsum dolorCODE
LOWtests/layout/test_block.py369 <p id=p1>Lorem ipsumCODE
LOWtests/layout/test_block.py370 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py390 <p id=p1>Lorem ipsumCODE
LOWtests/layout/test_block.py392 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py412 <p id=p1>Lorem ipsumCODE
LOWtests/layout/test_block.py414 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py435 <p id=p1>Lorem ipsumCODE
LOWtests/layout/test_block.py438 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py461 <p>Lorem ipsumCODE
LOWtests/layout/test_block.py464 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py490 <p>Lorem ipsumCODE
LOWtests/layout/test_block.py493 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py517 <p id=p1>Lorem ipsumCODE
LOWtests/layout/test_block.py519 <p id=p2>dolor sit ametCODE
LOWtests/layout/test_block.py537 <p>Lorem ipsumCODE
LOWtests/layout/test_block.py556 <p>Lorem ipsumCODE
LOWtests/layout/test_inline_block.py20 Ipsum dolor sit amet,CODE
LOWtests/layout/test_inline.py493 <p><em>Lorem Ipsum</em>is very <strong>coool</strong></p>CODE
LOWtests/layout/test_inline.py505 assert text == 'Lorem Ipsumis very coool'STRING
LOW⚡tests/layout/test_inline.py544 <pre>Lorem ipsum dolor sit amet,CODE
LOW⚡tests/layout/test_inline.py544 <pre>Lorem ipsum dolor sit amet,CODE
LOW⚡tests/layout/test_inline.py566 <p>Lorem ipsum dolor sit amet,<br>CODE
LOW⚡tests/layout/test_inline.py566 <p>Lorem ipsum dolor sit amet,<br>CODE
LOWtests/layout/test_column.py25 Ipsum dolor sit amet,CODE
LOWtests/layout/test_column.py56 Ipsum dolor sit amet,CODE
LOWtests/layout/test_float.py347 Lorem ipsum dolor sit amet,CODE
LOWtests/layout/test_float.py347 Lorem ipsum dolor sit amet,CODE
LOWtests/layout/test_float.py359 assert get_float_width(1000000) == len('Lorem ipsum dolor sit amet,') * 16STRING
LOWtests/layout/test_float.py359 assert get_float_width(1000000) == len('Lorem ipsum dolor sit amet,') * 16STRING
LOW⚡tests/layout/test_flex.py808 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py808 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py813 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py813 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py832 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py832 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py835 Lorem ipsum dolor sit ametCODE
LOW⚡tests/layout/test_flex.py835 Lorem ipsum dolor sit ametCODE
LOWtests/draw/test_before_after.py36 <p><q>Lorem ipsum <q>dolor</q> sit amet</q></p>STRING
2 more matches not shown…
Self-Referential Comments9 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUMweasyprint/images.py671 # Define the coordinates of the starting and ending pointsCOMMENT
MEDIUMweasyprint/images.py700 # Define the center of the gradientCOMMENT
MEDIUMweasyprint/images.py766 # Define the coordinates of the gradient circlesCOMMENT
MEDIUMweasyprint/layout/preferred.py456 # Create the gridCOMMENT
MEDIUMweasyprint/layout/preferred.py475 # Define the total horizontal border spacingCOMMENT
MEDIUMweasyprint/layout/preferred.py515 # Define the intermediate content widthsCOMMENT
MEDIUMweasyprint/layout/column.py50 # Define the number of columns and their widthsCOMMENT
MEDIUMweasyprint/text/fonts.py136 # Create a pattern that matches font name.COMMENT
MEDIUMweasyprint/formatting_structure/boxes.py131 # Create a new instance without calling __init__: parameters areCOMMENT
Verbosity Indicators10 hits · 21 pts
SeverityFileLineSnippetContext
LOW⚡weasyprint/layout/page.py813 # Step 1: page based back-referencesCOMMENT
LOW⚡weasyprint/layout/page.py823 # Step 2: local countersCOMMENT
LOWweasyprint/layout/page.py842 # Step 3: targeted countersCOMMENT
LOWweasyprint/text/line_break.py477 # Step 5: Try to break word if it's too long for the lineCOMMENT
LOW⚡weasyprint/text/fonts.py268 # Step 1: getting the default, we rely on Pango for this.COMMENT
LOW⚡weasyprint/text/fonts.py269 # Step 2: @font-face font-variant, done in fonts.add_font_face.COMMENT
LOW⚡weasyprint/text/fonts.py270 # Step 3: @font-face font-feature-settings, done in fonts.add_font_face.COMMENT
LOW⚡weasyprint/text/fonts.py272 # Step 4: font-variant and OpenType features.COMMENT
LOW⚡weasyprint/text/fonts.py317 # Step 5: incompatible non-OpenType features, already handled by Pango.COMMENT
LOW⚡weasyprint/text/fonts.py319 # Step 6: font-feature-settings.COMMENT
Excessive Try-Catch Wrapping16 hits · 20 pts
SeverityFileLineSnippetContext
LOWtests/testing_utils.py115 except Exception: # pragma: no coverCODE
LOWweasyprint/html.py304 except Exception as exception:CODE
LOWweasyprint/document.py132 except Exception:CODE
MEDIUMweasyprint/document.py127def __del__(self):CODE
LOW⚡weasyprint/images.py308 except Exception as svg_exception:CODE
LOW⚡weasyprint/images.py314 except Exception as raster_exception:CODE
LOW⚡weasyprint/images.py322 except Exception:CODE
LOW⚡weasyprint/images.py332 except Exception as raster_exception:CODE
LOWweasyprint/urls.py374 except Exception: # pragma: no coverCODE
LOWweasyprint/urls.py419 except Exception as exception:CODE
MEDIUMweasyprint/urls.py371def close(self):CODE
LOWweasyprint/svg/defs.py23 except Exception:CODE
LOWweasyprint/css/__init__.py1271 except Exception:CODE
LOWweasyprint/pdf/fonts.py169 except Exception as exception:CODE
LOWweasyprint/text/fonts.py171 except Exception as exception:CODE
LOWweasyprint/text/fonts.py188 except Exception as exc:CODE
Structural Annotation Overuse8 hits · 16 pts
SeverityFileLineSnippetContext
LOW⚡weasyprint/layout/page.py813 # Step 1: page based back-referencesCOMMENT
LOW⚡weasyprint/layout/page.py823 # Step 2: local countersCOMMENT
LOWweasyprint/layout/page.py842 # Step 3: targeted countersCOMMENT
LOWweasyprint/text/line_break.py477 # Step 5: Try to break word if it's too long for the lineCOMMENT
LOW⚡weasyprint/text/fonts.py268 # Step 1: getting the default, we rely on Pango for this.COMMENT
LOW⚡weasyprint/text/fonts.py272 # Step 4: font-variant and OpenType features.COMMENT
LOW⚡weasyprint/text/fonts.py317 # Step 5: incompatible non-OpenType features, already handled by Pango.COMMENT
LOW⚡weasyprint/text/fonts.py319 # Step 6: font-feature-settings.COMMENT
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHweasyprint/document.py132except Exception:CODE
HIGHweasyprint/urls.py357except ValueError:CODE
HIGHweasyprint/css/validation/expanders.py916except InvalidValues:CODE
Over-Commented Block12 hits · 12 pts
SeverityFileLineSnippetContext
LOWtests/test_pdf.py81 ''').write_pdf()COMMENT
LOWtests/layout/test_position.py281 assert (p1.position_x, p1.position_y) == (0, 0)COMMENT
LOWweasyprint/__init__.py21#: command-line.COMMENT
LOWweasyprint/__init__.py41#: :param bool pdf_tags:COMMENT
LOWweasyprint/document.py41 #: ``'bottom'`` and ``'left'`` as keys, and values in CSS pixels.COMMENT
LOWweasyprint/document.py61 #: The anchor might be defined in another page,COMMENT
LOWweasyprint/css/__init__.py61 """Convenience function to get the computed styles for an element."""COMMENT
LOWweasyprint/layout/preferred.py381 # "The line breaking behavior of a replaced elementCOMMENT
LOWweasyprint/layout/column.py81COMMENT
LOWweasyprint/pdf/metadata.py41 #: Extracted from the ``<meta name=author>`` elements in HTMLCOMMENT
LOWweasyprint/pdf/metadata.py61 #: Extracted from the ``<meta name=dcterms.created>`` element in HTMLCOMMENT
LOWweasyprint/pdf/anchors.py321def add_annotations(links, matrix, document, pdf, page, annot_files, compress):COMMENT
AI Structural Patterns8 hits · 8 pts
SeverityFileLineSnippetContext
LOWweasyprint/__init__.py158CODE
LOWweasyprint/__init__.py287CODE
LOWweasyprint/__init__.py347CODE
LOWweasyprint/urls.py162CODE
LOWweasyprint/css/__init__.py1864CODE
LOWweasyprint/layout/block.py18CODE
LOWweasyprint/pdf/metadata.py32CODE
LOWweasyprint/text/fonts.py257CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWweasyprint/layout/float.py172 # Assign locals to avoid slow attribute lookups.COMMENT
LOWweasyprint/layout/table.py363 # Set baseline to lowest bottom content edge.COMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWweasyprint/layout/table.py565 # If the height property has a bigger value, just add blank spaceCOMMENT
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWweasyprint/__init__.py88__all__ = [CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWweasyprint/__init__.py379CODE