code: def __init__(
      self,
      session_id: Optional[str] = None,
      data_dir=None,
      logger_config: Optional[dict] = None,
      options: Optional[dict] = None,
  ):
      if session_id is None:
          session_id = generate_computing_uuid()
      if data_dir is None:
          raise ValueError("data_dir is None")
      if options is None:
          options = {}
      max_workers = options.get("task_cores", None)
      self._session = Session(
          session_id,
          data_dir=data_dir,
          max_workers=max_workers,
          logger_config=logger_config,
      )
  
file_path: FATE/python/fate/arch/computing/backends/standalone/_csession.py
imports: import logging
  from typing import Optional
  from fate.arch.computing.api import KVTableContext, generate_computing_uuid
  from fate.arch.unify import URI, uuid
  from ._standalone import Session
  from ._table import Table
label_desc: Use image node_id 1 to create a new CSession object from inherited base classes: KVTableContext with example: obj = CSession(session_id, data_dir, logger_config, options)