setup.py (39 lines of code) (raw):

# Copyright Amazon.com, Inc. or its affiliates. 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. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file 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. # Portions taken from https://github.com/NVIDIA/NeMo, Copyright Nvidia Corporation import os from setuptools import PEP420PackageFinder, setup # Source the package version as __version__ exec(open("src/hyperpod_nemo_adapter/version/__version__.py").read()) package_name = "hyperpod-nemo-adapter" package_keywords = "aws sagemaker" # This implementation of a requirements.txt loader is base off of the linked function from NVIDIA NeMo setup.py: https://github.com/NVIDIA/NeMo/blob/5a9000fbb858edfd5d156adf5453ea2b8342e4d2/setup.py#L71C24-L71C45 def parse_requirements(filename, folder="requirements"): with open(os.path.join(folder, filename), encoding="utf-8") as f: content = f.readlines() # Added the split at # character to ignore any commented text in a given line of the requirements file return [x.split("#")[0].strip() for x in content] def extra_requirements(): return { "nemo": parse_requirements("requirements_nemo.txt"), "lightning": parse_requirements("requirements_lightning.txt"), "test": parse_requirements("requirements_test.txt"), "profiling": parse_requirements("requirements_profiling.txt"), "all": parse_requirements("requirements_nemo.txt") + parse_requirements("requirements_lightning.txt") + parse_requirements("requirements_test.txt") + parse_requirements("requirements_profiling.txt"), } setup( name=package_name, version=__version__, license="Apache 2.0", license_files=("LICENSE",), keywords=package_keywords, include_package_data=True, packages=PEP420PackageFinder.find(where="src"), package_dir={"": "src"}, package_data={"hyperpod_nemo_adapter": ["conf/*.yaml"]}, install_requires=parse_requirements("requirements.txt"), extras_require=extra_requirements(), python_requires=">= 3.10", entry_points={ "console_scripts": [ "merge-peft-checkpoint = hyperpod_nemo_adapter.scripts.merge_peft_checkpoint:main", ], }, )