code: def test_serialization_to_dict(self):
      classes = {cls for cls in all_subclasses(Operation)}
      # drop abstract classes
      for cls in classes.copy():
          if inspect.isabstract(cls):
              classes.remove(cls)
  
      # test every Operation subclass and drop from `classes`
      for obj in self._list_objects():
          if obj.__class__ in classes:
              classes.remove(obj.__class__)
          deserialized_obj = Operation.from_dict(
              json.loads(json.dumps(obj.to_dict()))
          )
          self.assertEqual(obj.__dict__, deserialized_obj.__dict__)
  
      # expect no Operation subclass left
      self.assertEqual(classes, set())
  
file_path: neptune-client/tests/unit/neptune/new/internal/test_operations.py
imports: import inspect
  import json
  import unittest
  import uuid
  from neptune.attributes import Integer
  from neptune.internal.operation import AddStrings, AssignArtifact, AssignBool, AssignDatetime, AssignFloat, AssignInt, AssignString, ClearArtifact, ClearFloatLog, ClearImageLog, ClearStringLog, ClearStringSet, ConfigFloatSeries, ContainerType, CopyAttribute, DeleteAttribute, DeleteFiles, ImageValue, LogFloats, LogImages, LogStrings, Operation, RemoveStrings, TrackFilesToArtifact, UploadFile, UploadFileContent, UploadFileSet, all_subclasses, datetime
label_desc: Use image node_id 1 for calling the TestOperations obj's underlying member method code with example usage: obj.test_serialization_to_dict() without return types