msgraph-sdk-python icon indicating copy to clipboard operation
msgraph-sdk-python copied to clipboard

JSON serialization exception when creating PlannerTask

Open Spaider opened this issue 2 years ago • 3 comments

Sample Python code from this documentation page does not work if any of datetime-typed fields initialized. Exception with message Object of type DateTime is not JSON serializable is thrown.

Non-working code:

graph_client = GraphServiceClient(credentials, scopes)

request_body = PlannerTask(
	plan_id = "xqQg5FS2LkCp935s-FIFm2QAFkHM",
	bucket_id = "hsOf2dhOJkqyYYZEtdzDe2QAIUCR",
	title = "Update client list",
	assignments = PlannerAssignments(
		additional_data = {
				"fbab97d0-4932-4511-b675-204639209557" : {
						"@odata_type" : "#microsoft.graph.plannerAssignment",
						"order_hint" : " !",
				},
		}
	),
	due_date_time = datetime(2023, 12, 31)         
)

result = await graph_client.planner.tasks.post(request_body)

Spaider avatar Dec 19 '23 18:12 Spaider

After more thorough testing I figured that problem is not in due date or start date for task. Error Object of type DateTime is not JSON serializable is thrown appears when I set assignedDateTime for assignments

Spaider avatar Dec 20 '23 15:12 Spaider

Hi @Spaider, Thanks for trying out the SDK. Are you able to confirm if this issue is present in v1.5.1 of the python SDK

rkodev avatar Jul 10 '24 11:07 rkodev

@rkodev @fey101 unfortunately it still does not work but for a different reason. When I run sample code, it fails to serialize assignments.additional_data with exception TypeError: Encountered an unknown type during serialization <class 'dict'> with key

Here's the full stack trace:

Traceback (most recent call last):
  File "/Users/admin/Projects/GitLab/its-planner-migration/its_planner_migration/main.py", line 92, in <module>
    asyncio.run(test())
  File "/opt/homebrew/Cellar/[email protected]/3.11.8/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/[email protected]/3.11.8/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/[email protected]/3.11.8/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/Users/admin/Projects/GitLab/its-planner-migration/its_planner_migration/main.py", line 65, in test
    await graph.create_task(PlannerTask(
  File "/Users/admin/Projects/GitLab/its-planner-migration/its_planner_migration/graph.py", line 95, in create_task
    result = await self.client.planner.tasks.post(task)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/msgraph/generated/planner/tasks/tasks_request_builder.py", line 78, in post
    request_info = self.to_post_request_information(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/msgraph/generated/planner/tasks/tasks_request_builder.py", line 127, in to_post_request_information
    request_info.set_content_from_parsable(self.request_adapter, "application/json", body)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_abstractions/request_information.py", line 179, in set_content_from_parsable
    writer.write_object_value(None, values)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_serialization_json/json_serialization_writer.py", line 285, in write_object_value
    self._serialize_value(temp_writer, value)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_serialization_json/json_serialization_writer.py", line 462, in _serialize_value
    value.serialize(temp_writer)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/msgraph/generated/models/planner_task.py", line 155, in serialize
    writer.write_object_value("assignments", self.assignments)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_serialization_json/json_serialization_writer.py", line 285, in write_object_value
    self._serialize_value(temp_writer, value)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_serialization_json/json_serialization_writer.py", line 462, in _serialize_value
    value.serialize(temp_writer)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/msgraph/generated/models/planner_assignments.py", line 47, in serialize
    writer.write_additional_data_value(self.additional_data)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_serialization_json/json_serialization_writer.py", line 330, in write_additional_data_value
    self.write_any_value(key, val)
  File "/Users/admin/.virtualenvs/tobedeleted/lib/python3.11/site-packages/kiota_serialization_json/json_serialization_writer.py", line 451, in write_any_value
    raise TypeError(
TypeError: Encountered an unknown type during serialization <class 'dict'>                     with key <key-redacted>

I was not able to pinpoint the actual version when this new exception starts to appear. What I've checked is:

  • versions up to 1.0.0rc1 (pre-release) does not have this exception. They have different problems, including original exception from this topic
  • versions from 1.0.0 start to throw Encountered an unknown type during serialization <class 'dict'> exception

Thus, I am still not able to validate this bug.

Spaider avatar Jul 11 '24 13:07 Spaider