docstr: Config property getter, loads config file if not already loaded and
  returns json object
docstr_tok: ["Config","property","getter",",","loads","config","file","if","not","already","loaded","and","returns","json","object"]
code: def config(self):
      """
      Config property getter, loads config file if not already loaded and
      returns json object
      """
      if len(self._config) == 0:
          if os.path.isfile(self.config_path):
              with open(self.config_path, "r") as f:
                  config = json.load(f)
              self._config = config
      return self._config
  
file_path: aim/aim/cli/upgrade/_legacy_repo/repo/repo.py
imports: import os
  import json
  import re
  import hashlib
  from aim.sdk.configs import get_aim_repo_name
  from aim.sdk.utils import clean_repo_path
  from aim.cli.upgrade._legacy_repo.repo.utils import get_experiment_run_path
  from aim.cli.upgrade._legacy_repo.configs import AIM_CONFIG_FILE_NAME, AIM_COMMIT_INDEX_DIR_NAME
label_desc: Use image node_id 3 for calling the AimRepo obj's underlying member method code with example usage: obj.config() and returns: self