vibego 0.2.44__py3-none-any.whl → 0.2.45__py3-none-any.whl

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.

Potentially problematic release.


This version of vibego might be problematic. Click here for more details.

master.py CHANGED
@@ -261,6 +261,25 @@ def _ensure_numbered_markup(markup: Optional[InlineKeyboardMarkup]) -> Optional[
261
261
  return markup
262
262
 
263
263
 
264
+ def _get_project_runtime_state(manager: "MasterManager", slug: str) -> Optional["ProjectState"]:
265
+ """归一化查询项目运行状态,避免误用 FSMContext。
266
+
267
+ 这里集中处理 slug 大小写并注释说明原因,防止在路由中覆盖 aiogram
268
+ 提供的 `FSMContext`(详见官方文档:https://docs.aiogram.dev/en/dev-3.x/dispatcher/fsm/context.html)。
269
+ """
270
+
271
+ normalized = (slug or "").strip().lower()
272
+ if not normalized:
273
+ return None
274
+ store = manager.state_store
275
+ if normalized in store.data:
276
+ return store.data[normalized]
277
+ for known_slug, runtime_state in store.data.items():
278
+ if known_slug.lower() == normalized:
279
+ return runtime_state
280
+ return None
281
+
282
+
264
283
  def _terminate_other_master_processes(grace: float = 3.0) -> None:
265
284
  """在新 master 启动后终止其他残留 master 进程"""
266
285
  existing: list[int] = []
@@ -1554,8 +1573,9 @@ async def _start_project_delete(
1554
1573
  repository = _ensure_repository()
1555
1574
  original_record = repository.get_by_slug(cfg.project_slug)
1556
1575
  original_slug = original_record.project_slug if original_record else cfg.project_slug
1557
- project_state = manager.state_store.data.get(cfg.project_slug)
1558
- if project_state and project_state.status == "running":
1576
+ # 删除前再次读取运行态,避免 FSM 上下文被误覆盖
1577
+ project_runtime_state = _get_project_runtime_state(manager, cfg.project_slug)
1578
+ if project_runtime_state and project_runtime_state.status == "running":
1559
1579
  await callback.answer("请先停止该项目的 worker 后再删除。", show_alert=True)
1560
1580
  return
1561
1581
  current_state = await state.get_state()
@@ -2177,7 +2197,8 @@ async def on_project_action(callback: CallbackQuery, state: FSMContext) -> None:
2177
2197
  await callback.answer("未知项目", show_alert=True)
2178
2198
  return
2179
2199
 
2180
- state = manager.state_store.data.get(cfg.project_slug) if cfg else None
2200
+ # 关键:避免覆盖 aiogram 传入的 FSMContext,因此运行态单独保存在 project_runtime_state
2201
+ project_runtime_state = _get_project_runtime_state(manager, cfg.project_slug) if cfg else None
2181
2202
  model_name_map = dict(SWITCHABLE_MODELS)
2182
2203
 
2183
2204
  if cfg:
@@ -2224,7 +2245,9 @@ async def on_project_action(callback: CallbackQuery, state: FSMContext) -> None:
2224
2245
  callback_data=f"project:edit:{cfg.project_slug}",
2225
2246
  )
2226
2247
  )
2227
- current_model_value = state.model if state else cfg.default_model
2248
+ current_model_value = (
2249
+ project_runtime_state.model if project_runtime_state else cfg.default_model
2250
+ )
2228
2251
  current_model_key = (current_model_value or "").lower()
2229
2252
  current_model_label = model_name_map.get(current_model_key, current_model_value or current_model_key or "-")
2230
2253
  builder.row(
@@ -2258,7 +2281,9 @@ async def on_project_action(callback: CallbackQuery, state: FSMContext) -> None:
2258
2281
  if cfg is None or callback.message is None:
2259
2282
  await callback.answer("未知项目", show_alert=True)
2260
2283
  return
2261
- current_model = (state.model if state else cfg.default_model).lower()
2284
+ current_model = (
2285
+ project_runtime_state.model if project_runtime_state else cfg.default_model
2286
+ ).lower()
2262
2287
  builder = InlineKeyboardBuilder()
2263
2288
  for value, label in SWITCHABLE_MODELS:
2264
2289
  prefix = "✅ " if current_model == value else ""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.44
3
+ Version: 0.2.45
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -1,6 +1,6 @@
1
1
  bot.py,sha256=TthqY_Rvndzd3pgLH6lvPcsDXQbwkuMfB4W9qt_Li8I,273832
2
2
  logging_setup.py,sha256=gvxHi8mUwK3IhXJrsGNTDo-DR6ngkyav1X-tvlBF_IE,4613
3
- master.py,sha256=uFRhROoRvd93CTRzS6DdlvxMYok7q1jRWZwe8QrTqIY,113997
3
+ master.py,sha256=pba43vEuUWUl9sbRrl6YtFtYLCqA5z4yTbuOY2hhMZ4,115085
4
4
  project_repository.py,sha256=UcthtSGOJK0cTE5bQCneo3xkomRG-kyc1N1QVqxeHIs,17577
5
5
  scripts/__init__.py,sha256=LVrXUkvWKoc6Sb47X5G0gbIxu5aJ2ARW-qJ14vwi5vM,65
6
6
  scripts/bump_version.sh,sha256=a4uB8V8Y5LPsoqTCdzQKsEE8HhwpBmqRaQInG52LDig,4089
@@ -426,14 +426,14 @@ tasks/constants.py,sha256=tS1kZxBIUm3JJUMHm25XI-KHNUZl5NhbbuzjzL_rF-c,299
426
426
  tasks/fsm.py,sha256=rKXXLEieQQU4r2z_CZUvn1_70FXiZXBBugF40gpe_tQ,1476
427
427
  tasks/models.py,sha256=N_qqRBo9xMSV0vbn4k6bLBXT8C_dp_oTFUxvdx16ZQM,2459
428
428
  tasks/service.py,sha256=w_S_aWiVqRXzXEpimLDsuCCCX2lB5uDkff9aKThBw9c,41916
429
- vibego_cli/__init__.py,sha256=sMLnwzYulAP_Q8uYOcW_39L0BHzfzHQtdJ3iGiivoQQ,311
429
+ vibego_cli/__init__.py,sha256=vkjlYE-1XFlODsNR3y6j5DOAjO18Tivxh9D5tWiEhw8,311
430
430
  vibego_cli/__main__.py,sha256=qqTrYmRRLe4361fMzbI3-CqpZ7AhTofIHmfp4ykrrBY,158
431
431
  vibego_cli/config.py,sha256=VxkPJMq01tA3h3cOkH-z_tiP7pMgfSGGicRvUnCWkhI,3054
432
432
  vibego_cli/deps.py,sha256=1nRXI7Dd-S1hYE8DligzK5fIluQWETRUj4_OKL0DikQ,1419
433
433
  vibego_cli/main.py,sha256=X__NXwZnIDIFbdKSTbNyZgZHKcPlN0DQz9sqTI1aQ9E,12158
434
434
  vibego_cli/data/worker_requirements.txt,sha256=QSt30DSSSHtfucTFPpc7twk9kLS5rVLNTcvDiagxrZg,62
435
- vibego-0.2.44.dist-info/METADATA,sha256=MUqjLTXp0J9uHaYEa1ihXzLOh5bv6OPyVvxwAGXTTmM,10519
436
- vibego-0.2.44.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
437
- vibego-0.2.44.dist-info/entry_points.txt,sha256=Lsy_zm-dlyxt8-9DL9blBReIwU2k22c8-kifr46ND1M,48
438
- vibego-0.2.44.dist-info/top_level.txt,sha256=R56CT3nW5H5v3ce0l3QDN4-C4qxTrNWzRTwrxnkDX4U,69
439
- vibego-0.2.44.dist-info/RECORD,,
435
+ vibego-0.2.45.dist-info/METADATA,sha256=j9LQ8f3IaH0QT5WlaPPKopquoSPcEvA9YrzTbLTdC7Q,10519
436
+ vibego-0.2.45.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
437
+ vibego-0.2.45.dist-info/entry_points.txt,sha256=Lsy_zm-dlyxt8-9DL9blBReIwU2k22c8-kifr46ND1M,48
438
+ vibego-0.2.45.dist-info/top_level.txt,sha256=R56CT3nW5H5v3ce0l3QDN4-C4qxTrNWzRTwrxnkDX4U,69
439
+ vibego-0.2.45.dist-info/RECORD,,
vibego_cli/__init__.py CHANGED
@@ -7,6 +7,6 @@ from __future__ import annotations
7
7
 
8
8
  __all__ = ["main", "__version__"]
9
9
 
10
- __version__ = "0.2.44"
10
+ __version__ = "0.2.45"
11
11
 
12
12
  from .main import main # noqa: E402