def warn_if_py2_job()

in core/src/klio_core/utils.py [0:0]


def warn_if_py2_job(job_dir):
    dockerfile_path = os.path.join(job_dir, "Dockerfile")
    if not os.path.isfile(dockerfile_path):
        return

    from_line = None
    with open(dockerfile_path, "r") as f:
        for line in f.readlines():
            if line.startswith("FROM"):
                from_line = line
                break
    if not from_line:
        # not having a FROM line will break elsewhere, so no need to take
        # care of it here
        return

    py2_dataflow_images = [
        "dataflow.gcr.io/v1beta3/python",
        "dataflow.gcr.io/v1beta3/python-base",
        "dataflow.gcr.io/v1beta3/python-fnapi",
    ]
    from_image = from_line.lstrip("FROM ").split(":")[0]
    if from_image in py2_dataflow_images:
        msg = (
            "Python 2 support in Klio is deprecated. Please upgrade "
            "to Python 3.5+."
        )
        warnings.warn(msg, category=UserWarning)