setup.py 2.22 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 Cython.Build import cythonize
Sergey Edunov's avatar
Sergey Edunov committed
9
10
11
12
13
14
15
16
17
import sys


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

with open('README.md') as f:
    readme = f.read()

18
19
20
21
if sys.platform == 'darwin':
    extra_compile_args = ['-stdlib=libc++']
else:
    extra_compile_args = ['-std=c++11']
Sergey Edunov's avatar
Sergey Edunov committed
22
23
24
25
26
27
bleu = Extension(
    'fairseq.libbleu',
    sources=[
        'fairseq/clib/libbleu/libbleu.cpp',
        'fairseq/clib/libbleu/module.cpp',
    ],
28
    extra_compile_args=extra_compile_args,
Sergey Edunov's avatar
Sergey Edunov committed
29
30
)

31
32
token_block_utils = cythonize("fairseq/data/token_block_utils_fast.pyx")
data_utils_fast = cythonize("fairseq/data/data_utils_fast.pyx", language="c++")
Sergey Edunov's avatar
Sergey Edunov committed
33
34
35

setup(
    name='fairseq',
Myle Ott's avatar
Myle Ott committed
36
    version='0.8.0',
Sergey Edunov's avatar
Sergey Edunov committed
37
    description='Facebook AI Research Sequence-to-Sequence Toolkit',
Myle Ott's avatar
Myle Ott committed
38
39
40
    url='https://github.com/pytorch/fairseq',
    classifiers=[
        'Intended Audience :: Science/Research',
41
        'License :: OSI Approved :: MIT License',
Bairen Yi's avatar
Bairen Yi committed
42
        'Programming Language :: Python :: 3.5',
Myle Ott's avatar
Myle Ott committed
43
44
45
        'Programming Language :: Python :: 3.6',
        'Topic :: Scientific/Engineering :: Artificial Intelligence',
    ],
Sergey Edunov's avatar
Sergey Edunov committed
46
    long_description=readme,
Myle Ott's avatar
Myle Ott committed
47
    long_description_content_type='text/markdown',
Myle Ott's avatar
Myle Ott committed
48
49
    install_requires=[
        'cffi',
Myle Ott's avatar
Myle Ott committed
50
        'fastBPE',
Myle Ott's avatar
Myle Ott committed
51
        'numpy',
Myle Ott's avatar
Myle Ott committed
52
        'regex',
Myle Ott's avatar
Myle Ott committed
53
        'sacrebleu',
Myle Ott's avatar
Myle Ott committed
54
        'torch',
Myle Ott's avatar
Myle Ott committed
55
56
57
        'tqdm',
    ],
    packages=find_packages(exclude=['scripts', 'tests']),
58
    ext_modules=token_block_utils + data_utils_fast + [bleu],
Myle Ott's avatar
Myle Ott committed
59
    test_suite='tests',
Myle Ott's avatar
Myle Ott committed
60
61
    entry_points={
        'console_scripts': [
Myle Ott's avatar
Myle Ott committed
62
63
64
65
66
            '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
67
68
            'fairseq-train = fairseq_cli.train:cli_main',
            'fairseq-validate = fairseq_cli.validate:cli_main',
Myle Ott's avatar
Myle Ott committed
69
70
        ],
    },
71
    zip_safe=False,
Sergey Edunov's avatar
Sergey Edunov committed
72
)