setup.py (63 lines of code) (raw):

# Copyright (c) Facebook, Inc. and its affiliates. from os import path, listdir import setuptools from torch.utils.cpp_extension import BuildExtension, CUDAExtension here = path.abspath(path.dirname(__file__)) def find_sources(root_dir): sources = [] for file in listdir(root_dir): _, ext = path.splitext(file) if ext in [".cpp", ".cu"]: sources.append(path.join(root_dir, file)) return sources def make_extension(name, package): return CUDAExtension( name="{}.{}._backend".format(package, name), sources=find_sources(path.join("src", name)), extra_compile_args={ "cxx": ["-O3"], "nvcc": ["--expt-extended-lambda"], }, include_dirs=[path.join(here, "include")], ) with open(path.join(here, "README.md"), encoding="utf-8") as f: long_description = f.read() setuptools.setup( # Meta-data name="seamseg", author="Lorenzo Porzi", author_email="lorenzo@mapillary.com", description="Seamless Scene Segmentation for Pytorch", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/mapillary/seamseg", classifiers=[ "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", ], # Versioning use_scm_version={"root": ".", "relative_to": __file__, "write_to": "seamseg/_version.py"}, # Requirements setup_requires=["setuptools_scm"], python_requires=">=3, <4", # Package description packages=[ "seamseg", "seamseg.algos", "seamseg.config", "seamseg.data", "seamseg.models", "seamseg.modules", "seamseg.modules.heads", "seamseg.utils", "seamseg.utils.bbx", "seamseg.utils.nms", "seamseg.utils.parallel", "seamseg.utils.roi_sampling", ], ext_modules=[ make_extension("nms", "seamseg.utils"), make_extension("bbx", "seamseg.utils"), make_extension("roi_sampling", "seamseg.utils") ], cmdclass={"build_ext": BuildExtension}, include_package_data=True, )