"vscode:/vscode.git/clone" did not exist on "e6422528dae0b899848469efe2dc404c1e639ce9"
setup.py 2.91 KB
Newer Older
Louis Martin's avatar
Louis Martin committed
1
#!/usr/bin/env python3
2
# Copyright (c) Facebook, Inc. and its affiliates.
Sergey Edunov's avatar
Sergey Edunov committed
3
#
4
5
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
Sergey Edunov's avatar
Sergey Edunov committed
6
7

from setuptools import setup, find_packages, Extension
8
from setuptools.command.build_ext import build_ext
Sergey Edunov's avatar
Sergey Edunov committed
9
10
11
12
13
14
import sys


if sys.version_info < (3,):
    sys.exit('Sorry, Python3 is required for fairseq.')

Myle Ott's avatar
Myle Ott committed
15

Sergey Edunov's avatar
Sergey Edunov committed
16
17
18
with open('README.md') as f:
    readme = f.read()

Myle Ott's avatar
Myle Ott committed
19

20
if sys.platform == 'darwin':
21
    extra_compile_args = ['-stdlib=libc++', '-O3']
22
else:
23
    extra_compile_args = ['-std=c++11', '-O3']
Sergey Edunov's avatar
Sergey Edunov committed
24

25

Myle Ott's avatar
Myle Ott committed
26
27
28
29
30
31
32
extensions = [
    Extension(
        'fairseq.libbleu',
        sources=[
            'fairseq/clib/libbleu/libbleu.cpp',
            'fairseq/clib/libbleu/module.cpp',
        ],
33
        extra_compile_args=extra_compile_args,
Myle Ott's avatar
Myle Ott committed
34
35
36
37
38
    ),
    Extension(
        'fairseq.data.data_utils_fast',
        sources=['fairseq/data/data_utils_fast.pyx'],
        language='c++',
39
        extra_compile_args=extra_compile_args,
Myle Ott's avatar
Myle Ott committed
40
41
42
43
44
45
46
47
    ),
    Extension(
        'fairseq.data.token_block_utils_fast',
        sources=['fairseq/data/token_block_utils_fast.pyx'],
        language='c++',
        extra_compile_args=extra_compile_args,
    ),
]
48
49


50
51
52
53
54
55
56
class CustomBuildExtCommand(build_ext):
    """Source: https://stackoverflow.com/a/42163080"""
    def run(self):
        # Import numpy here, only when headers are needed
        import numpy
        self.include_dirs.append(numpy.get_include())
        super().run()
57

Sergey Edunov's avatar
Sergey Edunov committed
58
59
60

setup(
    name='fairseq',
Myle Ott's avatar
Myle Ott committed
61
    version='0.8.0',
Sergey Edunov's avatar
Sergey Edunov committed
62
    description='Facebook AI Research Sequence-to-Sequence Toolkit',
Myle Ott's avatar
Myle Ott committed
63
64
65
    url='https://github.com/pytorch/fairseq',
    classifiers=[
        'Intended Audience :: Science/Research',
66
        'License :: OSI Approved :: MIT License',
Bairen Yi's avatar
Bairen Yi committed
67
        'Programming Language :: Python :: 3.5',
Myle Ott's avatar
Myle Ott committed
68
69
70
        'Programming Language :: Python :: 3.6',
        'Topic :: Scientific/Engineering :: Artificial Intelligence',
    ],
Sergey Edunov's avatar
Sergey Edunov committed
71
    long_description=readme,
Myle Ott's avatar
Myle Ott committed
72
    long_description_content_type='text/markdown',
73
    setup_requires=[
74
        'numpy',
75
        'cython',
Myle Ott's avatar
Myle Ott committed
76
        'numpy',
77
78
        'setuptools>=18.0',
    ],
Myle Ott's avatar
Myle Ott committed
79
80
    install_requires=[
        'cffi',
Myle Ott's avatar
Myle Ott committed
81
        'fastBPE',
Myle Ott's avatar
Myle Ott committed
82
        'numpy',
Myle Ott's avatar
Myle Ott committed
83
        'regex',
Myle Ott's avatar
Myle Ott committed
84
        'sacrebleu',
Myle Ott's avatar
Myle Ott committed
85
        'torch',
Myle Ott's avatar
Myle Ott committed
86
87
88
        'tqdm',
    ],
    packages=find_packages(exclude=['scripts', 'tests']),
Myle Ott's avatar
Myle Ott committed
89
    ext_modules=extensions,
Myle Ott's avatar
Myle Ott committed
90
    test_suite='tests',
Myle Ott's avatar
Myle Ott committed
91
92
    entry_points={
        'console_scripts': [
Myle Ott's avatar
Myle Ott committed
93
94
95
96
97
            'fairseq-eval-lm = fairseq_cli.eval_lm:cli_main',
            'fairseq-generate = fairseq_cli.generate:cli_main',
            'fairseq-interactive = fairseq_cli.interactive:cli_main',
            'fairseq-preprocess = fairseq_cli.preprocess:cli_main',
            'fairseq-score = fairseq_cli.score:main',
Myle Ott's avatar
Myle Ott committed
98
99
            'fairseq-train = fairseq_cli.train:cli_main',
            'fairseq-validate = fairseq_cli.validate:cli_main',
Myle Ott's avatar
Myle Ott committed
100
101
        ],
    },
102
    cmdclass={'build_ext': CustomBuildExtCommand},
103
    zip_safe=False,
Sergey Edunov's avatar
Sergey Edunov committed
104
)