Skip to content

Commit

Permalink
Add GitHub action to format and lint code (#96)
Browse files Browse the repository at this point in the history
* Add pre-commit hook

* Run commit hooks, remove ignored word list

* Add GitHub action

* Add Java to Clang

* Fix pre-commit to include all Python files

* Remove old formatter

* Remove unused skipped files

* Remove codeql because no more Python

* Add more pre-commit filetype checkers

* Trim whitespace hook

* Remove unnecessary dependency

* Add mixed-line-ending and case-conflicts checks

* Add copyright

* Update max-line-length

* Remove unnecessary line

* End of file

* Fix comment

* Add and apply isort

* Remove duplicate copyrights, add hooks link

* Pin workflow Ubuntu version

* Flake8 Black style, move Flake8 conf to toml

* Alphabetize configs by tool

* Move flake8 back into pre-commit-config

* Restore clang-format file

* Eof newline

* Fix yaml spacing

* Normalize spacing

* Normalize config indentation

* Update line limit in clang-format to 80 chars

* Update workflows to run on every PR

* Run pre-commit
  • Loading branch information
dyastremsky authored Sep 6, 2023
1 parent a2de06f commit 468eb21
Show file tree
Hide file tree
Showing 14 changed files with 165 additions and 262 deletions.
3 changes: 2 additions & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
BasedOnStyle: Google

IndentWidth: 2
ColumnLimit: 80
ContinuationIndentWidth: 4
UseTab: Never
MaxEmptyLinesToKeep: 2
Expand Down Expand Up @@ -34,4 +35,4 @@ BinPackArguments: true
BinPackParameters: true
ConstructorInitializerAllOnOneLineOrOnePerLine: false

IndentCaseLabels: true
IndentCaseLabels: true
90 changes: 0 additions & 90 deletions .github/workflows/codeql.yml

This file was deleted.

40 changes: 11 additions & 29 deletions tools/pre-commit → .github/workflows/pre-commit.yml
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash
# Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# Copyright 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
Expand All @@ -25,32 +24,15 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

###############################################################################
#
# Git pre-commit hook for Triton related projects
#
# To install this hook for a project, copy "pre-commit" and "format.py" into
# ".git/hooks/" directory of the project
#
###############################################################################

###############################################################################
#
# Run formatter script
#
###############################################################################

# Repo root
GIT_REPO_ROOT=$(git rev-parse --show-toplevel)

PYTHON_CMD=python3
FORMATTER_PY=${GIT_REPO_ROOT}/.git/hooks/format.py
name: pre-commit

CHANGED_FILES="$(git --no-pager diff --name-status --no-color --cached | awk '{ if (match($1, /R[0-9]+/)) { print $3 } else if ($1 != "D") { print $2 } }')"
on:
pull_request:

echo "Running Python auto-format..."
for CHANGED_FILE in $CHANGED_FILES;
do
${PYTHON_CMD} ${FORMATTER_PY} ${GIT_REPO_ROOT}/${CHANGED_FILE}
git add ${GIT_REPO_ROOT}/${CHANGED_FILE}
done
jobs:
pre-commit:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
- uses: pre-commit/[email protected]
73 changes: 73 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Copyright 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of NVIDIA CORPORATION nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

repos:
- repo: https://github.com/timothycrosley/isort
rev: 5.12.0
hooks:
- id: isort
additional_dependencies: [toml]
- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
types_or: [python, cython]
- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
hooks:
- id: flake8
args: [--max-line-length=88, --select=C,E,F,W,B,B950, --extend-ignore = E203,E501]
types_or: [python, cython]
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v16.0.5
hooks:
- id: clang-format
types_or: [c, c++, cuda, proto, textproto, java]
args: ["-fallback-style=none", "-style=file", "-i"]
- repo: https://github.com/codespell-project/codespell
rev: v2.2.4
hooks:
- id: codespell
additional_dependencies: [tomli]
args: ["--toml", "pyproject.toml"]
exclude: (?x)^(.*stemmer.*|.*stop_words.*|^CHANGELOG.md$)
# More details about these pre-commit hooks here:
# https://pre-commit.com/hooks.html
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-json
- id: check-toml
- id: check-yaml
- id: check-shebang-scripts-are-executable
- id: end-of-file-fixer
types_or: [c, c++, cuda, proto, textproto, java, python]
- id: mixed-line-ending
- id: requirements-txt-fixer
- id: trailing-whitespace
2 changes: 1 addition & 1 deletion cmake/TritonCommonConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ check_required_components(triton-common-json
triton-common-thread-pool
)

set(TRITONCOMMON_LIBRARIES
set(TRITONCOMMON_LIBRARIES
TritonCommon::triton-common-json
TritonCommon::triton-common-sync-queue
TritonCommon::triton-common-async-work-queue
Expand Down
8 changes: 4 additions & 4 deletions include/triton/common/model_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,28 +71,28 @@ enum Platform {
/// \param dims The shape.
/// \return The number of elements, or -1 if the number of elements
/// cannot be determined because the shape contains one or more
/// wilcard dimensions.
/// wildcard dimensions.
int64_t GetElementCount(const DimsList& dims);

/// Get the number of elements in a shape.
/// \param dims The shape.
/// \return The number of elements, or -1 if the number of elements
/// cannot be determined because the shape contains one or more
/// wilcard dimensions.
/// wildcard dimensions.
int64_t GetElementCount(const std::vector<int64_t>& dims);

/// Get the number of elements in the shape of a model input.
/// \param mio The model input.
/// \return The number of elements, or -1 if the number of elements
/// cannot be determined because the shape contains one or more
/// wilcard dimensions.
/// wildcard dimensions.
int64_t GetElementCount(const inference::ModelInput& mio);

/// Get the number of elements in the shape of a model output.
/// \param mio The model output.
/// \return The number of elements, or -1 if the number of elements
/// cannot be determined because the shape contains one or more
/// wilcard dimensions.
/// wildcard dimensions.
int64_t GetElementCount(const inference::ModelOutput& mio);

/// Are values of a datatype fixed-size, or variable-sized.
Expand Down
6 changes: 3 additions & 3 deletions include/triton/common/triton_json.h
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ class TritonJson {
return TRITONJSON_STATUSSUCCESS;
}

// Add a reference to a expicit-length string as a new member to
// Add a reference to a explicit-length string as a new member to
// this value. It is assumed that 'name' and 'value' can be used
// by reference, it is the caller's responsibility to make sure
// the lifetime of 'name' and 'value' extend at least as long as
Expand Down Expand Up @@ -531,7 +531,7 @@ class TritonJson {
return TRITONJSON_STATUSSUCCESS;
}

// Append a reference to a expicit-length string to this value,
// Append a reference to a explicit-length string to this value,
// which must be an array. It is assumed that 'value' can be used
// by reference, it is the caller's responsibility to make sure
// the lifetime of 'value' extends at least as long as the object.
Expand Down Expand Up @@ -688,7 +688,7 @@ class TritonJson {
return false;
}

// Whether the object is null value. Note that false will also be retuned
// Whether the object is null value. Note that false will also be returned
// if the object is not a JSON value.
bool IsNull() const { return ((value_ != nullptr) && value_->IsNull()); }

Expand Down
6 changes: 3 additions & 3 deletions protobuf/grpc_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -994,23 +994,23 @@ message InferStatistics
//@@ cache. On a cache miss, the request hash and response output tensor
//@@ data is added to the cache. See response cache docs for more info:
//@@
//https://github.com/triton-inference-server/server/blob/main/docs/response_cache.md
// https://github.com/triton-inference-server/server/blob/main/docs/response_cache.md
//@@
StatisticDuration cache_hit = 7;

//@@ .. cpp:var:: StatisticDuration cache_miss
//@@
//@@ The count of response cache misses and cumulative duration to lookup
//@@ and insert output tensor data from the computed response to the
//cache.
// cache.
//@@ For example, this duration should include the time to copy
//@@ output tensor data from the response object to the Response Cache.
//@@ Assuming the response cache is enabled for a given model, a cache
//@@ miss occurs for a request to that model when the request metadata
//@@ does NOT hash to an existing entry in the cache. See the response
//@@ cache docs for more info:
//@@
//https://github.com/triton-inference-server/server/blob/main/docs/response_cache.md
// https://github.com/triton-inference-server/server/blob/main/docs/response_cache.md
//@@
StatisticDuration cache_miss = 8;
}
Expand Down
Loading

0 comments on commit 468eb21

Please sign in to comment.