Microsoft Kiota Abstractions (Python)

1.10.1 · active · verified Thu Apr 09

The `microsoft-kiota-abstractions` library provides core interfaces and base classes for Python SDKs generated by Microsoft Kiota. These abstractions define how HTTP requests are built, how data is serialized and deserialized, and the fundamental structure for models used in API clients. It is currently at version 1.10.1 and follows a frequent release cadence, often synchronized with other Kiota Python packages.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to implement the `Parsable` interface, a core abstraction for data models in Kiota. While typically Kiota generates these implementations, understanding `get_field_deserializers` and `serialize` is fundamental when working with or extending Kiota-generated SDKs. This example defines a simple model with string and datetime fields.

import datetime
from typing import Dict, Optional

from kiota_abstractions.serialization import Parsable, ParseNode, SerializationWriter


class MySimpleModel(Parsable):
    """Represents a simple data model implementing Parsable."""

    def __init__(self) -> None:
        self._id: Optional[str] = None
        self._name: Optional[str] = None
        self._created_at: Optional[datetime.datetime] = None

    @property
    def id(self) -> Optional[str]:
        return self._id

    @id.setter
    def id(self, value: Optional[str]) -> None:
        self._id = value

    @property
    def name(self) -> Optional[str]:
        return self._name

    @name.setter
    def name(self, value: Optional[str]) -> None:
        self._name = value

    @property
    def created_at(self) -> Optional[datetime.datetime]:
        return self._created_at

    @created_at.setter
    def created_at(self, value: Optional[datetime.datetime]) -> None:
        self._created_at = value

    def get_field_deserializers(self) -> Dict[str, callable]:
        """The deserialization information for the current model"""
        return {
            "id": lambda n: setattr(self, 'id', n.get_str_value()),
            "name": lambda n: setattr(self, 'name', n.get_str_value()),
            "createdAt": lambda n: setattr(self, 'created_at', n.get_datetime_value())
        }

    def serialize(self, writer: SerializationWriter) -> None:
        """Serializes information the current object"""
        if not writer:
            raise TypeError("writer cannot be None")
        writer.write_str_value("id", self.id)
        writer.write_str_value("name", self.name)
        writer.write_datetime_value("createdAt", self.created_at)


# Example usage (typically handled by Kiota-generated code)
model = MySimpleModel()
model.id = "123"
model.name = "Test Model"
model.created_at = datetime.datetime.now(datetime.timezone.utc)

print(f"Model ID: {model.id}, Name: {model.name}, Created At: {model.created_at}")

view raw JSON →