"""
DVC
----
Make your data science projects reproducible and shareable.
"""
import os
import warnings


VERSION_BASE = '0.23.2'
__version__ = VERSION_BASE

PACKAGEPATH = os.path.abspath(os.path.dirname(__file__))
HOMEPATH = os.path.dirname(PACKAGEPATH)
VERSIONPATH = os.path.join(PACKAGEPATH, 'version.py')


def _update_version_file():
    """Dynamically update version file."""
    from git import Repo
    from git.exc import InvalidGitRepositoryError

    try:
        repo = Repo(HOMEPATH)
    except InvalidGitRepositoryError:
        return __version__

    sha = repo.head.object.hexsha
    short_sha = repo.git.rev_parse(sha, short=6)
    dirty = '.mod' if repo.is_dirty() else ''
    ver = '{}+{}{}'.format(__version__, short_sha, dirty)

    # Write a helper file, that will be installed with the package
    # and will provide a true version of the installed dvc
    with open(VERSIONPATH, 'w+') as fobj:
        fobj.write('# AUTOGENERATED by dvc/__init__.py\n')
        fobj.write('version = "{}"\n'.format(ver))

    return ver


def _remove_version_file():
    """Remove version.py so that it doesn't get into the release."""
    if os.path.exists(VERSIONPATH):
        os.unlink(VERSIONPATH)


if os.path.exists(os.path.join(HOMEPATH, 'setup.py')):
    # dvc is run directly from source without installation or
    # __version__ is called from setup.py
    if os.getenv('APPVEYOR_REPO_TAG', '').lower() != 'true' \
       and os.getenv('TRAVIS_TAG', '') == '':
        __version__ = _update_version_file()
    else:  # pragma: no cover
        _remove_version_file()
else:  # pragma: no cover
    # dvc was installed with pip or something. Hopefully we have our
    # auto-generated version.py to help us provide a true version
    from dvc.version import version
    __version__ = version

VERSION = __version__


# Ignore numpy's runtime warnings: https://github.com/numpy/numpy/pull/432.
# We don't directly import numpy, but our dependency networkx does, causing
# these warnings in some environments. Luckily these warnings are benign and
# we can simply ignore them so that they don't show up when you are using dvc.
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
warnings.filterwarnings("ignore", message="numpy.ufunc size changed")

[(14, 'os.path.dirname', 'os.path.dirname', (['PACKAGEPATH'], {}), False, 'import os\n'), (15, 'os.path.join', 'os.path.join', (['PACKAGEPATH', '"""version.py"""'], {}), False, 'import os\n'), (69, 'warnings.filterwarnings', 'warnings.filterwarnings', (['"""ignore"""'], {'message': '"""numpy.dtype size changed"""'}), False, 'import warnings\n'), (70, 'warnings.filterwarnings', 'warnings.filterwarnings', (['"""ignore"""'], {'message': '"""numpy.ufunc size changed"""'}), False, 'import warnings\n'), (13, 'os.path.dirname', 'os.path.dirname', (['__file__'], {}), False, 'import os\n'), (44, 'os.path.exists', 'os.path.exists', (['VERSIONPATH'], {}), False, 'import os\n'), (48, 'os.path.join', 'os.path.join', (['HOMEPATH', '"""setup.py"""'], {}), False, 'import os\n'), (24, 'git.Repo', 'Repo', (['HOMEPATH'], {}), False, 'from git import Repo\n'), (45, 'os.unlink', 'os.unlink', (['VERSIONPATH'], {}), False, 'import os\n'), (52, 'os.getenv', 'os.getenv', (['"""TRAVIS_TAG"""', '""""""'], {}), False, 'import os\n'), (51, 'os.getenv', 'os.getenv', (['"""APPVEYOR_REPO_TAG"""', '""""""'], {}), False, 'import os\n')]