Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
# ------------------------------------------------------------------------------

from collections.abc import Callable
from typing import Optional

from .parsable import Parsable
from .parse_node import ParseNode
Expand All @@ -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")
Expand Down Expand Up @@ -57,15 +58,15 @@ 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):
original_before(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):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,23 +62,23 @@ 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:
original_before(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:
original_after(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:
Expand Down
1 change: 1 addition & 0 deletions packages/abstractions/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ name = "kiota_abstractions"

[tool.mypy]
warn_unused_configs = true
strict = true
files = "kiota_abstractions"

[tool.yapf]
Expand Down
Loading