from setuptools import setup
import sys
import versioneer

cmdclass = versioneer.get_cmdclass()
version = versioneer.get_version()

# Check Python version
if sys.version_info < (3, 6):
    raise RuntimeError(
        "This package requires Python 3.6 or above. Please upgrade your Python version."
    )

# Define dependencies for Python 3.6 and above
dependencies = ["ordered-set"]

extras = {
    "docs": ["sphinx", "jinja2<3.0", "MarkupSafe==2.0.1", "alabaster<0.7.12"],
    "matrices": ["numpy"],
    "matplotlib": ["matplotlib"],
    "quantities": ["quantities", "numpy"],
    "testing": ["pytest>=4.6", "coverage", "pytest-cov", "black", "isort"],
    "packaging": ["twine"],
}

# Define source directory and extras for Python 3.6 and above
source_dir = "."

setup(
    name="PyLaTeX",
    version=version,
    author="Jelte Fennema",
    author_email="pylatex@jeltef.nl",
    description="A Python library for creating LaTeX files and snippets",
    long_description=open("README.rst").read(),
    package_dir={"": source_dir},
    packages=["pylatex", "pylatex.base_classes"],
    url="https://github.com/JelteF/PyLaTeX",
    license="MIT",
    install_requires=dependencies,
    extras_require=extras,
    cmdclass=cmdclass,
    classifiers=[
        "Development Status :: 5 - Production/Stable",
        "Environment :: Console",
        "Intended Audience :: Developers",
        "Intended Audience :: Education",
        "Intended Audience :: End Users/Desktop",
        "Intended Audience :: Science/Research",
        "License :: OSI Approved :: MIT License",
        "Operating System :: POSIX :: Linux",
        "Programming Language :: Python",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 2.7",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.3",
        "Programming Language :: Python :: 3.4",
        "Programming Language :: Python :: 3.5",
        "Topic :: Software Development :: Code Generators",
        "Topic :: Text Processing :: Markup :: LaTeX",
    ],
)
