from setuptools import setup, find_packages

with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setup(
    name="data-lineage-py",
    version="0.1.0",
    author="DataLineagePy Team",
    author_email="contact@datalineagepy.org",
    description="A lightweight Python library for tracking and visualizing data lineage in pandas and PySpark workflows",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/datalineagepy/datalineagepy",
    packages=find_packages(),
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Intended Audience :: Developers",
        "Intended Audience :: Science/Research",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Topic :: Scientific/Engineering :: Information Analysis",
        "Topic :: Software Development :: Libraries :: Python Modules",
    ],
    python_requires=">=3.8",
    install_requires=[
        "pandas>=1.3.0",
        "networkx>=2.6",
        "numpy>=1.20.0",
        "requests>=2.25.0",
    ],
    extras_require={
        "visualization": [
            "graphviz>=0.19",
            "plotly>=5.0.0",
            "matplotlib>=3.5.0",
            "bokeh>=2.4.0",
        ],
        "spark": [
            "pyspark>=3.0.0",
        ],
        "ml": [
            "scikit-learn>=1.0.0",
            "numpy>=1.20.0",
        ],
        "alerting": [
            "requests>=2.25.0",
        ],
        "databases": [
            "sqlalchemy>=1.4.0",
            "psycopg2-binary>=2.8.0",
            "pymysql>=1.0.0",
            "pyodbc>=4.0.0",
            "sqlparse>=0.4.0",
        ],
        "postgresql": [
            "sqlalchemy>=1.4.0",
            "psycopg2-binary>=2.8.0",
            "sqlparse>=0.4.0",
        ],
        "mysql": [
            "sqlalchemy>=1.4.0",
            "pymysql>=1.0.0",
            "sqlparse>=0.4.0",
        ],
        "sqlite": [
            "sqlalchemy>=1.4.0",
            "sqlparse>=0.4.0",
        ],
        "sqlserver": [
            "sqlalchemy>=1.4.0",
            "pyodbc>=4.0.0",
            "sqlparse>=0.4.0",
        ],
        "files": [
            "pyarrow>=5.0.0",
            "fastparquet>=0.8.0",
            "chardet>=4.0.0",
            "openpyxl>=3.0.0",
        ],
        "parquet": [
            "pyarrow>=5.0.0",
            "fastparquet>=0.8.0",
        ],
        "csv": [
            "chardet>=4.0.0",
        ],
        "json": [
            "ijson>=3.1.0",
        ],
        "excel": [
            "openpyxl>=3.0.0",
            "xlrd>=2.0.0",
        ],
        "cloud": [
            "boto3>=1.26.0",
            "google-cloud-storage>=2.7.0",
            "azure-storage-blob>=12.14.0",
        ],
        "aws": [
            "boto3>=1.26.0",
        ],
        "gcp": [
            "google-cloud-storage>=2.7.0",
            "google-auth>=2.16.0",
            "google-cloud-bigquery>=3.4.0",
        ],
        "azure": [
            "azure-storage-blob>=12.14.0",
            "azure-identity>=1.12.0",
            "azure-storage-file-datalake>=12.9.0",
        ],
        "streaming": [
            "kafka-python>=2.0.0",
            "redis>=4.5.0",
            "pulsar-client>=3.0.0",
            "websockets>=10.0",
            "requests>=2.25.0",
        ],
        "kafka": [
            "kafka-python>=2.0.0",
            "requests>=2.25.0",  # For schema registry
        ],
        "redis": [
            "redis>=4.5.0",
        ],
        "pulsar": [
            "pulsar-client>=3.0.0",
        ],
        "kinesis": [
            "boto3>=1.26.0",
        ],
        "flink": [
            "apache-flink>=1.16.0",
        ],
        "streaming-full": [
            "kafka-python>=2.0.0",
            "redis>=4.5.0",
            "pulsar-client>=3.0.0",
            "boto3>=1.26.0",
            "websockets>=10.0",
            "requests>=2.25.0",
            "apache-flink>=1.16.0",
        ],
        "datalake": [
            "deltalake>=0.10.0",
            "pyiceberg>=0.4.0",
            "pyarrow>=10.0.0",
        ],
        "delta": [
            "deltalake>=0.10.0",
            "pyarrow>=10.0.0",
        ],
        "iceberg": [
            "pyiceberg>=0.4.0",
            "pyarrow>=10.0.0",
        ],
        "hudi": [
            "pyhudi>=0.11.0",
        ],
        "multicloud": [
            "boto3>=1.26.0",
            "google-cloud-storage>=2.7.0",
            "google-auth>=2.16.0",
            "azure-storage-blob>=12.14.0",
            "azure-identity>=1.12.0",
            "deltalake>=0.10.0",
            "pyiceberg>=0.4.0",
            "pyarrow>=10.0.0",
        ],
        # Orchestration dependencies (Phase 9)
        "airflow": [
            "apache-airflow>=2.5.0",
            "apache-airflow-providers-postgres>=5.0.0",
            "apache-airflow-providers-http>=4.0.0",
        ],
        "dbt": [
            "dbt-core>=1.4.0",
            "dbt-postgres>=1.4.0",
            "pyyaml>=6.0",
        ],
        "prefect": [
            "prefect>=2.8.0",
            "prefect-sqlalchemy>=0.2.0",
        ],
        "dagster": [
            "dagster>=1.1.0",
            "dagster-postgres>=0.17.0",
            "dagster-pandas>=0.17.0",
        ],
        "azure-orchestration": [
            "azure-mgmt-datafactory>=2.0.0",
            "azure-identity>=1.12.0",
            "azure-mgmt-resource>=22.0.0",
        ],
        "orchestration-full": [
            "apache-airflow>=2.5.0",
            "apache-airflow-providers-postgres>=5.0.0",
            "dbt-core>=1.4.0",
            "dbt-postgres>=1.4.0",
            "pyyaml>=6.0",
            "prefect>=2.8.0",
            "prefect-sqlalchemy>=0.2.0",
            "dagster>=1.1.0",
            "dagster-postgres>=0.17.0",
            "azure-mgmt-datafactory>=2.0.0",
            "azure-identity>=1.12.0",
        ],
        # Enterprise dependencies (Phase 10)
        "enterprise-cluster": [
            "kubernetes>=26.1.0",
            "redis>=4.5.0",
            "celery>=5.2.0",
            "psutil>=5.9.0",
            "prometheus-client>=0.16.0",
            "consul>=1.1.0",
        ],
        "enterprise-security": [
            "cryptography>=40.0.0",
            "pyjwt>=2.6.0",
            "ldap3>=2.9.0",
            "bcrypt>=4.0.0",
            "python-jose>=3.3.0",
        ],
        "enterprise-k8s": [
            "kubernetes>=26.1.0",
            "helm>=3.0.0",
            "pyyaml>=6.0",
        ],
        "enterprise-ops": [
            "prometheus-client>=0.16.0",
            "grafana-api>=1.0.0",
            "elasticsearch>=8.6.0",
            "psutil>=5.9.0",
        ],
        "enterprise-migration": [
            "alembic>=1.10.0",
            "sqlalchemy>=1.4.0",
            "pandas>=1.3.0",
        ],
        "enterprise-full": [
            "kubernetes>=26.1.0",
            "redis>=4.5.0",
            "celery>=5.2.0",
            "psutil>=5.9.0",
            "prometheus-client>=0.16.0",
            "consul>=1.1.0",
            "cryptography>=40.0.0",
            "pyjwt>=2.6.0",
            "ldap3>=2.9.0",
            "bcrypt>=4.0.0",
            "python-jose>=3.3.0",
            "helm>=3.0.0",
            "pyyaml>=6.0",
            "grafana-api>=1.0.0",
            "elasticsearch>=8.6.0",
            "alembic>=1.10.0",
        ],
        "all": [
            "graphviz>=0.19",
            "plotly>=5.0.0",
            "matplotlib>=3.5.0",
            "bokeh>=2.4.0",
            "pyspark>=3.0.0",
            "scikit-learn>=1.0.0",
            "requests>=2.25.0",
            "sqlalchemy>=1.4.0",
            "psycopg2-binary>=2.8.0",
            "pymysql>=1.0.0",
            "pyodbc>=4.0.0",
            "sqlparse>=0.4.0",
            "pyarrow>=5.0.0",
            "fastparquet>=0.8.0",
            "chardet>=4.0.0",
            "openpyxl>=3.0.0",
            "ijson>=3.1.0",
            "xlrd>=2.0.0",
            "boto3>=1.26.0",
            "google-cloud-storage>=2.7.0",
            "google-auth>=2.16.0",
            "google-cloud-bigquery>=3.4.0",
            "azure-storage-blob>=12.14.0",
            "azure-identity>=1.12.0",
            "azure-storage-file-datalake>=12.9.0",
            "kafka-python>=2.0.0",
            "redis>=4.5.0",
            "pulsar-client>=3.0.0",
            "websockets>=10.0",
            "apache-flink>=1.16.0",
            "deltalake>=0.10.0",
            "pyiceberg>=0.4.0",
            "pyarrow>=10.0.0",
            "pyhudi>=0.11.0",
            # Orchestration dependencies (Phase 9)
            "apache-airflow>=2.5.0",
            "dbt-core>=1.4.0",
            "pyyaml>=6.0",
            "prefect>=2.8.0",
            "dagster>=1.1.0",
            "azure-mgmt-datafactory>=2.0.0",
            # Key enterprise dependencies (Phase 10)
            "kubernetes>=26.1.0",
            "redis>=4.5.0",
            "cryptography>=40.0.0",
            "prometheus-client>=0.16.0",
        ],
        "dev": [
            "pytest>=6.0",
            "pytest-cov>=2.0",
            "black>=21.0",
            "flake8>=3.8",
            "mypy>=0.910",
        ],
        "docs": [
            "sphinx>=4.0",
            "sphinx-rtd-theme>=1.0",
            "myst-parser>=0.15",
        ],
    },
    entry_points={
        "console_scripts": [
            "lineage-report=lineagepy.cli:main",
        ],
    },
)
