| # Copyright (C) 2020 Arm Limited or its affiliates. All rights reserved. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| # 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 |
| # |
| # 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. |
| # Description: |
| # Packaging for the Vela compiler |
| import os |
| import re |
| |
| from setuptools import Extension |
| from setuptools import setup |
| from setuptools.command.build_ext import build_ext |
| |
| |
| class BuildExtension(build_ext): |
| def finalize_options(self): |
| build_ext.finalize_options(self) |
| import builtins |
| |
| # tell numpy it's not in setup anymore |
| builtins.__NUMPY_SETUP__ = False |
| import numpy as np |
| |
| # add the numpy headers to the mlw_codec extension |
| self.include_dirs.append(np.get_include()) |
| |
| |
| # Read the contents of README.md file |
| this_directory = os.path.abspath(os.path.dirname(__file__)) |
| with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f: |
| long_description = f.read() |
| tag = "3.5.0" |
| url = f"https://review.mlplatform.org/plugins/gitiles/ml/ethos-u/ethos-u-vela/+/refs/tags/{tag}/" |
| # Find all markdown links that match the format: [text](link) |
| for match, link in re.findall(r"(\[.+?\]\((.+?)\))", long_description): |
| # If the link is a file that exists, replace it with the web link to the file instead |
| if os.path.exists(os.path.join(this_directory, link)): |
| url_link = match.replace(link, url + link) |
| long_description = long_description.replace(match, url_link) |
| if os.getenv("ETHOSU_VELA_DEBUG"): |
| # Verify the contents of the modifications made in a markdown renderer |
| with open(os.path.join(this_directory, "PYPI.md"), "wt", encoding="utf-8") as fout: |
| fout.write(long_description) |
| |
| mlw_module = Extension( |
| "ethosu.mlw_codec", |
| ["ethosu/mlw_codec/mlw_encode.c", "ethosu/mlw_codec/mlw_decode.c", "ethosu/mlw_codec/mlw_codecmodule.c"], |
| define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_9_API_VERSION")], |
| ) |
| |
| setup( |
| name="ethos-u-vela", |
| use_scm_version=True, |
| description="Neural network model compiler for Arm Ethos-U NPUs", |
| long_description=long_description, |
| long_description_content_type="text/markdown", |
| url="https://git.mlplatform.org/ml/ethos-u/ethos-u-vela.git/", |
| author="Arm Ltd.", |
| author_email="mlg-vela@arm.com", |
| license="Apache License 2.0", |
| classifiers=[ |
| "Development Status :: 5 - Production/Stable", |
| "Intended Audience :: Developers", |
| "License :: OSI Approved :: Apache Software License", |
| "Operating System :: POSIX :: Linux", |
| "Operating System :: Microsoft :: Windows :: Windows 10", |
| "Programming Language :: C", |
| "Programming Language :: Python :: 3", |
| "Programming Language :: Python :: 3.7", |
| "Topic :: Scientific/Engineering :: Artificial Intelligence", |
| "Topic :: Software Development :: Compilers", |
| ], |
| keywords=["ethos-u", "vela compiler", "tflite", "npu"], |
| packages=[ |
| "ethosu", |
| "ethosu.vela", |
| "ethosu.vela.ethos_u55_regs", |
| "ethosu.vela.tflite", |
| "ethosu.vela.tosa", |
| "ethosu.mlw_codec", |
| ], |
| package_data={"ethosu": ["config_files/*/*.ini"]}, |
| python_requires="~=3.7", |
| install_requires=[ |
| "flatbuffers==2.0.7", |
| "numpy<=1.21.3; python_version<='3.7'", |
| "numpy; python_version>'3.7'", |
| "lxml>=4.5.1", |
| ], |
| entry_points={"console_scripts": ["vela = ethosu.vela.vela:main"]}, |
| ext_modules=[mlw_module], |
| cmdclass={"build_ext": BuildExtension}, # type: ignore[dict-item] |
| setup_requires=["numpy<=1.21.3; python_version<='3.7'", "numpy; python_version>'3.7'", "setuptools_scm<6.0"], |
| ) |