#!/usr/bin/env python

import sys

import update_checkout

# The internal Windows implementation tries to import the current module using
# sys.modules[__name__]. This file (called 'update-checkout') is not a valid
# Python module name, as it contains a '-' and doesn't end with '.py'. This
# results in errors running update-checkout on Windows:'ImportError: No module
# named update-checkout'.
# As such, we need to manually set sys.modules[__name__] to a valid module
# identifier to work around these errors.
sys.modules[__name__] = sys.modules['update_checkout']
update_checkout.main()
