Skip to content

Commit 206659b

Browse files
committed
chore(pre-commit): add pre-commit hook to enforce llama_stack logger usage
Signed-off-by: Mustafa Elbehery <[email protected]>
1 parent a6e2c18 commit 206659b

File tree

58 files changed

+1302
-122
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1302
-122
lines changed

.pre-commit-config.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,25 @@ repos:
161161
pass_filenames: false
162162
require_serial: true
163163

164+
- id: check-log-usage
165+
name: Ensure 'llama_stack.log' usage for logging
166+
entry: bash
167+
language: system
168+
types: [python]
169+
pass_filenames: true
170+
args:
171+
- -c
172+
- |
173+
matches=$(grep -EnH '^[^#]*\b(import\s+logging|from\s+logging\b)' "$@" | grep -v -e '#\s*allow-direct-logging' || true)
174+
if [ -n "$matches" ]; then
175+
# GitHub Actions annotation format
176+
while IFS=: read -r file line_num rest; do
177+
echo "::error file=$file,line=$line_num::Do not use 'import logging' or 'from logging import' in $file. Use the custom log instead: from llama_stack.log import get_logger; logger = get_logger(). If direct logging is truly needed, add: # allow-direct-logging"
178+
done <<< "$matches"
179+
exit 1
180+
fi
181+
exit 0
182+
164183
ci:
165184
autofix_commit_msg: 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks
166185
autoupdate_commit_msg: ⬆ [pre-commit.ci] pre-commit autoupdate

llama_stack/core/build.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
# the root directory of this source tree.
66

77
import importlib.resources
8-
import logging
98
import sys
109

1110
from pydantic import BaseModel
@@ -17,9 +16,10 @@
1716
from llama_stack.core.utils.exec import run_command
1817
from llama_stack.core.utils.image_types import LlamaStackImageType
1918
from llama_stack.distributions.template import DistributionTemplate
19+
from llama_stack.log import get_logger
2020
from llama_stack.providers.datatypes import Api
2121

22-
log = logging.getLogger(__name__)
22+
log = get_logger(name=__name__, category="core")
2323

2424
# These are the dependencies needed by the distribution server.
2525
# `llama-stack` is automatically installed by the installation script.

llama_stack/core/configure.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#
44
# This source code is licensed under the terms described in the LICENSE file in
55
# the root directory of this source tree.
6-
import logging
76
import textwrap
87
from typing import Any
98

@@ -21,9 +20,10 @@
2120
from llama_stack.core.utils.config_dirs import EXTERNAL_PROVIDERS_DIR
2221
from llama_stack.core.utils.dynamic import instantiate_class_type
2322
from llama_stack.core.utils.prompt_for_config import prompt_for_config
23+
from llama_stack.log import get_logger
2424
from llama_stack.providers.datatypes import Api, ProviderSpec
2525

26-
logger = logging.getLogger(__name__)
26+
logger = get_logger(name=__name__, category="core")
2727

2828

2929
def configure_single_provider(registry: dict[str, ProviderSpec], provider: Provider) -> Provider:

llama_stack/core/library_client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import asyncio
88
import inspect
99
import json
10-
import logging
10+
import logging # allow-direct-logging
1111
import os
1212
import sys
1313
from concurrent.futures import ThreadPoolExecutor
@@ -48,14 +48,15 @@
4848
from llama_stack.core.utils.config import redact_sensitive_fields
4949
from llama_stack.core.utils.context import preserve_contexts_async_generator
5050
from llama_stack.core.utils.exec import in_notebook
51+
from llama_stack.log import get_logger
5152
from llama_stack.providers.utils.telemetry.tracing import (
5253
CURRENT_TRACE_CONTEXT,
5354
end_trace,
5455
setup_logger,
5556
start_trace,
5657
)
5758

58-
logger = logging.getLogger(__name__)
59+
logger = get_logger(name=__name__, category="core")
5960

6061
T = TypeVar("T")
6162

llama_stack/core/request_headers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66

77
import contextvars
88
import json
9-
import logging
109
from contextlib import AbstractContextManager
1110
from typing import Any
1211

1312
from llama_stack.core.datatypes import User
13+
from llama_stack.log import get_logger
1414

1515
from .utils.dynamic import instantiate_class_type
1616

17-
log = logging.getLogger(__name__)
17+
log = get_logger(name=__name__, category="core")
1818

1919
# Context variable for request provider data and auth attributes
2020
PROVIDER_DATA_VAR = contextvars.ContextVar("provider_data", default=None)

llama_stack/core/server/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import functools
1010
import inspect
1111
import json
12-
import logging
12+
import logging # allow-direct-logging
1313
import os
1414
import ssl
1515
import sys

llama_stack/core/utils/exec.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
# This source code is licensed under the terms described in the LICENSE file in
55
# the root directory of this source tree.
66

7-
import logging
7+
import importlib
88
import os
99
import signal
1010
import subprocess
1111
import sys
1212

1313
from termcolor import cprint
1414

15-
log = logging.getLogger(__name__)
15+
from llama_stack.log import get_logger
1616

17-
import importlib
17+
log = get_logger(name=__name__, category="core")
1818

1919

2020
def formulate_run_args(image_type: str, image_name: str) -> list:

llama_stack/core/utils/prompt_for_config.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@
66

77
import inspect
88
import json
9-
import logging
109
from enum import Enum
1110
from typing import Annotated, Any, Literal, Union, get_args, get_origin
1211

1312
from pydantic import BaseModel
1413
from pydantic.fields import FieldInfo
1514
from pydantic_core import PydanticUndefinedType
1615

17-
log = logging.getLogger(__name__)
16+
from llama_stack.log import get_logger
17+
18+
log = get_logger(name=__name__, category="core")
1819

1920

2021
def is_list_of_primitives(field_type):

llama_stack/log.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
# This source code is licensed under the terms described in the LICENSE file in
55
# the root directory of this source tree.
66

7-
import logging
7+
import logging # allow-direct-logging
88
import os
99
import re
1010
import sys
11-
from logging.config import dictConfig
11+
from logging.config import dictConfig # allow-direct-logging
1212

1313
from rich.console import Console
1414
from rich.errors import MarkupError

llama_stack/models/llama/llama3/multimodal/encoder_utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@
1313

1414
# Copyright (c) Meta Platforms, Inc. and its affiliates.
1515
import math
16-
from logging import getLogger
1716

1817
import torch
1918
import torch.nn.functional as F
2019

20+
from llama_stack.log import get_logger
21+
2122
from .utils import get_negative_inf_value, to_2tuple
2223

23-
logger = getLogger()
24+
logger = get_logger(name=__name__, category="models::llama")
2425

2526

2627
def resize_local_position_embedding(orig_pos_embed, grid_size):

0 commit comments

Comments
 (0)