From 3926998d79418a2948f3d5898b7ea8ffe4af7756 Mon Sep 17 00:00:00 2001 From: HardMax71 Date: Thu, 15 Oct 2026 17:57:25 +0200 Subject: [PATCH] fix(abstractions): pass mypy --strict in the proxy factories and turn on strict for kiota_abstractions Annotate the callbacks in ParseNodeProxyFactory and SerializationWriterProxyFactory. ParseNodeProxyFactory took on_before and on_after as required callables but already skipped them when they were None, so they're Optional now, as in SerializationWriterProxyFactory. kiota_abstractions has no strict errors left, so its [tool.mypy] gets strict = true. Part of #722. --- .../serialization/parse_node_proxy_factory.py | 15 ++++++++------- .../serialization_writer_proxy_factory.py | 6 +++--- packages/abstractions/pyproject.toml | 1 + 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/abstractions/kiota_abstractions/serialization/parse_node_proxy_factory.py b/packages/abstractions/kiota_abstractions/serialization/parse_node_proxy_factory.py index 2552515c..421326fb 100644 --- a/packages/abstractions/kiota_abstractions/serialization/parse_node_proxy_factory.py +++ b/packages/abstractions/kiota_abstractions/serialization/parse_node_proxy_factory.py @@ -5,6 +5,7 @@ # ------------------------------------------------------------------------------ from collections.abc import Callable +from typing import Optional from .parsable import Parsable from .parse_node import ParseNode @@ -16,18 +17,18 @@ class ParseNodeProxyFactory(ParseNodeFactory): """ def __init__( - self, concrete: ParseNodeFactory, on_before: Callable[[Parsable], None], - on_after: Callable[[Parsable], None] + self, concrete: ParseNodeFactory, on_before: Optional[Callable[[Parsable], None]], + on_after: Optional[Callable[[Parsable], None]] ) -> None: """Creates a new proxy factory that wraps the specified concrete factory while composing the before and after callbacks. Args: concrete (ParseNodeFactory): The concrete factory to wrap. - on_before (Callable[[Parsable], None]): The callback to invoke before the + on_before (Optional[Callable[[Parsable], None]]): The callback to invoke before the + deserialization of any model object. + on_after (Optional[Callable[[Parsable], None]]): The callback to invoke after the deserialization of any model object. - on_after (Callable[[Parsable], None]): The callback to invoke after the deserialization - of any model object. """ if not concrete: raise ValueError("Concrete factory cannot be None") @@ -57,7 +58,7 @@ def get_root_parse_node(self, content_type: str, content: bytes) -> ParseNode: original_before = node.on_before_assign_field_values original_after = node.on_after_assign_field_values - def before_callback(value): + def before_callback(value: Parsable) -> None: if self._on_before: self._on_before(value) if callable(original_before): @@ -65,7 +66,7 @@ def before_callback(value): node.on_before_assign_field_values = before_callback - def after_callback(value): + def after_callback(value: Parsable) -> None: if self._on_after: self._on_after(value) if callable(original_after): diff --git a/packages/abstractions/kiota_abstractions/serialization/serialization_writer_proxy_factory.py b/packages/abstractions/kiota_abstractions/serialization/serialization_writer_proxy_factory.py index 5b0228c0..7facdc11 100644 --- a/packages/abstractions/kiota_abstractions/serialization/serialization_writer_proxy_factory.py +++ b/packages/abstractions/kiota_abstractions/serialization/serialization_writer_proxy_factory.py @@ -62,7 +62,7 @@ def get_serialization_writer(self, content_type: str) -> SerializationWriter: original_after = writer.on_after_object_serialization original_start = writer.on_start_object_serialization - def before_callback(value): + def before_callback(value: Parsable) -> None: if self._on_before: self._on_before(value) if original_before: @@ -70,7 +70,7 @@ def before_callback(value): writer.on_before_object_serialization = before_callback - def after_callback(value): + def after_callback(value: Parsable) -> None: if self._on_after: self._on_after(value) if original_after: @@ -78,7 +78,7 @@ def after_callback(value): writer.on_after_object_serialization = after_callback - def start_callback(value1, value2): + def start_callback(value1: Parsable, value2: SerializationWriter) -> None: if self._on_start: self._on_start(value1, value2) if original_start: diff --git a/packages/abstractions/pyproject.toml b/packages/abstractions/pyproject.toml index e7fd22ad..a55b6eac 100644 --- a/packages/abstractions/pyproject.toml +++ b/packages/abstractions/pyproject.toml @@ -38,6 +38,7 @@ name = "kiota_abstractions" [tool.mypy] warn_unused_configs = true +strict = true files = "kiota_abstractions" [tool.yapf]