Spaces:
Running
on
Zero
Running
on
Zero
# Copyright (c) 2022-2023, 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. | |
.PHONY: clean clean-build clean-tritonserver clean-pyc clean-docs clean-test docs lint test coverage release dist build-triton extract-triton install install-dev help | |
.DEFAULT_GOAL := help | |
define BROWSER_PYSCRIPT | |
import os, webbrowser, sys | |
from urllib.request import pathname2url | |
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) | |
endef | |
export BROWSER_PYSCRIPT | |
define PRINT_HELP_PYSCRIPT | |
import re, sys | |
for line in sys.stdin: | |
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) | |
if match: | |
target, help = match.groups() | |
print("%-20s %s" % (target, help)) | |
endef | |
export PRINT_HELP_PYSCRIPT | |
BROWSER := python -c "$$BROWSER_PYSCRIPT" | |
PIP_INSTALL := pip install --extra-index-url https://pypi.ngc.nvidia.com | |
TRITONSERVER_IMAGE_VERSION = 23.10 | |
TRITONSERVER_IMAGE_NAME = nvcr.io/nvidia/tritonserver:$(TRITONSERVER_IMAGE_VERSION)-pyt-python-py3 | |
TRITONSERVER_OUTPUT_DIR = ${PWD}/pytriton/tritonserver | |
TRITONSERVER_BASENAME = pytriton | |
PYTRITON_IMAGE_NAME = $(TRITONSERVER_BASENAME):$(TRITONSERVER_IMAGE_VERSION) | |
# to set PLATFORM from outside, use: make PLATFORM=linux/arm64; | |
# correct values are: linux/amd64 (default), linux/arm64 | |
PLATFORM=linux/amd64 | |
help: | |
clean: clean-build clean-pyc clean-test clean-tritonserver clean-docs ## remove all build, tritonserver, test, docs, coverage and Python artifacts | |
clean-build: ## remove build artifacts | |
rm -fr build/ | |
rm -fr dist/ | |
rm -fr .eggs/ | |
find . -name '*.egg-info' -exec rm -fr {} + | |
find . -name '*.egg' -exec rm -f {} + | |
clean-tritonserver: | |
rm -fr pytriton/tritonserver | |
clean-pyc: ## remove Python file artifacts | |
find . -name '*.pyc' -exec rm -f {} + | |
find . -name '*.pyo' -exec rm -f {} + | |
find . -name '*~' -exec rm -f {} + | |
find . -name '__pycache__' -exec rm -fr {} + | |
clean-docs: ## remove test and coverage artifacts | |
rm -rf site | |
clean-test: ## remove test and coverage artifacts | |
rm -fr .tox/ | |
rm -f .coverage | |
rm -fr htmlcov/ | |
rm -fr .pytest_cache | |
rm -fr .pytype/ | |
docs: clean-docs ## generate site | |
cp CHANGELOG.md docs | |
cp CONTRIBUTING.md docs | |
cp LICENSE docs/LICENSE.md | |
cp examples/README.md docs/examples.md | |
mkdocs build --clean | |
docs-serve: docs | |
mkdocs serve | |
lint: ## check style with pre-commit and pytype | |
tox -e pytype,pre-commit --develop | |
test: ## run tests on every Python version with tox | |
tox --develop --skip-missing-interpreters | |
coverage: ## check code coverage quickly with the default Python | |
coverage run --source pytriton -m pytest | |
coverage report -m | |
coverage html | |
$(BROWSER) htmlcov/index.html | |
dist: clean build-triton extract-triton ## builds source and wheel package | |
bash ./scripts/build_wheel.sh $(PLATFORM) | |
ls -lh dist | |
find ./dist -iname *-linux*.whl -type f -exec bash ./scripts/add_libs_to_wheel.sh $(PYTRITON_IMAGE_NAME) $(TRITONSERVER_OUTPUT_DIR) {} $(PLATFORM) \; | |
find ./dist -iname *-linux*.whl -type f -delete | |
ls -lh dist | |
twine check dist/* | |
build-triton: ## build Triton with Python Stubs | |
bash ./scripts/build_triton.sh $(TRITONSERVER_IMAGE_NAME) $(PYTRITON_IMAGE_NAME) $(PLATFORM) | |
echo "export PYTRITON_IMAGE_NAME=$(PYTRITON_IMAGE_NAME)" > .env | |
extract-triton: build-triton ## extract Triton binaries and libraries | |
# changing dst path, change also in clean-build and pyproject.toml | |
bash ./scripts/extract_triton.sh $(PYTRITON_IMAGE_NAME) $(TRITONSERVER_OUTPUT_DIR) $(PLATFORM) | |
install: clean extract-triton ## install the package to the active Python's site-packages | |
$(PIP_INSTALL) --upgrade pip | |
$(PIP_INSTALL) . | |
install-dev: clean-build clean-pyc | |
$(PIP_INSTALL) --upgrade pip | |
$(PIP_INSTALL) -e .[dev] | |