setup.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # Copyright (c) Meta Platforms, Inc. and affiliates
  2. # All rights reserved.
  3. #
  4. # This source code is licensed under the license found in the
  5. # LICENSE file in the root directory of this source tree.
  6. from pathlib import Path
  7. import os
  8. from typing import Iterable
  9. import pkg_resources
  10. from setuptools import find_packages, setup
  11. from setuptools.command.develop import develop
  12. def _load_requirements(fname: str) -> Iterable[str]:
  13. with open(Path(__file__).parent / fname) as fp_in:
  14. for req in pkg_resources.parse_requirements(fp_in):
  15. yield str(req)
  16. def _add_symlinks():
  17. root = Path(__file__).parent
  18. sc_root = root / "src/seamless_communication"
  19. sc_link = root / "seamless_communication"
  20. m4t_scripts_root = root / "scripts/m4t"
  21. m4t_scripts_link = root / "m4t_scripts"
  22. if not sc_link.exists():
  23. os.symlink(sc_root, sc_link, target_is_directory=True)
  24. if not m4t_scripts_link.exists():
  25. os.symlink(m4t_scripts_root, m4t_scripts_link, target_is_directory=True)
  26. class cmd_for_editable_mode(develop):
  27. def run(self):
  28. # add symlinks for modules if install in editable mode
  29. _add_symlinks()
  30. super().run()
  31. default_requirements = list(_load_requirements("requirements.txt"))
  32. dev_requirements = list(_load_requirements("dev_requirements.txt"))
  33. setup(
  34. name="seamless_communication",
  35. version="1.0.0",
  36. packages=find_packages(where="src")
  37. + ["m4t_scripts.finetune", "m4t_scripts.predict"],
  38. package_dir={
  39. "m4t_scripts": "scripts/m4t",
  40. "seamless_communication": "src/seamless_communication",
  41. },
  42. package_data={"": ["assets/cards/*.yaml"]},
  43. description="SeamlessM4T -- Massively Multilingual & Multimodal Machine Translation Model",
  44. long_description=open("README.md", encoding="utf-8").read(),
  45. long_description_content_type="text/markdown",
  46. readme="README.md",
  47. python_requires=">=3.8",
  48. author="Fundamental AI Research (FAIR) at Meta",
  49. url="https://github.com/facebookresearch/seamless_communication",
  50. license="Creative Commons",
  51. install_requires=default_requirements,
  52. extras_require={"dev": default_requirements + dev_requirements},
  53. entry_points={
  54. "console_scripts": [
  55. "m4t_predict=m4t_scripts.predict.predict:main",
  56. "m4t_finetune=m4t_scripts.finetune.finetune:main",
  57. "m4t_prepare_dataset=m4t_scripts.finetune.dataset:main",
  58. "m4t_audio_to_units=m4t_scripts.audio_to_units.audio_to_units:main",
  59. ],
  60. },
  61. cmdclass={"develop": cmd_for_editable_mode},
  62. include_package_data=True,
  63. )