gunicorn 'Green Unicorn' is a WSGI HTTP Server for UNIX, fast clients and sleepy applications.
This report presents the forensic synthetic code analysis of benoitc/gunicorn, a Python project with 10,664 GitHub stars. SynthScan v2.0 examined 102,405 lines of code across 567 source files, recording 2954 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 48.5 places this repository in the Strong 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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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.
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.
The scanner identified 2954 distinct pattern matches across 22 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_gtornado.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_gtornado.py | 331 | # Create a mock handler to test the patched clear method | COMMENT |
| MEDIUM | tests/support_dirty_apps.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_invalid_requests.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_header_security.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http2_alpn.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_python_protocol.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/conftest.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 242 | # Create a mock task | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 261 | # Create a mock task that's already done | COMMENT |
| MEDIUM | tests/test_dirty_errors.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/support.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM⚡ | tests/test_asgi_worker.py | 391 | # Create a minimal protocol instance | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http2_errors.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_debug.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http2_request.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http2_request.py | 697 | # Create a mock socket | COMMENT |
| MEDIUM | tests/test_http2_request.py | 716 | # Create a mock HTTP/1 request (no priority attributes) | COMMENT |
| MEDIUM | tests/test_asgi_forwarded_headers.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_statsd.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_pidfile.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_streaming.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM⚡ | tests/test_asgi_disconnect.py | 61 | # Create a mock request for the body receiver | COMMENT |
| MEDIUM⚡ | tests/test_asgi_disconnect.py | 66 | # Create a body receiver (simulating active request) | COMMENT |
| MEDIUM⚡ | tests/test_asgi_disconnect.py | 173 | # Create a mock task that's still running | COMMENT |
| MEDIUM⚡ | tests/test_asgi_disconnect.py | 186 | # Create a mock task that's already done | COMMENT |
| MEDIUM⚡ | tests/test_asgi_disconnect.py | 203 | # Create a mock request with no body | COMMENT |
| MEDIUM | tests/test_asgi_disconnect.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_disconnect.py | 87 | # Create a mock request for the body receiver | COMMENT |
| MEDIUM | tests/test_asgi_disconnect.py | 134 | # Create a mock task | COMMENT |
| MEDIUM | tests/test_asgi_disconnect.py | 155 | # Create a mock task | COMMENT |
| MEDIUM | tests/test_asgi_websocket_enhanced.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_dirty_arbiter.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_systemd.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_dirty_tlv.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_util.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_parser_validation.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http2_integration.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_dirty_app.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_proxy_protocol.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_keepalive_smuggling.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/treq_asgi.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_dirty_integration.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_header_policy_parity.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_arbiter.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_dirty_hooks.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http2_stream.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_signal_integration.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_http2_response.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/treq.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/treq.py | 7 | # This file is part of the pywebmachine package released | COMMENT |
| MEDIUM | tests/test_ssl.py | 3 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_http.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_sock.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_dirty_protocol.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_asgi_invalid_requests.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| MEDIUM | tests/test_valid_requests.py | 2 | # This file is part of gunicorn released under the MIT license. | COMMENT |
| 426 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_asgi_header_security.py | 21 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 23 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 91 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 93 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 246 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 248 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 296 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 298 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 340 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_header_security.py | 342 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_header_security.py | 152 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_header_security.py | 154 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_error_handling.py | 88 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_error_handling.py | 90 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_error_handling.py | 316 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_error_handling.py | 318 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_error_handling.py | 353 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_error_handling.py | 355 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 20 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 22 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 120 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 122 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 216 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 218 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 274 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_error_handling.py | 276 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_http_scope.py | 96 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_http_scope.py | 98 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 18 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 20 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 178 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 180 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 256 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 258 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 350 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 352 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 478 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 480 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 564 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 566 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 647 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_http_scope.py | 649 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_worker.py | 270 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_worker.py | 272 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_worker.py | 671 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | tests/test_asgi_worker.py | 673 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 24 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 26 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 112 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 114 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 125 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 127 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 349 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 351 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 412 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 414 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 527 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 529 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 726 | # ============================================================================ | COMMENT |
| MEDIUM | tests/test_asgi_worker.py | 728 | # ============================================================================ | COMMENT |
| 364 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_gtornado.py | 77 | def test_init_process_clears_ioloop(self): | CODE |
| LOW | tests/test_gtornado.py | 109 | def test_handle_request_increments_counter(self): | CODE |
| LOW | tests/test_gtornado.py | 121 | def test_max_requests_triggers_shutdown(self): | CODE |
| LOW | tests/test_gtornado.py | 155 | def test_handle_exit_sets_alive_false(self): | CODE |
| LOW | tests/test_gtornado.py | 165 | def test_handle_exit_only_once(self): | CODE |
| LOW | tests/test_gtornado.py | 200 | def test_watchdog_notifies_when_alive(self): | CODE |
| LOW | tests/test_gtornado.py | 211 | def test_watchdog_detects_parent_death(self): | CODE |
| LOW | tests/test_gtornado.py | 242 | def test_heartbeat_stops_server_when_not_alive(self): | CODE |
| LOW | tests/test_gtornado.py | 254 | def test_heartbeat_stops_ioloop_after_server(self): | CODE |
| LOW | tests/test_gtornado.py | 288 | def test_wsgi_callable_wrapped_in_container(self): | CODE |
| LOW | tests/test_gtornado.py | 303 | def test_tornado_application_not_wrapped(self): | CODE |
| LOW | tests/test_gtornado.py | 323 | def test_setup_patches_request_handler(self): | CODE |
| LOW | tests/test_gtornado.py | 364 | def test_run_sets_up_callbacks(self): | CODE |
| LOW | tests/test_gtornado.py | 384 | def test_run_creates_http_server(self): | CODE |
| LOW | tests/test_gtornado.py | 400 | def test_run_adds_sockets_to_server(self): | CODE |
| LOW⚡ | tests/test_asgi_header_security.py | 28 | def test_valid_header_name_accepted(self): | CODE |
| LOW⚡ | tests/test_asgi_header_security.py | 98 | def test_header_value_with_bare_cr_rejected(self): | CODE |
| LOW⚡ | tests/test_asgi_header_security.py | 253 | def test_oversized_header_value_handled(self): | CODE |
| LOW⚡ | tests/test_asgi_header_security.py | 303 | def test_valid_host_header_accepted(self): | CODE |
| LOW⚡ | tests/test_asgi_header_security.py | 347 | def test_content_type_with_charset(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 42 | def test_header_name_with_null_rejected(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 54 | def test_header_name_with_cr_rejected(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 66 | def test_header_name_with_lf_rejected(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 78 | def test_empty_header_name_rejected(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 111 | def test_header_value_with_bare_lf_rejected(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 124 | def test_header_value_special_characters_allowed(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 138 | def test_header_value_with_tab_allowed(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 186 | def test_headers_lowercased_in_scope(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 201 | def test_header_names_are_bytes(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 215 | def test_header_values_are_bytes(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 229 | def test_header_order_preserved(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 273 | def test_many_headers_handled(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 315 | def test_host_header_with_port_accepted(self): | CODE |
| LOW | tests/test_asgi_header_security.py | 361 | def test_content_type_multipart(self): | CODE |
| LOW | tests/test_http2_alpn.py | 52 | def test_empty_protocols_returns_empty(self): | CODE |
| LOW | tests/test_http2_alpn.py | 59 | def test_none_protocols_returns_empty(self): | CODE |
| LOW⚡ | tests/test_http2_alpn.py | 79 | def test_returns_alpn_protocol(self): | CODE |
| LOW⚡ | tests/test_http2_alpn.py | 89 | def test_returns_none_when_not_negotiated(self): | CODE |
| LOW⚡ | tests/test_http2_alpn.py | 94 | def test_returns_none_for_non_ssl_socket(self): | CODE |
| LOW⚡ | tests/test_http2_alpn.py | 99 | def test_handles_attribute_error(self): | CODE |
| LOW | tests/test_http2_alpn.py | 127 | def test_returns_false_for_none(self): | CODE |
| LOW | tests/test_http2_alpn.py | 132 | def test_returns_false_for_non_ssl(self): | CODE |
| LOW | tests/test_http2_alpn.py | 236 | def test_handshake_called_when_do_handshake_on_connect_false(self, async_worker): | CODE |
| LOW | tests/test_http2_alpn.py | 254 | def test_no_handshake_when_do_handshake_on_connect_true(self, async_worker): | CODE |
| LOW | tests/test_http2_alpn.py | 273 | def test_no_handshake_for_non_ssl_socket(self, async_worker): | CODE |
| LOW | tests/test_http2_alpn.py | 333 | def test_gevent_inherits_async_worker(self): | CODE |
| LOW | tests/test_http2_alpn.py | 345 | def test_gevent_handle_calls_super(self, gevent_worker): | CODE |
| LOW | tests/test_python_protocol.py | 38 | def test_get_with_query_string(self): | CODE |
| LOW | tests/test_python_protocol.py | 94 | def test_post_with_content_length(self): | CODE |
| LOW | tests/test_python_protocol.py | 139 | def test_chunked_with_extension(self): | CODE |
| LOW | tests/test_python_protocol.py | 163 | def test_partial_request_line(self): | CODE |
| LOW | tests/test_python_protocol.py | 210 | def test_partial_chunked_body(self): | CODE |
| LOW | tests/test_python_protocol.py | 235 | def test_invalid_request_line(self): | CODE |
| LOW | tests/test_python_protocol.py | 249 | def test_unsupported_http_version(self): | CODE |
| LOW | tests/test_python_protocol.py | 290 | def test_multiple_requests_keepalive(self): | CODE |
| LOW | tests/test_python_protocol.py | 407 | def test_from_parser_body_info(self): | CODE |
| LOW | tests/test_python_protocol.py | 492 | def test_connection_close_header(self): | CODE |
| LOW | tests/test_python_protocol.py | 499 | def test_connection_keepalive_header(self): | CODE |
| LOW⚡ | tests/test_asgi_error_handling.py | 95 | def test_response_info_initial(self): | CODE |
| LOW⚡ | tests/test_asgi_error_handling.py | 105 | def test_response_info_with_headers(self): | CODE |
| 1367 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_http2_alpn.py | 171 | except Exception: | CODE |
| MEDIUM | tests/test_dirty_arbiter.py | 370 | def mock_consumer(): | CODE |
| LOW | tests/test_dirty_arbiter.py | 765 | except Exception: | CODE |
| LOW | tests/test_dirty_integration.py | 242 | except Exception: | CODE |
| LOW⚡ | tests/test_arbiter.py | 297 | except Exception: | CODE |
| LOW | tests/test_asgi_invalid_requests.py | 119 | except Exception as exc: # parser rejected it outright, also fine | CODE |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 110 | except Exception as e: | CODE |
| MEDIUM | …/asgi_framework_compat/frameworks/starlette_app/app.py | 111 | print(f"Error serializing key {key}: {e}", file=sys.stderr) | CODE |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 127 | except Exception as e: | CODE |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 210 | except Exception: | CODE |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 221 | except Exception: | CODE |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 231 | except Exception as e: | CODE |
| LOW | …er/asgi_framework_compat/frameworks/fastapi_app/app.py | 106 | except Exception as e: | CODE |
| MEDIUM | …er/asgi_framework_compat/frameworks/fastapi_app/app.py | 107 | print(f"Error serializing key {key}: {e}", file=sys.stderr) | CODE |
| LOW | …er/asgi_framework_compat/frameworks/fastapi_app/app.py | 125 | except Exception as e: | CODE |
| LOW | …er/asgi_framework_compat/frameworks/fastapi_app/app.py | 238 | except Exception as e: | CODE |
| LOW | …r/asgi_framework_compat/frameworks/litestar_app/app.py | 184 | except Exception: | CODE |
| LOW | …r/asgi_framework_compat/frameworks/litestar_app/app.py | 196 | except Exception: | CODE |
| LOW | …asgi_framework_compat/frameworks/blacksheep_app/app.py | 182 | except Exception: | CODE |
| LOW | …asgi_framework_compat/frameworks/blacksheep_app/app.py | 194 | except Exception: | CODE |
| LOW | tests/docker/per_app_allocation/app.py | 83 | except Exception as e: | CODE |
| LOW⚡ | …s/docker/asgi_compliance/test_framework_integration.py | 161 | except Exception as e: | CODE |
| LOW⚡ | …s/docker/asgi_compliance/test_framework_integration.py | 324 | except Exception as e: | CODE |
| LOW | …s/docker/asgi_compliance/test_framework_integration.py | 139 | except Exception: | CODE |
| LOW | …s/docker/asgi_compliance/test_framework_integration.py | 302 | except Exception: | CODE |
| LOW | tests/docker/asgi_compliance/apps/framework_apps.py | 150 | except Exception: | CODE |
| LOW⚡ | tests/docker/asgi_compliance/apps/framework_apps.py | 293 | except Exception: | CODE |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 335 | except Exception: | CODE |
| LOW | tests/docker/dirty_ttin_ttou/app.py | 58 | except Exception as e: | CODE |
| LOW | tests/docker/dirty_ttin_ttou/app.py | 69 | except Exception as e: | CODE |
| LOW | gunicorn/pidfile.py | 61 | except Exception: | CODE |
| LOW | gunicorn/util.py | 103 | except Exception: | CODE |
| LOW | gunicorn/util.py | 122 | except Exception: | CODE |
| LOW | gunicorn/util.py | 131 | except Exception: | CODE |
| LOW | gunicorn/util.py | 504 | except Exception: | CODE |
| MEDIUM | gunicorn/util.py | 223 | def unlink(filename): | CODE |
| LOW | gunicorn/systemd.py | 71 | except Exception: | CODE |
| MEDIUM | gunicorn/arbiter.py | 133 | print("Error: restoring the previous logger " | CODE |
| LOW | gunicorn/arbiter.py | 121 | except Exception: | CODE |
| LOW | gunicorn/arbiter.py | 132 | except Exception: | CODE |
| LOW | gunicorn/arbiter.py | 282 | except Exception: | CODE |
| LOW | gunicorn/arbiter.py | 484 | except Exception: | CODE |
| LOW | gunicorn/arbiter.py | 763 | except Exception as e: | CODE |
| LOW | gunicorn/arbiter.py | 775 | except Exception: | CODE |
| LOW | gunicorn/arbiter.py | 920 | except Exception: | CODE |
| LOW | gunicorn/arbiter.py | 1024 | except Exception as e: | CODE |
| LOW | gunicorn/arbiter.py | 1035 | except Exception as e: | CODE |
| LOW | gunicorn/glogging.py | 383 | except Exception: | CODE |
| LOW⚡ | gunicorn/asgi/protocol.py | 1714 | except Exception as e: | CODE |
| LOW⚡ | gunicorn/asgi/protocol.py | 1720 | except Exception: | CODE |
| LOW⚡ | gunicorn/asgi/protocol.py | 1728 | except Exception as e: | CODE |
| LOW⚡ | gunicorn/asgi/protocol.py | 1732 | except Exception: | CODE |
| LOW | gunicorn/asgi/protocol.py | 746 | except Exception as e: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1010 | except Exception as e: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1273 | except Exception: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1301 | except Exception: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1647 | except Exception: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1695 | except Exception as e: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1927 | except Exception: | CODE |
| LOW | gunicorn/asgi/protocol.py | 1946 | except Exception: | CODE |
| 125 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_gtornado.py | 440 | CODE | |
| LOW | tests/test_asgi_worker.py | 74 | CODE | |
| LOW | tests/test_dirty_integration.py | 194 | CODE | |
| LOW | tests/test_dirty_integration.py | 285 | CODE | |
| LOW | tests/docker/asgi/app.py | 8 | CODE | |
| LOW | tests/docker/asgi_framework_compat/conftest.py | 57 | CODE | |
| LOW | …/docker/asgi_framework_compat/scripts/generate_grid.py | 79 | CODE | |
| LOW | …er/asgi_framework_compat/frameworks/django_app/asgi.py | 32 | CODE | |
| LOW | …gi_framework_compat/frameworks/django_app/consumers.py | 9 | CODE | |
| LOW | …r/asgi_framework_compat/frameworks/django_app/views.py | 17 | CODE | |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 46 | CODE | |
| LOW | …/asgi_framework_compat/frameworks/starlette_app/app.py | 66 | CODE | |
| LOW | …er/asgi_framework_compat/frameworks/fastapi_app/app.py | 42 | CODE | |
| LOW | …er/asgi_framework_compat/frameworks/fastapi_app/app.py | 62 | CODE | |
| LOW | …r/asgi_framework_compat/frameworks/litestar_app/app.py | 40 | CODE | |
| LOW | …asgi_framework_compat/frameworks/blacksheep_app/app.py | 42 | CODE | |
| LOW | …cker/asgi_framework_compat/frameworks/quart_app/app.py | 40 | CODE | |
| LOW | tests/docker/dirty_arbiter/test_parent_death.py | 132 | CODE | |
| LOW | tests/docker/dirty_arbiter/test_parent_death.py | 500 | CODE | |
| LOW | tests/docker/per_app_allocation/test_per_app_e2e.py | 101 | CODE | |
| LOW | tests/docker/per_app_allocation/test_per_app_e2e.py | 137 | CODE | |
| LOW | tests/docker/per_app_allocation/app.py | 21 | CODE | |
| LOW | tests/docker/http2/conftest.py | 49 | CODE | |
| LOW | tests/docker/http2/app.py | 10 | CODE | |
| LOW | tests/docker/test_asgi_uwsgi/app.py | 8 | CODE | |
| LOW | tests/docker/uwsgi/app.py | 15 | CODE | |
| LOW | tests/docker/asgi_compliance/conftest.py | 62 | CODE | |
| LOW | tests/docker/asgi_compliance/conftest.py | 290 | CODE | |
| LOW | tests/docker/asgi_compliance/conftest.py | 308 | CODE | |
| LOW | …ts/docker/asgi_compliance/test_streaming_compliance.py | 93 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/lifespan_app.py | 28 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/lifespan_app.py | 53 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/websocket_app.py | 15 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/websocket_app.py | 68 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/websocket_app.py | 100 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/websocket_app.py | 259 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/websocket_app.py | 377 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/framework_apps.py | 47 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/framework_apps.py | 304 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/http_app.py | 16 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/http_app.py | 309 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/http_app.py | 489 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/http_app.py | 537 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 17 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 106 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 205 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 249 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 293 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/streaming_app.py | 380 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/main_app.py | 29 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/main_app.py | 98 | CODE | |
| LOW | tests/docker/dirty_ttin_ttou/test_ttin_ttou_docker.py | 106 | CODE | |
| LOW | tests/ctl/test_server.py | 328 | CODE | |
| LOW | gunicorn/pidfile.py | 64 | CODE | |
| LOW | gunicorn/reloader.py | 54 | CODE | |
| LOW | gunicorn/util.py | 88 | CODE | |
| LOW | gunicorn/util.py | 521 | CODE | |
| LOW | gunicorn/sock.py | 165 | CODE | |
| LOW | gunicorn/debug.py | 24 | CODE | |
| LOW | gunicorn/arbiter.py | 166 | CODE | |
| 89 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | gunicorn/asgi/uwsgi.py | 66 | Parse a uWSGI request asynchronously. Args: cfg: gunicorn config object unreader: Async | STRING |
| HIGH | gunicorn/http2/async_connection.py | 174 | Receive data and return completed requests. Args: timeout: Optional timeout in seconds for read ope | STRING |
| HIGH | gunicorn/http2/async_connection.py | 545 | Send trailing headers on a stream. Trailers are headers sent after the response body, commonly used for | STRING |
| HIGH | gunicorn/http2/connection.py | 179 | Process received data and return completed requests. Args: data: Optional bytes to process. If None | STRING |
| HIGH | gunicorn/http2/connection.py | 501 | Send a response on a stream. Args: stream_id: The stream ID to respond on status: HTTP | STRING |
| HIGH | gunicorn/http2/connection.py | 640 | Send trailing headers on a stream. Trailers are headers sent after the response body, commonly used for | STRING |
| HIGH | gunicorn/dirty/worker.py | 451 | Execute an action on a dirty app. The action runs in a thread pool executor to avoid blocking the | STRING |
| HIGH | gunicorn/dirty/protocol.py | 132 | Decode the 16-byte message header. Args: data: 16 bytes of header data Returns: | STRING |
| HIGH | gunicorn/dirty/protocol.py | 360 | Decode a complete message (header + payload). Args: data: Complete message bytes | STRING |
| HIGH | gunicorn/dirty/protocol.py | 409 | Read a complete binary message from async stream. Args: reader: asyncio StreamReader | STRING |
| HIGH | gunicorn/dirty/protocol.py | 493 | Receive exactly n bytes from a socket. Args: sock: Socket to read from n: Numb | STRING |
| HIGH | gunicorn/dirty/protocol.py | 521 | Read a complete message from socket (sync). Args: sock: Socket to read from Retur | STRING |
| HIGH | gunicorn/dirty/client.py | 81 | Execute an action on a dirty app (sync/blocking). Args: app_path: Import path of the dirty | STRING |
| HIGH | gunicorn/dirty/client.py | 139 | Stream results from a dirty app action (sync). This method returns an iterator that yields chunks from | STRING |
| HIGH | gunicorn/dirty/client.py | 224 | Execute an action on a dirty app (async/non-blocking). Args: app_path: Import path of the | STRING |
| HIGH | gunicorn/dirty/client.py | 280 | Stream results from a dirty app action (async). This method returns an async iterator that yields chun | STRING |
| HIGH | gunicorn/dirty/tlv.py | 54 | Encode a Python value to TLV binary format. Args: value: Python value to encode (None, boo | STRING |
| HIGH | gunicorn/dirty/tlv.py | 129 | Decode a TLV-encoded value from binary data. Args: data: Binary data to decode | STRING |
| HIGH | gunicorn/dirty/tlv.py | 285 | Decode a complete TLV-encoded value, ensuring all data is consumed. Args: data: Binary dat | STRING |
| HIGH | gunicorn/dirty/app.py | 111 | Handle a request from an HTTP worker. Args: action: The action/method name to execute | STRING |
| HIGH | gunicorn/dirty/app.py | 141 | Parse a dirty app specification. Supports two formats: - ``"module:Class"`` - standard format, all workers | STRING |
| HIGH | gunicorn/dirty/app.py | 216 | Load a dirty app class from an import path. Args: import_path: String in format 'module.path:ClassName | STRING |
| HIGH | gunicorn/dirty/app.py | 282 | Load multiple dirty apps from a list of import paths. Args: import_paths: List of import path strings | STRING |
| HIGH | gunicorn/dirty/app.py | 301 | Get the workers class attribute from a dirty app without instantiating it. This is used by the arbiter to dete | STRING |
| HIGH | gunicorn/ctl/protocol.py | 79 | Read one message from a socket. Args: sock: Socket to read from Returns: | STRING |
| HIGH | gunicorn/ctl/client.py | 75 | Send command and wait for response. Args: command: Command string (e.g., "show workers") | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_http2_alpn.py | 312 | CODE | |
| LOW | tests/test_http2_alpn.py | 336 | CODE | |
| LOW | tests/test_dirty_errors.py | 7 | CODE | |
| LOW | tests/test_asgi_forwarded_headers.py | 14 | CODE | |
| LOW | tests/test_asgi_streaming.py | 14 | CODE | |
| LOW | tests/test_dirty_arbiter.py | 10 | CODE | |
| LOW | tests/test_dirty_tlv.py | 11 | CODE | |
| LOW | tests/test_dirty_tlv.py | 11 | CODE | |
| LOW | tests/test_dirty_tlv.py | 11 | CODE | |
| LOW | tests/test_asgi_parser_validation.py | 13 | CODE | |
| LOW | tests/test_dirty_integration.py | 8 | CODE | |
| LOW | tests/test_uwsgi.py | 5 | CODE | |
| LOW | tests/test_uwsgi.py | 7 | CODE | |
| LOW | tests/test_uwsgi.py | 9 | CODE | |
| LOW | tests/test_http2_connection.py | 935 | CODE | |
| LOW | tests/test_http2_connection.py | 974 | CODE | |
| LOW | tests/test_http2_h2c.py | 26 | CODE | |
| LOW | tests/test_asgi_protocol_http.py | 14 | CODE | |
| LOW | tests/test_asgi_protocol_http.py | 17 | CODE | |
| LOW | tests/test_asgi_protocol_http.py | 17 | CODE | |
| LOW | tests/test_dirty_stash.py | 7 | CODE | |
| LOW | tests/test_dirty_stash.py | 9 | CODE | |
| LOW | tests/test_control_socket_integration.py | 17 | CODE | |
| LOW | tests/test_control_socket_integration.py | 225 | CODE | |
| LOW | tests/test_http2_async_connection.py | 947 | CODE | |
| LOW | tests/test_http2_async_connection.py | 988 | CODE | |
| LOW | tests/test_dirty_worker.py | 15 | CODE | |
| LOW | tests/test_dirty_worker.py | 25 | CODE | |
| LOW | tests/docker/asgi_framework_compat/conftest.py | 8 | CODE | |
| LOW | tests/docker/asgi_framework_compat/conftest.py | 9 | CODE | |
| LOW | …s/docker/asgi_framework_compat/tests/test_streaming.py | 7 | CODE | |
| LOW | …er/asgi_framework_compat/tests/test_websocket_scope.py | 11 | CODE | |
| LOW | …er/asgi_framework_compat/tests/test_websocket_scope.py | 14 | CODE | |
| LOW | …/docker/asgi_framework_compat/scripts/generate_grid.py | 10 | CODE | |
| LOW | …asgi_framework_compat/frameworks/blacksheep_app/app.py | 11 | CODE | |
| LOW | …cker/asgi_framework_compat/frameworks/quart_app/app.py | 12 | CODE | |
| LOW | tests/docker/dirty_arbiter/test_parent_death.py | 27 | CODE | |
| LOW | tests/docker/per_app_allocation/test_per_app_e2e.py | 27 | CODE | |
| LOW | tests/docker/asgi_compliance/test_concurrency.py | 12 | CODE | |
| LOW | tests/docker/asgi_compliance/apps/framework_apps.py | 13 | CODE | |
| LOW | tests/docker/dirty_ttin_ttou/test_ttin_ttou_docker.py | 7 | CODE | |
| LOW | tests/requests/valid/compat_obs_fold.py | 5 | CODE | |
| LOW | tests/dirty/test_worker_streaming.py | 8 | CODE | |
| LOW | tests/dirty/test_worker_streaming.py | 13 | CODE | |
| LOW | tests/dirty/test_worker_streaming.py | 13 | CODE | |
| LOW | tests/dirty/test_worker_streaming.py | 13 | CODE | |
| LOW | tests/dirty/test_client_streaming_async.py | 8 | CODE | |
| LOW | tests/dirty/test_client_streaming_async.py | 11 | CODE | |
| LOW | tests/dirty/test_arbiter_streaming.py | 8 | CODE | |
| LOW | tests/dirty/test_client_streaming.py | 7 | CODE | |
| LOW | tests/dirty/test_client_streaming.py | 8 | CODE | |
| LOW | tests/dirty/test_client_streaming.py | 10 | CODE | |
| LOW | tests/dirty/test_client_streaming.py | 12 | CODE | |
| LOW | tests/dirty/test_client_streaming.py | 12 | CODE | |
| LOW | tests/dirty/test_client_streaming.py | 22 | CODE | |
| LOW | tests/dirty/test_multi_app_routing.py | 13 | CODE | |
| LOW | tests/dirty/test_streaming_integration.py | 13 | CODE | |
| LOW | tests/dirty/test_streaming_integration.py | 14 | CODE | |
| LOW | tests/dirty/test_streaming_integration.py | 19 | CODE | |
| LOW | tests/dirty/test_streaming_integration.py | 31 | CODE | |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_http2_integration.py | 13 | # Check if h2 is available | COMMENT |
| LOW | tests/test_http2_connection.py | 14 | # Check if h2 is available for integration tests | COMMENT |
| LOW | tests/test_http2_h2c.py | 17 | # Check if h2 is available | COMMENT |
| LOW | tests/test_early_hints.py | 12 | # Check if h2 is available for HTTP/2 tests | COMMENT |
| LOW | tests/test_http2_async_connection.py | 15 | # Check if h2 is available for integration tests | COMMENT |
| LOW | tests/docker/asgi_framework_compat/conftest.py | 99 | # Check if containers are already running | COMMENT |
| LOW | …ker/asgi_framework_compat/tests/test_lifespan_scope.py | 47 | # Increment once | COMMENT |
| LOW⚡ | …ker/asgi_framework_compat/tests/test_lifespan_scope.py | 91 | # Increment counter | COMMENT |
| LOW | tests/docker/dirty_arbiter/test_parent_death.py | 198 | # Check if it's actually docker-init by checking its children | COMMENT |
| LOW | tests/docker/http2/conftest.py | 92 | # Check if Docker is available | COMMENT |
| LOW | tests/docker/http2/conftest.py | 102 | # Check if docker compose is available | COMMENT |
| LOW | tests/docker/asgi_compliance/conftest.py | 99 | # Check if Docker is available | COMMENT |
| LOW | tests/docker/asgi_compliance/conftest.py | 109 | # Check if docker compose is available | COMMENT |
| LOW | tests/workers/test_gevent_import_order.py | 61 | # Check if concurrent.futures is now imported | COMMENT |
| LOW | tests/workers/test_gevent_import_order.py | 112 | # Check if the lock is a gevent lock | COMMENT |
| LOW | tests/workers/test_gevent_import_order.py | 172 | # Check if the lock is a gevent lock | COMMENT |
| LOW | gunicorn/sock.py | 254 | # Check if h2 library is available | COMMENT |
| LOW | gunicorn/arbiter.py | 597 | # Check if all remaining workers are newer than last_worker_age | COMMENT |
| LOW | gunicorn/arbiter.py | 855 | # Check if process exists | COMMENT |
| LOW | gunicorn/asgi/protocol.py | 412 | # Check if HTTP/2 was negotiated via ALPN | COMMENT |
| LOW | gunicorn/asgi/protocol.py | 1163 | # Check if Content-Length or Transfer-Encoding is present | COMMENT |
| LOW | gunicorn/asgi/protocol.py | 1775 | # Check if stream is closed or missing | COMMENT |
| LOW | gunicorn/asgi/parser.py | 406 | # Check if we have the complete header | COMMENT |
| LOW | gunicorn/http/message.py | 503 | # Check if fast parser should be used | COMMENT |
| LOW | gunicorn/dirty/worker.py | 349 | # Check if result is a generator (streaming) | COMMENT |
| LOW | gunicorn/dirty/stash.py | 362 | # Check if key actually exists with None value | COMMENT |
| LOW | gunicorn/dirty/arbiter.py | 388 | # Check if parent (main arbiter) died unexpectedly | COMMENT |
| LOW | gunicorn/workers/base_async.py | 45 | # Check if HTTP/2 was negotiated (for SSL connections) | COMMENT |
| LOW | gunicorn/workers/gasgi.py | 205 | # Check if parent is still alive | COMMENT |
| LOW⚡ | gunicorn/workers/gthread.py | 613 | # Check if we need to close | COMMENT |
| LOW | gunicorn/workers/gthread.py | 79 | # Check if HTTP/2 was negotiated via ALPN | COMMENT |
| LOW | gunicorn/workers/gthread.py | 413 | # Check if we can accept more connections | COMMENT |
| LOW | gunicorn/uwsgi/message.py | 62 | # Check if the source IP is allowed | COMMENT |
| LOW | examples/http2_gevent/generate_certs.sh | 17 | # Check if certificates already exist | COMMENT |
| LOW | examples/http2_gevent/test_http2_gevent.py | 297 | # Check if pytest is available | COMMENT |
| LOW | examples/celery_alternative/run_tests.sh | 24 | # Check if integration tests should run | COMMENT |
| LOW | benchmarks/http_parser_benchmark.py | 23 | # Check if fast parser is available | COMMENT |
| LOW | benchmarks/http_parser_benchmark.py | 202 | # Print results | COMMENT |
| LOW | scripts/run_docker_tests.sh | 18 | # Set PYTEST to choose the runner, e.g. PYTEST=".venv/bin/python -m pytest". | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | appveyor.yml | 1 | version: '{branch}.{build}' | COMMENT |
| LOW | appveyor.yml | 21 | #- TOXENV: py38 | COMMENT |
| LOW | tests/config/__init__.py | 1 | # | COMMENT |
| LOW | …sts/invalid/rfc9112_target_authority_non_connect_01.py | 1 | # | COMMENT |
| LOW | …/requests/invalid/rfc9110_trailer_forbidden_host_01.py | 1 | # | COMMENT |
| LOW | …sts/requests/invalid/rfc9110_field_value_ctl_del_01.py | 1 | # | COMMENT |
| LOW | …ts/requests/invalid/rfc9110_trailer_forbidden_cl_01.py | 1 | # | COMMENT |
| LOW | …ests/invalid/rfc9112_target_asterisk_non_options_01.py | 1 | # | COMMENT |
| LOW | …ts/requests/invalid/rfc9110_trailer_forbidden_te_01.py | 1 | # | COMMENT |
| LOW | tests/requests/invalid/rfc9112_target_relative_01.py | 1 | # | COMMENT |
| LOW | …/requests/invalid/rfc9112_chunked_size_plus_sign_01.py | 1 | # | COMMENT |
| LOW | …ts/requests/invalid/rfc9112_smuggle_cl_list_form_01.py | 1 | # | COMMENT |
| LOW | …sts/requests/invalid/rfc9110_field_value_ctl_bel_01.py | 1 | # | COMMENT |
| LOW | …s/requests/invalid/rfc9112_smuggle_cl_te_chunked_01.py | 1 | # | COMMENT |
| LOW | tests/workers/__init__.py | 1 | # | COMMENT |
| LOW | tests/ctl/__init__.py | 1 | # | COMMENT |
| LOW | gunicorn/util.py | 561 | fd_null = os.open(REDIRECT_TO, os.O_RDWR) | COMMENT |
| LOW | gunicorn/util.py | 581 | # | COMMENT |
| LOW | gunicorn/app/__init__.py | 1 | # | COMMENT |
| LOW | gunicorn/instrument/__init__.py | 1 | # | COMMENT |
| LOW | gunicorn/http/message.py | 881 | if not 3 <= len(bits[0]) <= 20: | COMMENT |
| LOW | gunicorn/workers/gthread.py | 481 | # For new connections (not yet initialized), wait for data with timeout | COMMENT |
| LOW | examples/alt_spec.py | 1 | # | COMMENT |
| LOW | examples/multiapp.py | 1 | # | COMMENT |
| LOW | examples/standalone_app.py | 1 | # | COMMENT |
| LOW | examples/readline_app.py | 1 | # | COMMENT |
| LOW | examples/example_config.py | 1 | # | COMMENT |
| LOW | examples/example_config.py | 21 | # Must be a positive integer. Generally set in the 64-2048 | COMMENT |
| LOW | examples/example_config.py | 41 | # https://gunicorn.org/design/#choosing-a-worker-type | COMMENT |
| LOW | examples/example_config.py | 61 | # higher if you're sure of the repercussions for sync workers. | COMMENT |
| LOW | examples/example_config.py | 81 | # nuclear option. | COMMENT |
| LOW | examples/example_config.py | 101 | # | COMMENT |
| LOW | examples/example_config.py | 141 | # Logging | COMMENT |
| LOW | examples/example_config.py | 161 | # that Gunicorn processes are reported in the system process | COMMENT |
| LOW | examples/streaming_chat/__init__.py | 1 | # | COMMENT |
| LOW | examples/http2_features/__init__.py | 1 | # | COMMENT |
| LOW | examples/http2_gevent/docker-compose.yml | 1 | # HTTP/2 with Gevent Docker Compose | COMMENT |
| LOW | examples/deep/__init__.py | 1 | # | COMMENT |
| LOW | examples/dirty_example/__init__.py | 1 | # | COMMENT |
| LOW | examples/embedding_service/__init__.py | 1 | # | COMMENT |
| LOW | examples/frameworks/django/testing/testing/__init__.py | 1 | # | COMMENT |
| LOW | examples/frameworks/django/testing/testing/settings.py | 61 | COMMENT | |
| LOW | …les/frameworks/django/testing/testing/apps/__init__.py | 1 | # | COMMENT |
| LOW | …ameworks/django/testing/testing/apps/someapp/models.py | 1 | # | COMMENT |
| LOW | …eworks/django/testing/testing/apps/someapp/__init__.py | 1 | # | COMMENT |
| LOW | examples/celery_alternative/docker-compose.yml | 61 | # - redis | COMMENT |
| LOW | examples/celery_alternative/tests/__init__.py | 1 | # | COMMENT |
| LOW | scripts/update_thanks.py | 1 | # | COMMENT |
| LOW | scripts/run_docker_tests.sh | 1 | #!/bin/sh | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_http2_integration.py | 0 | real gunicorn configuration with the http/2 defaults these tests want. http2request applies the same header policy as ht | STRING |
| HIGH | tests/test_http2_connection.py | 0 | real gunicorn configuration with the http/2 defaults these tests want. http2request applies the same header policy as ht | STRING |
| HIGH | tests/test_http2_async_connection.py | 0 | real gunicorn configuration with the http/2 defaults these tests want. http2request applies the same header policy as ht | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gunicorn/debug.py | 13 | __all__ = ['spew', 'unspew'] | CODE |
| LOW | gunicorn/asgi/__init__.py | 24 | __all__ = ['AsyncUnreader', 'LifespanManager'] | CODE |
| LOW | gunicorn/http2/async_connection.py | 656 | __all__ = ['AsyncHTTP2Connection'] | CODE |
| LOW | gunicorn/http2/request.py | 267 | __all__ = ['HTTP2Request', 'HTTP2Body'] | CODE |
| LOW | gunicorn/http2/__init__.py | 80 | __all__ = [ | CODE |
| LOW | gunicorn/http2/stream.py | 364 | __all__ = ['HTTP2Stream', 'StreamState'] | CODE |
| LOW | gunicorn/http2/connection.py | 765 | __all__ = ['HTTP2ServerConnection'] | CODE |
| LOW | gunicorn/http2/errors.py | 149 | __all__ = [ | CODE |
| LOW | gunicorn/http/__init__.py | 36 | __all__ = ['Message', 'Request', 'RequestParser', 'get_parser'] | CODE |
| LOW | gunicorn/dirty/__init__.py | 54 | __all__ = [ | CODE |
| LOW | gunicorn/uwsgi/__init__.py | 14 | __all__ = [ | CODE |
| LOW | gunicorn/ctl/__init__.py | 16 | __all__ = ['ControlSocketServer', 'ControlClient', 'ControlProtocol'] | CODE |
| LOW | examples/websocket/gevent_websocket.py | 19 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_asgi_compliance.py | 1022 | # Step 1: App reads the body | COMMENT |
| LOW⚡ | tests/test_asgi_compliance.py | 1031 | # Step 2: App would send response here (simulated) | COMMENT |
| LOW⚡ | tests/test_asgi_compliance.py | 1034 | # Step 3: App starts listening for disconnect (like Django does) | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 223 | # Step 1: User starts gunicorn - gunicorn.arbiter gets imported | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 227 | # Step 2: Verify concurrent.futures was NOT imported yet | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 231 | # Step 3: Now user's config file runs with monkey.patch_all() | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 236 | # Step 4: Now import concurrent.futures (after patching) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_asgi_compliance.py | 1022 | # Step 1: App reads the body | COMMENT |
| LOW⚡ | tests/test_asgi_compliance.py | 1031 | # Step 2: App would send response here (simulated) | COMMENT |
| LOW⚡ | tests/test_asgi_compliance.py | 1034 | # Step 3: App starts listening for disconnect (like Django does) | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 223 | # Step 1: User starts gunicorn - gunicorn.arbiter gets imported | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 227 | # Step 2: Verify concurrent.futures was NOT imported yet | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 231 | # Step 3: Now user's config file runs with monkey.patch_all() | COMMENT |
| LOW⚡ | tests/workers/test_gevent_import_order.py | 236 | # Step 4: Now import concurrent.futures (after patching) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/asgi/websocket_app.py | 191 | let ws = null; | CODE |
| HIGH | examples/asgi/websocket_app.py | 210 | ws.onclose = () => { log('Disconnected', 'error'); ws = null; }; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gunicorn/errors.py | 12 | # we inherit from BaseException here to make sure to not be caught | COMMENT |
| MEDIUM | gunicorn/instrument/statsd.py | 112 | # you can use those directly if you want | COMMENT |
| MEDIUM | examples/streaming_chat/chat_app.py | 43 | "Here's a simple example:\n\n" | CODE |
| LOW | examples/frameworks/django/testing/testing/settings.py | 76 | # Don't forget to use absolute paths, not relative paths. | COMMENT |
| LOW | examples/frameworks/django/testing/testing/settings.py | 129 | # Don't forget to use absolute paths, not relative paths. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_http2_h2c.py | 380 | def handle_request(self, listener_name, req, sock, addr): | CODE |
| LOW⚡ | gunicorn/dirty/worker.py | 315 | async def handle_request(self, message, writer): | CODE |
| LOW | gunicorn/workers/sync.py | 168 | def handle_request(self, listener, req, client, addr): | CODE |
| LOW⚡ | gunicorn/workers/base_async.py | 268 | def handle_request(self, listener_name, req, sock, addr): | CODE |
| LOW | gunicorn/workers/gtornado.py | 39 | def handle_request(self): | CODE |
| LOW | gunicorn/workers/ggevent.py | 122 | def handle_request(self, listener_name, req, sock, addr): | CODE |
| LOW | gunicorn/workers/gthread.py | 691 | def handle_request(self, req, conn): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/docker/asgi_framework_compat/docker-compose.yml | 4 | # Usage: | COMMENT |
| LOW | tests/docker/asgi_framework_compat/scripts/run_tests.sh | 4 | # Usage: | COMMENT |
| LOW | examples/readline_app.py | 7 | # Usage: | COMMENT |
| LOW | examples/http2_gevent/docker-compose.yml | 3 | # Usage: | COMMENT |
| LOW | scripts/run_docker_tests.sh | 14 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/docker/asgi_compliance/test_http2_asgi.py | 345 | CODE | |
| LOW | gunicorn/asgi/parser.py | 145 | CODE | |
| LOW | gunicorn/http/message.py | 649 | CODE | |
| LOW | examples/dirty_example/dirty_app.py | 102 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/docker/asgi_framework_compat/README.md | 73 | ├── docker-compose.yml # Container orchestration | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/dirty/test_worker_streaming.py | 333 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_http.py | 194 | fake_sock = t.FakeSocket(io.BytesIO(b'Lorem ipsum dolor')) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_arbiter.py | 175 | """Set the 'preload_app' and 'raw_env' settings in order to verify their | STRING |