A fast and reliable background task processing library for Python 3.
This report presents the forensic synthetic code analysis of Bogdanp/dramatiq, a Python project with 5,296 GitHub stars. SynthScan v2.0 examined 16,477 lines of code across 150 source files, recording 580 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 47.9 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 580 distinct pattern matches across 10 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 | tests/test_generic_actors.py | 10 | def test_generic_actors_can_be_defined(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 23 | def test_generic_actors_can_be_assigned_options(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 37 | def test_generic_actors_raise_not_implemented_if_perform_is_missing(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 48 | def test_generic_actors_raise_not_implemented_if_perform_is_missing_and_called_with_args(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 60 | def test_generic_actors_raise_type_error_if_perform_is_called_with_wrong_args(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 72 | def test_generic_actors_can_be_abstract(stub_broker, stub_worker): | CODE |
| LOW | tests/test_generic_actors.py | 118 | def test_generic_actors_can_have_class_attributes(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 129 | def test_generic_actors_can_accept_custom_actor_registry(stub_broker): | CODE |
| LOW | tests/test_generic_actors.py | 148 | def test_getattr_generic_actor(): | CODE |
| LOW | tests/test_concurrent_rate_limiter.py | 9 | def test_concurrent_rate_limiter_releases_the_lock_after_each_call(rate_limiter_backend): | CODE |
| LOW | tests/test_concurrent_rate_limiter.py | 26 | def test_concurrent_rate_limiter_can_act_as_a_mutex(rate_limiter_backend): | CODE |
| LOW | tests/test_concurrent_rate_limiter.py | 53 | def test_concurrent_rate_limiter_limits_concurrency(rate_limiter_backend): | CODE |
| LOW | tests/test_redis.py | 20 | def test_redis_actors_can_be_sent_messages(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 41 | def test_redis_actors_retry_with_backoff_on_failure(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 67 | def test_redis_actors_can_retry_multiple_times(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 89 | def test_redis_actors_can_have_their_messages_delayed(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 110 | def test_redis_actors_can_delay_messages_independent_of_each_other(redis_broker): | CODE |
| LOW | tests/test_redis.py | 138 | def test_redis_unacked_messages_can_be_requeued(redis_broker): | CODE |
| LOW | tests/test_redis.py | 175 | def test_redis_messages_can_be_dead_lettered(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 194 | def test_redis_dead_lettered_messages_are_cleaned_up(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 219 | def test_redis_messages_belonging_to_missing_actors_are_rejected(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 242 | def test_redis_requeues_unhandled_messages_on_shutdown(redis_broker): | CODE |
| LOW | tests/test_redis.py | 265 | def test_redis_requeues_unhandled_delay_messages_on_shutdown(redis_broker): | CODE |
| LOW | tests/test_redis.py | 283 | def test_redis_broker_can_join_with_timeout(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 298 | def test_redis_broker_can_flush_queues(redis_broker): | CODE |
| LOW | tests/test_redis.py | 315 | def test_redis_broker_can_connect_via_url(): | CODE |
| LOW | tests/test_redis.py | 324 | def test_redis_broker_can_connect_via_client(): | CODE |
| LOW | tests/test_redis.py | 335 | def test_redis_broker_raises_attribute_error_when_given_an_invalid_attribute(redis_broker): | CODE |
| LOW | tests/test_redis.py | 343 | def test_redis_consumer_ack_can_retry_on_connection_error(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 385 | def test_redis_consumer_nack_can_retry_on_connection_error(redis_broker, redis_worker): | CODE |
| LOW | tests/test_redis.py | 427 | def test_redis_consumer_nack_does_not_raise_on_missing_id(redis_worker): | CODE |
| LOW | tests/test_redis.py | 459 | def test_redis_join_race_condition(redis_broker): | CODE |
| LOW⚡ | tests/conftest.py | 143 | def memcached_rate_limiter_backend(): | CODE |
| LOW⚡ | tests/conftest.py | 152 | def redis_rate_limiter_backend(): | CODE |
| LOW⚡ | tests/conftest.py | 160 | def stub_rate_limiter_backend(): | CODE |
| LOW | tests/test_callbacks.py | 10 | def test_actors_can_define_success_callbacks(stub_broker, stub_worker): | CODE |
| LOW | tests/test_callbacks.py | 35 | def test_actors_can_define_failure_callbacks(stub_broker, stub_worker): | CODE |
| LOW | tests/test_callbacks.py | 60 | def test_actor_callbacks_raise_type_error_when_given_a_normal_callable(stub_broker): | CODE |
| LOW | tests/test_callbacks.py | 76 | def test_actor_callback_knows_correct_number_of_retries(stub_broker, stub_worker): | CODE |
| LOW | tests/test_common.py | 16 | def test_q_name_returns_canonical_names(given, expected): | CODE |
| LOW | tests/test_common.py | 28 | def test_dq_name_returns_canonical_delay_names(given, expected): | CODE |
| LOW | tests/test_common.py | 40 | def test_xq_name_returns_delay_names(given, expected): | CODE |
| LOW | tests/test_results.py | 15 | def test_actors_can_store_results(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 35 | def test_actors_results_are_backwards_compatible(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 57 | def test_use_namespace_prefix_keys_produces_readable_key(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 89 | def test_use_namespace_prefix_keys_default_is_legacy_hash(stub_broker): | CODE |
| LOW | tests/test_results.py | 109 | def test_actors_can_store_exceptions(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 132 | def test_retrieving_a_result_can_raise_result_missing(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 152 | def test_retrieving_a_result_can_time_out(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 172 | def test_messages_can_get_results_from_backend(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 190 | def test_messages_can_get_results_from_inferred_backend(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 208 | def test_messages_without_actor_not_crashing_lookup_options(stub_broker, redis_result_backend): | CODE |
| LOW | tests/test_results.py | 219 | def test_messages_can_fail_to_get_results_if_there_is_no_backend(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 234 | def test_actor_no_warning_when_returns_none(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 254 | def test_actor_warning_when_returns_result_and_no_results_middleware_present(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 274 | def test_actor_warning_when_returns_result_and_store_results_is_not_set(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 297 | def test_actor_no_warning_when_returns_result_while_piping_and_store_results_is_not_set(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 325 | def test_actor_no_warning_when_returns_result_while_piping(stub_broker, stub_worker): | CODE |
| LOW | tests/test_results.py | 350 | def test_actor_no_warning_when_returns_result_and_results_middleware_present(stub_broker, stub_worker, result_backend): | CODE |
| LOW | tests/test_results.py | 373 | def test_age_limit_skipped_messages_store_consistent_exceptions(stub_broker, stub_worker, result_backend): | CODE |
| 176 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | setup.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/worker.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/worker.py | 257 | """This class is used as wrapper around MessageProxy when they are placed in a PriorityQueue. | STRING |
| MEDIUM | dramatiq/logging.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/canteen.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/compat.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/asyncio.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/generic.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/message.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/encoder.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/threading.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/cli.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/common.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/composition.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/errors.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/actor.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/broker.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/__main__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/retries.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/group_callbacks.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/asyncio.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/shutdown.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/current_message.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/threading.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/time_limit.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/prometheus.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/callbacks.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/pipelines.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/middleware.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/middleware/age_limit.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/brokers/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/brokers/redis.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/brokers/stub.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/backend.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/result.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/errors.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/middleware.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/backends/memcached.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/backends/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/backends/redis.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/results/backends/stub.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/concurrent.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/backend.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/bucket.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/window.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/barrier.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/rate_limiter.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/backends/memcached.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/backends/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/backends/redis.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | dramatiq/rate_limits/backends/stub.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| MEDIUM | docs/source/conf.py | 7 | # This file is execfile()d with the current directory set to its | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 18 | CODE | |
| LOW | tests/test_generic_actors.py | 1 | CODE | |
| LOW | tests/test_concurrent_rate_limiter.py | 1 | CODE | |
| LOW | tests/test_redis.py | 1 | CODE | |
| LOW | tests/conftest.py | 1 | CODE | |
| LOW | tests/test_callbacks.py | 1 | CODE | |
| LOW | tests/test_common.py | 1 | CODE | |
| LOW | tests/test_results.py | 1 | CODE | |
| LOW | tests/test_encoders.py | 1 | CODE | |
| LOW | tests/test_canteen.py | 1 | CODE | |
| LOW | tests/test_pidfile.py | 1 | CODE | |
| LOW | tests/test_watch.py | 1 | CODE | |
| LOW | tests/test_actors.py | 1 | CODE | |
| LOW | tests/test_broker.py | 1 | CODE | |
| LOW | tests/test_barrier.py | 1 | CODE | |
| LOW | tests/test_composition.py | 1 | CODE | |
| LOW | tests/test_worker.py | 1 | CODE | |
| LOW | tests/common.py | 1 | CODE | |
| LOW | tests/test_window_rate_limiter.py | 1 | CODE | |
| LOW | tests/test_bucket_rate_limiter.py | 1 | CODE | |
| LOW | tests/test_cli.py | 1 | CODE | |
| LOW | tests/test_stub_broker.py | 1 | CODE | |
| LOW | tests/test_rabbitmq.py | 1 | CODE | |
| LOW | tests/test_types.py | 8 | CODE | |
| LOW | tests/test_messages.py | 1 | CODE | |
| LOW | tests/middleware/test_shutdown.py | 1 | CODE | |
| LOW | tests/middleware/test_retries.py | 1 | CODE | |
| LOW | tests/middleware/test_threading.py | 1 | CODE | |
| LOW | tests/middleware/test_time_limit.py | 1 | CODE | |
| LOW | tests/middleware/test_asyncio.py | 1 | CODE | |
| LOW | tests/middleware/test_prometheus.py | 1 | CODE | |
| LOW | tests/benchmarks/test_rabbitmq_cli.py | 1 | CODE | |
| LOW | tests/benchmarks/test_redis_cli.py | 1 | CODE | |
| LOW | dramatiq/worker.py | 18 | CODE | |
| LOW | dramatiq/logging.py | 18 | CODE | |
| LOW | dramatiq/canteen.py | 18 | CODE | |
| LOW | dramatiq/compat.py | 18 | CODE | |
| LOW | dramatiq/asyncio.py | 18 | CODE | |
| LOW | dramatiq/generic.py | 18 | CODE | |
| LOW | dramatiq/__init__.py | 18 | CODE | |
| LOW | dramatiq/__init__.py | 22 | CODE | |
| LOW | dramatiq/__init__.py | 22 | CODE | |
| LOW | dramatiq/__init__.py | 23 | CODE | |
| LOW | dramatiq/__init__.py | 23 | CODE | |
| LOW | dramatiq/__init__.py | 23 | CODE | |
| LOW | dramatiq/__init__.py | 23 | CODE | |
| LOW | dramatiq/__init__.py | 23 | CODE | |
| LOW | dramatiq/__init__.py | 24 | CODE | |
| LOW | dramatiq/__init__.py | 24 | CODE | |
| LOW | dramatiq/__init__.py | 25 | CODE | |
| LOW | dramatiq/__init__.py | 25 | CODE | |
| LOW | dramatiq/__init__.py | 25 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| LOW | dramatiq/__init__.py | 26 | CODE | |
| 93 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | dramatiq/asyncio.py | 121 | Runs the given coroutine on the event loop. Parameters: coro: The coroutine to run. Raises: | STRING |
| HIGH | dramatiq/message.py | 137 | Get the result associated with this message from a result backend. Warning: If you use multip | STRING |
| HIGH | dramatiq/composition.py | 126 | Get the result of this pipeline. Pipeline results are represented by the result of the last message in | STRING |
| HIGH | dramatiq/composition.py | 152 | Get the results of each job in the pipeline. Parameters: block(bool): Whether or not to block until a | STRING |
| HIGH | dramatiq/composition.py | 327 | Get the results of each job in the group. Parameters: block(bool): Whether or not to block until the | STRING |
| HIGH | dramatiq/actor.py | 87 | Build a message. This method is useful if you want to compose actors. See the actor composition documentation | STRING |
| HIGH | dramatiq/actor.py | 141 | Asynchronously send a message to this actor. Parameters: *args: Positional arguments to send to the a | STRING |
| HIGH | dramatiq/actor.py | 182 | Synchronously call this actor. Parameters: *args: Positional arguments to send to the actor. | STRING |
| HIGH | dramatiq/actor.py | 249 | Declare an actor. Examples: >>> import dramatiq >>> @dramatiq.actor ... def add(x, y): .. | STRING |
| HIGH | dramatiq/broker.py | 198 | Get an iterator that consumes messages off of the queue. Raises: QueueNotFound: If the given queue wa | STRING |
| HIGH | dramatiq/broker.py | 247 | Look up an actor by its name. Parameters: actor_name(str): The name to look up. Raises: | STRING |
| HIGH | dramatiq/brokers/rabbitmq.py | 47 | A broker that can be used with RabbitMQ. Examples: If you want to specify connection parameters individually | STRING |
| HIGH | dramatiq/brokers/stub.py | 55 | Create a new consumer for a queue. Parameters: queue_name(str): The queue to consume. prefe | STRING |
| HIGH | dramatiq/results/backend.py | 88 | Get a result from the backend. Parameters: message(Message) block(bool): Whether or not to | STRING |
| HIGH | dramatiq/results/backends/redis.py | 66 | Get a result from the backend. Warning: Sub-second timeouts are not respected by this backend. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/worker.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/worker.py | 41 | #: The number of seconds to wait before retrying post_process_message | COMMENT |
| LOW | dramatiq/logging.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/canteen.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/compat.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/asyncio.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/asyncio.py | 161 | # There are 3 possibilities here: | COMMENT |
| LOW | dramatiq/generic.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/message.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/encoder.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/threading.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/cli.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/common.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/composition.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/errors.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/actor.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/broker.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/__main__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/retries.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/group_callbacks.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/asyncio.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/shutdown.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/current_message.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/threading.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/time_limit.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/prometheus.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/callbacks.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/pipelines.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/middleware.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/middleware/age_limit.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/brokers/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/brokers/redis.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/brokers/rabbitmq.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/brokers/stub.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/backend.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/result.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/errors.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/middleware.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/backends/memcached.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/backends/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/backends/redis.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/results/backends/stub.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/concurrent.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/backend.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/bucket.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/window.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/barrier.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/rate_limiter.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/backends/memcached.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/backends/__init__.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/backends/redis.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | dramatiq/rate_limits/backends/stub.py | 1 | # This file is a part of Dramatiq. | COMMENT |
| LOW | docs/source/conf.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | docs/source/conf.py | 61 | author = "CLEARTYPE SRL" | COMMENT |
| LOW | docs/source/conf.py | 141 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | dramatiq/broker.py | 0 | get all declared delay queues. returns: set[str]: the names of all the delay queues declared so far on this broker. | STRING |
| HIGH | dramatiq/brokers/redis.py | 0 | get all declared delay queues. returns: set[str]: the names of all the delay queues declared so far on this broker. | STRING |
| HIGH | dramatiq/brokers/rabbitmq.py | 0 | get all declared delay queues. returns: set[str]: the names of all the delay queues declared so far on this broker. | STRING |
| HIGH | dramatiq/broker.py | 0 | drop all the messages from a queue. parameters: queue_name(str): the queue to flush. | STRING |
| HIGH | dramatiq/brokers/redis.py | 0 | drop all the messages from a queue. parameters: queue_name(str): the queue to flush. | STRING |
| HIGH | dramatiq/brokers/rabbitmq.py | 0 | drop all the messages from a queue. parameters: queue_name(str): the queue to flush. | STRING |
| HIGH | dramatiq/brokers/stub.py | 0 | drop all the messages from a queue. parameters: queue_name(str): the queue to flush. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 35 | except Exception as e: | CODE |
| MEDIUM | tests/conftest.py | 32 | def check_rabbitmq(broker): | CODE |
| LOW | dramatiq/worker.py | 329 | except Exception: | CODE |
| LOW | dramatiq/worker.py | 445 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/message.py | 118 | except Exception as e: | CODE |
| LOW | dramatiq/broker.py | 120 | except Exception: | CODE |
| LOW | dramatiq/broker.py | 128 | except Exception: | CODE |
| LOW | dramatiq/middleware/time_limit.py | 128 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 184 | except Exception: | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 213 | except Exception: | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 247 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 553 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 567 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 621 | except Exception: | CODE |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 202 | def channel(self): | CODE |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 556 | def nack(self, message): | CODE |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 580 | def __next__(self): | CODE |
| LOW | examples/persistent/example.py | 25 | except Exception: | CODE |
| MEDIUM | examples/persistent/example.py | 21 | def load_state(n): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_window_rate_limiter.py | 13 | CODE | |
| LOW | tests/test_window_rate_limiter.py | 19 | CODE | |
| LOW | tests/test_bucket_rate_limiter.py | 11 | CODE | |
| LOW | dramatiq/worker.py | 296 | CODE | |
| LOW | dramatiq/worker.py | 542 | CODE | |
| LOW | dramatiq/asyncio.py | 120 | CODE | |
| LOW | dramatiq/cli.py | 383 | CODE | |
| LOW | dramatiq/cli.py | 413 | CODE | |
| LOW | dramatiq/composition.py | 258 | CODE | |
| LOW | dramatiq/middleware/group_callbacks.py | 46 | CODE | |
| LOW | dramatiq/brokers/redis.py | 334 | CODE | |
| LOW | dramatiq/brokers/stub.py | 146 | CODE | |
| LOW | dramatiq/rate_limits/backends/memcached.py | 59 | CODE | |
| LOW | dramatiq/rate_limits/backends/redis.py | 48 | CODE | |
| LOW | dramatiq/rate_limits/backends/redis.py | 65 | CODE | |
| LOW | dramatiq/rate_limits/backends/redis.py | 82 | CODE | |
| LOW | docs/source/sitemap.py | 11 | CODE | |
| LOW | benchmarks/bench.py | 104 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_composition.py | 420 | # And I've added the GroupCallbacks middleware to my broker | COMMENT |
| HIGH | tests/test_composition.py | 477 | # And I've added the GroupCallbacks middleware to my broker | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dramatiq/asyncio.py | 29 | __all__ = [ | CODE |
| LOW | dramatiq/asyncio.py | 51 | def set_event_loop_thread(thread: Optional[EventLoopThread]) -> None: | CODE |
| LOW | dramatiq/__init__.py | 45 | __all__ = [ | CODE |
| LOW | dramatiq/message.py | 47 | def set_encoder(encoder: Encoder) -> None: | CODE |
| LOW | dramatiq/threading.py | 26 | __all__ = [ | CODE |
| LOW | dramatiq/broker.py | 73 | def set_broker(broker: Broker) -> None: | CODE |
| LOW | dramatiq/middleware/__init__.py | 32 | __all__ = [ | CODE |
| LOW | dramatiq/middleware/threading.py | 28 | __all__ = [ | CODE |
| LOW | dramatiq/results/__init__.py | 24 | __all__ = [ | CODE |
| LOW | dramatiq/results/backends/__init__.py | 24 | __all__ = ["StubBackend", "MemcachedBackend", "RedisBackend"] | CODE |
| LOW | dramatiq/rate_limits/__init__.py | 27 | __all__ = [ | CODE |
| LOW | dramatiq/rate_limits/backends/__init__.py | 24 | __all__ = ["StubBackend", "MemcachedBackend", "RedisBackend"] | CODE |
| LOW | …les/use_actors_from_different_files/actors/__init__.py | 7 | __all__ = ["bar_task", "foo_task"] | CODE |