fiuai-sdk-python 0.6.8__tar.gz → 0.6.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/PKG-INFO +1 -1
  2. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/pyproject.toml +1 -1
  3. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/utils/logger.py +45 -26
  4. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/.gitignore +0 -0
  5. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/CHANGELOG.md +0 -0
  6. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/LICENSE +0 -0
  7. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/README.md +0 -0
  8. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/__init__.py +0 -0
  9. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/auth/__init__.py +0 -0
  10. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/auth/context_mgr.py +0 -0
  11. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/auth/header.py +0 -0
  12. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/auth/helper.py +0 -0
  13. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/auth/type.py +0 -0
  14. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/bank.py +0 -0
  15. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/client.py +0 -0
  16. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/company.py +0 -0
  17. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/config.py +0 -0
  18. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/const.py +0 -0
  19. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/context.py +0 -0
  20. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/datatype.py +0 -0
  21. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/doctype.py +0 -0
  22. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/error.py +0 -0
  23. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/examples/fastapi_integration.py +0 -0
  24. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/http/__init__.py +0 -0
  25. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/http/client.py +0 -0
  26. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/item.py +0 -0
  27. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/perm.py +0 -0
  28. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/cache/__init__.py +0 -0
  29. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/cache/redis_manager.py +0 -0
  30. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/db/__init__.py +0 -0
  31. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/db/config.py +0 -0
  32. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/db/errors.py +0 -0
  33. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/db/manager.py +0 -0
  34. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/db/utils.py +0 -0
  35. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/vector/__init__.py +0 -0
  36. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/pkg/vector/vector.py +0 -0
  37. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/profile.py +0 -0
  38. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/resp.py +0 -0
  39. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/setup.py +0 -0
  40. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/type.py +0 -0
  41. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/util.py +0 -0
  42. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/utils/__init__.py +0 -0
  43. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/utils/ids.py +0 -0
  44. {fiuai_sdk_python-0.6.8 → fiuai_sdk_python-0.6.9}/src/fiuai_sdk_python/utils/text.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fiuai_sdk_python
3
- Version: 0.6.8
3
+ Version: 0.6.9
4
4
  Summary: FiuAI Python SDK - 企业级AI服务集成开发工具包
5
5
  Project-URL: Homepage, https://github.com/fiuai/fiuai-sdk-python
6
6
  Project-URL: Documentation, https://github.com/fiuai/fiuai-sdk-python#readme
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fiuai_sdk_python"
3
- version = "0.6.8"
3
+ version = "0.6.9"
4
4
  description = "FiuAI Python SDK - 企业级AI服务集成开发工具包"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -8,49 +8,78 @@
8
8
  import logging
9
9
  import os
10
10
  import sys
11
+ from typing import Any, Callable, Dict, Optional
11
12
 
12
13
 
14
+ def _make_context_filter(
15
+ context_injector: Optional[Callable[[], Optional[Dict[str, Any]]]],
16
+ ) -> logging.Filter:
17
+ """根据 context_injector 构建过滤器:非 None 时注入返回值到 record,否则仅设置默认 trace_id。"""
18
+
19
+ class _InjectorFilter(logging.Filter):
20
+ def __init__(self, injector: Optional[Callable[[], Optional[Dict[str, Any]]]]) -> None:
21
+ super().__init__()
22
+ self._injector = injector
23
+
24
+ def filter(self, record: logging.LogRecord) -> bool:
25
+ if self._injector is not None:
26
+ try:
27
+ ctx = self._injector()
28
+ if ctx:
29
+ for k, v in ctx.items():
30
+ setattr(record, k, v)
31
+ except Exception:
32
+ pass
33
+ if not getattr(record, "trace_id", None):
34
+ record.trace_id = "-"
35
+ return True
36
+
37
+ return _InjectorFilter(context_injector)
13
38
 
14
39
 
15
40
  def init_logger(
16
41
  log_path: str = "logs/",
17
42
  log_level: str = "INFO",
18
43
  json_log: bool = False,
19
- caller: bool = True
44
+ caller: bool = True,
45
+ context_injector: Optional[Callable[[], Optional[Dict[str, Any]]]] = None,
20
46
  ):
21
47
  """初始化日志配置
22
-
48
+
23
49
  Args:
24
50
  log_path: 日志文件路径
25
51
  log_level: 日志级别
26
52
  json_log: 是否使用JSON格式日志
27
53
  caller: 是否显示调用者信息
54
+ context_injector: 可选,无参可调用对象,返回 dict(如 {"trace_id": "xxx"}),
55
+ 非 None 时会将返回的键值注入到每条日志记录中。
28
56
  """
29
57
  # 创建日志目录
30
58
  if log_path and not os.path.exists(log_path):
31
59
  os.makedirs(log_path)
32
-
60
+
33
61
  # 设置日志级别
34
62
  level = getattr(logging, log_level.upper(), logging.INFO)
35
-
63
+
36
64
  # 获取根日志记录器
37
65
  root_logger = logging.getLogger()
38
-
66
+
39
67
  # 设置根日志记录器的级别
40
68
  root_logger.setLevel(level)
41
-
69
+
42
70
  # 清除现有的处理器(避免重复添加)
43
71
  root_logger.handlers.clear()
44
-
72
+
73
+ context_filter = _make_context_filter(context_injector)
74
+ log_format = '%(asctime)s - %(name)s - %(levelname)s - [trace_id:%(trace_id)s] - %(message)s'
75
+
45
76
  # 配置控制台处理器
46
77
  console_handler = logging.StreamHandler(sys.stdout)
47
78
  console_handler.setLevel(level)
48
- # 添加 event_id 和 task_id 到日志格式中
49
- log_format = '%(asctime)s - %(name)s - %(levelname)s - [trace_id:%(trace_id)s] - %(message)s'
50
79
  console_handler.setFormatter(logging.Formatter(log_format))
51
- # 添加上下文过滤器
80
+ console_handler.addFilter(context_filter)
52
81
  root_logger.addHandler(console_handler)
53
-
82
+
54
83
  # 如果指定了日志文件路径,添加文件处理器
55
84
  if log_path:
56
85
  file_handler = logging.FileHandler(
@@ -58,13 +87,11 @@ def init_logger(
58
87
  encoding='utf-8'
59
88
  )
60
89
  file_handler.setLevel(level)
61
- # 添加 event_id 和 task_id 到日志格式中
62
90
  file_handler.setFormatter(logging.Formatter(log_format))
63
- # 添加上下文过滤器
91
+ file_handler.addFilter(context_filter)
64
92
  root_logger.addHandler(file_handler)
65
-
93
+
66
94
  # 过滤第三方库的日志,只显示 ERROR 及以上级别
67
- # 这样可以减少不必要的 INFO、DEBUG 和 WARNING 日志输出
68
95
  third_party_loggers = [
69
96
  'nebula3.logger',
70
97
  'nebula3',
@@ -77,21 +104,13 @@ def init_logger(
77
104
  third_party_logger.setLevel(logging.ERROR)
78
105
 
79
106
 
80
- # 全局过滤器实例
81
-
82
-
83
107
  def get_logger(name: str) -> logging.Logger:
84
108
  """获取日志记录器
85
-
86
- 自动添加 ContextFilter,从上下文中获取 event_id 和 task_id 并记录到日志中
87
-
109
+
88
110
  Args:
89
111
  name: 日志记录器名称
90
-
112
+
91
113
  Returns:
92
114
  logging.Logger: 日志记录器实例
93
115
  """
94
- logger = logging.getLogger(name)
95
-
96
-
97
- return logger
116
+ return logging.getLogger(name)