docs: def from_file(cls, config_path=None, *args, **kwargs):
          """
          Create a Cihai instance from a JSON or YAML config.
  
          Parameters
          ----------
          config_path : str, optional
              path to custom config file
  
          Returns
          -------
          :class:`Cihai` :
              application object
          """
  
          config_reader = kaptan.Kaptan()
  
          config = {}
  
          if config_path:
              if not os.path.exists(config_path):
                  raise exc.CihaiException(
                      '{0} does not exist.'.format(os.path.abspath(config_path))
                  )
              if not any(
                  config_path.endswith(ext) for ext in ('json', 'yml', 'yaml', 'ini')
              ):
                  raise exc.CihaiException(
                      '{0} does not have a yaml,yml,json,ini extend.'.format(
                          os.path.abspath(config_path)
                      )
                  )
              else:
                  custom_config = config_reader.import_config(config_path).get()
                  config = merge_dict(config, custom_config)
  
          return cls(config)