Python client for Apache Kafka
This report presents the forensic synthetic code analysis of dpkp/kafka-python, a Python project with 5,903 GitHub stars. SynthScan v2.0 examined 81,477 lines of code across 466 source files, recording 2134 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 30.4 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 2134 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_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 |
| LOW | test/test_mock_broker.py | 554 | def test_trigger_rebalance_is_one_shot(self): | CODE |
| LOW | test/testutil.py | 43 | def maybe_skip_unsupported_compression(compression_type): | CODE |
| LOW | test/producer/test_producer.py | 16 | def test_default_api_timeout_smaller_than_request_timeout_raises(): | CODE |
| LOW | test/producer/test_producer.py | 38 | def test_kafka_producer_thread_close(): | CODE |
| LOW | test/producer/test_producer.py | 49 | def test_kafka_producer_context_manager_closes_on_exit(): | CODE |
| LOW | test/producer/test_producer.py | 58 | def test_partition_calls_partitioner_partition_with_cluster(): | CODE |
| LOW | test/producer/test_producer.py | 77 | def test_partition_explicit_partition_skips_partitioner(): | CODE |
| 1284 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 | 127 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | test/admin/test_admin_topics.py | 206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/admin/test_admin_topics.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | test/admin/test_admin_topics.py | 64 | # --------------------------------------------------------------------------- | 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_inet.py | 268 | CODE | |
| LOW | test/net/test_sasl_reauthentication.py | 6 | CODE | |
| LOW | test/net/test_sasl_reauthentication.py | 189 | CODE | |
| LOW | test/net/test_connection.py | 4 | CODE | |
| LOW | test/net/test_compat.py | 2 | CODE | |
| LOW | test/net/test_compat.py | 3 | CODE | |
| LOW | test/net/test_manager.py | 3 | CODE | |
| LOW | test/net/test_manager.py | 8 | 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 | 14 | 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 | |
| LOW | kafka/__init__.py | 19 | CODE | |
| LOW | kafka/__init__.py | 19 | CODE | |
| LOW | kafka/__init__.py | 19 | CODE | |
| LOW | kafka/__init__.py | 20 | CODE | |
| LOW | kafka/__init__.py | 20 | CODE | |
| LOW | kafka/__init__.py | 20 | CODE | |
| 170 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .readthedocs.yaml | 21 | # builder: "dirhtml" | COMMENT |
| LOW | test/mock_broker.py | 441 | if api_version > self._api_versions_max: | 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/selector.py | 201 | # longer than this many seconds. A coroutine that hits this threshold | 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 |
| 111 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | example.py | 60 | except Exception: | CODE |
| LOW | test/mock_broker.py | 518 | except Exception: | CODE |
| LOW | test/mock_broker.py | 725 | 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_asyncio_backend.py | 92 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | test/net/test_manager.py | 466 | except Exception: | 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 | 743 | except Exception: | CODE |
| MEDIUM | kafka/producer/kafka.py | 663 | 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 | 504 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 532 | except Exception: | CODE |
| LOW | kafka/coordinator/consumer.py | 558 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 576 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 739 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 897 | except Exception: | CODE |
| LOW | kafka/coordinator/consumer.py | 982 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/consumer.py | 1121 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/base.py | 842 | except Exception as exc: | CODE |
| LOW | kafka/coordinator/assignors/sticky/sticky_assignor.py | 626 | except Exception: | CODE |
| LOW | kafka/net/inet.py | 53 | except Exception: | CODE |
| LOW | kafka/net/selector.py | 173 | except Exception: | CODE |
| LOW | kafka/net/selector.py | 557 | except Exception as e: | CODE |
| LOW | kafka/net/selector.py | 562 | except Exception: | CODE |
| LOW⚡ | kafka/net/selector.py | 805 | except Exception: | CODE |
| LOW⚡ | kafka/net/selector.py | 809 | except Exception: | CODE |
| LOW | kafka/net/selector.py | 828 | except Exception: | CODE |
| LOW | kafka/net/selector.py | 832 | except Exception: | CODE |
| LOW | kafka/net/selector.py | 850 | except Exception as e: | CODE |
| MEDIUM | kafka/net/selector.py | 387 | def waiter(): | CODE |
| LOW | kafka/net/connection.py | 287 | except Exception: | CODE |
| LOW | kafka/net/connection.py | 379 | except Exception as error: | CODE |
| MEDIUM | kafka/net/connection.py | 299 | def unpause(self, v): | CODE |
| LOW | kafka/net/manager.py | 172 | except Exception as exc: | CODE |
| LOW | kafka/net/manager.py | 185 | except Exception as exc: | CODE |
| LOW | kafka/net/manager.py | 255 | except Exception as exc: | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/net/test_wakeup_notifier.py | 171 | 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 | 285 | CODE | |
| LOW | test/consumer/test_assignors.py | 812 | CODE | |
| LOW | kafka/cluster.py | 524 | 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 | 684 | CODE | |
| LOW | kafka/producer/kafka.py | 1051 | 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 | 488 | CODE | |
| LOW | kafka/coordinator/consumer.py | 661 | CODE | |
| LOW | kafka/coordinator/consumer.py | 851 | CODE | |
| LOW | kafka/coordinator/consumer.py | 987 | CODE | |
| LOW | kafka/coordinator/consumer.py | 1126 | CODE | |
| LOW | kafka/coordinator/base.py | 963 | CODE | |
| LOW | kafka/coordinator/base.py | 1135 | 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/selector.py | 100 | CODE | |
| LOW | kafka/net/selector.py | 503 | CODE | |
| LOW | kafka/net/selector.py | 678 | CODE | |
| LOW | kafka/net/selector.py | 694 | CODE | |
| LOW | kafka/net/selector.py | 836 | CODE | |
| LOW | kafka/net/socks5.py | 110 | CODE | |
| LOW | kafka/net/connection.py | 299 | CODE | |
| LOW | kafka/net/connection.py | 385 | 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 | |
| 40 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 | 14 | __all__ = [ | 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 | 44 | __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 | 155 | # 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 | 99 | # 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 | 88 | # Step 1: Generate server keystore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 94 | # Step 2: Generate CA and truststore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 102 | # Step 3: Sign server cert with CA | COMMENT |
| LOW | kafka/net/connection.py | 439 | # Step 1: SaslHandshake to negotiate mechanism | COMMENT |
| LOW | kafka/net/connection.py | 454 | # 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 | 88 | # Step 1: Generate server keystore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 94 | # Step 2: Generate CA and truststore | COMMENT |
| LOW⚡ | test/integration/fixtures.py | 102 | # Step 3: Sign server cert with CA | COMMENT |
| LOW | kafka/net/connection.py | 439 | # Step 1: SaslHandshake to negotiate mechanism | COMMENT |
| LOW | kafka/net/connection.py | 454 | # Step 2: SASL authentication exchange | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/integration/fixtures.py | 285 | CODE | |
| LOW | test/integration/fixtures.py | 318 | 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 | 400 | async def handle_request(self, api_key, api_version, correlation_id, request_bytes): | CODE |