code: def encoder(
      self, enc: _typing.Union[BaseEncoderMaintainer, str, None]
  ):
      if isinstance(enc, str):
          if enc in EncoderUniversalRegistry:
              if self.node_level:
                  self._encoder = EncoderUniversalRegistry.get_encoder(
                      enc
                  )(
                      self.num_features,
                      final_dimension=self.last_dim,
                      device=self.device,
                      init=self.initialized,
                  )
              elif self.graph_level:
                  self._encoder = EncoderUniversalRegistry.get_encoder(
                      enc
                  )(
                      self.num_features,
                      final_dimension=self.last_dim,
                      num_graph_featues=self.num_graph_features,
                      device=self.device,
                      init=self.initialized,
                  )
          else:
              raise NotImplementedError(
                  f"Sorry. Encoder {enc} is not supported yet."
              )
      elif isinstance(enc, BaseEncoderMaintainer):
          self._encoder = enc
      elif enc is None:
          self._encoder = None
      else:
          raise NotImplementedError(
              f"Sorry. Encoder {enc} is not supported yet."
          )
      self.num_features = self.num_features
      self.last_dim = self.last_dim
      self.num_graph_features = self.num_graph_features
  
imports: import os
  import torch
  import torch_geometric
  import logging
  import numpy
  import typing
  from tqdm import trange
  from typing import Union, Tuple, Sequence, Type, Callable
  import torch.nn.functional
  import torch.utils.data
  from torch.optim.lr_scheduler import StepLR, MultiStepLR, ExponentialLR, ReduceLROnPlateau
  from .losses import NTXent_loss
  from .utils import get_view_by_name
  from autogl.module.model.encoders.base_encoder import AutoHomogeneousEncoderMaintainer
  from ..base import BaseTrainer, EarlyStopping, _DummyModel
  from ..evaluation import Evaluation, get_feval, Acc
  from ...model import BaseAutoModel, BaseEncoderMaintainer, BaseDecoderMaintainer, EncoderUniversalRegistry, DecoderUniversalRegistry
  from ....utils import get_logger
  from ....datasets import utils
label_desc: Use image node_id 4 for calling the BaseContrastiveTrainer obj's underlying member method code with example usage: obj.encoder(enc) without return types