import codecs
import sys
from setuptools import setup, find_packages

with open("transitions/version.py") as f:
    exec(f.read())

with codecs.open("README.md", "r", "utf-8") as f:
    import re

    # cut the badges from the description and also the TOC which is currently not working on PyPi
    regex = r"([\s\S]*)## Quickstart"
    readme = f.read()

    long_description = re.sub(regex, "## Quickstart", readme, 1)
    assert (
        long_description[:13] == "## Quickstart"
    )  # Description should start with a headline (## Quickstart)

tests_require = ["mock", "tox", "graphviz", "pygraphviz"]

extras_require = {"diagrams": ["pygraphviz"]}

extra_setuptools_args = {}
if "setuptools" in sys.modules:
    extras_require["test"] = ["pytest"]
    tests_require.append("pytest")

setup(
    name="transitions",
    version=__version__,
    description="A lightweight, object-oriented Python state machine implementation with many extensions.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    author="Tal Yarkoni",
    author_email="tyarkoni@gmail.com",
    maintainer="Alexander Neumann",
    maintainer_email="aleneum@gmail.com",
    url="http://github.com/pytransitions/transitions",
    packages=find_packages(exclude=["tests", "test_*"]),
    package_data={
        "transitions": ["py.typed", "data/*"],
        "transitions.tests": ["data/*"],
    },
    include_package_data=True,
    install_requires=["six"],
    extras_require=extras_require,
    tests_require=tests_require,
    license="MIT",
    download_url="https://github.com/pytransitions/transitions/archive/%s.tar.gz"
    % __version__,
    classifiers=[
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 2",
        "Programming Language :: Python :: 2.7",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Programming Language :: Python :: 3.13",
    ],
    **extra_setuptools_args,
)
