class BatchArrowPythonOverWindowAggregateFunctionOperator extends AbstractBatchArrowPythonAggregateFunctionOperator {

	@Override
	public void open() throws Exception {
		userDefinedFunctionOutputType = new RowType(
			outputType.getFields().subList(inputType.getFieldCount(), outputType.getFieldCount()));
		forwardedInputSerializer = new RowDataSerializer(inputType);
		this.lastKeyDataStartPos = 0;
		windowBoundaryWithDataBaos = new ByteArrayOutputStreamWithPos();
		windowBoundaryWithDataWrapper = new DataOutputViewStreamWrapper(windowBoundaryWithDataBaos);
		boundedRangeWindowBoundaries = new ArrayList<>(lowerBoundary.length);
		boundedRangeWindowIndex = new ArrayList<>();
		for (int i = 0; i < lowerBoundary.length; i++) {
			// range window with bounded preceding or bounded following
			if (isRangeWindows[i] && (lowerBoundary[i] != Long.MIN_VALUE || upperBoundary[i] != Long.MAX_VALUE)) {
				boundedRangeWindowIndex.add(i);
				boundedRangeWindowBoundaries.add(new ArrayList<>());
			}
		}
		super.open();
	}

	public  BatchArrowPythonOverWindowAggregateFunctionOperator(
		Configuration config,
		PythonFunctionInfo[] pandasAggFunctions,
		RowType inputType,
		RowType outputType,
		long[] lowerBoundary,
		long[] upperBoundary,
		boolean[] isRangeWindows,
		int[] aggWindowIndex,
		int[] groupKey,
		int[] groupingSet,
		int[] udafInputOffsets,
		int inputTimeFieldIndex,
		boolean asc);

}