code: def estimate_gas_for_function(
          address,
          web3,
          fn_identifier=None,
          transaction=None,
          contract_abi=None,
          fn_abi=None,
          block_identifier=None,
          *args,
          **kwargs,
  ):
      
      estimate_transaction = prepare_transaction(
          address,
          web3,
          fn_identifier=fn_identifier,
          contract_abi=contract_abi,
          fn_abi=fn_abi,
          transaction=transaction,
          fn_args=args,
          fn_kwargs=kwargs,
      )
  
      try:
          gas_estimate = web3.eth.estimateGas(estimate_transaction, block_identifier)
      except ValueError as e:
          if check_value_error_for_parity(e, ParityCallType.ESTIMATE_GAS):
              gas_estimate = None
          else:
              # else the error is not denoting estimate gas failure and is something else
              raise e
  
      return gas_estimate
docs: Temporary workaround until next web3.py release (5.X.X)