"""
This should work for python version 3.7 - 3.13
"""
import py_compile
import sys


def compile_cache_file(
    source_path: str,
    out_path: str,
    invalidation_mode: py_compile.PycInvalidationMode,
    optimization_level: int,
):
    """
    optimization_level may be in range 0 - 3 from least to most optimization.
    """
    py_compile.compile(
        source_path,
        out_path,
        invalidation_mode=invalidation_mode,
        optimize=optimization_level,
    )


if __name__ == "__main__":
    source_path = sys.argv[1]
    out_path = sys.argv[2]
    optimization_level = int(sys.argv[3])
    invalidation_mode = py_compile.PycInvalidationMode(int(sys.argv[4]))
    compile_cache_file(source_path, out_path, invalidation_mode, optimization_level)
