setup.py 2.33 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
8
9
10
11
12
13
14
15
16

from setuptools import setup, find_packages, Extension
import sys


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

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

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

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

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