panzr 0.2.5__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.
@@ -0,0 +1,14 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "mcp__codegraph__codegraph_files",
5
+ "mcp__codegraph__codegraph_context",
6
+ "WebFetch(domain:harlequin.sh)",
7
+ "WebSearch",
8
+ "Bash(pip show *)",
9
+ "Bash(python3 -c \"import harlequin; print\\(dir\\(harlequin\\)\\)\")",
10
+ "Bash(python3 -c \"import harlequin; print\\(harlequin.__file__\\)\")",
11
+ "Bash(python3 *)"
12
+ ]
13
+ }
14
+ }
panzr-0.2.5/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .eggs/
7
+ *.so
8
+ .pytest_cache/
9
+ .ruff_cache/
10
+ .mypy_cache/
11
+ *.swp
12
+ *.swo
13
+ *~
14
+ .DS_Store
15
+ venv/
16
+ .venv/
17
+ .env
18
+ test_log.txt
panzr-0.2.5/PKG-INFO ADDED
@@ -0,0 +1,149 @@
1
+ Metadata-Version: 2.4
2
+ Name: panzr
3
+ Version: 0.2.5
4
+ Summary: Armored Analytics in Your Terminal — 终端数据分析驾驶舱
5
+ Author-email: Song <song@example.com>
6
+ License: MIT
7
+ Keywords: cli,csv,data-analysis,duckdb,polars,sql,terminal,tui
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
20
+ Classifier: Topic :: Scientific/Engineering :: Visualization
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: duckdb>=1.0.0
23
+ Requires-Dist: openai>=1.0.0
24
+ Requires-Dist: plotext>=5.0.0
25
+ Requires-Dist: polars>=1.0.0
26
+ Requires-Dist: rich>=13.0.0
27
+ Requires-Dist: textual>=0.52.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
30
+ Requires-Dist: pytest>=8.0; extra == 'dev'
31
+ Provides-Extra: full
32
+ Requires-Dist: harlequin; extra == 'full'
33
+ Requires-Dist: jq; extra == 'full'
34
+ Requires-Dist: visidata; extra == 'full'
35
+ Provides-Extra: harlequin
36
+ Requires-Dist: harlequin; extra == 'harlequin'
37
+ Provides-Extra: visidata
38
+ Requires-Dist: visidata; extra == 'visidata'
39
+ Description-Content-Type: text/markdown
40
+
41
+ # 🐼🔧 Panzr v0.2.4
42
+
43
+ **Armored Analytics in Your Terminal.** 终端里的装甲数据分析。
44
+
45
+ > Panzr 是你的终端数据分析驾驶舱。
46
+ > *"Your Terminal Data Cockpit."*
47
+
48
+ ---
49
+
50
+ ## 产品定位
51
+
52
+ Panzr 是一个 **TUI (Terminal User Interface)** 数据分析工具箱。底层整合 DuckDB、Polars、plotext 等成熟引擎,Panzr 本身只负责:菜单导航、参数拼装、流程串联、结果展示。
53
+
54
+ **v0.2.4** 核心升级:**DuckDB 成为唯一数据引擎**。文件组注册为 DuckDB View(零内存),探查/聚合/SQL 统一走 DuckDB。新增 LLM 自然语言生成 SQL。
55
+
56
+ ---
57
+
58
+ ## 功能矩阵
59
+
60
+ | Tab | 功能 | 底层引擎 |
61
+ |:---|:---|:---|
62
+ | 🔌 **连接** | 扫描目录、关键词搜索分组、多选加载、DuckDB View 注册 | DuckDB + Polars |
63
+ | 🔍 **探查** | Polars 管道 (筛选→排序→去重→选列), 懒加载, 三段式布局 | Polars Lazy |
64
+ | 📝 **SQL** | DuckDB 查询, DataCatalog + 编辑器 + 结果, Harlequin 布局 | DuckDB |
65
+ | 🤖 **AI SQL** | 自然语言 → SQL (DeepSeek), 自动注入表结构 | LLM |
66
+ | 📊 **聚合** | 跨文件 GROUP BY, 多聚合函数, DuckDB 全量扫描 | DuckDB |
67
+ | 📈 **可视化** | 柱状图/折线图/散点图/直方图, 终端渲染 | plotext |
68
+ | 📋 **报告** | 一键数据诊断报告 (Data Profile) | DuckDB + Rich |
69
+
70
+ ---
71
+
72
+ ## 安装
73
+
74
+ ```bash
75
+ pip install -e .
76
+ ```
77
+
78
+ 依赖: `textual` `duckdb` `polars` `plotext` `rich` `openai`
79
+
80
+ 外部工具 (可选): `visidata` `harlequin` `jq`
81
+
82
+ ### LLM SQL 生成
83
+
84
+ ```bash
85
+ export DEEPSEEK_API_KEY=sk-你的key
86
+ ```
87
+
88
+ ---
89
+
90
+ ## 使用
91
+
92
+ ```bash
93
+ panzr
94
+ # 自动加载目录
95
+ panzr --load ~/FinData/资金结算
96
+ # 加载 siku 插件
97
+ panzr --siku
98
+ ```
99
+
100
+ ### 典型工作流
101
+
102
+ ```
103
+ 扫描目录 → 多选分组 → DuckDB View 注册 (全量零内存)
104
+ → 探查 (Polars lazy 管道, limit 500)
105
+ → SQL (AI 生成或手写, 全量查询)
106
+ → 聚合 (跨文件 GROUP BY)
107
+ → 可视化
108
+ ```
109
+
110
+ ---
111
+
112
+ ## 快捷键
113
+
114
+ | 快捷键 | 功能 |
115
+ |:---|:---|
116
+ | `Ctrl+Q` / `Ctrl+C` | 退出 Panzr |
117
+ | `Ctrl+T` | 下一个 Tab |
118
+ | `Ctrl+P` | 上一个 Tab |
119
+ | `Ctrl+Enter` | 执行 SQL 查询 |
120
+
121
+ ---
122
+
123
+ ## 项目结构
124
+
125
+ ```
126
+ panzr/
127
+ ├── app.py # 主 App + CSS + 快捷键
128
+ ├── state.py # 全局数据上下文 (AppState)
129
+ ├── startup_check.py # 启动环境检测器
130
+ ├── engines/
131
+ │ ├── loader.py # 文件扫描 + 分组
132
+ │ ├── duckdb_engine.py # DuckDB 查询引擎
133
+ │ ├── harlequin_launcher.py # Harlequin 子进程启动
134
+ │ ├── llm.py # LLM SQL 生成 (DeepSeek)
135
+ │ └── exporter.py # 导出
136
+ └── tabs/
137
+ ├── connect.py # 连接 Tab (扫描+多选+DuckDB)
138
+ ├── explore.py # 探查 Tab (Polars lazy 管道)
139
+ ├── query.py # SQL Tab (DataCatalog 布局)
140
+ ├── aggregate.py # 聚合 Tab (DuckDB GROUP BY)
141
+ ├── vision.py # 可视化 Tab (plotext)
142
+ └── report.py # 报告 Tab (Rich)
143
+ ```
144
+
145
+ ---
146
+
147
+ ## License
148
+
149
+ MIT
panzr-0.2.5/PLAN.md ADDED
@@ -0,0 +1,188 @@
1
+ # Panzr — 产品方案 v1.0
2
+
3
+ > **"Armored Analytics in Your Terminal."**
4
+ > 终端里的装甲数据分析。
5
+
6
+ ---
7
+
8
+ ## 一、产品定位
9
+
10
+ **Panzr 不是新轮子,是所有轮子的引擎盖。**
11
+
12
+ Panzr 是一个终端数据分析驾驶舱(Terminal Data Cockpit),核心理念是**统一入口 + 编排现有利器**。数据处理、可视化、探索全部调用成熟 CLI 工具或 Python 库,Panzr 本身只负责:菜单导航、参数拼装、流程串联、结果展示。
13
+
14
+ | 你的痛点 | Panzr 的解法 |
15
+ | :--- | :--- |
16
+ | 记不住 `mlr` / `csvstat` / `vd` 的参数 | 菜单选择,自动翻译成命令 |
17
+ | 多个工具之间数据上下文断裂 | 共享数据上下文,记住当前数据集、列名、筛选状态 |
18
+ | 分析流程割裂,来回切换窗口 | 一个 TUI 内完成 加载→探查→查询→可视化→导出 |
19
+
20
+ ### 产品形象
21
+
22
+ - **核心形象**:一只戴着护目镜的熊猫,驾驶微型坦克。
23
+ - **坦克炮管**:设计成笔/绘图仪,射出柱状图和折线,而非炮弹。
24
+ - **配色**:终端绿 + 数据蓝 + 熊猫黑白。
25
+
26
+ ---
27
+
28
+ ## 二、核心架构:Panzr 的六块"装甲"
29
+
30
+ 每个模块都标注了底层引擎和 Panzr 提供的增量价值。
31
+
32
+ ### 模块一览
33
+
34
+ | 装甲模块 | 底层引擎 | Panzr 提供的价值 |
35
+ | :--- | :--- | :--- |
36
+ | **① Panzr-Connect** 数据连接 | pandas / DuckDB 导入 | 统一表单:CSV、Parquet、SQLite、API 一键加载,自动识别 schema |
37
+ | **② Panzr-Explore** 数据探查 | **Visidata** (`vd`) | 一键唤起 Visidata,预设分析宏(频率统计、缺失值定位),退出后结果带回 Panzr |
38
+ | **③ Panzr-Query** SQL 分析 | **DuckDB** (内嵌) | TUI 内写 SQL,直接查 CSV/Parquet,结果 DataTable 展示,一键导出 |
39
+ | **④ Panzr-Transform** 数据转换 | **Miller** (`mlr`) / csvkit / xsv | 菜单选择 → 自动翻译成 `mlr` 命令,告别手写参数 |
40
+ | **⑤ Panzr-Vision** 可视化 | **plotext** / termgraph | 选择 X/Y 列 + 图表类型,终端实时出图,代码自动生成可复用 |
41
+ | **⑥ Panzr-Report** 报告生成 | **csvstat** / Rich | 一键诊断:描述性统计、缺失值、分布概览,高亮格式化输出为 Markdown |
42
+
43
+ ### 全部集成的"轮子"
44
+
45
+ ```
46
+ Visidata — 终端交互式表格探索(核心体验)
47
+ DuckDB — SQL on CSV/Parquet/SQLite(查询引擎)
48
+ Miller — 结构化数据处理,awk for CSV/JSON(转换引擎)
49
+ csvkit — CSV 列操作、过滤、统计(辅助工具链)
50
+ xsv — 极速 CSV 切片/统计/join(性能敏感场景)
51
+ jq — JSON 查询与转换(API 数据预处理)
52
+ fx — JSON 交互式浏览(可选独立启动)
53
+ plotext — 终端直方图、折线图、柱状图(可视化核心)
54
+ termgraph — 终端柱状图补充(备选引擎)
55
+ Rich — 终端美化渲染(表格、Markdown、语法高亮)
56
+ ```
57
+
58
+ ---
59
+
60
+ ## 三、技术架构
61
+
62
+ ### 技术选型
63
+
64
+ - **TUI 框架**:[Textual](https://github.com/Textualize/textual) — Python 生态最成熟的终端 UI 框架
65
+ - **异步执行**:`asyncio.create_subprocess_exec` — 所有外部工具非阻塞调用,界面不卡死
66
+ - **数据上下文**:内存中维护当前数据集路径、列名 schema、筛选状态,各模块共享
67
+
68
+ ### 应用骨架
69
+
70
+ ```python
71
+ from textual.app import App
72
+ from textual.widgets import TabbedContent, TabPane, DataTable, Input, Button
73
+
74
+ class Panzr(App):
75
+ CSS = """
76
+ #results { height: 1fr; }
77
+ """
78
+
79
+ def compose(self):
80
+ with TabbedContent():
81
+ with TabPane("🔌 连接", id="connect"):
82
+ yield Input(placeholder="文件路径 或 URL")
83
+ yield Button("加载", variant="primary")
84
+ with TabPane("🔍 探查", id="explore"):
85
+ yield Button("打开 Visidata", variant="primary")
86
+ yield DataTable(id="preview")
87
+ with TabPane("📝 SQL", id="query"):
88
+ yield Input(placeholder="SELECT ... FROM ...")
89
+ yield Button("执行", variant="primary")
90
+ yield DataTable(id="results")
91
+ with TabPane("🔄 转换", id="transform"):
92
+ ... # 列选择 + 操作菜单 → 翻译为 mlr 命令
93
+ with TabPane("📊 可视化", id="vision"):
94
+ ... # X/Y 列选择器 + 图表类型 + plotext 渲染区
95
+ with TabPane("📋 报告", id="report"):
96
+ ... # 一键生成统计报告
97
+ ```
98
+
99
+ ### 两个关键机制
100
+
101
+ 1. **上下文记忆** — 加载数据后,全局 State 记住:当前文件路径、列名列表、列类型、最近筛选条件。所有 Tab 共享这份上下文,切换模块无需重新指定。
102
+ 2. **命令翻译** — 用户在 UI 里的操作(选列、选聚合函数、设阈值),自动翻译为底层命令:
103
+ - 选 "region 列 + COUNT" → `mlr --csv count-distinct -f region`
104
+ - 选 "amount > 1000" → `mlr --csv filter '$amount > 1000'`
105
+
106
+ ---
107
+
108
+ ## 四、典型工作流
109
+
110
+ ```
111
+ ┌─ Panzr ─────────────────────────────────────────────┐
112
+ │ [🔌连接] [🔍探查] [📝SQL] [🔄转换] [📊可视化] [📋报告] │
113
+ ├──────────────────────────────────────────────────────┤
114
+ │ │
115
+ │ 1. 连接:加载 sales_2024.csv │
116
+ │ ↓ │
117
+ │ 2. 探查:按 V 键 → 唤起 Visidata,浏览全貌 │
118
+ │ ↓ │
119
+ │ 3. SQL: SELECT region, SUM(amount) │
120
+ │ FROM sales_2024 GROUP BY region │
121
+ │ → 结果表格展示在下方 │
122
+ │ ↓ │
123
+ │ 4. 可视化:选 X=region, Y=SUM(amount), 柱状图 │
124
+ │ → 终端右侧实时出图 │
125
+ │ ↓ │
126
+ │ 5. 导出:Ctrl+E → Markdown 报告(图表+表格+统计) │
127
+ │ │
128
+ └──────────────────────────────────────────────────────┘
129
+ ```
130
+
131
+ 整个过程不离开终端,不手写复杂命令,不为每个工具装 GUI。
132
+
133
+ ---
134
+
135
+ ## 五、分阶段路线图
136
+
137
+ ### Phase 1:最小可用 — "能跑的驾驶舱" 🚗
138
+
139
+ - [x] 产品定位与架构方案(本文档)
140
+ - [ ] Textual 骨架:TabbedContent 六页签空壳
141
+ - [ ] 数据连接模块:文件选择 → pandas 加载 → schema 识别
142
+ - [ ] Visidata 一键唤起:`subprocess` 启动 `vd <当前文件>`
143
+ - [ ] DuckDB SQL 面板:输入 SQL → 内嵌 duckdb 执行 → DataTable 展示
144
+
145
+ **目标**:能在终端里加载 CSV、打开 Visidata、写 SQL 查数据。
146
+
147
+ ### Phase 2:体验打磨 — "好用的驾驶舱" ✨
148
+
149
+ - [ ] 上下文记忆机制:全局 State,Tab 间共享列名/schema
150
+ - [ ] Miller 命令翻译器:菜单选择操作 → 自动拼装 `mlr` 命令
151
+ - [ ] plotext 可视化面板:X/Y 列下拉选择 + 图表类型切换 + 实时渲染
152
+ - [ ] 一键报告:csvstat 统计 + Rich 美化 → Markdown 导出
153
+ - [ ] 结果导出:CSV / Markdown / JSON 多格式
154
+
155
+ **目标**:完成六模块闭环,上下文串联,不记命令完成全流程。
156
+
157
+ ### Phase 3:杀手功能 — "聪明的驾驶舱" 🧠
158
+
159
+ - [ ] **自然语言 → 分析命令**:用 LLM(OpenAI API 或本地模型)把 "帮我看看销售额大于 1000 的订单按地区分布" 翻译成 `mlr --csv filter '$sales > 1000' then count-distinct -f region`,自动执行并展示
160
+ - [ ] 流程录制与回放:记录分析步骤 → 保存为 Pipeline → 一键重放
161
+ - [ ] 多数据源 JOIN:跨 CSV / SQLite / API 数据联合查询
162
+
163
+ **目标**:从"工具箱"升级为"数据分析副驾驶"。
164
+
165
+ ### Phase 4:生态与分发 🌐
166
+
167
+ - [ ] `pip install panzr` 可安装
168
+ - [ ] 配置文件 `~/.panzr.yaml`:自定义快捷键、预设分析流程
169
+ - [ ] 插件机制:社区贡献新的数据源连接器或分析模块
170
+ - [ ] Homebrew / apt 分发
171
+
172
+ ---
173
+
174
+ ## 六、README 结构(发布时)
175
+
176
+ 1. **封面**:Panzr 大标题 + 标语 + 熊猫坦克 ASCII Art
177
+ 2. **理念**:"为什么不造新轮子" — 一句话讲清楚
178
+ 3. **Demo GIF**:展示完整工作流(加载→探查→SQL→可视化→导出)
179
+ 4. **安装**:`pip install panzr` 或 `git clone`
180
+ 5. **模块介绍**:六模块逐一说明,每个标注 "Powered by Visidata / DuckDB / Miller / ..."
181
+ 6. **路线图**:Phase 1–4,标注当前进度
182
+ 7. **贡献指南**:如何添加新模块/新引擎
183
+
184
+ ---
185
+
186
+ ## 七、一句话总结
187
+
188
+ > **Panzr 是你的终端数据分析副驾驶 — 整合了 Visidata、DuckDB、Miller 等神器的统一界面。我们不造轮子,我们是所有轮子的引擎盖。**
panzr-0.2.5/README.md ADDED
@@ -0,0 +1,109 @@
1
+ # 🐼🔧 Panzr v0.2.4
2
+
3
+ **Armored Analytics in Your Terminal.** 终端里的装甲数据分析。
4
+
5
+ > Panzr 是你的终端数据分析驾驶舱。
6
+ > *"Your Terminal Data Cockpit."*
7
+
8
+ ---
9
+
10
+ ## 产品定位
11
+
12
+ Panzr 是一个 **TUI (Terminal User Interface)** 数据分析工具箱。底层整合 DuckDB、Polars、plotext 等成熟引擎,Panzr 本身只负责:菜单导航、参数拼装、流程串联、结果展示。
13
+
14
+ **v0.2.4** 核心升级:**DuckDB 成为唯一数据引擎**。文件组注册为 DuckDB View(零内存),探查/聚合/SQL 统一走 DuckDB。新增 LLM 自然语言生成 SQL。
15
+
16
+ ---
17
+
18
+ ## 功能矩阵
19
+
20
+ | Tab | 功能 | 底层引擎 |
21
+ |:---|:---|:---|
22
+ | 🔌 **连接** | 扫描目录、关键词搜索分组、多选加载、DuckDB View 注册 | DuckDB + Polars |
23
+ | 🔍 **探查** | Polars 管道 (筛选→排序→去重→选列), 懒加载, 三段式布局 | Polars Lazy |
24
+ | 📝 **SQL** | DuckDB 查询, DataCatalog + 编辑器 + 结果, Harlequin 布局 | DuckDB |
25
+ | 🤖 **AI SQL** | 自然语言 → SQL (DeepSeek), 自动注入表结构 | LLM |
26
+ | 📊 **聚合** | 跨文件 GROUP BY, 多聚合函数, DuckDB 全量扫描 | DuckDB |
27
+ | 📈 **可视化** | 柱状图/折线图/散点图/直方图, 终端渲染 | plotext |
28
+ | 📋 **报告** | 一键数据诊断报告 (Data Profile) | DuckDB + Rich |
29
+
30
+ ---
31
+
32
+ ## 安装
33
+
34
+ ```bash
35
+ pip install -e .
36
+ ```
37
+
38
+ 依赖: `textual` `duckdb` `polars` `plotext` `rich` `openai`
39
+
40
+ 外部工具 (可选): `visidata` `harlequin` `jq`
41
+
42
+ ### LLM SQL 生成
43
+
44
+ ```bash
45
+ export DEEPSEEK_API_KEY=sk-你的key
46
+ ```
47
+
48
+ ---
49
+
50
+ ## 使用
51
+
52
+ ```bash
53
+ panzr
54
+ # 自动加载目录
55
+ panzr --load ~/FinData/资金结算
56
+ # 加载 siku 插件
57
+ panzr --siku
58
+ ```
59
+
60
+ ### 典型工作流
61
+
62
+ ```
63
+ 扫描目录 → 多选分组 → DuckDB View 注册 (全量零内存)
64
+ → 探查 (Polars lazy 管道, limit 500)
65
+ → SQL (AI 生成或手写, 全量查询)
66
+ → 聚合 (跨文件 GROUP BY)
67
+ → 可视化
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 快捷键
73
+
74
+ | 快捷键 | 功能 |
75
+ |:---|:---|
76
+ | `Ctrl+Q` / `Ctrl+C` | 退出 Panzr |
77
+ | `Ctrl+T` | 下一个 Tab |
78
+ | `Ctrl+P` | 上一个 Tab |
79
+ | `Ctrl+Enter` | 执行 SQL 查询 |
80
+
81
+ ---
82
+
83
+ ## 项目结构
84
+
85
+ ```
86
+ panzr/
87
+ ├── app.py # 主 App + CSS + 快捷键
88
+ ├── state.py # 全局数据上下文 (AppState)
89
+ ├── startup_check.py # 启动环境检测器
90
+ ├── engines/
91
+ │ ├── loader.py # 文件扫描 + 分组
92
+ │ ├── duckdb_engine.py # DuckDB 查询引擎
93
+ │ ├── harlequin_launcher.py # Harlequin 子进程启动
94
+ │ ├── llm.py # LLM SQL 生成 (DeepSeek)
95
+ │ └── exporter.py # 导出
96
+ └── tabs/
97
+ ├── connect.py # 连接 Tab (扫描+多选+DuckDB)
98
+ ├── explore.py # 探查 Tab (Polars lazy 管道)
99
+ ├── query.py # SQL Tab (DataCatalog 布局)
100
+ ├── aggregate.py # 聚合 Tab (DuckDB GROUP BY)
101
+ ├── vision.py # 可视化 Tab (plotext)
102
+ └── report.py # 报告 Tab (Rich)
103
+ ```
104
+
105
+ ---
106
+
107
+ ## License
108
+
109
+ MIT
@@ -0,0 +1,3 @@
1
+ """Panzr — Armored Analytics in Your Terminal."""
2
+
3
+ __version__ = "0.2.5"
@@ -0,0 +1,39 @@
1
+ """Allow running as `python -m panzr`.
2
+
3
+ Examples:
4
+ python -m panzr # vanilla
5
+ python -m panzr --siku # + siku-scope tabs
6
+ python -m panzr --siku --load ~/FinData # auto-load directory
7
+ """
8
+
9
+ import argparse
10
+
11
+
12
+ def main() -> None:
13
+ parser = argparse.ArgumentParser(
14
+ description="Panzr — Armored Analytics in Your Terminal",
15
+ )
16
+ parser.add_argument(
17
+ "--siku", action="store_true",
18
+ help="加载 siku-scope 插件 (资金流水 + 账户核对)",
19
+ )
20
+ parser.add_argument(
21
+ "--load", metavar="DIR",
22
+ help="启动时自动扫描并加载指定目录下的数据文件",
23
+ )
24
+ args, _ = parser.parse_known_args()
25
+
26
+ from panzr.app import PanzrApp
27
+
28
+ plugins = []
29
+ if args.siku:
30
+ plugins.append("siku")
31
+
32
+ PanzrApp.activate_plugins(plugins)
33
+
34
+ app = PanzrApp(auto_load_dir=args.load)
35
+ app.run()
36
+
37
+
38
+ if __name__ == "__main__":
39
+ main()