GraziePrego commited on
Commit
2cce9d3
·
verified ·
1 Parent(s): 4f9872d

Upload plugins/_telegram_integration/helpers/dependencies.py with huggingface_hub

Browse files
plugins/_telegram_integration/helpers/dependencies.py CHANGED
@@ -1,3 +1,68 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:18a03e73d09c165015f23857eb3ccdfd861e0d48394cc1832b3593e3e28617d4
3
- size 1706
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import importlib
4
+ import importlib.util
5
+ import shutil
6
+ import subprocess
7
+ import sys
8
+ import threading
9
+ from pathlib import Path
10
+
11
+ from helpers.errors import format_error
12
+ from helpers.print_style import PrintStyle
13
+
14
+
15
+ _LOCK = threading.Lock()
16
+ _CHECKED = False
17
+ _PLUGIN_DIR = Path(__file__).resolve().parents[1]
18
+ _REQUIREMENTS_FILE = _PLUGIN_DIR / "requirements.txt"
19
+
20
+
21
+ def has_aiogram() -> bool:
22
+ return importlib.util.find_spec("aiogram") is not None
23
+
24
+
25
+ def ensure_dependencies() -> None:
26
+ global _CHECKED
27
+
28
+ if _CHECKED and has_aiogram():
29
+ return
30
+
31
+ with _LOCK:
32
+ if _CHECKED and has_aiogram():
33
+ return
34
+ if has_aiogram():
35
+ _CHECKED = True
36
+ return
37
+
38
+ _install_aiogram()
39
+ importlib.invalidate_caches()
40
+
41
+ if not has_aiogram():
42
+ raise RuntimeError("Telegram dependency 'aiogram' is still unavailable after installation")
43
+
44
+ _CHECKED = True
45
+
46
+
47
+ def _install_aiogram() -> None:
48
+ uv = shutil.which("uv")
49
+ if not uv:
50
+ raise RuntimeError("Telegram plugin requires 'uv' to install aiogram automatically")
51
+ if not _REQUIREMENTS_FILE.is_file():
52
+ raise RuntimeError(f"Telegram plugin requirements file not found: {_REQUIREMENTS_FILE}")
53
+
54
+ cmd = [
55
+ uv,
56
+ "pip",
57
+ "install",
58
+ "--python",
59
+ sys.executable,
60
+ "-r",
61
+ str(_REQUIREMENTS_FILE),
62
+ ]
63
+
64
+ PrintStyle.info("Telegram: aiogram not found, installing plugin dependency")
65
+ try:
66
+ subprocess.check_call(cmd, cwd=str(_PLUGIN_DIR))
67
+ except Exception as e:
68
+ raise RuntimeError(f"Failed to install Telegram dependency 'aiogram': {format_error(e)}") from e