Repository Analysis

Bogdanp/dramatiq

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

47.9 Strong AI signal View on GitHub

Analysis Overview

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).

47.9
Adjusted Score
47.9
Raw Score
100%
Time Factor
2026-07-31
Last Push
5.3K
Stars
Python
Language
16.5K
Lines of Code
150
Files
580
Pattern Hits
2026-08-02
Scan Date
0.16
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

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.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 0HIGH 24MEDIUM 62LOW 494

Directory Score Breakdown

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.

Pattern Findings

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.

Hyper-Verbose Identifiers236 hits · 236 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
LOWtests/conftest.py143def memcached_rate_limiter_backend():CODE
LOWtests/conftest.py152def redis_rate_limiter_backend():CODE
LOWtests/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
176 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.py121Runs 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.py198Get an iterator that consumes messages off of the queue. Raises: QueueNotFound: If the given queue waSTRING
HIGHdramatiq/broker.py247Look up an actor by its name. Parameters: actor_name(str): The name to look up. Raises: STRING
HIGHdramatiq/brokers/rabbitmq.py47A 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 Block60 hits · 60 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 # There are 3 possibilities here: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
LOWdocs/source/conf.py141COMMENT
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.py120 except Exception:CODE
LOWdramatiq/broker.py128 except Exception:CODE
LOWdramatiq/middleware/time_limit.py128 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py184 except Exception:CODE
LOWdramatiq/brokers/rabbitmq.py213 except Exception:CODE
LOWdramatiq/brokers/rabbitmq.py247 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py553 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py567 except Exception: # pragma: no coverCODE
LOWdramatiq/brokers/rabbitmq.py621 except Exception:CODE
MEDIUMdramatiq/brokers/rabbitmq.py202def channel(self):CODE
MEDIUMdramatiq/brokers/rabbitmq.py556def nack(self, message):CODE
MEDIUMdramatiq/brokers/rabbitmq.py580def __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.py120CODE
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.py29__all__ = [CODE
LOWdramatiq/asyncio.py51def 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.py73def 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