Skip to content
CAI
Software that uses CAICheck a score

ozgurkara/pydiator-core

58.6

Adequate · 21 September 2026

781

lines of production code

Python

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Python implementation of the Mediator pattern, designed to manage request and notification handling through a pluggable pipeline architecture. It supports both synchronous and asynchronous handlers, featuring a modular design for logging, caching, and serialization. The library provides a configurable mediator that integrates with dependency injection containers and allows for custom pipeline extensions.

Features

Added example scripts for request handling and notification publishing

New example files (main.py and notification.py) demonstrate how to use the library's core features: main.py shows setting up a request/response flow with a logging pipeline, while notification.py illustrates publishing events to multiple subscribers.

examples · high confidence

Behavioural changes

Adds logging, serialization, and synchronous handler support

The core now supports synchronous handlers by detecting coroutine status and executing them directly, while also accepting \*\kwargs\\* in the pipeline handle method. A new logger abstraction (BaseLogger/Logger) is introduced, allowing users to configure custom logging via the Mediatr ready method. Serialization is refactored to use a factory pattern (BaseSerializer/SerializerFactory), enabling pluggable serializers. Additionally, the container registration logic is updated to use a get\_class\_name method for identifying request and notification types.

_pydiator\core · medium confidence

Refactor pipeline handling to support kwargs and dynamic serialization

The cache and log pipelines now accept and forward \*\kwargs\\* to the next handler in the chain, enabling more flexible request/response handling. Additionally, the pipelines now use a \*\SerializerFactory\\* to obtain serializers, allowing for more dynamic serialization strategies. Error messages have been updated to be more descriptive, and the log pipeline now uses a dedicated logger instead of printing to stdout.

_pydiator\core/pipelines · medium confidence

Updated package metadata and configuration files

The package name was changed from 'pydiator\_core' to 'pydiator-core' and the version was bumped to 1.0.12. Additionally, new configuration files were added: .coveragerc for Python coverage settings, .coveralls.yml for Coveralls CI integration, and an updated .gitignore to exclude build artifacts and IDE files.

(repo-wide) · high confidence

Test coverage

Added test coverage for serialization, pipeline, and mediator components; Added tests for cache and log pipeline error handling and serialization.

Dependencies

Test dependencies moved to dedicated requirements file

Test-related Python packages (pytest, coverage) have been moved from the main project's requirements.txt to a new tests/requirements.txt file, while the main requirements.txt has been cleared of test dependencies.

(dependencies) · medium confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 55 → 59 (+3.3)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 98 → 99 (+0.8)
  • Architecture 69 → 69 (+0.0)
  • Maturity 53 → 53 (+0.0)
  • Readiness 49 → 53 (+3.7)
  • Security 59 → 70 (+10.8)

Resolved (13)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Test reliability not included
  • The 'How it works?' section is cut by the scanner; only Request and Response objects are shown before the clip. (README.md)
  • The 'What is the pydiator?' section lists advantages but does not explain the Pydiator architecture or how requests are registered to pipelines. (README.md)
  • single-maintainer — knowledge-concentration (bus factor) risk

New (16)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • No dependency advisory monitoring

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

ozgurkara/pydiator-core was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 5aec2f61c8489210135dc69f35ed5f1a600551a0 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.