The comprehensive WSGI web application library.
This report summarizes scanner evidence for pallets/werkzeug, a Python project with 6,879 GitHub stars. SynthScan examined 40,539 lines of code across 216 source files, recording 532 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 18.5 (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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 323 finding(s).
Are imports declared and package/API names verified? 141 finding(s).
Are wrappers, guards, and repeated structures necessary? 326 finding(s).
Which changes need focused human review? 532 finding(s).
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.
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.
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.
The scanner identified 532 distinct pattern matches across 14 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_datastructures.py | 48 | def test_multidict_dict_interop(self): | CODE |
| LOW | tests/test_datastructures.py | 250 | def test_follows_dict_interface(self): | CODE |
| LOW | tests/test_datastructures.py | 325 | def test_multidict_pop_raise_badrequestkeyerror_for_empty_list_value(self): | CODE |
| LOW | tests/test_datastructures.py | 334 | def test_multidict_popitem_raise_badrequestkeyerror_for_empty_list_value(self): | CODE |
| LOW | tests/test_datastructures.py | 365 | def test_getitem_raise_badrequestkeyerror_for_empty_list_value(self): | CODE |
| LOW | tests/test_datastructures.py | 463 | def test_defaults_and_conversion(self): | CODE |
| LOW | tests/test_datastructures.py | 646 | def test_skip_empty_special_vars(self): | CODE |
| LOW | tests/test_datastructures.py | 749 | def test_callback_dict_writes(self): | CODE |
| LOW | tests/test_datastructures.py | 803 | def test_stale_while_revalidate(self): | CODE |
| LOW | tests/test_datastructures.py | 903 | def test_accept_wildcard_specificity(self): | CODE |
| LOW | tests/test_datastructures.py | 910 | def test_accept_equal_quality(self): | CODE |
| LOW | tests/test_datastructures.py | 987 | def test_mimetype_always_lowercase(self): | CODE |
| LOW | tests/test_datastructures.py | 992 | def test_bytes_proper_sentinel(self, data): | CODE |
| LOW | tests/test_datastructures.py | 1003 | def test_proxy_can_access_stream_attrs(self, stream): | CODE |
| LOW | tests/test_datastructures.py | 1077 | def test_etag_strong_comparison(header: ETagSet, etag: ETag, expect: bool) -> None: | CODE |
| LOW | tests/test_datastructures.py | 1098 | def test_etag_weak_comparison(header: ETagSet, etag: ETag, expect: bool) -> None: | CODE |
| LOW | tests/test_utils.py | 56 | def test_redirect_with_custom_response_class(): | CODE |
| LOW | tests/test_utils.py | 100 | def test_can_set_cached_property(): | CODE |
| LOW | tests/test_utils.py | 111 | def test_invalidate_cached_property(): | CODE |
| LOW | tests/test_utils.py | 137 | def test_inspect_treats_cached_property_as_property(): | CODE |
| LOW | tests/test_utils.py | 194 | def test_import_string_provides_traceback(tmpdir, monkeypatch): | CODE |
| LOW | tests/test_utils.py | 214 | def test_import_string_attribute_error(tmpdir, monkeypatch): | CODE |
| LOW | tests/test_utils.py | 238 | def test_header_set_duplication_bug(): | CODE |
| LOW | tests/test_utils.py | 267 | def test_append_slash_redirect(autocorrect, path, base_url, absolute_location): | CODE |
| LOW | tests/test_security.py | 10 | def test_default_password_method(): | CODE |
| LOW⚡ | tests/test_security.py | 67 | def test_safe_join_empty_trusted(): | CODE |
| LOW⚡ | tests/test_security.py | 74 | def test_safe_join_windows_special(monkeypatch: pytest.MonkeyPatch, name: str) -> None: | CODE |
| LOW⚡ | tests/test_security.py | 80 | def test_safe_join_not_windows_special(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_send_file.py | 60 | def test_object_mimetype_from_name() -> None: | CODE |
| LOW | tests/test_send_file.py | 81 | def test_object_attachment_requires_name(): | CODE |
| LOW | tests/test_send_file.py | 123 | def test_no_cache_conditional_default(): | CODE |
| LOW | tests/test_send_file.py | 179 | def test_from_directory_not_found(path): | CODE |
| LOW | tests/test_serving.py | 132 | def test_watchdog_reloader_ignores_opened(mock_trigger_reload: Mock) -> None: | CODE |
| LOW | tests/test_serving.py | 152 | def test_watchdog_reloader_ignores_closed_no_write(mock_trigger_reload: Mock) -> None: | CODE |
| LOW | tests/test_serving.py | 200 | def test_content_type_and_length(standard_app: DevServerClient) -> None: | CODE |
| LOW | tests/test_serving.py | 260 | def test_multiple_headers_concatenated(standard_app: DevServerClient) -> None: | CODE |
| LOW | tests/test_serving.py | 284 | def test_multiline_header_folding(standard_app: DevServerClient) -> None: | CODE |
| LOW | tests/test_serving.py | 303 | def test_streaming_close_response(dev_server: StartDevServer, endpoint: str) -> None: | CODE |
| LOW | tests/test_serving.py | 314 | def test_streaming_chunked_response(dev_server: StartDevServer) -> None: | CODE |
| LOW | tests/test_serving.py | 327 | def test_streaming_chunked_truncation(dev_server: StartDevServer) -> None: | CODE |
| LOW | tests/test_debug.py | 45 | def test_string_subclass_repr(self): | CODE |
| LOW | tests/test_debug.py | 219 | def test_exc_divider_found_on_chained_exception(self): | CODE |
| LOW | tests/test_debug.py | 257 | def test_console_closure_variables(monkeypatch): | CODE |
| LOW | tests/test_debug.py | 268 | def test_chained_exception_cycle(): | CODE |
| LOW⚡ | tests/test_debug.py | 283 | def test_exception_without_traceback(): | CODE |
| LOW⚡ | tests/test_debug.py | 293 | def test_missing_source_lines(mock_getlines: mock.Mock) -> None: | CODE |
| LOW | tests/test_debug.py | 309 | def test_debugged_application_pin_security_false(): | CODE |
| LOW | tests/test_apply_range.py | 88 | def test_precondition_applied() -> None: | CODE |
| LOW | tests/test_test.py | 54 | def external_redirect_demo_app(environ, start_response): | CODE |
| LOW | tests/test_test.py | 59 | def external_subdomain_redirect_demo_app(environ, start_response): | CODE |
| LOW | tests/test_test.py | 88 | def test_cookiejar_stores_cookie(): | CODE |
| LOW | tests/test_test.py | 114 | def test_cookie_for_different_path(): | CODE |
| LOW | tests/test_test.py | 140 | def test_environ_builder_basics(): | CODE |
| LOW | tests/test_test.py | 161 | def test_environ_builder_data(): | CODE |
| LOW | tests/test_test.py | 191 | def test_environ_builder_json(): | CODE |
| LOW | tests/test_test.py | 205 | def test_environ_builder_headers(): | CODE |
| LOW | tests/test_test.py | 221 | def test_environ_builder_headers_content_type(): | CODE |
| LOW | tests/test_test.py | 235 | def test_envrion_builder_multiple_headers(): | CODE |
| LOW | tests/test_test.py | 243 | def test_environ_builder_paths(): | CODE |
| LOW | tests/test_test.py | 276 | def test_environ_builder_content_type(): | CODE |
| 189 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/manage-couchy.py | 71 | except ImportError: | CODE |
| HIGH | examples/manage-shorty.py | 73 | except ImportError: | CODE |
| HIGH | examples/manage-plnt.py | 111 | except ImportError: | CODE |
| HIGH | examples/manage-webpylike.py | 57 | except ImportError: | CODE |
| HIGH | examples/manage-i18nurls.py | 53 | except ImportError: | CODE |
| HIGH | examples/manage-simplewiki.py | 74 | except ImportError: | CODE |
| HIGH | examples/manage-coolmagic.py | 53 | except ImportError: | CODE |
| HIGH | examples/cupoftee/db.py | 66 | except Exception: | CODE |
| HIGH | examples/cupoftee/db.py | 44 | except KeyError: | CODE |
| HIGH | examples/cupoftee/network.py | 108 | except Exception: | CODE |
| HIGH | examples/cupoftee/network.py | 64 | except ServerError: | CODE |
| HIGH | src/werkzeug/_reloader.py | 418 | except KeyboardInterrupt: | CODE |
| HIGH | src/werkzeug/serving.py | 246 | except AttributeError: | CODE |
| HIGH | src/werkzeug/serving.py | 824 | except KeyboardInterrupt: | CODE |
| HIGH | src/werkzeug/serving.py | 394 | except Exception: | CODE |
| HIGH | src/werkzeug/utils.py | 445 | except OSError: | CODE |
| HIGH | src/werkzeug/urls.py | 191 | except UnicodeDecodeError: | CODE |
| HIGH | src/werkzeug/wsgi.py | 336 | except AttributeError: | CODE |
| HIGH | src/werkzeug/middleware/lint.py | 226 | except Exception: | CODE |
| HIGH | src/werkzeug/datastructures/file_storage.py | 143 | except Exception: | CODE |
| HIGH | src/werkzeug/datastructures/structures.py | 332 | except (ValueError, TypeError): | CODE |
| HIGH | src/werkzeug/datastructures/headers.py | 462 | except KeyError: | CODE |
| HIGH | src/werkzeug/datastructures/set.py | 90 | except KeyError: | CODE |
| HIGH | src/werkzeug/routing/rules.py | 104 | except ValueError: | CODE |
| HIGH | src/werkzeug/routing/map.py | 728 | except RequestRedirect: | CODE |
| HIGH | src/werkzeug/routing/map.py | 743 | except HTTPException: | CODE |
| HIGH | src/werkzeug/debug/__init__.py | 83 | except OSError: | CODE |
| HIGH | src/werkzeug/debug/__init__.py | 99 | except OSError: | CODE |
| HIGH | src/werkzeug/debug/__init__.py | 121 | except OSError: | CODE |
| HIGH | src/werkzeug/debug/repr.py | 260 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_datastructures.py | 1 | CODE | |
| LOW | tests/test_utils.py | 1 | CODE | |
| LOW | tests/conftest.py | 1 | CODE | |
| LOW | tests/test_send_file.py | 1 | CODE | |
| LOW | tests/test_serving.py | 1 | CODE | |
| LOW | tests/test_apply_range.py | 1 | CODE | |
| LOW | tests/test_routing.py | 1 | CODE | |
| LOW | tests/test_apply_conditions.py | 1 | CODE | |
| LOW | tests/test_wsgi.py | 1 | CODE | |
| LOW | tests/sansio/test_utils.py | 1 | CODE | |
| LOW | examples/shorty/application.py | 2 | CODE | |
| LOW | examples/shorty/application.py | 6 | CODE | |
| LOW | examples/cupoftee/__init__.py | 2 | CODE | |
| LOW | examples/i18nurls/__init__.py | 1 | CODE | |
| LOW | examples/couchy/application.py | 2 | CODE | |
| LOW | examples/couchy/application.py | 6 | CODE | |
| LOW | examples/simplewiki/__init__.py | 4 | CODE | |
| LOW | examples/simplewiki/application.py | 9 | CODE | |
| LOW | examples/simplewiki/utils.py | 11 | CODE | |
| LOW | examples/coolmagic/__init__.py | 1 | CODE | |
| LOW | examples/plnt/webapp.py | 4 | CODE | |
| LOW | examples/plnt/webapp.py | 7 | CODE | |
| LOW | examples/plnt/webapp.py | 9 | CODE | |
| LOW | examples/plnt/__init__.py | 2 | CODE | |
| LOW | examples/webpylike/webpylike.py | 12 | CODE | |
| LOW | src/werkzeug/_header_property.py | 1 | CODE | |
| LOW | src/werkzeug/user_agent.py | 1 | CODE | |
| LOW | src/werkzeug/_reloader.py | 1 | CODE | |
| LOW | src/werkzeug/_internal.py | 1 | CODE | |
| LOW | src/werkzeug/serving.py | 15 | CODE | |
| LOW | src/werkzeug/local.py | 1 | CODE | |
| LOW | src/werkzeug/security.py | 1 | CODE | |
| LOW | src/werkzeug/__init__.py | 1 | CODE | |
| LOW | src/werkzeug/__init__.py | 2 | CODE | |
| LOW | src/werkzeug/__init__.py | 3 | CODE | |
| LOW | src/werkzeug/__init__.py | 4 | CODE | |
| LOW | src/werkzeug/test.py | 1 | CODE | |
| LOW | src/werkzeug/formparser.py | 1 | CODE | |
| LOW | src/werkzeug/utils.py | 1 | CODE | |
| LOW | src/werkzeug/http.py | 1 | CODE | |
| LOW | src/werkzeug/exceptions.py | 47 | CODE | |
| LOW | src/werkzeug/urls.py | 1 | CODE | |
| LOW | src/werkzeug/wsgi.py | 1 | CODE | |
| LOW | src/werkzeug/testapp.py | 5 | CODE | |
| LOW | src/werkzeug/middleware/dispatcher.py | 34 | CODE | |
| LOW | src/werkzeug/middleware/proxy_fix.py | 31 | CODE | |
| LOW | src/werkzeug/middleware/shared_data.py | 9 | CODE | |
| LOW | src/werkzeug/middleware/http_proxy.py | 11 | CODE | |
| LOW | src/werkzeug/middleware/profiler.py | 15 | CODE | |
| LOW | src/werkzeug/middleware/lint.py | 16 | CODE | |
| LOW | src/werkzeug/wrappers/request.py | 1 | CODE | |
| LOW | src/werkzeug/wrappers/__init__.py | 1 | CODE | |
| LOW | src/werkzeug/wrappers/__init__.py | 2 | CODE | |
| LOW | src/werkzeug/wrappers/__init__.py | 3 | CODE | |
| LOW | src/werkzeug/wrappers/response.py | 1 | CODE | |
| LOW | src/werkzeug/sansio/multipart.py | 1 | CODE | |
| LOW | src/werkzeug/sansio/request.py | 1 | CODE | |
| LOW | src/werkzeug/sansio/response.py | 1 | CODE | |
| LOW | src/werkzeug/sansio/utils.py | 1 | CODE | |
| LOW | src/werkzeug/sansio/http.py | 1 | CODE | |
| 71 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_local.py | 92 | ls.push(42) | CODE |
| HIGH⚡ | tests/test_local.py | 100 | ls.push(42) | CODE |
| HIGH⚡ | tests/test_local.py | 102 | ls.push(23) | CODE |
| HIGH⚡ | tests/test_local.py | 112 | ls.push([1, 2]) | CODE |
| HIGH⚡ | tests/test_local.py | 114 | ls.push((1, 2)) | CODE |
| HIGH⚡ | tests/test_local.py | 123 | ls.push(1) | CODE |
| HIGH⚡ | tests/test_local.py | 126 | ls.push(1) | CODE |
| HIGH | tests/test_local.py | 203 | local_stack.push(42) | CODE |
| HIGH⚡ | tests/test_wsgi.py | 138 | # this expects stream.readable() to exist and return true | COMMENT |
| HIGH | src/werkzeug/debug/console.py | 162 | ThreadedStream.push() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/shorty/utils.py | 0 | return true if there are pages before the current one. | STRING |
| HIGH | examples/couchy/utils.py | 0 | return true if there are pages before the current one. | STRING |
| HIGH | examples/plnt/utils.py | 0 | return true if there are pages before the current one. | STRING |
| HIGH | examples/shorty/utils.py | 0 | return true if there are pages after the current one. | STRING |
| HIGH | examples/couchy/utils.py | 0 | return true if there are pages after the current one. | STRING |
| HIGH | examples/plnt/utils.py | 0 | return true if there are pages after the current one. | STRING |
| HIGH | src/werkzeug/datastructures/range.py | 0 | parse a header value and create an instance of this class. .. versionadded:: 3.2 | STRING |
| HIGH | src/werkzeug/datastructures/csp.py | 0 | parse a header value and create an instance of this class. .. versionadded:: 3.2 | STRING |
| HIGH | src/werkzeug/datastructures/cache_control.py | 0 | parse a header value and create an instance of this class. .. versionadded:: 3.2 | STRING |
| HIGH | src/werkzeug/datastructures/accept.py | 0 | parse a header value and create an instance of this class. .. versionadded:: 3.2 | STRING |
| HIGH | src/werkzeug/datastructures/set.py | 0 | parse a header value and create an instance of this class. .. versionadded:: 3.2 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/wsecho.py | 20 | CODE | |
| LOW | examples/shorty/views.py | 14 | CODE | |
| LOW | examples/cupoftee/pages.py | 61 | CODE | |
| LOW | examples/couchy/views.py | 13 | CODE | |
| LOW | examples/simplewiki/actions.py | 37 | CODE | |
| LOW | examples/simplewiki/actions.py | 134 | CODE | |
| LOW | examples/plnt/sync.py | 17 | CODE | |
| LOW | examples/webpylike/webpylike.py | 43 | CODE | |
| LOW | src/werkzeug/_reloader.py | 69 | CODE | |
| LOW | src/werkzeug/serving.py | 447 | CODE | |
| LOW | src/werkzeug/serving.py | 715 | CODE | |
| LOW | src/werkzeug/local.py | 479 | CODE | |
| LOW | src/werkzeug/security.py | 27 | CODE | |
| LOW | src/werkzeug/test.py | 55 | CODE | |
| LOW | src/werkzeug/test.py | 164 | CODE | |
| LOW | src/werkzeug/test.py | 284 | CODE | |
| LOW | src/werkzeug/test.py | 1074 | CODE | |
| LOW | src/werkzeug/formparser.py | 421 | CODE | |
| LOW | src/werkzeug/utils.py | 312 | CODE | |
| LOW | src/werkzeug/http.py | 298 | CODE | |
| LOW | src/werkzeug/http.py | 363 | CODE | |
| LOW | src/werkzeug/http.py | 517 | CODE | |
| LOW | src/werkzeug/http.py | 1483 | CODE | |
| LOW | src/werkzeug/middleware/shared_data.py | 76 | CODE | |
| LOW | src/werkzeug/middleware/lint.py | 164 | CODE | |
| LOW | src/werkzeug/wrappers/response.py | 443 | CODE | |
| LOW | src/werkzeug/sansio/multipart.py | 140 | CODE | |
| LOW | src/werkzeug/sansio/multipart.py | 306 | CODE | |
| LOW | src/werkzeug/sansio/http.py | 13 | CODE | |
| LOW | src/werkzeug/datastructures/range.py | 203 | CODE | |
| LOW | src/werkzeug/datastructures/cache_control.py | 334 | CODE | |
| LOW | src/werkzeug/datastructures/structures.py | 21 | CODE | |
| LOW | src/werkzeug/datastructures/structures.py | 186 | CODE | |
| LOW | src/werkzeug/datastructures/structures.py | 643 | CODE | |
| LOW | src/werkzeug/datastructures/structures.py | 687 | CODE | |
| LOW | src/werkzeug/datastructures/headers.py | 172 | CODE | |
| LOW | src/werkzeug/datastructures/headers.py | 509 | CODE | |
| LOW | src/werkzeug/routing/matcher.py | 39 | CODE | |
| LOW | src/werkzeug/routing/matcher.py | 75 | CODE | |
| LOW | src/werkzeug/routing/matcher.py | 85 | CODE | |
| LOW | src/werkzeug/routing/rules.py | 270 | CODE | |
| LOW | src/werkzeug/routing/rules.py | 605 | CODE | |
| LOW | src/werkzeug/routing/map.py | 838 | CODE | |
| LOW | src/werkzeug/debug/tbtools.py | 126 | CODE | |
| LOW | src/werkzeug/debug/__init__.py | 56 | CODE | |
| LOW | src/werkzeug/debug/__init__.py | 62 | CODE | |
| LOW | src/werkzeug/debug/__init__.py | 472 | CODE | |
| LOW | src/werkzeug/debug/__init__.py | 538 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_debug.py | 286 | except Exception as e: | CODE |
| MEDIUM | tests/test_debug.py | 268 | def test_chained_exception_cycle(): | CODE |
| LOW | examples/cupoftee/db.py | 66 | except Exception: | CODE |
| MEDIUM | examples/cupoftee/db.py | 62 | def close(self): | CODE |
| LOW | examples/cupoftee/network.py | 108 | except Exception: | CODE |
| LOW | examples/couchy/models.py | 36 | except Exception: | CODE |
| LOW | examples/couchy/application.py | 23 | except Exception: | CODE |
| LOW | src/werkzeug/serving.py | 380 | except Exception as e: | CODE |
| LOW | src/werkzeug/serving.py | 394 | except Exception: | CODE |
| LOW | src/werkzeug/serving.py | 408 | except Exception as e: | CODE |
| MEDIUM | src/werkzeug/serving.py | 111 | def read_chunk_len(self) -> int: | CODE |
| LOW | src/werkzeug/middleware/lint.py | 226 | except Exception: | CODE |
| LOW | src/werkzeug/sansio/request.py | 152 | except Exception as e: | CODE |
| MEDIUM | src/werkzeug/sansio/request.py | 149 | def __repr__(self) -> str: | CODE |
| LOW | src/werkzeug/datastructures/file_storage.py | 143 | except Exception: | CODE |
| LOW | src/werkzeug/debug/console.py | 179 | except Exception: | CODE |
| MEDIUM | src/werkzeug/debug/console.py | 70 | def fetch() -> str: | CODE |
| LOW | src/werkzeug/debug/__init__.py | 349 | except Exception as e: | CODE |
| LOW | src/werkzeug/debug/__init__.py | 369 | except Exception: | CODE |
| LOW | src/werkzeug/debug/repr.py | 220 | except Exception: | CODE |
| LOW | src/werkzeug/debug/repr.py | 237 | except Exception: | CODE |
| LOW | src/werkzeug/debug/repr.py | 260 | except Exception: | CODE |
| MEDIUM | src/werkzeug/debug/repr.py | 217 | def fallback_repr(self) -> str: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_routing.py | 208 | # Check if the actual routes works | COMMENT |
| LOW⚡ | tests/test_routing.py | 212 | # Check if exceptions are correct | COMMENT |
| LOW⚡ | tests/test_routing.py | 220 | # Check if the actual routes works | COMMENT |
| LOW⚡ | tests/test_routing.py | 223 | # Check if exceptions are correct | COMMENT |
| LOW | tests/test_routing.py | 184 | # Check if the actual routes works | COMMENT |
| LOW | tests/test_routing.py | 189 | # Check if exceptions are correct | COMMENT |
| LOW | src/werkzeug/debug/__init__.py | 320 | # Set _pin to None explicitly to prevent regeneration by the getter | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_apply_conditions.py | 16 | CODE | |
| LOW | src/werkzeug/serving.py | 964 | CODE | |
| LOW | src/werkzeug/test.py | 284 | CODE | |
| LOW | src/werkzeug/utils.py | 312 | CODE | |
| LOW | src/werkzeug/http.py | 1323 | CODE | |
| LOW | src/werkzeug/sansio/response.py | 168 | CODE | |
| LOW | src/werkzeug/sansio/http.py | 13 | CODE | |
| LOW | src/werkzeug/routing/rules.py | 458 | CODE | |
| LOW | src/werkzeug/routing/map.py | 113 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/coolmagic/application.py | 1 | """This module provides the WSGI application. | STRING |
| MEDIUM | src/werkzeug/formparser.py | 153 | """This class implements parsing of form data for Werkzeug. By itself | STRING |
| MEDIUM | src/werkzeug/routing/matcher.py | 88 | # This function is meant to be called recursively, and will attempt | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/werkzeug/local.py | 561 | __dir__ = _ProxyLookup(dir, fallback=lambda self: []) | COMMENT |
| LOW | src/werkzeug/wrappers/response.py | 101 | """ | COMMENT |
| LOW | src/werkzeug/wrappers/response.py | 121 | #: This is disabled by default, so responses will send relative | COMMENT |
| LOW | src/werkzeug/sansio/multipart.py | 101 | # Note in the below \h i.e. horizontal whitespace is used | COMMENT |
| LOW | src/werkzeug/sansio/request.py | 61 | """ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/werkzeug/wrappers/response.py | 289 | def set_data(self, value: bytes | str) -> None: | CODE |
| LOW | src/werkzeug/sansio/response.py | 603 | def _set_etag(self, value: ETag | tuple[str, bool] | str) -> None: | STRING |
| LOW | src/werkzeug/sansio/response.py | 612 | def set_etag(self, etag: str, weak: bool = False) -> None: | STRING |
| LOW | src/werkzeug/routing/matcher.py | 66 | def _update_state(state: State) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_debug.py | 222 | def do_something(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/werkzeug/routing/__init__.py | 76 | And here is how you can match URLs: | STRING |