Python client for Apache Kafka
This report presents the forensic synthetic code analysis of dpkp/kafka-python, a Python project with 5,898 GitHub stars. SynthScan v2.0 examined 82,023 lines of code across 472 source files, recording 2167 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 30.6 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).
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 2167 distinct pattern matches across 15 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 | test/test_metrics.py | 126 | def test_hierarchical_sensors(metrics): | CODE |
| LOW | test/test_metrics.py | 162 | def test_bad_sensor_hierarchy(metrics): | CODE |
| LOW | test/test_metrics.py | 217 | def test_remove_inactive_metrics(mocker, time_keeper, metrics): | CODE |
| LOW | test/test_metrics.py | 317 | def test_old_data_has_no_effect(mocker, time_keeper): | CODE |
| LOW | test/test_codec.py | 34 | def test_snappy_detect_xerial(): | CODE |
| LOW | test/test_codec.py | 56 | def test_snappy_decode_xerial(): | CODE |
| LOW | test/test_codec.py | 71 | def test_snappy_encode_xerial(): | CODE |
| LOW⚡ | test/test_serializer.py | 9 | def test_default_serializer_roundtrip(encoding): | CODE |
| LOW⚡ | test/test_serializer.py | 18 | def test_default_serializer_passthrough_bytes_like(data): | CODE |
| LOW⚡ | test/test_serializer.py | 22 | def test_default_serializer_deserialize_none(): | CODE |
| LOW⚡ | test/test_serializer.py | 26 | def test_default_serializer_rejects_non_bytes_str(): | CODE |
| LOW⚡ | test/test_serializer.py | 31 | def test_json_serializer_roundtrip(): | CODE |
| LOW⚡ | test/test_serializer.py | 39 | def test_json_serializer_none(): | CODE |
| LOW⚡ | test/test_serializer.py | 45 | def test_json_serializer_deserializes_plain_json(): | CODE |
| LOW | test/test_util.py | 21 | def test_topic_name_validation(topic_name, expectation): | CODE |
| LOW⚡ | test/test_cluster.py | 268 | def test_known_partition_returns_leader_and_epoch(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 274 | def test_unknown_topic_returns_none(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 280 | def test_unknown_partition_returns_none(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 297 | def test_updates_when_epoch_is_strictly_newer(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 307 | def test_noop_when_epoch_is_stale_or_equal(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 316 | def test_unknown_topic_or_partition_returns_false(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 324 | def test_rewires_broker_partitions(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 332 | def test_unknown_leader_id_minus_one_skips_broker_partitions_add(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 401 | def test_collect_hosts__with_spaces(self): | CODE |
| LOW⚡ | test/test_cluster.py | 409 | def test_collect_hosts__protocol(self): | CODE |
| LOW⚡ | test/test_cluster.py | 419 | def test_expands_multi_ip_host_to_canonical_names(self): | CODE |
| LOW⚡ | test/test_cluster.py | 431 | def test_deduplicates_canonical_names(self): | CODE |
| LOW⚡ | test/test_cluster.py | 440 | def test_falls_back_to_original_on_resolution_failure(self): | CODE |
| LOW⚡ | test/test_cluster.py | 445 | def test_missing_canonname_falls_back_to_input_host(self): | CODE |
| LOW⚡ | test/test_cluster.py | 455 | def test_default_does_not_expand_bootstrap(self): | CODE |
| LOW⚡ | test/test_cluster.py | 462 | def test_canonical_mode_expands_bootstrap(self): | CODE |
| LOW⚡ | test/test_cluster.py | 477 | def test_request_update_returns_future(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 482 | def test_request_update_deduplicates(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 487 | def test_request_update_new_future_after_done(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 493 | def test_request_update_sets_cluster_need_update(self, cluster): | CODE |
| LOW⚡ | test/test_cluster.py | 497 | def test_request_update_sends_metadata_request(self, manager, net): | CODE |
| LOW | test/test_cluster.py | 131 | def _make_metadata_response_with_id(version, name, topic_id, partition=0, | CODE |
| LOW | test/test_cluster.py | 179 | def test_topic_id_unknown_returns_none(self, cluster): | CODE |
| LOW | test/test_cluster.py | 202 | def test_zero_uuid_not_indexed(self, cluster): | CODE |
| LOW | test/test_cluster.py | 208 | def test_recreation_resets_leader_epoch_and_updates_index(self, cluster, caplog): | CODE |
| LOW | test/test_cluster.py | 225 | def test_stable_id_keeps_leader_epoch(self, cluster): | CODE |
| LOW | test/test_cluster.py | 232 | def test_topic_drop_from_response_clears_index(self, cluster): | CODE |
| LOW | test/test_cluster.py | 365 | def test_collect_hosts__happy_path(self): | CODE |
| LOW | test/test_cluster.py | 382 | def test_collect_hosts__string_list(self): | CODE |
| LOW | test/test_cluster.py | 509 | def test_refresh_metadata_retries_no_node(self, manager, net): | CODE |
| LOW | test/test_cluster.py | 521 | def test_bootstrap_triggers_refresh_loop(self, manager, mocker): | CODE |
| LOW | test/test_cluster.py | 531 | def test_refresh_loop_spawned_once(self, manager): | CODE |
| LOW⚡ | test/test_mock_broker.py | 57 | def test_default_construction(self): | CODE |
| LOW⚡ | test/test_mock_broker.py | 65 | def test_set_metadata_with_topics(self): | CODE |
| LOW | test/test_mock_broker.py | 80 | def test_respond_queues_in_order(self): | CODE |
| LOW | test/test_mock_broker.py | 92 | def test_respond_fn_returning_none_sends_no_response(self): | CODE |
| LOW | test/test_mock_broker.py | 134 | def test_bootstrap_through_mock(self): | CODE |
| LOW | test/test_mock_broker.py | 146 | def test_metadata_with_topics(self): | CODE |
| LOW | test/test_mock_broker.py | 219 | def test_multiple_metadata_updates(self): | CODE |
| LOW | test/test_mock_broker.py | 272 | def test_fail_next_aborts_request(self): | CODE |
| LOW | test/test_mock_broker.py | 296 | def test_api_version_negotiation(self): | CODE |
| LOW | test/test_mock_broker.py | 348 | def test_admin_client_with_mock(self): | CODE |
| LOW | test/test_mock_broker.py | 397 | def test_default_construction(self): | CODE |
| LOW | test/test_mock_broker.py | 407 | def test_bootstrap_and_per_node_routing(self): | CODE |
| LOW | test/test_mock_broker.py | 534 | def test_add_group_elects_first_member_leader(self): | CODE |
| 1302 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/test_mock_broker.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/test_mock_broker.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_mock_broker.py | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_mock_broker.py | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_mock_broker.py | 380 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/test_mock_broker.py | 382 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/producer/test_transaction_manager_mock_broker.py | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/producer/test_transaction_manager_mock_broker.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/producer/test_transaction_manager_mock_broker.py | 1341 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/producer/test_transaction_manager_mock_broker.py | 1343 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 359 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 361 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 441 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 443 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 607 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 609 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 718 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 720 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 825 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 827 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 995 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 997 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 1216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/producer/test_transaction_manager_mock_broker.py | 1218 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_users.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_users.py | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 278 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 280 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 442 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 444 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 734 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 736 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 860 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_groups.py | 862 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/admin/test_admin_groups.py | 529 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/admin/test_admin_groups.py | 531 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 138 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 140 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 199 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 259 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 261 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 318 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 320 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 367 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_transactions.py | 369 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 161 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 240 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/admin/test_admin_topics.py | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/admin/test_admin_topics.py | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_configs.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_configs.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| 80 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_cluster.py | 5 | CODE | |
| LOW | test/test_mock_broker.py | 15 | CODE | |
| LOW | test/test_mock_broker.py | 17 | CODE | |
| LOW | test/producer/test_producer.py | 1 | CODE | |
| LOW | test/producer/test_producer.py | 2 | CODE | |
| LOW | test/producer/test_transaction_manager_mock_broker.py | 19 | CODE | |
| LOW | test/producer/test_transaction_manager_mock_broker.py | 30 | CODE | |
| LOW | test/producer/test_transaction_manager_mock_broker.py | 31 | CODE | |
| LOW | test/producer/test_sender.py | 4 | CODE | |
| LOW | test/net/test_sasl_reauthentication.py | 6 | CODE | |
| LOW | test/net/test_sasl_reauthentication.py | 179 | CODE | |
| LOW | test/net/test_http_connect.py | 1 | CODE | |
| LOW | test/net/test_http_connect.py | 3 | CODE | |
| LOW | test/net/test_connection.py | 4 | CODE | |
| LOW | test/net/test_ssl.py | 5 | CODE | |
| LOW | test/net/test_ssl.py | 5 | CODE | |
| LOW | test/net/test_ssl.py | 6 | CODE | |
| LOW | test/net/test_compat.py | 2 | CODE | |
| LOW | test/net/test_compat.py | 3 | CODE | |
| LOW | test/net/test_proxy.py | 103 | CODE | |
| LOW | test/net/backend/test_abstract.py | 14 | CODE | |
| LOW | test/net/backend/test_transport.py | 2 | CODE | |
| LOW | test/integration/test_admin_integration.py | 12 | CODE | |
| LOW | test/integration/test_admin_integration.py | 12 | CODE | |
| LOW | test/integration/test_admin_integration.py | 12 | CODE | |
| LOW | test/integration/fixtures.py | 5 | CODE | |
| LOW | test/integration/fixtures.py | 17 | CODE | |
| LOW | test/admin/test_admin_topics.py | 6 | CODE | |
| LOW | test/admin/test_admin_cluster_log_dirs.py | 1 | CODE | |
| LOW | test/protocol/test_broker_version_data.py | 8 | CODE | |
| LOW | test/protocol/test_stubs.py | 3 | CODE | |
| LOW | test/protocol/test_stubs.py | 4 | CODE | |
| LOW | test/protocol/test_stubs.py | 8 | CODE | |
| LOW | test/protocol/test_stubs.py | 9 | CODE | |
| LOW | test/protocol/test_api_compatibility.py | 2 | CODE | |
| LOW | test/protocol/test_api_compatibility.py | 3 | CODE | |
| LOW | test/protocol/test_api_compatibility.py | 5 | CODE | |
| LOW | test/protocol/test_api_compatibility.py | 7 | CODE | |
| LOW | test/protocol/old/test_compact.py | 4 | CODE | |
| LOW | test/protocol/old/test_api.py | 3 | CODE | |
| LOW | test/protocol/old/test_old_tagged_fields.py | 3 | CODE | |
| LOW | test/protocol/old/test_types.py | 3 | CODE | |
| LOW | test/protocol/old/test_old_fetch.py | 5 | CODE | |
| LOW | test/protocol/old/test_old_api_versions.py | 5 | CODE | |
| LOW | test/protocol/old/test_old_api_versions.py | 5 | CODE | |
| LOW | test/protocol/old/test_old_api_versions.py | 7 | CODE | |
| LOW | test/protocol/schemas/test_tagged_fields.py | 3 | CODE | |
| LOW | test/protocol/schemas/test_codec_types.py | 7 | CODE | |
| LOW | test/protocol/consumer/test_consumer_protocol.py | 3 | CODE | |
| LOW | test/protocol/metadata/test_api_versions.py | 5 | CODE | |
| LOW | test/consumer/test_coordinator.py | 20 | CODE | |
| LOW | test/consumer/test_fetcher.py | 17 | CODE | |
| LOW | kafka/util.py | 1 | CODE | |
| LOW | kafka/__init__.py | 2 | CODE | |
| LOW | kafka/__init__.py | 13 | CODE | |
| LOW | kafka/__init__.py | 14 | CODE | |
| LOW | kafka/__init__.py | 15 | CODE | |
| LOW | kafka/__init__.py | 15 | CODE | |
| LOW | kafka/__init__.py | 18 | CODE | |
| LOW | kafka/__init__.py | 19 | CODE | |
| 177 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .readthedocs.yaml | 21 | # builder: "dirhtml" | COMMENT |
| LOW | test/mock_broker.py | 421 | return None | COMMENT |
| LOW | test/protocol/test_api_compatibility.py | 21 | # ApiVersionsRequest_v3 (with a client_id for the header) | COMMENT |
| LOW | test/protocol/test_api_compatibility.py | 41 | b'\x00' \ | COMMENT |
| LOW | test/protocol/test_api_compatibility.py | 221 | decoded_data = NewApiVersionsResponse[3].decode( | COMMENT |
| LOW | test/protocol/test_api_compatibility.py | 241 | # data: CompactArray of SupportedFeatureKey | COMMENT |
| LOW | docs/conf.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | docs/conf.py | 61 | # |version| and |release|, also used in various other places throughout the | COMMENT |
| LOW | docs/conf.py | 81 | # directories to ignore when looking for source files. | COMMENT |
| LOW | docs/conf.py | 121 | COMMENT | |
| LOW | docs/conf.py | 141 | # Add any paths that contain custom static files (such as style sheets) here, | COMMENT |
| LOW | docs/conf.py | 161 | COMMENT | |
| LOW | docs/conf.py | 181 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. | COMMENT |
| LOW | docs/conf.py | 221 | # the title page. | COMMENT |
| LOW | kafka/errors.py | 1001 | # not complete. | COMMENT |
| LOW | kafka/producer/sender.py | 281 | # If we have any nodes that are ready to send + have sendable data, | COMMENT |
| LOW | kafka/coordinator/consumer.py | 401 | try: | COMMENT |
| LOW | kafka/coordinator/assignors/cooperative_sticky.py | 141 | # Build the round-1 assignment: drop any partition that's | COMMENT |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 61 | # a mapping between consumers and their assigned partitions that is updated during assignment procedure | COMMENT |
| LOW | …ordinator/assignors/sticky/StickyAssignorUserData.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/net/wakeup_notifier.py | 21 | """ | COMMENT |
| LOW | kafka/net/backend/selector.py | 201 | 'selector': selectors.DefaultSelector, | COMMENT |
| LOW | kafka/record/memory_records.py | 1 | # This class takes advantage of the fact that all formats v0, v1 and v2 of | COMMENT |
| LOW | kafka/record/_crc32c.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | kafka/record/legacy_records.py | 1 | # See: | COMMENT |
| LOW | kafka/record/legacy_records.py | 21 | # Value => bytes | COMMENT |
| LOW | kafka/record/default_records.py | 1 | # See: | COMMENT |
| LOW | kafka/record/default_records.py | 21 | # ProducerEpoch => Int16 | COMMENT |
| LOW | kafka/record/default_records.py | 41 | # the bytes that follow the CRC). It is located after the magic byte, which | COMMENT |
| LOW | …schemas/resources/DescribeTopicPartitionsResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …a/protocol/schemas/resources/DeleteRecordsRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/MetadataRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/MetadataRequest.json | 21 | "validVersions": "0-13", | COMMENT |
| LOW | kafka/protocol/schemas/resources/HeartbeatResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/ProduceRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/ProduceRequest.json | 21 | // Versions 0-2 were removed in Apache Kafka 4.0, version 3 is the new baseline. Due to a bug in librdkafka, | COMMENT |
| LOW | …ka/protocol/schemas/resources/DeleteGroupsRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …/schemas/resources/DescribeTopicPartitionsRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/EndTxnRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …otocol/schemas/resources/AlterClientQuotasRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …protocol/schemas/resources/DescribeGroupsResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …fka/protocol/schemas/resources/LeaveGroupResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …mas/resources/DescribeUserScramCredentialsRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …protocol/schemas/resources/FindCoordinatorRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …protocol/schemas/resources/FindCoordinatorRequest.json | 21 | // Version 1 adds KeyType. | COMMENT |
| LOW | …tocol/schemas/resources/AddPartitionsToTxnRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …rotocol/schemas/resources/DescribeClusterResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …a/protocol/schemas/resources/SaslHandshakeRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …protocol/schemas/resources/DescribeLogDirsRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/FetchRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/FetchRequest.json | 21 | // Versions 0-3 were removed in Apache Kafka 4.0, Version 4 is the new baseline. | COMMENT |
| LOW | kafka/protocol/schemas/resources/FetchRequest.json | 41 | // | COMMENT |
| LOW | …ocol/schemas/resources/AlterReplicaLogDirsRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …as/resources/DescribeUserScramCredentialsResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …/protocol/schemas/resources/DescribeQuorumRequest.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | kafka/protocol/schemas/resources/ResponseHeader.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …mas/resources/AlterPartitionReassignmentsResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …ka/protocol/schemas/resources/ApiVersionsResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| LOW | …ka/protocol/schemas/resources/ApiVersionsResponse.json | 21 | // | COMMENT |
| LOW | …otocol/schemas/resources/CreatePartitionsResponse.json | 1 | // Licensed to the Apache Software Foundation (ASF) under one or more | COMMENT |
| 112 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | example.py | 60 | except Exception: | CODE |
| LOW | test/mock_broker.py | 503 | except Exception: | CODE |
| LOW | test/mock_broker.py | 710 | except Exception: | CODE |
| LOW | test/producer/test_partitioner.py | 232 | except Exception as exc: | CODE |
| MEDIUM | test/producer/test_partitioner.py | 227 | def hammer(): | CODE |
| MEDIUM | test/producer/test_sender.py | 898 | def get_in_thread(): | CODE |
| MEDIUM | test/producer/test_sender.py | 941 | def get_in_thread(): | CODE |
| LOW | test/producer/test_sender.py | 901 | except Exception as e: | CODE |
| LOW | test/producer/test_sender.py | 944 | except Exception as e: | CODE |
| LOW | test/net/test_manager.py | 434 | except Exception: | CODE |
| LOW⚡ | test/net/backend/test_asyncio_backend.py | 92 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | test/integration/conftest.py | 127 | except Exception: | CODE |
| LOW | test/integration/conftest.py | 173 | except Exception: | CODE |
| LOW | test/integration/conftest.py | 219 | except Exception: | CODE |
| LOW | test/integration/conftest.py | 309 | except Exception as e: # surfaced via spawn() / stop() | CODE |
| MEDIUM | test/integration/conftest.py | 301 | def run(member=member, client_id=client_id): | CODE |
| LOW | kafka/cluster.py | 134 | except Exception as exc: | CODE |
| LOW | kafka/cluster.py | 156 | except Exception as exc: | CODE |
| LOW | kafka/cluster.py | 174 | except Exception as exc: | CODE |
| LOW | kafka/future.py | 66 | except Exception as e: | CODE |
| LOW | kafka/future.py | 89 | except Exception as err: | CODE |
| LOW | kafka/future.py | 108 | except Exception as e: | CODE |
| LOW | kafka/future.py | 127 | except Exception as e: | CODE |
| LOW | kafka/future.py | 153 | except Exception as e: | CODE |
| LOW | kafka/future.py | 160 | except Exception as e: | CODE |
| LOW | kafka/producer/sender.py | 135 | except Exception: | CODE |
| LOW | kafka/producer/sender.py | 150 | except Exception: | CODE |
| LOW | kafka/producer/sender.py | 378 | except Exception as e: | CODE |
| MEDIUM | kafka/producer/sender.py | 77 | def _maybe_remove_from_inflight_batches(self, batch): | CODE |
| LOW | kafka/producer/kafka.py | 748 | except Exception: | CODE |
| MEDIUM | kafka/producer/kafka.py | 676 | def wrapper(): | CODE |
| LOW | kafka/coordinator/consumer.py | 318 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 329 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 378 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 502 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 530 | except Exception: | CODE |
| LOW | kafka/coordinator/consumer.py | 556 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 574 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 730 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 884 | except Exception: | CODE |
| LOW | kafka/coordinator/consumer.py | 969 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 1108 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/base.py | 841 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 626 | except Exception: | CODE |
| LOW | kafka/net/proxy.py | 43 | except Exception: | CODE |
| LOW | kafka/net/proxy.py | 111 | except Exception as exc: | CODE |
| LOW | kafka/net/proxy.py | 126 | except Exception as e: | CODE |
| LOW | kafka/net/proxy.py | 163 | except Exception as exc: | CODE |
| MEDIUM | kafka/net/proxy.py | 157 | def _wrapped_state_machine(self): | CODE |
| LOW | kafka/net/connection.py | 278 | except Exception: | CODE |
| LOW | kafka/net/connection.py | 370 | except Exception as error: | CODE |
| MEDIUM | kafka/net/connection.py | 290 | def unpause(self, v): | CODE |
| LOW | kafka/net/manager.py | 173 | except Exception as exc: | CODE |
| LOW | kafka/net/manager.py | 186 | except Exception as exc: | CODE |
| LOW | kafka/net/manager.py | 263 | except Exception as exc: | CODE |
| MEDIUM | kafka/net/manager.py | 245 | def _connect(self, node, conn, reset_backoff_on_connect=True, timeout_at=None): | CODE |
| LOW | kafka/net/backend/abstract.py | 311 | except Exception: | CODE |
| LOW | kafka/net/backend/abstract.py | 330 | except Exception: | CODE |
| LOW | kafka/net/backend/selector.py | 175 | except Exception: | CODE |
| LOW | kafka/net/backend/selector.py | 635 | except Exception as e: | CODE |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/net/test_wakeup_notifier.py | 165 | CODE | |
| LOW | test/net/backend/test_selector.py | 1089 | CODE | |
| LOW | test/integration/conftest.py | 284 | CODE | |
| LOW | test/integration/test_consumer_integration.py | 90 | CODE | |
| LOW | test/integration/test_consumer_integration.py | 168 | CODE | |
| LOW | test/integration/fixtures.py | 353 | CODE | |
| LOW | test/consumer/test_assignors.py | 812 | CODE | |
| LOW | kafka/cluster.py | 521 | CODE | |
| LOW | kafka/future.py | 45 | CODE | |
| LOW | kafka/future.py | 72 | CODE | |
| LOW | kafka/metrics/metrics.py | 118 | CODE | |
| LOW | kafka/metrics/metrics.py | 158 | CODE | |
| LOW | kafka/metrics/stats/rate.py | 88 | CODE | |
| LOW | kafka/producer/sender.py | 91 | CODE | |
| LOW | kafka/producer/sender.py | 161 | CODE | |
| LOW | kafka/producer/sender.py | 316 | CODE | |
| LOW | kafka/producer/sender.py | 530 | CODE | |
| LOW | kafka/producer/record_accumulator.py | 113 | CODE | |
| LOW | kafka/producer/record_accumulator.py | 203 | CODE | |
| LOW | kafka/producer/record_accumulator.py | 324 | CODE | |
| LOW | kafka/producer/record_accumulator.py | 423 | CODE | |
| LOW | kafka/producer/kafka.py | 1056 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 64 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 852 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 941 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 996 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 1093 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 1133 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 1176 | CODE | |
| LOW | kafka/producer/transaction_manager.py | 1263 | CODE | |
| LOW | kafka/coordinator/consumer.py | 264 | CODE | |
| LOW | kafka/coordinator/consumer.py | 389 | CODE | |
| LOW | kafka/coordinator/consumer.py | 486 | CODE | |
| LOW | kafka/coordinator/consumer.py | 659 | CODE | |
| LOW | kafka/coordinator/consumer.py | 844 | CODE | |
| LOW | kafka/coordinator/consumer.py | 974 | CODE | |
| LOW | kafka/coordinator/consumer.py | 1113 | CODE | |
| LOW | kafka/coordinator/base.py | 962 | CODE | |
| LOW | kafka/coordinator/base.py | 1134 | CODE | |
| LOW | kafka/coordinator/assignors/cooperative_sticky.py | 113 | CODE | |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 176 | CODE | |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 227 | CODE | |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 281 | CODE | |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 334 | CODE | |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 397 | CODE | |
| LOW | kafka/net/socks5.py | 28 | CODE | |
| LOW | kafka/net/connection.py | 290 | CODE | |
| LOW | kafka/net/connection.py | 376 | CODE | |
| LOW | kafka/net/backend/selector.py | 102 | CODE | |
| LOW | kafka/net/backend/selector.py | 517 | CODE | |
| LOW | kafka/net/backend/selector.py | 751 | CODE | |
| LOW | kafka/net/backend/selector.py | 767 | CODE | |
| LOW | kafka/net/backend/selector.py | 909 | CODE | |
| LOW | kafka/record/legacy_records.py | 188 | CODE | |
| LOW | kafka/record/legacy_records.py | 479 | CODE | |
| LOW | kafka/record/default_records.py | 111 | CODE | |
| LOW | kafka/record/default_records.py | 654 | CODE | |
| LOW | kafka/partitioner/sticky.py | 36 | CODE | |
| LOW | kafka/admin/_configs.py | 139 | CODE | |
| LOW | kafka/admin/_configs.py | 231 | CODE | |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/service.py | 10 | __all__ = [ | CODE |
| LOW | kafka/__init__.py | 27 | __all__ = [ | CODE |
| LOW | kafka/metrics/metrics.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | kafka/metrics/__init__.py | 10 | __all__ = [ | CODE |
| LOW | kafka/metrics/dict_reporter.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | kafka/metrics/stats/__init__.py | 12 | __all__ = [ | CODE |
| LOW | kafka/producer/__init__.py | 3 | __all__ = [ | CODE |
| LOW | kafka/net/__init__.py | 11 | __all__ = [ | CODE |
| LOW | kafka/net/backend/abstract.py | 135 | def set_protocol(self, protocol: 'NetProtocol') -> None: ... | CODE |
| LOW | kafka/record/__init__.py | 3 | __all__ = ["MemoryRecords", "MemoryRecordsBuilder"] | CODE |
| LOW | kafka/partitioner/__init__.py | 6 | __all__ = [ | CODE |
| LOW | kafka/admin/__init__.py | 18 | __all__ = [ | CODE |
| LOW | kafka/protocol/sasl.py | 48 | __all__ = [ | CODE |
| LOW | kafka/protocol/producer/produce.py | 15 | __all__ = [ | CODE |
| LOW | kafka/protocol/producer/transaction.py | 23 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/configs.py | 17 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/users.py | 11 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/transactions.py | 14 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/client_quotas.py | 11 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/groups.py | 20 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/acl.py | 77 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/topics.py | 49 | __all__ = [ | CODE |
| LOW | kafka/protocol/admin/cluster.py | 25 | __all__ = [ | CODE |
| LOW | kafka/protocol/schemas/fields/__init__.py | 7 | __all__ = ["BaseField", "SimpleField", "StructField", "ArrayField", "StructArrayField"] | CODE |
| LOW | kafka/protocol/schemas/fields/codecs/__init__.py | 8 | __all__ = [ | CODE |
| LOW | kafka/protocol/consumer/fetch.py | 14 | __all__ = [ | CODE |
| LOW | kafka/protocol/consumer/metadata.py | 28 | __all__ = [ | CODE |
| LOW | kafka/protocol/consumer/group.py | 29 | __all__ = [ | CODE |
| LOW | kafka/protocol/consumer/offsets.py | 70 | __all__ = [ | CODE |
| LOW | kafka/protocol/metadata/metadata.py | 32 | __all__ = [ | CODE |
| LOW | kafka/protocol/metadata/api_versions.py | 39 | __all__ = [ | CODE |
| LOW | kafka/protocol/metadata/find_coordinator.py | 17 | __all__ = [ | CODE |
| LOW | kafka/consumer/__init__.py | 3 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | test/producer/test_transaction_manager_mock_broker.py | 55 | # Test harness | COMMENT |
| LOW⚡ | test/net/test_connection.py | 149 | # Should not send any request -- just call _init_complete | COMMENT |
| LOW⚡ | test/consumer/test_fetcher.py | 557 | # Don't actually block on the wakeup - just return as if the wait | COMMENT |
| LOW | kafka/codec.py | 145 | # buffer... likely a python-snappy bug, so just use a slice copy | COMMENT |
| MEDIUM | kafka/net/manager.py | 100 | # close(); a passed-in instance is left alone (so the unit-test harness, | COMMENT |
| LOW | kafka/net/sasl/gssapi.py | 67 | # simply set QoP to 'auth' only (first octet). We reuse the max message size proposed | COMMENT |
| LOW | kafka/net/sasl/gssapi.py | 82 | # but instead we just set _is_authenticated. Since the plugin interface does | COMMENT |
| LOW | kafka/net/sasl/sspi.py | 92 | # simply set QoP to 'auth' only (first octet). We reuse the max message size proposed | COMMENT |
| MEDIUM | kafka/benchmarks/producer_performance.py | 55 | # per-iteration harness overhead. With a well-optimized | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | kafka/coordinator/assignors/sticky/sticky_assignor.py | 340 | # if minimum and maximum numbers of partitions assigned to consumers differ by at most one return true | COMMENT |
| HIGH | kafka/protocol/schemas/fields/struct.py | 75 | # Nested nullable struct (KIP-893): 1-byte INT8 prefix, -1 = null, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/__init__.py | 12 | # Create a file handler | COMMENT |
| MEDIUM | test/__init__.py | 16 | # Create a formatter for the log messages | COMMENT |
| MEDIUM | test/producer/test_record_accumulator.py | 133 | # Create a retried batch | COMMENT |
| MEDIUM | test/producer/test_sender.py | 814 | # Create a batch with large batch_size (simulating the original oversized batch) | COMMENT |
| MEDIUM | docs/conf.py | 6 | # This file is execfile()d with the current directory set to its | COMMENT |
| MEDIUM | kafka/metrics/metrics.py | 65 | # Creating a daemon thread to not block shutdown | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/producer/test_transaction_manager_mock_broker.py | 322 | # Step 1: enqueue the initial InitProducerIdHandler. | COMMENT |
| LOW | test/producer/test_transaction_manager_mock_broker.py | 340 | # Step 2: simulate the OUT_OF_ORDER_SEQUENCE_NUMBER recovery path. | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 156 | # Step 1: Generate server keystore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 162 | # Step 2: Generate CA and truststore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 170 | # Step 3: Sign server cert with CA | COMMENT |
| LOW | kafka/net/connection.py | 430 | # Step 1: SaslHandshake to negotiate mechanism | COMMENT |
| LOW | kafka/net/connection.py | 445 | # Step 2: SASL authentication exchange | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/producer/test_transaction_manager_mock_broker.py | 322 | # Step 1: enqueue the initial InitProducerIdHandler. | COMMENT |
| LOW | test/producer/test_transaction_manager_mock_broker.py | 340 | # Step 2: simulate the OUT_OF_ORDER_SEQUENCE_NUMBER recovery path. | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 156 | # Step 1: Generate server keystore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 162 | # Step 2: Generate CA and truststore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 170 | # Step 3: Sign server cert with CA | COMMENT |
| LOW | kafka/net/connection.py | 430 | # Step 1: SaslHandshake to negotiate mechanism | COMMENT |
| LOW | kafka/net/connection.py | 445 | # Step 2: SASL authentication exchange | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/integration/fixtures.py | 353 | CODE | |
| LOW | test/integration/fixtures.py | 386 | CODE | |
| LOW | test/admin/test_admin_cluster_quorum.py | 7 | CODE | |
| LOW | kafka/record/default_records.py | 544 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | kafka/record/legacy_records.py | 415 | # Check if we have room for another message | COMMENT |
| LOW | kafka/record/default_records.py | 615 | # Check if we can write this message | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mock_broker.py | 385 | async def handle_request(self, api_key, api_version, correlation_id, request_bytes): | CODE |