{"library":"microsoft-kiota-serialization-form","title":"Microsoft Kiota Serialization Form","description":"microsoft-kiota-serialization-form is part of the Microsoft Kiota ecosystem, providing a serialization and deserialization factory for `application/x-www-form-urlencoded` content types in Python. It's used by Kiota-generated API clients and custom applications to handle form data. It is currently at version 1.10.1 and follows Kiota's frequent release cadence.","language":"python","status":"active","last_verified":"Wed May 13","install":{"commands":["pip install microsoft-kiota-serialization-form"],"cli":null},"imports":["from microsoft_kiota_serialization_form import FormSerializationWriterFactory","from microsoft_kiota_serialization_form import FormParseNodeFactory"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from typing import Callable, Dict, Optional\nfrom microsoft_kiota_abstractions.serialization import AdditionalDataHolder, Parsable, ParseNode, SerializationWriter\nfrom microsoft_kiota_serialization_form import FormParseNodeFactory, FormSerializationWriterFactory\n\n# 1. Define a simple model that implements Kiota's Parsable and AdditionalDataHolder\nclass MyFormModel(Parsable, AdditionalDataHolder):\n    def __init__(self) -> None:\n        self._my_string: Optional[str] = None\n        self._my_int: Optional[int] = None\n        self._additional_data: Dict[str, object] = {}\n\n    @property\n    def my_string(self) -> Optional[str]:\n        return self._my_string\n\n    @my_string.setter\n    def my_string(self, value: Optional[str]) -> None:\n        self._my_string = value\n\n    @property\n    def my_int(self) -> Optional[int]:\n        return self._my_int\n\n    @my_int.setter\n    def my_int(self, value: Optional[int]) -> None:\n        self._my_int = value\n\n    @property\n    def additional_data(self) -> Dict[str, object]:\n        return self._additional_data\n\n    @additional_data.setter\n    def additional_data(self, value: Dict[str, object]) -> None:\n        self._additional_data = value\n\n    def get_field_deserializers(self) -> Dict[str, Callable[[ParseNode], None]]:\n        return {\n            \"myString\": lambda n: setattr(self, 'my_string', n.get_str_value()),\n            \"myInt\": lambda n: setattr(self, 'my_int', n.get_int_value())\n        }\n\n    def serialize(self, writer: SerializationWriter) -> None:\n        writer.write_str_value(\"myString\", self.my_string)\n        writer.write_int_value(\"myInt\", self.my_int)\n        writer.write_additional_data_value(self.additional_data)\n\n# 2. Instantiate and populate the model\nmodel_to_serialize = MyFormModel()\nmodel_to_serialize.my_string = \"Kiota Form Test\"\nmodel_to_serialize.my_int = 42\nmodel_to_serialize.additional_data[\"version\"] = \"1.0\"\n\n# 3. Use FormSerializationWriterFactory to serialize the model\nwriter_factory = FormSerializationWriterFactory()\nwriter = writer_factory.get_serialization_writer(\"application/x-www-form-urlencoded\")\nwriter.write_object_value(None, model_to_serialize)\nserialized_content = writer.get_serialized_content()\n\nprint(f\"Serialized Form Data: {serialized_content.decode('utf-8')}\")\n\n# 4. Use FormParseNodeFactory to deserialize the content back into a model\nparser_factory = FormParseNodeFactory()\nparse_node = parser_factory.get_parse_node(\"application/x-www-form-urlencoded\", serialized_content)\n\ndeserialized_model = parse_node.get_object_value(MyFormModel)\n\nprint(f\"Deserialized my_string: {deserialized_model.my_string}\")\nprint(f\"Deserialized my_int: {deserialized_model.my_int}\")\nprint(f\"Deserialized additional_data: {deserialized_model.additional_data}\")","lang":"python","description":"This example demonstrates how to serialize a Python object into `application/x-www-form-urlencoded` format and then deserialize it back, using `FormSerializationWriterFactory` and `FormParseNodeFactory`. It requires defining a data model that implements Kiota's `Parsable` interface.","tag":null,"tag_description":null,"last_tested":"2026-04-24","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]},"compatibility":{"tag":"stale","tag_description":"widespread failures or data too old to trust","last_tested":"2026-05-13","installed_version":"1.9.10","pypi_latest":"1.10.1","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":2.2,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"23.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2.2,"import_time_s":null,"mem_mb":null,"disk_size":"24M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"25.5M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2.3,"import_time_s":null,"mem_mb":null,"disk_size":"26M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"17.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2.1,"import_time_s":null,"mem_mb":null,"disk_size":"18M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"17.0M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":"17M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"22.6M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2.5,"import_time_s":null,"mem_mb":null,"disk_size":"23M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"microsoft-kiota-serialization-form","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}