docstr: Deploy or update APIs specified in a configuration file.
  
  Args:
      config_file: Local path to a yaml file defining Cortex API(s). See https://docs.cortexlabs.com/v/master/ for schema.
      force: Override any in-progress api updates.
      wait: Block until the API is ready.
  
  Returns:
      Deployment status, API specification, and endpoint for each API.
docstr_tok: ["Deploy","or","update","APIs","specified","in","a","configuration","file",".","Args",":","config_file",":","Local","path","to","a","yaml","file","defining","Cortex","API","(","s",")",".","See","https",":","\/\/docs.cortexlabs.com\/v\/master\/","for","schema",".","force",":","Override","any","in-progress","api","updates",".","wait",":","Block","until","the","API","is","ready",".","Returns",":","Deployment","status",",","API","specification",",","and","endpoint","for","each","API","."]
code: def deploy_from_file(
      self,
      config_file: str,
      force: bool = False,
      wait: bool = False,
  ) -> Dict:
      """
      Deploy or update APIs specified in a configuration file.
  
      Args:
          config_file: Local path to a yaml file defining Cortex API(s). See https://docs.cortexlabs.com/v/master/ for schema.
          force: Override any in-progress api updates.
          wait: Block until the API is ready.
  
      Returns:
          Deployment status, API specification, and endpoint for each API.
      """
  
      args = [
          "deploy",
          config_file,
          "--env",
          self.env_name,
          "-o",
          "json",
          "-y",
      ]
  
      if force:
          args.append("--force")
  
      output = run_cli(args, hide_output=True)
  
      deploy_results = json.loads(output.strip())
  
      deploy_result = deploy_results[0]
  
      if not wait:
          return deploy_result
  
      api_name = deploy_result["api"]["spec"]["name"]
      if (
          deploy_result["api"]["spec"]["kind"] != "RealtimeAPI"
          and deploy_result["api"]["spec"]["kind"] != "AsyncAPI"
      ):
          return deploy_result
  
      while True:
          time.sleep(5)
          api = self.get_api(api_name)
          if api["status"]["status_code"] != "status_updating":
              break
  
      return api
  
file_path: cortex/python/client/cortex/client.py
imports: import json
  import os
  import shutil
  import time
  import yaml
  from typing import List, Dict, Any
  from cortex import util
  from cortex.binary import run_cli
  from cortex.telemetry import sentry_wrapper
label_desc: Use image node_id 3 for calling the Client obj's underlying member method code with example usage: obj.deploy_from_file(config_file, force, wait) and returns: api, deploy_result, deploy_result