# Copyright (c) 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Miscellaneous Python 2-3 compatibility functions.

Seven is an extension to the compatibility layer six.
It contains utilities that ease migration from Python 2
to Python 3, but aren't present in the six library.
"""

import six
import socket

if six.PY3:
    import builtins
    SOCKET_ERRORS = (builtins.ConnectionError, socket.timeout, socket.gaierror,
                     socket.herror)
else:
    SOCKET_ERRORS = (socket.error, )


def exec_file(filename, globals_, locals_):
    """exec_file compiles and runs a file with globals and locals.

    exec_file does not exactly mimic all the edge cases in Python 2's
    execfile function. Rather, it does only what is necessary to execute
    control files in autotest and prevent compiler-wide settings like
    'from __future__ import ...' from spilling into control files that
    have not yet been made Python 3-compatible.

    Arguments:
        filename:   path to a file
        globals_:    dictionary of globals
        locals_:     dictionary of locals

    Returns:
        None (output of six.exec_)
    """
    with open(filename, "rb") as fh:
        code_obj = compile(
                fh.read(),
                filename,
                mode="exec",
                flags=0,
                dont_inherit=1,
        )
    return six.exec_(code_obj, globals_, locals_)
