Files
nvidia-nemo--speech/setup.py
Charlie Truong a9cecece2d ci: Install CI dependencies from uv lock (#15697)
* Move requirements metadata to pyproject

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Update CI Dockerfile to install with uv

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Remove legacy requirements files

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Remove legacy Docker dependency installer

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Fix container build

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Fix nemo install

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Update lhotse minimum version

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Omit PyTorch synthetic module from coverage

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Mark test_speaker_target_setting as broken

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Revert "Mark test_speaker_target_setting as broken"

This reverts commit 8c5a48eb50.

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Use cu12 in docker CI

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Set back to cuda 13 install

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Update to pytorch 2.12 and cuda dl base image

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Try torch 2.10

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Add deps

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Update uv lock file

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Fix install

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Add speech CI build ID label

Signed-off-by: Charlie Truong <chtruong@nvidia.com>

* Fix SpeechLM2 automodel data parallel rank

Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>

* Fix lint failures after dependency migration

Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>

* Fix ASR CUDA graph transcribe workers

* Fix functional model support tests

* Use CUDA 13.2 PyTorch wheels

* Fix ASR CUDA graph fallback errors

* Fix TDT model support vocab targets

Use decoder vocab size when generating synthetic TDT transcript labels so duration outputs from the joint are not sampled as labels.

Move CUDA graph compile exception types into cuda_python_utils per review feedback.

Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>

---------

Signed-off-by: Charlie Truong <chtruong@nvidia.com>
Signed-off-by: Piotr Żelasko <pzelasko@nvidia.com>
Co-authored-by: Piotr Żelasko <pzelasko@nvidia.com>
2026-05-29 15:35:19 -04:00

186 lines
6.1 KiB
Python

# ! /usr/bin/python
# -*- coding: utf-8 -*-
# Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Setup for pip package."""
import importlib.util
import subprocess
from distutils import cmd as distutils_cmd
from distutils import log as distutils_log
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"
###############################################################################
# Code style checkers #
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #
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)
# noinspection PyAttributeOutsideInit
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__,
# Versions should comply with PEP440. For a discussion on single-sourcing
# the version across setup.py and the project code, see
# https://packaging.python.org/en/latest/single_source_version.html
version=__version__,
description=__description__,
long_description=long_description,
long_description_content_type=long_description_content_type,
# The project's main homepage.
url=__repository_url__,
download_url=__download_url__,
# Author details
author=__contact_names__,
author_email=__contact_emails__,
# maintainer Details
maintainer=__contact_names__,
maintainer_email=__contact_emails__,
# The licence under which the project is released
license=__license__,
classifiers=[
# How mature is this project? Common values are
# 1 - Planning
# 2 - Pre-Alpha
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
# 6 - Mature
# 7 - Inactive
'Development Status :: 5 - Production/Stable',
# Indicate who your project is intended for
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'Intended Audience :: Information Technology',
# Indicate what your project relates to
'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',
# Pick your license as you wish (should match "license" above)
'License :: OSI Approved :: Apache Software License',
# Supported python versions
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.10',
# Additional Setting
'Environment :: Console',
'Natural Language :: English',
'Operating System :: OS Independent',
],
packages=setuptools.find_packages(),
python_requires='>=3.10',
# Add in any packaged data.
include_package_data=True,
exclude=['tools', 'tests'],
package_data={'': ['*.tsv', '*.txt', '*.far', '*.fst', '*.cpp', 'Makefile']},
zip_safe=False,
# PyPI package information.
keywords=__keywords__,
# Custom commands.
cmdclass={'style': StyleCommand},
)