A fast and reliable background task processing library for Python 3.
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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 391 finding(s).
Are imports declared and package/API names verified? 153 finding(s).
Are wrappers, guards, and repeated structures necessary? 287 finding(s).
Which changes need focused human review? 593 finding(s).
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.
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.
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.
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.
| 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 |
| 178 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 | 120 | 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 | 196 | Get an iterator that consumes messages off of the queue. Raises: QueueNotFound: If the given queue wa | STRING |
| HIGH | dramatiq/broker.py | 245 | Look up an actor by its name. Parameters: actor_name(str): The name to look up. Raises: | STRING |
| HIGH | dramatiq/brokers/rabbitmq.py | 48 | 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 | # b) raise the Exception that happened in the future. | COMMENT |
| LOW | dramatiq/asyncio.py | 181 | # (and subsequently raised from a future.result() call) | 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 |
| 1 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_concurrent_rate_limiter.py | 64 | except RateLimitExceeded: | CODE |
| HIGH | tests/test_pidfile.py | 17 | except OSError: | CODE |
| HIGH | tests/middleware/test_shutdown.py | 17 | except ImportError: | CODE |
| HIGH | tests/middleware/test_time_limit.py | 17 | except ImportError: | CODE |
| HIGH | dramatiq/worker.py | 488 | except BrokerConnectionError: | CODE |
| HIGH | dramatiq/cli.py | 327 | except FileNotFoundError: # pragma: no cover | CODE |
| HIGH | dramatiq/cli.py | 324 | except FileNotFoundError: | CODE |
| HIGH | dramatiq/composition.py | 253 | except ResultMissing: | CODE |
| HIGH | dramatiq/brokers/rabbitmq.py | 243 | except pika.exceptions.AMQPError: | CODE |
| HIGH | examples/persistent/example.py | 45 | except OSError: | CODE |
| 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 | 118 | except Exception: | CODE |
| LOW | dramatiq/broker.py | 126 | except Exception: | CODE |
| LOW | dramatiq/middleware/time_limit.py | 128 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 183 | except Exception: | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 212 | except Exception: | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 246 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 552 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 566 | except Exception: # pragma: no cover | CODE |
| LOW | dramatiq/brokers/rabbitmq.py | 624 | except Exception: | CODE |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 201 | def channel(self): | CODE |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 555 | def nack(self, message): | CODE |
| MEDIUM | dramatiq/brokers/rabbitmq.py | 579 | 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 | 119 | 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 | 28 | __all__ = [ | CODE |
| LOW | dramatiq/asyncio.py | 50 | 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 | 71 | 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 |