AI Slop Code RIsk Monitor

Bogdanp/dramatiq

A fast and reliable background task processing library for Python 3.

50.3 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Bogdanp/dramatiq, a Python project with 5,330 GitHub stars. SynthScan examined 16,715 lines of code across 150 source files, recording 593 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 50.3 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

50.3
Adjusted Signal
50.3
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
5.3K
Stars
Python
Language
16.7K
Lines of Code
150
Files
593
Pattern Hits
2026-10-12
Scan Date
0.23
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 82.2/100 · CRITICAL

Can maintainers explain intent, assumptions, and trade-offs? 391 finding(s).

Hallucinated Dependency & Supply Chain Risk 34.9/100 · MEDIUM

Are imports declared and package/API names verified? 153 finding(s).

Agent Over-Engineering Ratio 65.9/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 287 finding(s).

PR Review Velocity Impact 93.0/100 · CRITICAL

Which changes need focused human review? 593 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 34MEDIUM 62LOW 497

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 593 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers238 hits · 238 pts
SeverityFileLineSnippetContext
LOWtests/test_generic_actors.py10def test_generic_actors_can_be_defined(stub_broker):CODE
LOWtests/test_generic_actors.py23def test_generic_actors_can_be_assigned_options(stub_broker):CODE
LOWtests/test_generic_actors.py37def test_generic_actors_raise_not_implemented_if_perform_is_missing(stub_broker):CODE
LOWtests/test_generic_actors.py48def test_generic_actors_raise_not_implemented_if_perform_is_missing_and_called_with_args(stub_broker):CODE
LOWtests/test_generic_actors.py60def test_generic_actors_raise_type_error_if_perform_is_called_with_wrong_args(stub_broker):CODE
LOWtests/test_generic_actors.py72def test_generic_actors_can_be_abstract(stub_broker, stub_worker):CODE
LOWtests/test_generic_actors.py118def test_generic_actors_can_have_class_attributes(stub_broker):CODE
LOWtests/test_generic_actors.py129def test_generic_actors_can_accept_custom_actor_registry(stub_broker):CODE
LOWtests/test_generic_actors.py148def test_getattr_generic_actor():CODE
LOWtests/test_concurrent_rate_limiter.py9def test_concurrent_rate_limiter_releases_the_lock_after_each_call(rate_limiter_backend):CODE
LOWtests/test_concurrent_rate_limiter.py26def test_concurrent_rate_limiter_can_act_as_a_mutex(rate_limiter_backend):CODE
LOWtests/test_concurrent_rate_limiter.py53def test_concurrent_rate_limiter_limits_concurrency(rate_limiter_backend):CODE
LOWtests/test_redis.py20def test_redis_actors_can_be_sent_messages(redis_broker, redis_worker):CODE
LOWtests/test_redis.py41def test_redis_actors_retry_with_backoff_on_failure(redis_broker, redis_worker):CODE
LOWtests/test_redis.py67def test_redis_actors_can_retry_multiple_times(redis_broker, redis_worker):CODE
LOWtests/test_redis.py89def test_redis_actors_can_have_their_messages_delayed(redis_broker, redis_worker):CODE
LOWtests/test_redis.py110def test_redis_actors_can_delay_messages_independent_of_each_other(redis_broker):CODE
LOWtests/test_redis.py138def test_redis_unacked_messages_can_be_requeued(redis_broker):CODE
LOWtests/test_redis.py175def test_redis_messages_can_be_dead_lettered(redis_broker, redis_worker):CODE
LOWtests/test_redis.py194def test_redis_dead_lettered_messages_are_cleaned_up(redis_broker, redis_worker):CODE
LOWtests/test_redis.py219def test_redis_messages_belonging_to_missing_actors_are_rejected(redis_broker, redis_worker):CODE
LOWtests/test_redis.py242def test_redis_requeues_unhandled_messages_on_shutdown(redis_broker):CODE
LOWtests/test_redis.py265def test_redis_requeues_unhandled_delay_messages_on_shutdown(redis_broker):CODE
LOWtests/test_redis.py283def test_redis_broker_can_join_with_timeout(redis_broker, redis_worker):CODE
LOWtests/test_redis.py298def test_redis_broker_can_flush_queues(redis_broker):CODE
LOWtests/test_redis.py315def test_redis_broker_can_connect_via_url():CODE
LOWtests/test_redis.py324def test_redis_broker_can_connect_via_client():CODE
LOWtests/test_redis.py335def test_redis_broker_raises_attribute_error_when_given_an_invalid_attribute(redis_broker):CODE
LOWtests/test_redis.py343def test_redis_consumer_ack_can_retry_on_connection_error(redis_broker, redis_worker):CODE
LOWtests/test_redis.py385def test_redis_consumer_nack_can_retry_on_connection_error(redis_broker, redis_worker):CODE
LOWtests/test_redis.py427def test_redis_consumer_nack_does_not_raise_on_missing_id(redis_worker):CODE
LOWtests/test_redis.py459def test_redis_join_race_condition(redis_broker):CODE
LOW⚡tests/conftest.py143def memcached_rate_limiter_backend():CODE
LOW⚡tests/conftest.py152def redis_rate_limiter_backend():CODE
LOW⚡tests/conftest.py160def stub_rate_limiter_backend():CODE
LOWtests/test_callbacks.py10def test_actors_can_define_success_callbacks(stub_broker, stub_worker):CODE
LOWtests/test_callbacks.py35def test_actors_can_define_failure_callbacks(stub_broker, stub_worker):CODE
LOWtests/test_callbacks.py60def test_actor_callbacks_raise_type_error_when_given_a_normal_callable(stub_broker):CODE
LOWtests/test_callbacks.py76def test_actor_callback_knows_correct_number_of_retries(stub_broker, stub_worker):CODE
LOWtests/test_common.py16def test_q_name_returns_canonical_names(given, expected):CODE
LOWtests/test_common.py28def test_dq_name_returns_canonical_delay_names(given, expected):CODE
LOWtests/test_common.py40def test_xq_name_returns_delay_names(given, expected):CODE
LOWtests/test_results.py15def test_actors_can_store_results(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py35def test_actors_results_are_backwards_compatible(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py57def test_use_namespace_prefix_keys_produces_readable_key(stub_broker, stub_worker):CODE
LOWtests/test_results.py89def test_use_namespace_prefix_keys_default_is_legacy_hash(stub_broker):CODE
LOWtests/test_results.py109def test_actors_can_store_exceptions(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py132def test_retrieving_a_result_can_raise_result_missing(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py152def test_retrieving_a_result_can_time_out(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py172def test_messages_can_get_results_from_backend(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py190def test_messages_can_get_results_from_inferred_backend(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py208def test_messages_without_actor_not_crashing_lookup_options(stub_broker, redis_result_backend):CODE
LOWtests/test_results.py219def test_messages_can_fail_to_get_results_if_there_is_no_backend(stub_broker, stub_worker):CODE
LOWtests/test_results.py234def test_actor_no_warning_when_returns_none(stub_broker, stub_worker):CODE
LOWtests/test_results.py254def test_actor_warning_when_returns_result_and_no_results_middleware_present(stub_broker, stub_worker):CODE
LOWtests/test_results.py274def test_actor_warning_when_returns_result_and_store_results_is_not_set(stub_broker, stub_worker):CODE
LOWtests/test_results.py297def test_actor_no_warning_when_returns_result_while_piping_and_store_results_is_not_set(stub_broker, stub_worker):CODE
LOWtests/test_results.py325def test_actor_no_warning_when_returns_result_while_piping(stub_broker, stub_worker):CODE
LOWtests/test_results.py350def test_actor_no_warning_when_returns_result_and_results_middleware_present(stub_broker, stub_worker, result_backend):CODE
LOWtests/test_results.py373def test_age_limit_skipped_messages_store_consistent_exceptions(stub_broker, stub_worker, result_backend):CODE
178 more matches not shown…
Self-Referential Comments57 hits · 169 pts
SeverityFileLineSnippetContext
MEDIUMsetup.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/worker.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/worker.py257 """This class is used as wrapper around MessageProxy when they are placed in a PriorityQueue.STRING
MEDIUMdramatiq/logging.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/canteen.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/compat.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/asyncio.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/generic.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/message.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/encoder.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/threading.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/cli.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/common.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/composition.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/errors.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/actor.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/broker.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/__main__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/retries.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/group_callbacks.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/asyncio.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/shutdown.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/current_message.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/threading.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/time_limit.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/prometheus.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/callbacks.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/pipelines.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/middleware.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/middleware/age_limit.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/brokers/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/brokers/redis.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/brokers/rabbitmq.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/brokers/stub.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/backend.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/result.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/errors.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/middleware.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/backends/memcached.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/backends/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/backends/redis.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/results/backends/stub.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/concurrent.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/backend.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/bucket.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/window.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/barrier.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/rate_limiter.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/backends/memcached.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/backends/__init__.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/backends/redis.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdramatiq/rate_limits/backends/stub.py1# This file is a part of Dramatiq.COMMENT
MEDIUMdocs/source/conf.py7# This file is execfile()d with the current directory set to itsCOMMENT
Unused Imports153 hits · 144 pts
SeverityFileLineSnippetContext
LOWsetup.py18CODE
LOWtests/test_generic_actors.py1CODE
LOWtests/test_concurrent_rate_limiter.py1CODE
LOWtests/test_redis.py1CODE
LOWtests/conftest.py1CODE
LOWtests/test_callbacks.py1CODE
LOWtests/test_common.py1CODE
LOWtests/test_results.py1CODE
LOWtests/test_encoders.py1CODE
LOWtests/test_canteen.py1CODE
LOWtests/test_pidfile.py1CODE
LOWtests/test_watch.py1CODE
LOWtests/test_actors.py1CODE
LOWtests/test_broker.py1CODE
LOWtests/test_barrier.py1CODE
LOWtests/test_composition.py1CODE
LOWtests/test_worker.py1CODE
LOWtests/common.py1CODE
LOWtests/test_window_rate_limiter.py1CODE
LOWtests/test_bucket_rate_limiter.py1CODE
LOWtests/test_cli.py1CODE
LOWtests/test_stub_broker.py1CODE
LOWtests/test_rabbitmq.py1CODE
LOWtests/test_types.py8CODE
LOWtests/test_messages.py1CODE
LOWtests/middleware/test_shutdown.py1CODE
LOWtests/middleware/test_retries.py1CODE
LOWtests/middleware/test_threading.py1CODE
LOWtests/middleware/test_time_limit.py1CODE
LOWtests/middleware/test_asyncio.py1CODE
LOWtests/middleware/test_prometheus.py1CODE
LOWtests/benchmarks/test_rabbitmq_cli.py1CODE
LOWtests/benchmarks/test_redis_cli.py1CODE
LOWdramatiq/worker.py18CODE
LOWdramatiq/logging.py18CODE
LOWdramatiq/canteen.py18CODE
LOWdramatiq/compat.py18CODE
LOWdramatiq/asyncio.py18CODE
LOWdramatiq/generic.py18CODE
LOWdramatiq/__init__.py18CODE
LOWdramatiq/__init__.py22CODE
LOWdramatiq/__init__.py22CODE
LOWdramatiq/__init__.py23CODE
LOWdramatiq/__init__.py23CODE
LOWdramatiq/__init__.py23CODE
LOWdramatiq/__init__.py23CODE
LOWdramatiq/__init__.py23CODE
LOWdramatiq/__init__.py24CODE
LOWdramatiq/__init__.py24CODE
LOWdramatiq/__init__.py25CODE
LOWdramatiq/__init__.py25CODE
LOWdramatiq/__init__.py25CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
LOWdramatiq/__init__.py26CODE
93 more matches not shown…
Docstring Block Structure15 hits · 75 pts
SeverityFileLineSnippetContext
HIGHdramatiq/asyncio.py120Runs the given coroutine on the event loop. Parameters: coro: The coroutine to run. Raises: STRING
HIGHdramatiq/message.py137Get the result associated with this message from a result backend. Warning: If you use multipSTRING
HIGHdramatiq/composition.py126Get the result of this pipeline. Pipeline results are represented by the result of the last message in STRING
HIGHdramatiq/composition.py152Get the results of each job in the pipeline. Parameters: block(bool): Whether or not to block until aSTRING
HIGHdramatiq/composition.py327Get the results of each job in the group. Parameters: block(bool): Whether or not to block until the STRING
HIGHdramatiq/actor.py87Build a message. This method is useful if you want to compose actors. See the actor composition documentation STRING
HIGHdramatiq/actor.py141Asynchronously send a message to this actor. Parameters: *args: Positional arguments to send to the aSTRING
HIGHdramatiq/actor.py182Synchronously call this actor. Parameters: *args: Positional arguments to send to the actor. STRING
HIGHdramatiq/actor.py249Declare an actor. Examples: >>> import dramatiq >>> @dramatiq.actor ... def add(x, y): ..STRING
HIGHdramatiq/broker.py196Get an iterator that consumes messages off of the queue. Raises: QueueNotFound: If the given queue waSTRING
HIGHdramatiq/broker.py245Look up an actor by its name. Parameters: actor_name(str): The name to look up. Raises: STRING
HIGHdramatiq/brokers/rabbitmq.py48A broker that can be used with RabbitMQ. Examples: If you want to specify connection parameters individuallySTRING
HIGHdramatiq/brokers/stub.py55Create a new consumer for a queue. Parameters: queue_name(str): The queue to consume. prefeSTRING
HIGHdramatiq/results/backend.py88Get a result from the backend. Parameters: message(Message) block(bool): Whether or not to STRING
HIGHdramatiq/results/backends/redis.py66Get a result from the backend. Warning: Sub-second timeouts are not respected by this backend. STRING
Over-Commented Block61 hits · 61 pts
SeverityFileLineSnippetContext
LOWsetup.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/worker.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/worker.py41#: The number of seconds to wait before retrying post_process_messageCOMMENT
LOWdramatiq/logging.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/canteen.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/compat.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/asyncio.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/asyncio.py161 # b) raise the Exception that happened in the future.COMMENT
LOWdramatiq/asyncio.py181 # (and subsequently raised from a future.result() call)COMMENT
LOWdramatiq/generic.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/message.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/encoder.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/threading.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/cli.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/common.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/composition.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/errors.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/actor.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/broker.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/__main__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/retries.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/group_callbacks.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/asyncio.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/shutdown.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/current_message.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/threading.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/time_limit.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/prometheus.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/callbacks.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/pipelines.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/middleware.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/middleware/age_limit.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/brokers/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/brokers/redis.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/brokers/rabbitmq.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/brokers/stub.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/backend.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/result.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/errors.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/middleware.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/backends/memcached.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/backends/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/backends/redis.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/results/backends/stub.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/concurrent.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/backend.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/bucket.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/window.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/barrier.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/rate_limiter.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/backends/memcached.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/backends/__init__.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/backends/redis.py1# This file is a part of Dramatiq.COMMENT
LOWdramatiq/rate_limits/backends/stub.py1# This file is a part of Dramatiq.COMMENT
LOWdocs/source/conf.py1#!/usr/bin/env python3COMMENT
LOWdocs/source/conf.py61author = "CLEARTYPE SRL"COMMENT
1 more matches not shown…
Empty Error Handlers10 hits · 50 pts
SeverityFileLineSnippetContext
HIGHtests/test_concurrent_rate_limiter.py64except RateLimitExceeded:CODE
HIGHtests/test_pidfile.py17except OSError:CODE
HIGHtests/middleware/test_shutdown.py17except ImportError:CODE
HIGHtests/middleware/test_time_limit.py17except ImportError:CODE
HIGHdramatiq/worker.py488except BrokerConnectionError:CODE
HIGHdramatiq/cli.py327except FileNotFoundError: # pragma: no coverCODE
HIGHdramatiq/cli.py324except FileNotFoundError:CODE
HIGHdramatiq/composition.py253except ResultMissing:CODE
HIGHdramatiq/brokers/rabbitmq.py243except pika.exceptions.AMQPError:CODE
HIGHexamples/persistent/example.py45except OSError:CODE
Cross-File Repetition7 hits · 35 pts
SeverityFileLineSnippetContext
HIGHdramatiq/broker.py0get all declared delay queues. returns: set[str]: the names of all the delay queues declared so far on this broker.STRING
HIGHdramatiq/brokers/redis.py0get all declared delay queues. returns: set[str]: the names of all the delay queues declared so far on this broker.STRING
HIGHdramatiq/brokers/rabbitmq.py0get all declared delay queues. returns: set[str]: the names of all the delay queues declared so far on this broker.STRING
HIGHdramatiq/broker.py0drop all the messages from a queue. parameters: queue_name(str): the queue to flush.STRING
HIGHdramatiq/brokers/redis.py0drop all the messages from a queue. parameters: queue_name(str): the queue to flush.STRING
HIGHdramatiq/brokers/rabbitmq.py0drop all the messages from a queue. parameters: queue_name(str): the queue to flush.STRING
HIGHdramatiq/brokers/stub.py0drop all the messages from a queue. parameters: queue_name(str): the queue to flush.STRING
Excessive Try-Catch Wrapping19 hits · 24 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py35 except Exception as e:CODE
MEDIUMtests/conftest.py32def check_rabbitmq(broker):CODE
LOWdramatiq/worker.py329 except Exception:CODE
LOWdramatiq/worker.py445 except Exception: # pragma: no coverCODE
LOWdramatiq/message.py118 except Exception as e:CODE
LOWdramatiq/broker.py118 except Exception:CODE
LOWdramatiq/broker.py126 except Exception:CODE
LOWdramatiq/middleware/time_limit.py128 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py183 except Exception:CODE
LOWdramatiq/brokers/rabbitmq.py212 except Exception:CODE
LOWdramatiq/brokers/rabbitmq.py246 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py552 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py566 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py624 except Exception:CODE
MEDIUMdramatiq/brokers/rabbitmq.py201def channel(self):CODE
MEDIUMdramatiq/brokers/rabbitmq.py555def nack(self, message):CODE
MEDIUMdramatiq/brokers/rabbitmq.py579def __next__(self):CODE
LOWexamples/persistent/example.py25 except Exception:CODE
MEDIUMexamples/persistent/example.py21def load_state(n):CODE
Deep Nesting18 hits · 18 pts
SeverityFileLineSnippetContext
LOWtests/test_window_rate_limiter.py13CODE
LOWtests/test_window_rate_limiter.py19CODE
LOWtests/test_bucket_rate_limiter.py11CODE
LOWdramatiq/worker.py296CODE
LOWdramatiq/worker.py542CODE
LOWdramatiq/asyncio.py119CODE
LOWdramatiq/cli.py383CODE
LOWdramatiq/cli.py413CODE
LOWdramatiq/composition.py258CODE
LOWdramatiq/middleware/group_callbacks.py46CODE
LOWdramatiq/brokers/redis.py334CODE
LOWdramatiq/brokers/stub.py146CODE
LOWdramatiq/rate_limits/backends/memcached.py59CODE
LOWdramatiq/rate_limits/backends/redis.py48CODE
LOWdramatiq/rate_limits/backends/redis.py65CODE
LOWdramatiq/rate_limits/backends/redis.py82CODE
LOWdocs/source/sitemap.py11CODE
LOWbenchmarks/bench.py104CODE
AI Response Leakage2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtests/test_composition.py420 # And I've added the GroupCallbacks middleware to my brokerCOMMENT
HIGHtests/test_composition.py477 # And I've added the GroupCallbacks middleware to my brokerCOMMENT
Modern Structural Boilerplate13 hits · 13 pts
SeverityFileLineSnippetContext
LOWdramatiq/asyncio.py28__all__ = [CODE
LOWdramatiq/asyncio.py50def set_event_loop_thread(thread: Optional[EventLoopThread]) -> None:CODE
LOWdramatiq/__init__.py45__all__ = [CODE
LOWdramatiq/message.py47def set_encoder(encoder: Encoder) -> None:CODE
LOWdramatiq/threading.py26__all__ = [CODE
LOWdramatiq/broker.py71def set_broker(broker: Broker) -> None:CODE
LOWdramatiq/middleware/__init__.py32__all__ = [CODE
LOWdramatiq/middleware/threading.py28__all__ = [CODE
LOWdramatiq/results/__init__.py24__all__ = [CODE
LOWdramatiq/results/backends/__init__.py24__all__ = ["StubBackend", "MemcachedBackend", "RedisBackend"]CODE
LOWdramatiq/rate_limits/__init__.py27__all__ = [CODE
LOWdramatiq/rate_limits/backends/__init__.py24__all__ = ["StubBackend", "MemcachedBackend", "RedisBackend"]CODE
LOW…les/use_actors_from_different_files/actors/__init__.py7__all__ = ["bar_task", "foo_task"]CODE