datacom-device-api 0.1.7__tar.gz → 0.1.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 (25) hide show
  1. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/PKG-INFO +1 -1
  2. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/pyproject.toml +1 -1
  3. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/ext/ext_meta.py +2 -1
  4. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/process/terminal_process.py +20 -2
  5. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api.egg-info/PKG-INFO +1 -1
  6. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/README.md +0 -0
  7. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/setup.cfg +0 -0
  8. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/__init__.py +0 -0
  9. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/data/__init__.py +0 -0
  10. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/data/table.py +0 -0
  11. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/event/event.py +0 -0
  12. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/ext/ext_meta_display.py +0 -0
  13. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/operation/__init__.py +0 -0
  14. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/operation/table_operation.py +0 -0
  15. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/operation/table_read_from_xlsx.py +0 -0
  16. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/operation/table_save_to_db.py +0 -0
  17. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/process/__init__.py +0 -0
  18. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/utils/__init__.py +0 -0
  19. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/utils/directory_util.py +0 -0
  20. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api/utils/logger.py +0 -0
  21. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api.egg-info/SOURCES.txt +0 -0
  22. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api.egg-info/dependency_links.txt +0 -0
  23. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api.egg-info/requires.txt +0 -0
  24. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/src/datacom_device_api.egg-info/top_level.txt +0 -0
  25. {datacom_device_api-0.1.7 → datacom_device_api-0.1.9}/test/test_table_matching.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datacom-device-api
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.14
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "datacom-device-api"
3
- version = "0.1.7"
3
+ version = "0.1.9"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass
2
- from typing import Callable
2
+ from typing import Any, Callable
3
3
 
4
4
  from datacom_device_api.event.event import Event
5
5
 
@@ -15,6 +15,7 @@ class ExtEntry(object):
15
15
  menu_name: str
16
16
  menu_index: int
17
17
 
18
+ ext_meta: dict[str, Any]
18
19
  run: Callable[[Event], None]
19
20
 
20
21
  @dataclass
@@ -15,6 +15,7 @@ from typing import Any, Callable, Optional, ParamSpec, Protocol, TypeVar, runtim
15
15
  from uuid import UUID
16
16
  import uuid
17
17
 
18
+ from rich.console import Console
18
19
  from rich.progress import Progress, TaskID
19
20
 
20
21
 
@@ -60,11 +61,12 @@ class TerminalProcess:
60
61
  process.submit(task2)
61
62
  """
62
63
 
63
- def __init__(self, max_workers: Optional[int] = None):
64
+ def __init__(self, max_workers: Optional[int] = None, console: Optional[Console] = None):
64
65
  """初始化终端进程执行器。
65
66
 
66
67
  Args:
67
68
  max_workers: 进程池最大并发数,默认为 CPU 核心数
69
+ console: 共享的 Rich Console 实例,用于日志输出与进度条保持同一终端
68
70
  """
69
71
  self.__pool = ProcessPoolExecutor(max_workers=max_workers or os.cpu_count())
70
72
  self.__manager = Manager()
@@ -76,7 +78,10 @@ class TerminalProcess:
76
78
 
77
79
  self.__progress_thread_stop_event = threading.Event()
78
80
  self.__progress_tasks: dict[UUID, TaskID] = {}
79
- self.__progress = Progress()
81
+ self.__console = console if console is not None else Console()
82
+ # 让 Progress 固定在终端底部,使用同一个 Console 输出日志时,
83
+ # 日志会显示在进度条之上,进度条始终保持在终端底部
84
+ self.__progress = Progress(console=self.__console)
80
85
  self.__progress_thread: Optional[threading.Thread] = None
81
86
  self.__progress_main_task: TaskID = self.__progress.add_task(
82
87
  'main', total=self.__task_future_count
@@ -113,6 +118,19 @@ class TerminalProcess:
113
118
  if message.type == 'done':
114
119
  self.__progress.update(self.__progress_main_task, advance=1)
115
120
 
121
+ def print(self, *args, **kwargs) -> None:
122
+ """在进度条之上输出日志信息。
123
+
124
+ 使用与 Progress 共享的 Console 输出,日志会显示在终端上方,
125
+ 进度条始终保持在终端底部。
126
+ """
127
+ self.__console.print(*args, **kwargs)
128
+
129
+ @property
130
+ def console(self) -> Console:
131
+ """返回与 Progress 共享的 Console 实例。"""
132
+ return self.__console
133
+
116
134
  @staticmethod
117
135
  def _warrper_fn(
118
136
  fn: EXECUTE_FUNC_TYPE,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datacom-device-api
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.14
6
6
  Description-Content-Type: text/markdown