Skip to content
Snippets Groups Projects
setup.py 1.79 KiB
Newer Older
Mélodie Boillet's avatar
Mélodie Boillet committed
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pathlib import Path
from typing import List
Mélodie Boillet's avatar
Mélodie Boillet committed

from setuptools import find_packages, setup


def parse_requirements_line(line) -> str:
    # Special case for git requirements
    if line.startswith("git+http"):
        assert "@" in line, "Branch should be specified with suffix (ex: @master)"
        assert (
            "#egg=" in line
        ), "Package name should be specified with suffix (ex: #egg=kraken)"
        package_name: str = line.split("#egg=")[-1]
        return f"{package_name} @ {line}"
    # Special case for submodule requirements
    elif line.startswith("-e"):
        package_path: str = line.split(" ")[-1]
        package = Path(package_path).resolve()
        return f"{package.name} @ file://{package}"
    else:
        return line


def parse_requirements(filename: str) -> List[str]:
    path = Path(__file__).parent.resolve() / filename
    assert path.exists(), f"Missing requirements: {path}"
    return list(
        map(parse_requirements_line, map(str.strip, path.read_text().splitlines()))
    )
Mélodie Boillet's avatar
Mélodie Boillet committed


setup(
    name="teklia-dan",
    version=Path("VERSION").read_text(),
Mélodie Boillet's avatar
Mélodie Boillet committed
    description="Teklia DAN",
    long_description=Path("README.md").read_text(),
Mélodie Boillet's avatar
Mélodie Boillet committed
    long_description_content_type="text/markdown",
    author="Teklia",
    author_email="contact@teklia.com",
    url="https://gitlab.com/teklia/atr/dan",
    python_requires=">=3.10",
    install_requires=parse_requirements("requirements.txt"),
Mélodie Boillet's avatar
Mélodie Boillet committed
    packages=find_packages(),
    entry_points={
        "console_scripts": [
            "teklia-dan=dan.cli:main",
        ]
    },
Yoann Schneider's avatar
Yoann Schneider committed
    extras_require={
        "docs": parse_requirements("doc-requirements.txt"),
        "mlflow": parse_requirements("mlflow-requirements.txt"),
    },
Eva Bardou's avatar
Eva Bardou committed
    license="MIT",
    license_files=("LICENSE",),
Mélodie Boillet's avatar
Mélodie Boillet committed
)