Asynchronous HTTP client/server framework for asyncio and Python
This report presents the forensic synthetic code analysis of aio-libs/aiohttp, a Python project with 16,509 GitHub stars. SynthScan v2.0 examined 103,938 lines of code across 227 source files, recording 2787 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 23.7 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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 2787 distinct pattern matches across 20 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 |
|---|---|---|---|---|
| LOW | aiohttp/web_ws.py | 240 | def _handle_ping_pong_exception(self, exc: BaseException) -> None: | CODE |
| LOW⚡ | aiohttp/web_ws.py | 571 | def _set_code_close_transport(self, code: int) -> None: | CODE |
| LOW | aiohttp/client_middlewares.py | 35 | async def single_middleware_handler(req: ClientRequest) -> ClientResponse: | CODE |
| LOW | aiohttp/multipart.py | 78 | def parse_content_disposition( | CODE |
| LOW | aiohttp/multipart.py | 187 | def content_disposition_filename( | CODE |
| LOW | aiohttp/multipart.py | 529 | def _apply_content_transfer_decoding(self, data: bytes) -> bytes: | CODE |
| LOW | aiohttp/multipart.py | 846 | async def _read_until_first_boundary(self) -> None: | CODE |
| LOW | aiohttp/web_response.py | 316 | def _generate_content_type_header( | CODE |
| LOW | aiohttp/client_ws.py | 213 | def _handle_ping_pong_exception(self, exc: BaseException) -> None: | CODE |
| LOW | aiohttp/tracing.py | 136 | def on_response_chunk_received( | CODE |
| LOW | aiohttp/tracing.py | 158 | def on_connection_queued_start( | CODE |
| LOW | aiohttp/tracing.py | 170 | def on_connection_create_start( | CODE |
| LOW | aiohttp/tracing.py | 368 | async def send_response_chunk_received( | CODE |
| LOW⚡ | aiohttp/tracing.py | 416 | async def send_connection_queued_start(self) -> None: | CODE |
| LOW⚡ | aiohttp/tracing.py | 421 | async def send_connection_queued_end(self) -> None: | CODE |
| LOW⚡ | aiohttp/tracing.py | 426 | async def send_connection_create_start(self) -> None: | CODE |
| LOW⚡ | aiohttp/tracing.py | 431 | async def send_connection_create_end(self) -> None: | CODE |
| LOW⚡ | aiohttp/tracing.py | 436 | async def send_connection_reuseconn(self) -> None: | CODE |
| LOW⚡ | aiohttp/tracing.py | 441 | async def send_dns_resolvehost_start(self, host: str) -> None: | CODE |
| LOW | aiohttp/web_exceptions.py | 499 | def _initialize_default_reason() -> None: | CODE |
| LOW | aiohttp/web_middlewares.py | 49 | def normalize_path_middleware( | CODE |
| LOW | aiohttp/streams.py | 305 | def begin_http_chunk_receiving(self) -> None: | CODE |
| LOW | aiohttp/web_protocol.py | 131 | class RequestHandler(BaseProtocol, Generic[_Request]): | CODE |
| LOW | aiohttp/web_protocol.py | 509 | def _reading_paused_for_msg_queue(self) -> bool: | CODE |
| LOW | aiohttp/web_protocol.py | 522 | def _resume_msg_queue_reading(self) -> None: | CODE |
| LOW | aiohttp/client.py | 231 | async def _connect_and_send_request(req: ClientRequest) -> ClientResponse: | CODE |
| LOW | aiohttp/web_urldispatcher.py | 637 | def _resolve_path_to_response(self, unresolved_path: Path) -> StreamResponse: | CODE |
| LOW | aiohttp/client_proto.py | 32 | class ResponseHandler(BaseProtocol, DataQueue[tuple[RawResponseMessage, StreamReader]]): | CODE |
| LOW | aiohttp/base_protocol.py | 80 | def _reading_paused_for_msg_queue(self) -> bool: | CODE |
| LOW | aiohttp/payload.py | 472 | def _set_or_restore_start_position(self) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 132 | def _gen_default_accept_encoding() -> str: | CODE |
| LOW | aiohttp/client_reqrep.py | 689 | async def _on_chunk_response_received(self, chunk: bytes) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1217 | def _update_transfer_encoding(self) -> None: | CODE |
| LOW | aiohttp/connector.py | 631 | def _update_proxy_auth_header_and_build_proxy_req( | CODE |
| LOW | aiohttp/connector.py | 714 | async def _wait_for_available_connection( | CODE |
| LOW | aiohttp/connector.py | 1220 | async def _resolve_host_with_throttle( | CODE |
| LOW | aiohttp/connector.py | 1496 | def _convert_hosts_to_addr_infos( | CODE |
| LOW | aiohttp/connector.py | 1517 | async def _create_direct_connection( | CODE |
| LOW | aiohttp/web_fileresponse.py | 232 | def _get_file_path_stat_encoding( | CODE |
| LOW | aiohttp/_cookie_helpers.py | 85 | def preserve_morsel_with_coded_value(cookie: Morsel[str]) -> Morsel[str]: | STRING |
| LOW | aiohttp/http_writer.py | 132 | def _send_headers_with_payload( | CODE |
| LOW | aiohttp/helpers.py | 416 | def content_disposition_header( | CODE |
| LOW | aiohttp/helpers.py | 1171 | def should_remove_content_length(method: str, code: int) -> bool: | CODE |
| LOW | aiohttp/http_parser.py | 1193 | def begin_http_chunk_receiving(self) -> None: | CODE |
| LOW | aiohttp/abc.py | 189 | def update_cookies_from_headers( | CODE |
| LOW | aiohttp/_websocket/writer.py | 190 | def _send_compressed_frame_sync( | CODE |
| LOW | aiohttp/_websocket/writer.py | 218 | async def _send_compressed_frame_async_locked( | CODE |
| LOW⚡ | tests/test_connector.py | 2857 | async def test_close_cancels_cleanup_handle(key: ConnectionKey) -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 2865 | async def test_close_cancels_resolve_host(make_client_request: _RequestMaker) -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3239 | async def test_close_cancels_cleanup_closed_handle() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3246 | async def test_ctor_with_default_loop() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3253 | async def test_base_connector_allows_high_level_protocols() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3776 | async def test_limit_per_host_property() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3783 | async def test_limit_property_default() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3789 | async def test_limit_per_host_property_default() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 3795 | async def test_force_close_and_explicit_keep_alive() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 4515 | async def test_connector_does_not_remove_needed_waiters( | CODE |
| LOW⚡ | tests/test_connector.py | 4525 | async def await_connection_and_check_waiters() -> None: | CODE |
| LOW⚡ | tests/test_connector.py | 4533 | async def allow_connection_and_add_dummy_waiter() -> None: | CODE |
| LOW | tests/test_connector.py | 170 | async def test_connection_del_loop_debug() -> None: | CODE |
| 2017 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | aiohttp/client_middlewares.py | 44 | # Create a new closure that captures the current state | COMMENT |
| MEDIUM | aiohttp/compression_utils.py | 297 | # Create a fresh decompressor for each subsequent member. | COMMENT |
| MEDIUM | aiohttp/resolver.py | 227 | # Create a new resolver and client set for this loop if it doesn't exist | COMMENT |
| MEDIUM | aiohttp/connector.py | 1416 | tls_proto = self._factory() # Create a brand new proto for TLS | CODE |
| MEDIUM | aiohttp/client_middleware_digest_auth.py | 357 | # Define a dict mapping of header fields to their values | COMMENT |
| MEDIUM | aiohttp/_websocket/writer.py | 96 | # Create a task to shield from cancellation | COMMENT |
| MEDIUM | tests/test_connector.py | 2359 | # Create a mock SSL protocol | COMMENT |
| MEDIUM | tests/test_connector.py | 2389 | # Create a mock non-SSL protocol | COMMENT |
| MEDIUM | tests/test_connector.py | 4739 | # Create a connect tunnel connection | COMMENT |
| MEDIUM | tests/test_client_functional.py | 694 | # Create a BytesPayload directly - this ensures we test the path | COMMENT |
| MEDIUM | tests/test_client_functional.py | 773 | # Create a streaming response that continuously sends data | COMMENT |
| MEDIUM | tests/test_client_functional.py | 796 | # Create a background task that continuously reads data | COMMENT |
| MEDIUM | tests/test_client_functional.py | 2497 | # Create a highly compressible payload. | COMMENT |
| MEDIUM | tests/test_client_functional.py | 2529 | # Create a highly compressible payload | COMMENT |
| MEDIUM | tests/test_client_functional.py | 2560 | # Create a highly compressible payload. | COMMENT |
| MEDIUM | tests/test_client_functional.py | 4702 | # Create an async generator of data | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5333 | # Create a mocked payload to verify close() is called | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5363 | # Create a mocked payload to verify close() is called | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5393 | # Create a mocked payload to verify close() is called | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5420 | # Create a mocked payload to verify close() is called | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5561 | # Create a new client session with our fake resolver | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5667 | # Create a test file | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5732 | # Create a test file | COMMENT |
| MEDIUM | tests/test_client_functional.py | 5805 | # Create a test file | COMMENT |
| MEDIUM | tests/test_websocket_parser.py | 39 | # This method is overridden to allow for patching in tests. | COMMENT |
| MEDIUM | tests/test_websocket_parser.py | 48 | # This method is overridden to allow for patching in tests. | COMMENT |
| MEDIUM | tests/test_client_request.py | 129 | # Create a response to test request_info | COMMENT |
| MEDIUM | tests/test_client_request.py | 151 | # Create a response to test request_info | COMMENT |
| MEDIUM | tests/test_client_request.py | 1143 | # Create a BytesPayload which has a size property | COMMENT |
| MEDIUM | tests/test_client_request.py | 1166 | # Create a payload with a known size | COMMENT |
| MEDIUM | tests/test_client_request.py | 1942 | # Create an empty async generator | COMMENT |
| MEDIUM | tests/test_client_request.py | 1964 | # Create a mock payload that tracks if it was closed | COMMENT |
| MEDIUM | tests/test_client_request.py | 2087 | # Create a mock writer and connection | COMMENT |
| MEDIUM | tests/test_client_request.py | 2091 | # Create a request | COMMENT |
| MEDIUM | tests/test_cookie_helpers.py | 48 | # Create a cookie with a coded_value different from value | COMMENT |
| MEDIUM | tests/test_cookiejar.py | 1426 | # Create a shared cookie (no domain/path restrictions) | COMMENT |
| MEDIUM | tests/test_cookiejar.py | 1554 | # Create a truly shared cookie | COMMENT |
| MEDIUM⚡ | tests/test_client_middleware_digest_auth.py | 269 | # Create a modified challenge with an unsupported algorithm | COMMENT |
| MEDIUM⚡ | tests/test_client_middleware_digest_auth.py | 285 | # Create a challenge with the specific algorithm case | COMMENT |
| MEDIUM | tests/test_client_middleware_digest_auth.py | 254 | # Create a modified challenge with the test algorithm | COMMENT |
| MEDIUM | tests/test_client_middleware_digest_auth.py | 305 | # Create a challenge with the specific algorithm case | COMMENT |
| MEDIUM | tests/test_client_middleware_digest_auth.py | 405 | # Create the auth object | COMMENT |
| MEDIUM | tests/test_client_middleware_digest_auth.py | 891 | # Create a session that uses the digest auth middleware | COMMENT |
| MEDIUM | tests/test_client_response.py | 1759 | # Create a SimpleCookie with some cookies | COMMENT |
| MEDIUM | tests/test_client_middleware.py | 877 | # Create a simple server for the allowed request | COMMENT |
| MEDIUM | tests/test_client_middleware.py | 1018 | # Create main server | COMMENT |
| MEDIUM | tests/test_client_middleware.py | 1087 | # Create main server | COMMENT |
| MEDIUM⚡ | tests/test_payload.py | 1327 | # Create a test file with known content | COMMENT |
| MEDIUM | tests/test_payload.py | 374 | # Create a large file that's multiple times larger than DEFAULT_CHUNK_SIZE | COMMENT |
| MEDIUM | tests/test_payload.py | 418 | # Create a custom file-like object that tracks read sizes | COMMENT |
| MEDIUM | tests/test_payload.py | 448 | # Create a large text file that's multiple times larger than DEFAULT_CHUNK_SIZE | COMMENT |
| MEDIUM | tests/test_payload.py | 493 | # Create a custom file-like object that tracks read sizes | COMMENT |
| MEDIUM | tests/test_http_parser.py | 3165 | # Create a large payload (3MiB) that compresses well | COMMENT |
| MEDIUM | tests/test_proxy_functional.py | 1026 | # Create a minimal proxy server | COMMENT |
| MEDIUM | tests/test_client_proto.py | 356 | # Create a mock transport | COMMENT |
| MEDIUM⚡ | tests/test_multipart.py | 1738 | # Create a mock BodyPartReader | COMMENT |
| MEDIUM⚡ | tests/test_multipart.py | 1744 | # Create the payload | COMMENT |
| MEDIUM | tests/test_web_urldispatcher.py | 276 | # This file is below the symlink target and should not be reachable | COMMENT |
| MEDIUM⚡ | tests/test_resolver.py | 549 | # Create a second manager and check it's the same instance | COMMENT |
| MEDIUM⚡ | tests/test_resolver.py | 566 | # Create a mock AsyncResolver for testing | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/multipart.py | 67 | CODE | |
| LOW | aiohttp/web_response.py | 1 | CODE | |
| LOW | aiohttp/web_response.py | 49 | CODE | |
| LOW | aiohttp/test_utils.py | 19 | CODE | |
| LOW | aiohttp/tracing.py | 5 | CODE | |
| LOW | aiohttp/tracing.py | 12 | CODE | |
| LOW | aiohttp/web_middlewares.py | 21 | CODE | |
| LOW | aiohttp/web.py | 14 | CODE | |
| LOW | aiohttp/web.py | 14 | CODE | |
| LOW | aiohttp/web.py | 14 | CODE | |
| LOW | aiohttp/web.py | 17 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| LOW | aiohttp/web.py | 18 | CODE | |
| 253 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.cfg | 61 | # 2-minute per-test timeout so a hung test surfaces by name instead of taking | COMMENT |
| LOW | setup.cfg | 81 | ignore:path is deprecated. Use files.. instead. Refer to https.//importlib-resources.readthedocs.io/en/latest/using. | COMMENT |
| LOW | aiohttp/multipart.py | 961 | """Wrap boundary parameter value in quotes, if necessary. | COMMENT |
| LOW | aiohttp/streams.py | 321 | # the body transfer. Each offset is the offset of the end of a chunk. | COMMENT |
| LOW | aiohttp/web_urldispatcher.py | 981 | COMMENT | |
| LOW | aiohttp/client_middleware_digest_auth.py | 61 | # +--||--|--|----|------|---|---||-----|-> maybe whitespace | COMMENT |
| LOW | aiohttp/web_fileresponse.py | 321 | except ValueError: | COMMENT |
| LOW | aiohttp/web_fileresponse.py | 341 | # if Range:bytes=-1000 in request header but file size | COMMENT |
| LOW | aiohttp/web_fileresponse.py | 361 | # If a valid byte-range-set includes at least one | COMMENT |
| LOW | aiohttp/_websocket/writer.py | 81 | # Non-compressed frames don't need lock or shield | COMMENT |
| LOW | tests/test_web_urldispatcher.py | 261 | ) -> None: | COMMENT |
| LOW | requirements/base-ft.txt | 1 | # | COMMENT |
| LOW | requirements/base-ft.txt | 21 | cffi==2.1.0 | COMMENT |
| LOW | requirements/base-ft.txt | 41 | # -r requirements/runtime-deps.in | COMMENT |
| LOW | requirements/multidict.txt | 1 | # | COMMENT |
| LOW | requirements/constraints.txt | 1 | # | COMMENT |
| LOW | requirements/constraints.txt | 21 | aiosignal==1.4.0 | COMMENT |
| LOW | requirements/constraints.txt | 41 | # via pytest-asyncio | COMMENT |
| LOW | requirements/constraints.txt | 61 | # via pre-commit | COMMENT |
| LOW | requirements/constraints.txt | 81 | # myst-parser | COMMENT |
| LOW | requirements/constraints.txt | 101 | # -r requirements/runtime-deps.in | COMMENT |
| LOW | requirements/constraints.txt | 121 | jinja2==3.1.6 | COMMENT |
| LOW | requirements/constraints.txt | 141 | # via | COMMENT |
| LOW | requirements/constraints.txt | 161 | # sphinx | COMMENT |
| LOW | requirements/constraints.txt | 181 | propcache==0.5.2 | COMMENT |
| LOW | requirements/constraints.txt | 201 | # via | COMMENT |
| LOW | requirements/constraints.txt | 221 | # via | COMMENT |
| LOW | requirements/constraints.txt | 241 | # via freezegun | COMMENT |
| LOW | requirements/constraints.txt | 261 | setuptools-git==1.2 | COMMENT |
| LOW | requirements/constraints.txt | 281 | # via sphinx | COMMENT |
| LOW | requirements/constraints.txt | 301 | # slotscheck | COMMENT |
| LOW | requirements/constraints.txt | 321 | # pydantic | COMMENT |
| LOW | requirements/constraints.txt | 341 | wheel==0.47.0 | COMMENT |
| LOW | requirements/dev.txt | 1 | # | COMMENT |
| LOW | requirements/dev.txt | 21 | aiosignal==1.4.0 | COMMENT |
| LOW | requirements/dev.txt | 41 | # via pytest-asyncio | COMMENT |
| LOW | requirements/dev.txt | 61 | # via pre-commit | COMMENT |
| LOW | requirements/dev.txt | 81 | exceptiongroup==1.3.1 | COMMENT |
| LOW | requirements/dev.txt | 101 | # aiosignal | COMMENT |
| LOW | requirements/dev.txt | 121 | # myst-parser | COMMENT |
| LOW | requirements/dev.txt | 141 | # aiohttp | COMMENT |
| LOW | requirements/dev.txt | 161 | # via mypy | COMMENT |
| LOW | requirements/dev.txt | 181 | # aiohttp | COMMENT |
| LOW | requirements/dev.txt | 201 | # via | COMMENT |
| LOW | requirements/dev.txt | 221 | pytest-codspeed==5.0.3 | COMMENT |
| LOW | requirements/dev.txt | 241 | # -r requirements/lint.in | COMMENT |
| LOW | requirements/dev.txt | 261 | # via sphinx | COMMENT |
| LOW | requirements/dev.txt | 281 | # via sphinx | COMMENT |
| LOW | requirements/dev.txt | 301 | # -r requirements/test-common.in | COMMENT |
| LOW | requirements/dev.txt | 321 | uvloop==0.22.1 ; platform_system != "Windows" and implementation_name == "cpython" | COMMENT |
| LOW | requirements/cython.txt | 1 | # | COMMENT |
| LOW | requirements/runtime-deps.txt | 1 | # | COMMENT |
| LOW | requirements/runtime-deps.txt | 21 | cffi==2.1.0 | COMMENT |
| LOW | requirements/runtime-deps.txt | 41 | pycparser==3.0 | COMMENT |
| LOW | requirements/test-common-base.txt | 1 | # | COMMENT |
| LOW | requirements/test-common-base.txt | 21 | exceptiongroup==1.3.1 | COMMENT |
| LOW | requirements/test-common-base.txt | 41 | pluggy==1.6.0 | COMMENT |
| LOW | requirements/test-common-base.txt | 61 | pytest-aiohttp==1.1.1 | COMMENT |
| LOW | requirements/test-common-base.txt | 81 | typing-extensions==4.16.0 | COMMENT |
| LOW | requirements/doc.txt | 1 | # | COMMENT |
| 65 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/web_ws.py | 596 | CODE | |
| LOW | aiohttp/worker.py | 69 | CODE | |
| LOW | aiohttp/multipart.py | 78 | CODE | |
| LOW | aiohttp/multipart.py | 187 | CODE | |
| LOW | aiohttp/web_response.py | 260 | CODE | |
| LOW | aiohttp/web_response.py | 296 | CODE | |
| LOW | aiohttp/web_response.py | 370 | CODE | |
| LOW | aiohttp/web_response.py | 539 | CODE | |
| LOW | aiohttp/web_response.py | 609 | CODE | |
| LOW | aiohttp/web_response.py | 699 | CODE | |
| LOW | aiohttp/client_ws.py | 384 | CODE | |
| LOW | aiohttp/web_exceptions.py | 499 | CODE | |
| LOW | aiohttp/web.py | 279 | CODE | |
| LOW | aiohttp/web.py | 426 | CODE | |
| LOW | aiohttp/streams.py | 468 | CODE | |
| LOW | aiohttp/web_protocol.py | 460 | CODE | |
| LOW | aiohttp/web_protocol.py | 647 | CODE | |
| LOW | aiohttp/client.py | 462 | CODE | |
| LOW | aiohttp/client.py | 997 | CODE | |
| LOW | aiohttp/web_request.py | 317 | CODE | |
| LOW | aiohttp/web_request.py | 639 | CODE | |
| LOW | aiohttp/web_request.py | 701 | CODE | |
| LOW | aiohttp/client_proto.py | 115 | CODE | |
| LOW | aiohttp/web_runner.py | 319 | CODE | |
| LOW | aiohttp/payload.py | 122 | CODE | |
| LOW | aiohttp/payload.py | 1015 | CODE | |
| LOW | aiohttp/formdata.py | 83 | CODE | |
| LOW | aiohttp/connector.py | 458 | CODE | |
| LOW | aiohttp/connector.py | 535 | CODE | |
| LOW | aiohttp/connector.py | 714 | CODE | |
| LOW | aiohttp/connector.py | 756 | CODE | |
| LOW | aiohttp/connector.py | 1408 | CODE | |
| LOW | aiohttp/connector.py | 1517 | CODE | |
| LOW | aiohttp/connector.py | 1591 | CODE | |
| LOW | aiohttp/web_fileresponse.py | 296 | CODE | |
| LOW | aiohttp/_cookie_helpers.py | 167 | CODE | |
| LOW | aiohttp/_cookie_helpers.py | 266 | CODE | |
| LOW | aiohttp/helpers.py | 264 | CODE | |
| LOW | aiohttp/helpers.py | 416 | CODE | |
| LOW | aiohttp/http_parser.py | 167 | CODE | |
| LOW | aiohttp/http_parser.py | 329 | CODE | |
| LOW | aiohttp/http_parser.py | 648 | CODE | |
| LOW | aiohttp/http_parser.py | 771 | CODE | |
| LOW | aiohttp/http_parser.py | 835 | CODE | |
| LOW | aiohttp/http_parser.py | 921 | CODE | |
| LOW | aiohttp/cookiejar.py | 132 | CODE | |
| LOW | aiohttp/cookiejar.py | 188 | CODE | |
| LOW | aiohttp/cookiejar.py | 323 | CODE | |
| LOW | aiohttp/_websocket/helpers.py | 78 | CODE | |
| LOW | aiohttp/_websocket/reader_py.py | 194 | CODE | |
| LOW | aiohttp/_websocket/reader_py.py | 335 | CODE | |
| LOW | aiohttp/_websocket/reader_c.py | 194 | CODE | |
| LOW | aiohttp/_websocket/reader_c.py | 335 | CODE | |
| LOW | tests/test_client_session.py | 589 | CODE | |
| LOW | tests/test_client_middleware.py | 288 | CODE | |
| LOW | tests/test_client_middleware.py | 322 | CODE | |
| LOW | tests/test_client_ws.py | 489 | CODE | |
| LOW | tests/test_client_ws.py | 523 | CODE | |
| LOW | tests/test_client_ws.py | 555 | CODE | |
| LOW | tests/test_proxy.py | 228 | CODE | |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | aiohttp/helpers.py | 920 | self._name = module + "." + name # type: ignore[possibly-undefined] | CODE |
| HIGH⚡ | tests/test_benchmarks_web_fileresponse.py | 199 | return resp # type: ignore[possibly-undefined] | CODE |
| HIGH | tests/test_client_functional.py | 5543 | "av-profile=null; Domain=.amazon.it; " | CODE |
| HIGH | tests/test_benchmarks_http_websocket.py | 58 | b'8","result":{"name":null,"id":"shellyplugus-c049ef8c30e4","mac":"C049EF8C30E' | CODE |
| HIGH | tests/test_benchmarks_http_websocket.py | 60 | b'4b5d4f","ver":"1.1.0","app":"PlugUS","auth_en":false,"auth_domain":null}}' | CODE |
| HIGH | docs/code/client_middleware_cookbook.py | 32 | return resp # type: ignore[possibly-undefined] | CODE |
| HIGH | docs/code/client_middleware_cookbook.py | 69 | return resp # type: ignore[possibly-undefined] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_client_middleware.py | 0 | middleware that retries failed requests with exponential backoff. | STRING |
| HIGH | examples/combined_middleware.py | 0 | middleware that retries failed requests with exponential backoff. | STRING |
| HIGH | examples/retry_middleware.py | 0 | middleware that retries failed requests with exponential backoff. | STRING |
| HIGH | examples/web_srv.py | 0 | \ type {url}/hello/john {url}/simple or {url}/change_body in browser url bar | STRING |
| HIGH | examples/web_srv_route_table.py | 0 | \ type {url}/hello/john {url}/simple or {url}/change_body in browser url bar | STRING |
| HIGH | examples/web_srv_route_deco.py | 0 | \ type {url}/hello/john {url}/simple or {url}/change_body in browser url bar | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/payload.py | 624 | # Check if we're done writing | COMMENT |
| LOW | aiohttp/connector.py | 1370 | # Check if uvloop is being used, which supports TLS in TLS, | COMMENT |
| LOW | aiohttp/connector.py | 1375 | # Check if aiofastnet is being used, which supports TLS in TLS | COMMENT |
| LOW | aiohttp/client_middleware_digest_auth.py | 398 | # Check if request starts with space URL | COMMENT |
| LOW | aiohttp/client_middleware_digest_auth.py | 501 | # Check if we need to authenticate | COMMENT |
| LOW | aiohttp/cookiejar.py | 298 | # Check if the cookie hasn't been re-added to the heap | COMMENT |
| LOW | tests/test_client_middleware.py | 409 | # Check if token needs refresh | COMMENT |
| LOW⚡ | tests/test_payload.py | 1268 | # Write file in executor | COMMENT |
| LOW⚡ | tests/test_payload.py | 1272 | # Open file in executor | COMMENT |
| LOW⚡ | tests/test_payload.py | 1333 | # Open the file and create payload | COMMENT |
| LOW⚡ | tests/test_payload.py | 1341 | # Read the file (simulating first request) | COMMENT |
| LOW | tests/test_payload.py | 1292 | # Write file in executor | COMMENT |
| LOW | tests/test_payload.py | 1300 | # Open file in executor | COMMENT |
| LOW | examples/token_refresh_middleware.py | 53 | # Check if another coroutine already refreshed the token | COMMENT |
| LOW | examples/token_refresh_middleware.py | 203 | # Check if token exists and is not expired | COMMENT |
| LOW | examples/basic_auth_middleware.py | 68 | # Check if Authorization header is present | COMMENT |
| LOW | examples/combined_middleware.py | 140 | # Check if we should retry | COMMENT |
| LOW | examples/retry_middleware.py | 69 | # Check if we should retry | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/web_ws.py | 530 | except Exception as exc: | CODE |
| LOW⚡ | aiohttp/web_ws.py | 560 | except Exception as exc: | CODE |
| LOW | aiohttp/web_ws.py | 641 | except Exception as exc: | CODE |
| LOW | aiohttp/worker.py | 137 | except Exception: | CODE |
| LOW | aiohttp/multipart.py | 1190 | except Exception as exc: | CODE |
| LOW | aiohttp/client_ws.py | 340 | except Exception as exc: | CODE |
| LOW | aiohttp/client_ws.py | 358 | except Exception as exc: | CODE |
| LOW | aiohttp/client_ws.py | 431 | except Exception as exc: | CODE |
| LOW | aiohttp/streams.py | 212 | except Exception: | CODE |
| LOW | aiohttp/streams.py | 236 | except Exception: | CODE |
| LOW | aiohttp/streams.py | 635 | except Exception: | CODE |
| MEDIUM | aiohttp/streams.py | 44 | def __anext__(self) -> _T: | CODE |
| LOW | aiohttp/web_protocol.py | 635 | except Exception as exc: | CODE |
| LOW | aiohttp/web_protocol.py | 771 | except Exception as exc: | CODE |
| LOW | aiohttp/client_proto.py | 150 | except Exception as underlying_exc: | CODE |
| LOW | aiohttp/client_reqrep.py | 1506 | except Exception as underlying_exc: | CODE |
| LOW | aiohttp/web_log.py | 223 | except Exception: | CODE |
| LOW | aiohttp/formdata.py | 142 | except Exception as exc: | CODE |
| LOW | aiohttp/http_parser.py | 535 | except Exception as underlying_exc: | CODE |
| LOW | aiohttp/http_parser.py | 1170 | except Exception: | CODE |
| LOW | aiohttp/_websocket/reader_py.py | 187 | except Exception as exc: | CODE |
| LOW | aiohttp/_websocket/reader_c.py | 187 | except Exception as exc: | CODE |
| LOW | tests/test_client_session.py | 1404 | except Exception: | CODE |
| LOW | tests/test_web_exceptions.py | 166 | except Exception as exc: | CODE |
| MEDIUM | examples/client_ws.py | 31 | print("Error during receive %s" % ws.exception()) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/web_ws.py | 250 | def _set_closed(self) -> None: | CODE |
| LOW⚡ | aiohttp/web_ws.py | 565 | def _set_closing(self, code: int) -> None: | CODE |
| LOW⚡ | aiohttp/web_ws.py | 571 | def _set_code_close_transport(self, code: int) -> None: | CODE |
| LOW | aiohttp/web_response.py | 155 | def _set_status(self, status: int, reason: str | None) -> None: | CODE |
| LOW | aiohttp/client_ws.py | 224 | def _set_closed(self) -> None: | CODE |
| LOW | aiohttp/client_ws.py | 232 | def _set_closing(self) -> None: | CODE |
| LOW | aiohttp/test_utils.py | 537 | def set_dict(app: Any, key: str, value: Any) -> None: | CODE |
| LOW | aiohttp/web_app.py | 203 | def _set_loop(self, loop: asyncio.AbstractEventLoop | None) -> None: | CODE |
| LOW | aiohttp/streams.py | 181 | def set_read_chunk_size(self, n: int) -> None: | CODE |
| LOW | aiohttp/streams.py | 653 | def set_read_chunk_size(self, n: int) -> None: | CODE |
| LOW | aiohttp/compression_utils.py | 144 | def set_zlib_backend(new_zlib_backend: ZLibBackendProtocol) -> None: | CODE |
| LOW | aiohttp/payload.py | 472 | def _set_or_restore_start_position(self) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 901 | def _update_headers(self, headers: CIMultiDict[str]) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1159 | def _update_auto_headers(self, skip_auto_headers: Iterable[str] | None) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1178 | def _update_cookies(self, cookies: BaseCookie[str]) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1217 | def _update_transfer_encoding(self) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1236 | def _update_body_from_data(self, body: Any) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1281 | def _update_body(self, body: Any) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1298 | async def update_body(self, body: Any) -> None: | CODE |
| LOW | aiohttp/client_reqrep.py | 1360 | def _update_expect_continue(self, expect: bool = False) -> None: | CODE |
| LOW | aiohttp/http_writer.py | 249 | def set_eof(self) -> None: | CODE |
| LOW | aiohttp/helpers.py | 854 | def set_result(fut: "asyncio.Future[_T]", result: _T) -> None: | CODE |
| LOW | aiohttp/http_parser.py | 632 | def set_upgraded(self, val: bool) -> None: | CODE |
| LOW | tests/test_streams.py | 656 | async def set_err() -> None: | CODE |
| LOW | tests/test_streams.py | 1484 | async def set_err() -> None: | CODE |
| LOW | docs/code/client_middleware_cookbook.py | 98 | async def set_token(session: ClientSession, event: asyncio.Event) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/web_ws.py | 99 | CODE | |
| LOW | aiohttp/web_response.py | 737 | CODE | |
| LOW | aiohttp/web_response.py | 539 | CODE | |
| LOW | aiohttp/test_utils.py | 562 | CODE | |
| LOW | aiohttp/web.py | 279 | CODE | |
| LOW | aiohttp/web.py | 426 | CODE | |
| LOW | aiohttp/web_protocol.py | 203 | CODE | |
| LOW | aiohttp/client.py | 291 | CODE | |
| LOW | aiohttp/client.py | 462 | CODE | |
| LOW | aiohttp/client.py | 922 | CODE | |
| LOW | aiohttp/client.py | 997 | CODE | |
| LOW | aiohttp/client.py | 1474 | CODE | |
| LOW | aiohttp/client_proto.py | 229 | CODE | |
| LOW | aiohttp/connector.py | 994 | CODE | |
| LOW | aiohttp/helpers.py | 1033 | CODE | |
| LOW | aiohttp/http_parser.py | 254 | CODE | |
| LOW | aiohttp/http_parser.py | 835 | CODE | |
| LOW | tests/test_web_sendfile_functional.py | 1132 | CODE | |
| LOW | tests/test_web_sendfile_functional.py | 1173 | CODE | |
| LOW | tests/test_websocket_writer.py | 21 | CODE | |
| LOW | tests/test_client_middleware.py | 50 | CODE | |
| LOW | tests/test_client_middleware.py | 114 | CODE | |
| LOW | tests/test_client_middleware.py | 122 | CODE | |
| LOW | tests/test_client_middleware.py | 201 | CODE | |
| LOW | tests/test_client_middleware.py | 675 | CODE | |
| LOW | tests/test_client_middleware.py | 719 | CODE | |
| LOW | tests/test_client_middleware.py | 728 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_client_middleware.py | 302 | # Step 0: No auth, request client ID | COMMENT |
| LOW⚡ | tests/test_client_middleware.py | 309 | # Step 1: Has session, request credentials | COMMENT |
| LOW⚡ | tests/test_client_middleware.py | 316 | # Step 2: Has challenge response, authenticate | COMMENT |
| LOW | docs/code/client_middleware_cookbook.py | 124 | # WARNING: This is a simplified example for demonstration purposes only. | COMMENT |
| LOW | docs/code/client_middleware_cookbook.py | 140 | # WARNING: This is a simplified example - should also check ::1, private ranges, etc. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_web_app.py | 342 | CODE | |
| MEDIUM | tests/test_client_request.py | 1945 | CODE | |
| MEDIUM | tests/test_run_app.py | 177 | CODE | |
| MEDIUM | tests/test_run_app.py | 1132 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_client_middleware.py | 302 | # Step 0: No auth, request client ID | COMMENT |
| LOW⚡ | tests/test_client_middleware.py | 309 | # Step 1: Has session, request credentials | COMMENT |
| LOW⚡ | tests/test_client_middleware.py | 316 | # Step 2: Has challenge response, authenticate | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/compression_utils.py | 136 | # Everything not explicitly listed in the Protocol we just pass through | COMMENT |
| MEDIUM⚡ | tests/test_connector.py | 2869 | """Delay resolve() task in order to test cancellation.""" | STRING |
| MEDIUM | tests/test_client_ws_functional.py | 1401 | # The test harness will cleanup the unclosed websocket | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | aiohttp/client_middleware_digest_auth.py | 225 | Build digest authorization header for the current challenge. Args: method: The HTTP method | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/code/client_middleware_cookbook.py | 124 | # WARNING: This is a simplified example for demonstration purposes only. | COMMENT |
| MEDIUM | examples/token_refresh_middleware.py | 13 | Note: This is a simplified example for demonstration purposes. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/conf.py | 410 | # ------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aiohttp/web_urldispatcher.py | 359 | # TODO: implement all abstract methods | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/fake_server.py | 73 | return web.json_response({"name": "John Doe", "id": "12345678901234567"}) | CODE |