code: def test_in_memory_action_graph_store_set_get_delete_no_mutations(
      in_mem_graph_store: InMemoryActionGraphStore,
      verify_key: SyftVerifyKey,
  ) -> None:
      """
      Test these methods of InMemoryActionGraphStore: set, get, delete, nodes, edges, is_parent
      when there is no mutations.
      """
      # add the first node
      action_obj_node: NodeActionData = create_action_obj_node(
          verify_key
      )
      result = in_mem_graph_store.set(
          action_obj_node, credentials=verify_key
      )
      assert result.ok() == action_obj_node
      assert len(in_mem_graph_store.nodes(verify_key).ok()) == 1
      assert len(in_mem_graph_store.edges(verify_key).ok()) == 0
      assert (
          in_mem_graph_store.get(action_obj_node.id, verify_key).ok()
          == action_obj_node
      )
  
      # add the second node which is the child of the first node
      action_node: NodeActionData = create_action_node(verify_key)
      result2 = in_mem_graph_store.set(
          action_node,
          credentials=verify_key,
          parent_uids=[action_obj_node.id],
      )
      assert result2.ok() == action_node
      assert len(in_mem_graph_store.nodes(verify_key).ok()) == 2
      assert len(in_mem_graph_store.edges(verify_key).ok()) == 1
      assert (
          in_mem_graph_store.get(action_node.id, verify_key).ok()
          == action_node
      )
      assert (
          in_mem_graph_store.is_parent(
              parent=action_obj_node.id, child=action_node.id
          ).ok()
          is True
      )
  
      # add the third node which is the child of the first and second node
      action_node_2: NodeActionData = create_action_node(verify_key)
      result3 = in_mem_graph_store.set(
          action_node_2,
          credentials=verify_key,
          parent_uids=[action_obj_node.id, action_node.id],
      )
      assert result3.ok() == action_node_2
      assert len(in_mem_graph_store.nodes(verify_key).ok()) == 3
      assert len(in_mem_graph_store.edges(verify_key).ok()) == 3
      assert (
          in_mem_graph_store.get(action_node_2.id, verify_key).ok()
          == action_node_2
      )
      assert (
          in_mem_graph_store.is_parent(
              parent=action_obj_node.id, child=action_node_2.id
          ).ok()
          is True
      )
      assert (
          in_mem_graph_store.is_parent(
              parent=action_node.id, child=action_node_2.id
          ).ok()
          is True
      )
      assert (
          in_mem_graph_store.is_parent(
              parent=action_node_2.id, child=action_node.id
          ).ok()
          is False
      )
  
      # delete the first node
      result4 = in_mem_graph_store.delete(
          action_obj_node.id, verify_key
      )
      assert result4.ok() is True
      assert len(in_mem_graph_store.nodes(verify_key).ok()) == 2
      assert len(in_mem_graph_store.edges(verify_key).ok()) == 1
      assert (
          in_mem_graph_store.is_parent(
              parent=action_node.id, child=action_node_2.id
          ).ok()
          is True
      )
      # trying to get the deleted note should result in an Err
      assert isinstance(
          in_mem_graph_store.get(action_obj_node.id, verify_key), Err
      )
  
imports: import os
  from pathlib import Path
  import tempfile
  from threading import Thread
  import networkx
  from result import Err
  from syft.node.credentials import SyftVerifyKey
  from syft.service.action.action_graph import ExecutionStatus
  from syft.service.action.action_graph import InMemoryActionGraphStore
  from syft.service.action.action_graph import InMemoryGraphConfig
  from syft.service.action.action_graph import InMemoryStoreClientConfig
  from syft.service.action.action_graph import NetworkXBackingStore
  from syft.service.action.action_graph import NodeActionData
  from syft.service.action.action_graph import NodeActionDataUpdate
  from syft.service.action.action_graph import NodeType
  from syft.service.action.action_graph_service import ExecutionStatusPartitionKey
  from syft.service.action.action_object import Action
  from syft.service.action.action_object import ActionObject
  from syft.store.document_store import QueryKeys
  from syft.store.locks import NoLockingConfig
  from syft.types.datetime import DateTime
  from syft.types.syft_metaclass import Empty
  from syft.types.uid import UID
  from .fixtures import create_action_node
  from .fixtures import create_action_obj_node
label_desc: Use image node_id 13 for calling a global function with example usage: test_in_memory_action_graph_store_set_get_delete_no_mutations(in_mem_graph_store, verify_key) without return types