import setuptools
import os


def readme():
    with open("README.md") as f:
        return f.read()


def get_data(field, file_name="__init__.py"):
    item = ""
    with open(os.path.join("stree", file_name)) as f:
        for line in f.readlines():
            if line.startswith(f"__{field}__"):
                delim = '"' if '"' in line else "'"
                item = line.split(delim)[1]
                break
        else:
            raise RuntimeError(f"Unable to find {field} string.")
    return item


def get_requirements():
    with open("requirements.txt") as f:
        return f.read().splitlines()


setuptools.setup(
    name="STree",
    version=get_data("version", "_version.py"),
    license=get_data("license"),
    description="Oblique decision tree with svm nodes",
    long_description=readme(),
    long_description_content_type="text/markdown",
    packages=setuptools.find_packages(),
    url="https://github.com/Doctorado-ML/STree#stree",
    project_urls={
        "Code": "https://github.com/Doctorado-ML/STree",
        "Documentation": "https://stree.readthedocs.io/en/latest/index.html",
    },
    author=get_data("author"),
    author_email=get_data("author_email"),
    keywords="scikit-learn oblique-classifier oblique-decision-tree decision-\
    tree svm svc",
    classifiers=[
        "Development Status :: 5 - Production/Stable",
        "License :: OSI Approved :: " + get_data("license"),
        "Programming Language :: Python :: 3.8",
        "Natural Language :: English",
        "Topic :: Scientific/Engineering :: Artificial Intelligence",
        "Intended Audience :: Science/Research",
    ],
    install_requires=get_requirements(),
    test_suite="stree.tests",
    zip_safe=False,
)
