# ============================================
# BANGTRIXTOOLKIT - Dependencies
# ============================================
# Install ALL:   pip install -r requirements.txt
# Install MIN:   pip install -r requirements.txt --no-deps
#                  (hanya aiohttp + requests minimal)
#
# UNIVERSAL (WAJIB untuk semua pengguna)
# ============================================
# aiohttp  -> REST API + WebSocket server untuk HW Monitor overlay
# requests  -> Google Translate + GitHub API (LHM download)
# async-timeout -> kompatibilitas aiohttp
#
aiohttp>=3.8.0
requests>=2.31.0
async-timeout>=4.0.0

# ============================================
# SEMUA PLATFORM - System RAM Monitoring
# ============================================
# psutil -> Memberikan data RAM sistem yang akurat.
#           Digunakan oleh FallbackBackend + PDHBackend (APU VRAM proxy).
# TANPA psutil: Fallback baca /proc/meminfo (Linux) atau tidak ada data RAM.
# REKOMENDASI: Install untuk SEMUA pengguna
#
psutil>=5.9.0

# ============================================
# WINDOWS - Performance Counters (PDH)
# ============================================
# pywin32 (win32pdh) -> Membaca GPU Utilization dan VRAM langsung dari
#                       Windows Performance Counters - SUMBER YANG SAMA
#                       DENGAN TASK MANAGER. Backend utama untuk Windows.
#
# * AMD / APU (Radeon Graphics): PDH adalah backend UTAMA
# * NVIDIA: PDH adalah fallback jika pynvml tidak terinstall
# * Intel:  PDH adalah backend UTAMA
#
# TANPA pywin32: Fallback ke PowerShell (jauh lebih lambat, subprocess tiap detik).
# WAJIB untuk pengguna Windows.
# Tidak diperlukan di Linux.
#
pywin32>=306; sys_platform == "win32"

# ============================================
# NVIDIA GPU - pynvml (OPSIONAL - KHUSUS NVIDIA)
# ============================================
# pynvml -> Membaca statistik NVIDIA langsung dari NVML (NVIDIA Management
#           Library). Memberikan data PALING AKURAT untuk GPU NVIDIA:
#           Utilization, VRAM, Temperature, Fan, Clock, Power.
#
# * NVIDIA dGPU: Backend PRIORITAS. JAUH lebih akurat daripada PDH.
# * AMD / Intel: TIDAK DIPERLUKAN (pynvml hanya untuk NVIDIA).
# * APU: Tidak relevan (APU AMD tidak punya NVML).
#
# TANPA pynvml: Fallback ke PDH (Windows) atau nvidia-smi (Linux).
#               Data tetap akurat, hanya tidak sedetil pynvml.
#
# Install HANYA jika Anda punya GPU NVIDIA:
#   pip install pynvml
#
# pynvml>=11.5.0

# ============================================
# AMD GPU - Temperature / Fan via ADL (OTOMATIS)
# ============================================
# ADL (AMD Display Library) -> Membaca temperature dan fan speed GPU AMD
#                              langsung dari atiadlxx.dll via ctypes.
#
# * AMD dGPU / APU: AKAN BEKERJA OTOMATIS jika atiadlxx.dll ada di sistem
# * NVIDIA: Tidak relevan
#
# TIDAK PERLU install package apapun! Menggunakan ctypes (stdlib Python)
# untuk binding langsung ke DLL AMD yang sudah terinstall dengan driver.
#
# Jika file atiadlxx.dll TIDAK ADA di sistem (misal driver minimal):
#   Fallback otomatis ke LibreHardwareMonitor (LHM) atau thermal zone.
#
# TIDAK ADA package pip yang diperlukan.

# ============================================
# LINUX - ROCm / amdgpu (OTOMATIS - TANPA ROCm)
# ============================================
# Backend Linux membaca GPU AMD langsung dari /sys/class/drm/ sysfs.
# TIDAK PERLU install ROCm, pyrsmi, atau package apapun.
# Cukup kernel Linux standar dengan driver amdgpu.
#
# NVIDIA di Linux: Parsing output nvidia-smi via subprocess.
# TIDAK PERLU package tambahan.

# ============================================
# RINGKASAN INSTALASI PER SKENARIO
# ============================================
#
# +-----------------------+----------------------------------------------------+
# | SKENARIO              | PERINTAH INSTALL                                   |
# +-----------------------+----------------------------------------------------+
# | SEMUA USER            | pip install -r requirements.txt                    |
# |   (Rekomendasi)       |   (aiohttp + requests + psutil +                   |
# |                       |    pywin32 jika Windows)                           |
# +-----------------------+----------------------------------------------------+
# | AMD + APU             | pip install -r requirements.txt                    |
# |                       |   (LHM & DLL akan diurus sistem secara otomatis)   |
# +-----------------------+----------------------------------------------------+
# | NVIDIA                | pip install -r requirements.txt                    |
# |                       | pip install pynvml                                 |
# +-----------------------+----------------------------------------------------+
# | Linux AMD             | pip install aiohttp requests psutil                |
# |                       |   (pywin32 dilewati otomatis di Linux)             |
# +-----------------------+----------------------------------------------------+
# | Linux NVIDIA          | pip install aiohttp requests psutil                |
# |                       | pip install pynvml (opsional)                      |
# +-----------------------+----------------------------------------------------+

# ============================================
# VERIFIKASI INSTALASI
# ============================================
# Setelah install, jalankan:
#   python -c "from monitor import get_hw_server; srv = get_hw_server(); print('OK')"
#
# Jika tidak ada error, backend siap digunakan.
# Overlay HW Monitor akan muncul di pojok kanan atas browser ComfyUI.