forked from facebookresearch/d2go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
96 lines (85 loc) · 2.89 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
import io
import os
import subprocess
import glob
import shutil
from os import path
from typing import List
from setuptools import setup, find_packages
cwd = os.path.dirname(os.path.abspath(__file__))
version = '0.0.1'
try:
if not os.getenv('RELEASE'):
from datetime import date
today = date.today()
day = today.strftime("b%Y%m%d")
version += day
except Exception:
pass
requirements = [
'importlib',
'numpy',
'Pillow',
'mock',
'torch',
'pytorch_lightning',
'opencv-python',
]
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)
destination = path.join(
path.dirname(path.realpath(__file__)), "d2go", dst_module
)
# 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
def get_model_zoo_configs() -> List[str]:
"""
Return a list of configs to include in package for model zoo. Copy over these configs inside
d2go/model_zoo.
"""
return d2go_gather_files(os.path.join("model_zoo", "configs"), "configs", "**/*.yaml")
if __name__ == '__main__':
setup(
name="d2go",
version=version,
author="Mobile Vision",
url="https://github.com/facebookresearch/d2go",
description="D2Go",
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
license='Apache-2.0',
install_requires=requirements,
packages=find_packages(exclude=["tools", "tests"]),
package_data={'resnest': [
'LICENSE',
],
"d2go.model_zoo": get_model_zoo_configs(),
"d2go.tests": d2go_gather_files("tests", "tests", "**/*helper.py"),
"d2go.tools": d2go_gather_files("tools", "tools", "**/*.py"),
},
entry_points={
'console_scripts': [
'd2go.exporter = d2go.tools.exporter:cli',
'd2go.train_net = d2go.tools.train_net:cli',
]
},
)