setup.py 2.89 KB
Newer Older
facebook-github-bot's avatar
facebook-github-bot committed
1
2
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
Yanghan Wang's avatar
Yanghan Wang committed
3
import glob
facebook-github-bot's avatar
facebook-github-bot committed
4
5
6
7
8
import os
import shutil
from os import path
from typing import List

9
from setuptools import find_packages, setup
facebook-github-bot's avatar
facebook-github-bot committed
10
11
12

cwd = os.path.dirname(os.path.abspath(__file__))

Yanghan Wang's avatar
Yanghan Wang committed
13
version = "0.0.1"
facebook-github-bot's avatar
facebook-github-bot committed
14
try:
Yanghan Wang's avatar
Yanghan Wang committed
15
    if not os.getenv("RELEASE"):
facebook-github-bot's avatar
facebook-github-bot committed
16
        from datetime import date
Yanghan Wang's avatar
Yanghan Wang committed
17

facebook-github-bot's avatar
facebook-github-bot committed
18
19
20
21
22
23
24
        today = date.today()
        day = today.strftime("b%Y%m%d")
        version += day
except Exception:
    pass

requirements = [
Yanghan Wang's avatar
Yanghan Wang committed
25
26
27
28
29
    "importlib",
    "numpy",
    "Pillow",
    "mock",
    "torch",
30
    "pytorch-lightning==1.8.6",
Yanghan Wang's avatar
Yanghan Wang committed
31
32
    "opencv-python",
    "parameterized",
Yanghan Wang's avatar
Yanghan Wang committed
33
34
35
36
    # Downgrade the protobuf package to 3.20.x or lower, related:
    # https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
    # https://github.com/protocolbuffers/protobuf/issues/10051
    "protobuf<=3.20.1",
facebook-github-bot's avatar
facebook-github-bot committed
37
38
]

Yanghan Wang's avatar
Yanghan Wang committed
39

facebook-github-bot's avatar
facebook-github-bot committed
40
41
42
43
44
45
def d2go_gather_files(dst_module, file_path, extension="*") -> List[str]:
    """
    Return a list of files to include in d2go submodule. Copy over the corresponding files.
    """
    # Use absolute paths while symlinking.
    source_configs_dir = path.join(path.dirname(path.realpath(__file__)), file_path)
Yanghan Wang's avatar
Yanghan Wang committed
46
    destination = path.join(path.dirname(path.realpath(__file__)), "d2go", dst_module)
facebook-github-bot's avatar
facebook-github-bot committed
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
    # Symlink the config directory inside package to have a cleaner pip install.

    # Remove stale symlink/directory from a previous build.
    if path.exists(source_configs_dir):
        if path.islink(destination):
            os.unlink(destination)
        elif path.isdir(destination):
            shutil.rmtree(destination)

    if not path.exists(destination):
        try:
            os.symlink(source_configs_dir, destination)
        except OSError:
            # Fall back to copying if symlink fails: ex. on Windows.
            shutil.copytree(source_configs_dir, destination)

    config_paths = glob.glob(os.path.join(file_path + extension), recursive=True)
    return config_paths

Yanghan Wang's avatar
Yanghan Wang committed
66
67

if __name__ == "__main__":
facebook-github-bot's avatar
facebook-github-bot committed
68
69
70
71
72
73
    setup(
        name="d2go",
        version=version,
        author="Mobile Vision",
        url="https://github.com/facebookresearch/d2go",
        description="D2Go",
Yanghan Wang's avatar
Yanghan Wang committed
74
75
76
        long_description=open("README.md").read(),
        long_description_content_type="text/markdown",
        license="Apache-2.0",
facebook-github-bot's avatar
facebook-github-bot committed
77
78
        install_requires=requirements,
        packages=find_packages(exclude=["tools", "tests"]),
Yanghan Wang's avatar
Yanghan Wang committed
79
80
81
        package_data={
            "d2go": [
                "LICENSE",
facebook-github-bot's avatar
facebook-github-bot committed
82
            ],
83
            "d2go.configs": d2go_gather_files("configs", "configs", "**/*.yaml"),
facebook-github-bot's avatar
facebook-github-bot committed
84
            "d2go.tools": d2go_gather_files("tools", "tools", "**/*.py"),
85
            "d2go.tests": d2go_gather_files("tests", "tests", "**/*helper.py"),
facebook-github-bot's avatar
facebook-github-bot committed
86
87
        },
        entry_points={
Yanghan Wang's avatar
Yanghan Wang committed
88
89
90
            "console_scripts": [
                "d2go.exporter = d2go.tools.exporter:cli",
                "d2go.train_net = d2go.tools.train_net:cli",
facebook-github-bot's avatar
facebook-github-bot committed
91
92
93
            ]
        },
    )