# pylint: disable=invalid-name, exec-used
"""Setup xgboost package."""
from __future__ import absolute_import
import sys
import os
from setuptools import setup, find_packages
#import subprocess
sys.path.insert(0, '.')

#this script is for packing and shipping pip installation
#it builds xgboost code on the fly and packs for pip
#please don't use this file for installing from github

if not os.name == 'nt': #if not windows, compile and install
    os.system('sh ./xgboost/build-python.sh')
else:
    print('Windows users please use github installation.')
    sys.exit()

#try converting README.md to README.rst since PyPI only supports RST
try:
    from pypandoc import convert
    read_md = lambda f: convert(f, 'rst')
except ImportError:
    print("warning: pypandoc module not found, could not convert Markdown to RST")
    read_md = lambda f: open(f, 'r').read()

CURRENT_DIR = os.path.dirname(__file__)

# We can not import `xgboost.libpath` in setup.py directly since xgboost/__init__.py
# import `xgboost.core` and finally will import `numpy` and `scipy` which are setup
# `install_requires`. That's why we're using `exec` here.
libpath_py = os.path.join(CURRENT_DIR, 'xgboost/libpath.py')
libpath = {'__file__': libpath_py}
exec(compile(open(libpath_py, "rb").read(), libpath_py, 'exec'), libpath, libpath)

LIB_PATH = libpath['find_lib_path']()

#to deploy to pip, please use
#make pythonpack
#python setup.py register sdist upload
#and be sure to test it firstly using "python setup.py register sdist upload -r pypitest"
setup(name='xgboost',
      #version=open(os.path.join(CURRENT_DIR, 'xgboost/VERSION')).read().strip(),
      version='0.4a24',
      #description=open(os.path.join(CURRENT_DIR, 'README.md')).read(),
      description=read_md(os.path.join(CURRENT_DIR, 'README.md')),
      install_requires=[
          'numpy',
          'scipy',
      ],
      maintainer='Hongliang Liu',
      maintainer_email='phunter.lau@gmail.com',
      zip_safe=False,
      packages=find_packages(),
      #don't need this and don't use this, give everything to MANIFEST.in
      #package_dir = {'':'xgboost'},
      #package_data = {'': ['*.txt','*.md','*.sh'],
      #               }
      #this will use MANIFEST.in during install where we specify additional files,
      #this is the golden line
      include_package_data=True,
      #!!! don't use data_files for creating pip installation,
      #otherwise install_data process will copy it to
      #root directory for some machines, and cause confusions on building
      #data_files=[('xgboost', LIB_PATH)],
      url='https://github.com/dmlc/xgboost')
