code: def get_parent_limits(
      ts_to_table_operations: list,
      ts_data_operations: list,
      non_ts_data_operations: list,
      ts_models: list,
  ) -> (dict, list):
      """
      Function that return some constraints on number of parents for time series forecasting graphs
  
      :param ts_to_table_operations: list of ts_to_table operations
      :param ts_data_operations: list of ts data operations
      :param non_ts_data_operations: list of non ts data operations
      :param ts_models: list of ts models
      :return: dict with parent limits and list with operations that must have a parent
      """
      limit_ts_model_data_op_parents_count = {
          ts_model_op: 1
          for ts_model_op in ts_models
          + ts_data_operations
          + ts_to_table_operations
      }
  
      limit_decompose_parents_count = {"decompose": 1}
  
      limit_parents_count = {
          **limit_ts_model_data_op_parents_count,
          **limit_decompose_parents_count,
      }
      need_to_have_parent = [op for op in non_ts_data_operations]
      return limit_parents_count, need_to_have_parent
  
imports: from typing import Optional
  from fedot.core.operations.atomized_model import AtomizedModel
  from fedot.core.operations.model import Model
  from fedot.core.pipelines.node import PipelineNode
  from fedot.core.pipelines.pipeline import Pipeline
  from fedot.core.repository.dataset_types import DataTypesEnum
  from fedot.core.repository.operation_types_repository import OperationTypesRepository, get_operations_for_task, atomized_model_type
  from fedot.core.repository.tasks import Task, TaskTypesEnum
label_desc: Use image node_id 9 for calling a global function with example usage: get_parent_limits(ts_to_table_operations, ts_data_operations, non_ts_data_operations, ts_models) and returns: limit_parents_count,  need_to_have_parent