Skip to content
Snippets Groups Projects
Select Git revision
  • aa4d9c3d0d8c4458b5f26862f281e0c7332bda8d
  • main default
2 results

dsh_cli.c

Blame
  • setup.py 2.96 KiB
    import os
    import subprocess
    from io import open
    
    from setuptools import find_packages, setup
    
    VERSION_MAJOR = 0
    VERSION_MINOR = 0
    VERSION_PATCH = 1
    SEMVER_STRING = f"v{VERSION_MAJOR:d}.{VERSION_MINOR:d}.{VERSION_PATCH:d}"
    
    PROJECT_NAME = os.getenv("PYPI_PACKAGE_NAME", "WHY")
    PROJECT_DESCRIPTION = ("Explainable AI system")
    PROJECT_URL = "https://gitlab.cci.drexel.edu/pjm363/why-senior-project"
    
    AUTHOR_NAME = "Philip Monaco, Abdullah Shah, Ibrahim Elsaid, Jashanpreet Singh, William Lu, Songheng Li"
    MAINTAINER_NAME = "Philip Monaco, Abdullah Shah, Ibrahim Elsaid, Jashanpreet Singh, William Lu, Songheng Li"
    
    all_requires = []
    
    core_requires = [
        "numpy>=1.21",
        "pandas>=1.3.5",
        "bokeh>=2.4.2",
        "matplotlib>=3.5.0",
        "scikit-learn>=1.0.2"
    ]
    
    lint_requires = [
        "black==21.12b0",
        "isort==5.10.1",
        "flake8==4.0.1",
        "mypy"
    ]
    
    docs_requires = [
        "Sphinx",
        "sphinx-gallery",
        "sphinx-rtd-theme",
        "m2r2"
    ]
    
    all_requires = [
        *core_requires,
        *lint_requires,
        docs_requires,
    ]
    
    requires_map={
        "lint": lint_requires,
        "docs": docs_requires,
        "all": all_requires,
    }
    
    def _minimal_ext_cmd(cmd):
        env = {}
        for k in ["SYSTEMROOT", "PATH", "HOME"]:
            v = os.environ.get(k)
            if v is not None:
                env[k] = v
        env["Language"] = "C"
        env["LANG"] = "C"
        env["LV_ALL"] = "C"
        out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, env=env)
        return out
    
    def get_git_hash():
        try:
            out = _minimal_ext_cmd(["git", "rev-parse", "HEAD"])
            git_rev = out.strip().decode("ascii")
        except (subprocess.SUbprocessError, OSError):
            git_rev = "Unknown"
            
        if not git_rev:
            git_rev = "Unknown"
            
        return git_rev
    
    def is_tagged_released():
        try:
            out = _minimal_ext_cmd(["git", "describe", "--exact-match", "--tags", "HEAD"])
            tag_name = out.strip().decode("ascii")
            
            is_tagged_release = tag_name.startswith(SEMVER_STRING)
        except (subprocess.SubprocessError, OSError):
            is_tagged_release = False
            
        return is_tagged_release
    
    def render_version_string():
        version_string = SEMVER_STRING
        if os.path.exists(".git") and not is_tagged_released():
            version_string += ".dev0+" + get_git_hash()[:7]
            
        return version_string
    
    here = os.path.abspath(os.path.split(__file__)[0])
    
    with open(os.path.join(here, "README.md"), encoding="utf-8") as f:
        long_description = f.read()
        
    setup(
        name=PROJECT_NAME,
        version=render_version_string(),
        author=AUTHOR_NAME,
        url=PROJECT_URL,
        description=PROJECT_DESCRIPTION,
        long_description=long_description,
        long_description_content_type="text/markdown",
        license="LICENSE.md",
        packages=find_packages(where="src"),
        package_dir={"":"src"},
        python_requires=">=3.8",
        install_requires=core_requires,
        extras_require=requires_map,
        include_package_data=True,
        zip_safe=False,
        package_data={"src": ["py.typed"]},
        entry_points={},
    )