code: def portfolio_return(
      weights: ARRAY_OR_SERIES[FLOAT],
      mean_returns: ARRAY_OR_SERIES[FLOAT],
      cov_matrix: ARRAY_OR_DATAFRAME[FLOAT],
  ) -> NUMERIC:
      """Calculates the expected annualised return of a portfolio
  
      :param weights: An array of weights
      :type weights: :py:data:`~.finquant.data_types.ARRAY_OR_SERIES`
  
      :param mean_returns: An array of individual expected returns for all stocks
      :type mean_returns: :py:data:`~.finquant.data_types.ARRAY_OR_SERIES`
  
      :param cov_matrix: Covariance matrix of returns
      :type cov_matrix: :py:data:`~.finquant.data_types.ARRAY_OR_DATAFRAME`
  
      :rtype: :py:data:`~.finquant.data_types.NUMERIC`
      :return: Expected annualised return
      """
      # Type validations:
      type_validation(
          weights=weights, means=mean_returns, cov_matrix=cov_matrix
      )
      return annualised_portfolio_quantities(
          weights, mean_returns, cov_matrix
      )[0]
  
imports: from finquant.data_types import ARRAY_OR_DATAFRAME, ARRAY_OR_SERIES, FLOAT, NUMERIC
  from finquant.quants import annualised_portfolio_quantities
  from finquant.type_utilities import type_validation
label_desc: Use image node_id 3 for calling a global function with example usage: portfolio_return(weights, mean_returns, cov_matrix) and returns: annualised_portfolio_quantities