#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys

from setuptools import find_packages, setup

if sys.version_info < (3, 6):
    print("adaptive requires Python 3.6 or above.")
    sys.exit(1)


# Loads _version.py module without importing the whole package.
def get_version_and_cmdclass(package_name):
    import os
    from importlib.util import module_from_spec, spec_from_file_location

    spec = spec_from_file_location("version", os.path.join(package_name, "_version.py"))
    module = module_from_spec(spec)
    spec.loader.exec_module(module)
    return module.__version__, module.cmdclass


version, cmdclass = get_version_and_cmdclass("adaptive")


install_requires = ["scipy", "sortedcollections >= 1.1", "sortedcontainers >= 2.0"]

extras_require = {
    "notebook": [
        "ipython",
        "ipykernel>=4.8.0",  # because https://github.com/ipython/ipykernel/issues/274 and https://github.com/ipython/ipykernel/issues/263
        "jupyter_client>=5.2.2",  # because https://github.com/jupyter/jupyter_client/pull/314
        "holoviews>=1.9.1",
        "ipywidgets",
        "bokeh",
        "matplotlib",
        "plotly",
    ]
}


setup(
    name="adaptive",
    description="Adaptive parallel sampling of mathematical functions",
    version=version,
    python_requires=">=3.6",
    url="https://adaptive.readthedocs.io/",
    author="Adaptive authors",
    license="BSD",
    classifiers=[
        "Development Status :: 4 - Beta",
        "License :: OSI Approved :: BSD License",
        "Intended Audience :: Science/Research",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
    ],
    packages=find_packages("."),
    install_requires=install_requires,
    extras_require=extras_require,
    cmdclass=cmdclass,
)