code: def _ExtractOAuth2Client(product_yaml_key, product_data, proxy_config):
    
    oauth2_kwargs = {
        'proxy_config': proxy_config
    }
  
    if all(config in product_data for config in _OAUTH2_INSTALLED_APP_KEYS):
      oauth2_args = [
          product_data['client_id'], product_data['client_secret'],
          product_data['refresh_token']
      ]
      oauth2_client = googleads.oauth2.GoogleRefreshTokenClient
      for key in _OAUTH2_INSTALLED_APP_KEYS:
        del product_data[key]
    elif all(config in product_data for config in _OAUTH2_SERVICE_ACCT_KEYS):
      oauth2_args = [
          product_data['path_to_private_key_file'],
          googleads.oauth2.GetAPIScope(product_yaml_key),
      ]
      oauth2_kwargs.update({
          'sub': product_data.get('delegated_account')
      })
      oauth2_client = googleads.oauth2.GoogleServiceAccountClient
      for key in _OAUTH2_SERVICE_ACCT_KEYS:
        del product_data[key]
      for optional_key in _OAUTH2_SERVICE_ACCT_KEYS_OPTIONAL:
        if optional_key in product_data:
          del product_data[optional_key]
    else:
      raise googleads.errors.GoogleAdsValueError(
          'Your yaml file is incorrectly configured for OAuth2. You need to '
          'specify credentials for either the installed application flow (%s) '
          'or service account flow (%s).' %
          (_OAUTH2_INSTALLED_APP_KEYS, _OAUTH2_SERVICE_ACCT_KEYS))
  
    return oauth2_client(*oauth2_args, **oauth2_kwargs)
docs: Generates an GoogleOAuth2Client subclass using the given product_data.
  
    Args:
      product_yaml_key: a string key identifying the product being configured.
      product_data: a dict containing the configurations for a given product.
      proxy_config: a ProxyConfig instance.
  
    Returns:
      An instantiated GoogleOAuth2Client subclass.
  
    Raises:
      A GoogleAdsValueError if the OAuth2 configuration for the given product is
      misconfigured.