|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""Setup for pip package.""" |
|
|
|
|
|
import codecs |
|
|
import importlib.util |
|
|
import os |
|
|
import subprocess |
|
|
from distutils import cmd as distutils_cmd |
|
|
from distutils import log as distutils_log |
|
|
from itertools import chain |
|
|
|
|
|
import setuptools |
|
|
|
|
|
spec = importlib.util.spec_from_file_location('package_info', 'nemo/package_info.py') |
|
|
package_info = importlib.util.module_from_spec(spec) |
|
|
spec.loader.exec_module(package_info) |
|
|
|
|
|
|
|
|
__contact_emails__ = package_info.__contact_emails__ |
|
|
__contact_names__ = package_info.__contact_names__ |
|
|
__description__ = package_info.__description__ |
|
|
__download_url__ = package_info.__download_url__ |
|
|
__homepage__ = package_info.__homepage__ |
|
|
__keywords__ = package_info.__keywords__ |
|
|
__license__ = package_info.__license__ |
|
|
__package_name__ = package_info.__package_name__ |
|
|
__repository_url__ = package_info.__repository_url__ |
|
|
__version__ = package_info.__version__ |
|
|
|
|
|
|
|
|
with open("README.md", "r", encoding='utf-8') as fh: |
|
|
long_description = fh.read() |
|
|
long_description_content_type = "text/markdown" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def req_file(filename, folder="requirements"): |
|
|
files = [filename] if not isinstance(filename, list) else filename |
|
|
ans = [] |
|
|
for file in files: |
|
|
with open(os.path.join(folder, file), encoding='utf-8') as f: |
|
|
ans.extend(list(map(str.strip, f.readlines()))) |
|
|
return ans |
|
|
|
|
|
|
|
|
install_requires = req_file("requirements.txt") |
|
|
|
|
|
extras_require = { |
|
|
|
|
|
'test': req_file("requirements_test.txt"), |
|
|
'run': req_file("requirements_run.txt"), |
|
|
|
|
|
'core': req_file(["requirements_lightning.txt", "requirements_automodel.txt"]), |
|
|
'lightning': req_file(["requirements_lightning.txt"]), |
|
|
'automodel': req_file(["requirements_automodel.txt"]), |
|
|
'common-only': req_file('requirements_common.txt'), |
|
|
|
|
|
'asr-only': req_file("requirements_asr.txt"), |
|
|
'ctc_segmentation': req_file("requirements.txt", folder="tools/ctc_segmentation"), |
|
|
'nlp-only': req_file("requirements_nlp.txt"), |
|
|
'tts': req_file("requirements_tts.txt"), |
|
|
'slu': req_file("requirements_slu.txt"), |
|
|
'multimodal-only': req_file("requirements_multimodal.txt"), |
|
|
'audio': req_file("requirements_audio.txt"), |
|
|
'deploy': req_file("requirements_deploy.txt"), |
|
|
'eval': req_file("requirements_eval.txt"), |
|
|
} |
|
|
|
|
|
|
|
|
extras_require['all'] = list(chain(val for key, val in extras_require.items() if key != 'deploy')) |
|
|
|
|
|
|
|
|
extras_require['common'] = extras_require['common-only'] |
|
|
|
|
|
extras_require['common'] = list( |
|
|
chain( |
|
|
extras_require['common'], |
|
|
extras_require['core'], |
|
|
) |
|
|
) |
|
|
extras_require['test'] = list( |
|
|
chain( |
|
|
extras_require['test'], |
|
|
extras_require['tts'], |
|
|
extras_require['common'], |
|
|
) |
|
|
) |
|
|
extras_require['asr'] = extras_require['asr-only'] |
|
|
extras_require['asr'] = list( |
|
|
chain( |
|
|
extras_require['asr'], |
|
|
extras_require['ctc_segmentation'], |
|
|
extras_require['common'], |
|
|
) |
|
|
) |
|
|
extras_require['nlp'] = extras_require['nlp-only'] |
|
|
extras_require['nlp'] = list( |
|
|
chain( |
|
|
extras_require['nlp'], |
|
|
extras_require['eval'], |
|
|
extras_require['common'], |
|
|
) |
|
|
) |
|
|
extras_require['llm'] = extras_require['nlp'] |
|
|
extras_require['tts'] = list( |
|
|
chain( |
|
|
extras_require['tts'], |
|
|
extras_require['asr'], |
|
|
extras_require['common'], |
|
|
) |
|
|
) |
|
|
extras_require['multimodal'] = extras_require['multimodal-only'] |
|
|
extras_require['multimodal'] = list( |
|
|
chain( |
|
|
extras_require['multimodal'], |
|
|
extras_require['nlp'], |
|
|
extras_require['common'], |
|
|
) |
|
|
) |
|
|
extras_require['audio'] = list( |
|
|
chain( |
|
|
extras_require['audio'], |
|
|
extras_require['common'], |
|
|
) |
|
|
) |
|
|
extras_require['slu'] = list( |
|
|
chain( |
|
|
extras_require['slu'], |
|
|
extras_require['asr'], |
|
|
) |
|
|
) |
|
|
extras_require['deploy'] = list( |
|
|
chain( |
|
|
extras_require['nlp'], |
|
|
extras_require['multimodal'], |
|
|
extras_require['tts'], |
|
|
extras_require['deploy'], |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class StyleCommand(distutils_cmd.Command): |
|
|
__ISORT_BASE = 'isort' |
|
|
__BLACK_BASE = 'black' |
|
|
description = 'Checks overall project code style.' |
|
|
user_options = [ |
|
|
('scope=', None, 'Folder of file to operate within.'), |
|
|
('fix', None, 'True if tries to fix issues in-place.'), |
|
|
] |
|
|
|
|
|
def __call_checker(self, base_command, scope, check): |
|
|
command = list(base_command) |
|
|
|
|
|
command.append(scope) |
|
|
|
|
|
if check: |
|
|
command.extend(['--check', '--diff']) |
|
|
|
|
|
self.announce( |
|
|
msg='Running command: %s' % str(' '.join(command)), |
|
|
level=distutils_log.INFO, |
|
|
) |
|
|
|
|
|
return_code = subprocess.call(command) |
|
|
|
|
|
return return_code |
|
|
|
|
|
def _isort(self, scope, check): |
|
|
return self.__call_checker( |
|
|
base_command=self.__ISORT_BASE.split(), |
|
|
scope=scope, |
|
|
check=check, |
|
|
) |
|
|
|
|
|
def _black(self, scope, check): |
|
|
return self.__call_checker( |
|
|
base_command=self.__BLACK_BASE.split(), |
|
|
scope=scope, |
|
|
check=check, |
|
|
) |
|
|
|
|
|
def _pass(self): |
|
|
self.announce(msg='\033[32mPASS\x1b[0m', level=distutils_log.INFO) |
|
|
|
|
|
def _fail(self): |
|
|
self.announce(msg='\033[31mFAIL\x1b[0m', level=distutils_log.INFO) |
|
|
|
|
|
|
|
|
def initialize_options(self): |
|
|
self.scope = '.' |
|
|
self.fix = '' |
|
|
|
|
|
def run(self): |
|
|
scope, check = self.scope, not self.fix |
|
|
isort_return = self._isort(scope=scope, check=check) |
|
|
black_return = self._black(scope=scope, check=check) |
|
|
|
|
|
if isort_return == 0 and black_return == 0: |
|
|
self._pass() |
|
|
else: |
|
|
self._fail() |
|
|
exit(isort_return if isort_return != 0 else black_return) |
|
|
|
|
|
def finalize_options(self): |
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setuptools.setup( |
|
|
name=__package_name__, |
|
|
|
|
|
|
|
|
|
|
|
version=__version__, |
|
|
description=__description__, |
|
|
long_description=long_description, |
|
|
long_description_content_type=long_description_content_type, |
|
|
|
|
|
url=__repository_url__, |
|
|
download_url=__download_url__, |
|
|
|
|
|
author=__contact_names__, |
|
|
author_email=__contact_emails__, |
|
|
|
|
|
maintainer=__contact_names__, |
|
|
maintainer_email=__contact_emails__, |
|
|
|
|
|
license=__license__, |
|
|
classifiers=[ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'Development Status :: 5 - Production/Stable', |
|
|
|
|
|
'Intended Audience :: Developers', |
|
|
'Intended Audience :: Science/Research', |
|
|
'Intended Audience :: Information Technology', |
|
|
|
|
|
'Topic :: Scientific/Engineering', |
|
|
'Topic :: Scientific/Engineering :: Mathematics', |
|
|
'Topic :: Scientific/Engineering :: Image Recognition', |
|
|
'Topic :: Scientific/Engineering :: Artificial Intelligence', |
|
|
'Topic :: Software Development :: Libraries', |
|
|
'Topic :: Software Development :: Libraries :: Python Modules', |
|
|
'Topic :: Utilities', |
|
|
|
|
|
'License :: OSI Approved :: Apache Software License', |
|
|
|
|
|
'Programming Language :: Python :: 3', |
|
|
'Programming Language :: Python :: 3.10', |
|
|
|
|
|
'Environment :: Console', |
|
|
'Natural Language :: English', |
|
|
'Operating System :: OS Independent', |
|
|
], |
|
|
packages=setuptools.find_packages(), |
|
|
python_requires='>=3.10', |
|
|
install_requires=install_requires, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extras_require=extras_require, |
|
|
|
|
|
include_package_data=True, |
|
|
exclude=['tools', 'tests'], |
|
|
package_data={'': ['*.tsv', '*.txt', '*.far', '*.fst', '*.cpp', 'Makefile']}, |
|
|
zip_safe=False, |
|
|
|
|
|
keywords=__keywords__, |
|
|
|
|
|
cmdclass={'style': StyleCommand}, |
|
|
entry_points={ |
|
|
"nemo_run.cli": [ |
|
|
"llm = nemo.collections.llm", |
|
|
], |
|
|
}, |
|
|
) |
|
|
|