Skip to main content

Professional Python CLI & Library for hardware audits, storage inspection, and networking diagnostic telemetry. Run 'moroia' in Terminal.

Project description

file_content = """# -- coding: utf-8 --

======================================================================================================================

๐Ÿ’Ž MOROIA REVOLUTION ENGINE v4.0.0 - FULL ARCHITECTURE & DEPLOYMENT BLUEPRINT (ุงู„ุดุฑุญ ุงู„ุจุฑู…ุฌูŠ ูˆุงู„ุชุดุฑูŠุญ ุงู„ู‡ู†ุฏุณูŠ ุงู„ู…ุชูƒุงู…ู„)

======================================================================================================================

ุชุจุฏุฃ ุงู„ุฃุฏุงุฉ ุจุงุณุชุฏุนุงุก ุงู„ู…ูƒุชุจุงุช ุงู„ุฃุณุงุณูŠุฉ ู„ุถู…ุงู† ุฃุนู„ู‰ ูƒูุงุกุฉ ุชุดุบูŠู„ูŠุฉ. ู†ุณุชุฎุฏู… ู…ูƒุชุจุฉ os ู„ู„ุชุนุงู…ู„ ู…ุน ุจูŠุฆุฉ ู†ุธุงู… ุงู„ุชุดุบูŠู„ ูˆุงู„ู…ุณุงุฑุงุชุŒ

ูˆู…ูƒุชุจุฉ sys ู„ู„ุชุญูƒู… ููŠ ู…ุฎุฑุฌุงุช ุงู„ู…ุตู†ูุฉ ูˆุงู„ุฎุฑูˆุฌ ุงู„ุขู…ู†ุŒ ูˆู…ูƒุชุจุฉ time ู„ุญุณุงุจ ุงู„ููˆุงุฑู‚ ุงู„ุฒู…ู†ูŠุฉ ูˆุฅุฏุงุฑุฉ ู…ุนุฏู„ ุงู„ุชุญุฏูŠุซ ุงู„ุณุฑูŠุนุŒ

ูˆู…ูƒุชุจุฉ socket ู„ูุชุญ ู‚ู†ูˆุงุช ุงู„ุงุชุตุงู„ ุงู„ู…ุญู„ูŠุฉ ูˆูู„ุชุฑุชู‡ุงุŒ ูˆู…ูƒุชุจุฉ shutil ู„ุฅุฏุงุฑุฉ ูˆุญุฐู ู…ุฌู„ุฏุงุช ุงู„ูƒุงุด ุจุดูƒู„ ูƒุงู…ู„ ู†ู‡ุงุฆูŠ ู…ู† ุงู„ุฌุฐูˆุฑุŒ

ูˆู…ูƒุชุจุฉ subprocess ู„ุชู†ููŠุฐ ุฃูˆุงู…ุฑ ุณุทุฑ ุงู„ุฃูˆุงู…ุฑ ู…ู†ุฎูุถุฉ ุงู„ู…ุณุชูˆู‰ ู…ุซู„ ุงุณุชุนู„ุงู…ุงุช WMIC ู„ู‚ุฑุงุกุฉ ูƒุฑุช ุงู„ุดุงุดุฉ ุจุฏู‚ุฉ ู…ุชู†ุงู‡ูŠุฉ ุนู„ู‰ ูˆูŠู†ุฏูˆุฒุŒ

ูˆู…ูƒุชุจุฉ requests ู„ู„ุงุชุตุงู„ ุงู„ุฎุงุฑุฌูŠ ุบูŠุฑ ุงู„ุญุงุตูุฑ ุจุฌู„ุจ ุงู„ู€ IP ูˆูุญุต ุชุญุฏูŠุซุงุช ู…ุณุชูˆุฏุนุงุช PyPI ุงู„ุฑุณู…ูŠุฉ ู„ุญุธุฑ ุงู„ู†ุณุฎ ุงู„ู‚ุฏูŠู…ุฉ ูˆุงู„ู…ูŠุชุฉุŒ

ูˆู…ูƒุชุจุฉ json ู„ู…ุนุงู„ุฌุฉ ู…ู„ูุงุช ุงู„ุฅุนุฏุงุฏุงุชุŒ ูˆู…ูƒุชุจุฉ platform ู„ุชุญุฏูŠุฏ ู†ูˆุน ุงู„ู†ูˆุงุฉุŒ ูˆู…ูƒุชุจุฉ gettext ุงู„ู…ุฏู…ุฌุฉ ู„ุฅุฏุงุฑุฉ ุงู„ุชุฑุฌู…ุฉ ุงู„ููˆุฑูŠุฉุŒ

ู…ุน ุงุณุชุฎุฏุงู… ุงู„ู€ datetime ูˆุงู„ู€ timedelta ู„ุฅุฏุงุฑุฉ ูุชุฑุงุช ุงู„ูุญุต ุงู„ุฒู…ู†ูŠุŒ ูˆุงู„ู€ deque ู„ุชุฎุฒูŠู† ุณู„ุงุณู„ ุงู„ุจูŠุงู†ุงุช ุงู„ุชุงุฑูŠุฎูŠุฉ ู„ู„ุงุณุชู‡ู„ุงูƒ.

ู†ู‚ูˆู… ุจุนู…ู„ ุจู„ูˆูƒุงุช try-except ู…ุฑู†ุฉ ู„ุงุณุชูŠุฑุงุฏ ู…ูƒุชุจุฉ psutil ุงู„ุฎุงุฑุฌูŠุฉุ› ูุฅุฐุง ู„ู… ุชูƒู† ู…ุซุจุชุฉุŒ ูŠุชู… ุชุนูŠูŠู† ู‚ูŠู…ุชู‡ุง ุฅู„ู‰ None ู„ู…ู†ุน ุงู„ุงู†ู‡ูŠุงุฑ.

import os import sys import time import socket import shutil import subprocess import requests import json import platform import gettext from datetime import datetime, timedelta from collections import deque from typing import Dict, List, Optional, Tuple, Any

try: import psutil except ImportError: psutil = None

VERSION = "4.0.0" BUILD_DATE = "2026-06-14"

ุจุนุฏ ุฐู„ูƒ ู…ุจุงุดุฑุฉุŒ ู†ู‚ูˆู… ุจุจู†ุงุก ูƒู„ุงุณ ุงู„ุฃู„ูˆุงู† Colors ุงู„ุฐูŠ ูŠุญุงูƒูŠ ูู„ุณูุฉ ุงู„ุชุตู…ูŠู… ุงู„ุญุฏูŠุซุฉ ูˆุชุฃุซูŠุฑุงุช ุงู„ู€ Glassmorphism ูˆุงู„ู€ Minimalist

ุงู„ู…ู…ูŠุฒุฉ ุนุจุฑ ุตุจุบุฉ ุงู„ู€ Hex Palette ุงู„ูุฑูŠุฏุฉ ูˆู‡ูŠ ู„ุบุฉ ุงู„ู„ูˆู† ุงู„ุฃุฒุฑู‚ ุงู„ุฑู…ุงุฏูŠ ุงู„ู†ุงุนู… C8D6E0ุ› ูŠุชู… ุฐู„ูƒ ุจุฑู…ุฌูŠุงู‹ ุนุจุฑ ุญู‚ู† ุชุชุงุจุนุงุช ุงู„ู‡ุฑูˆุจ

ู…ู† ู†ูˆุน ANSI ูˆุชุญุฏูŠุฏุงู‹ ุงู„ู€ TrueColor RGB bytes ุจุงุณุชุฎุฏุงู… ุงู„ุชุชุงุจุน ุงู„ุฎุทูŠ ุงู„ู…ุจุงุดุฑ \033[38;2;200;214;224m ูˆุงู„ุฐูŠ ูŠู‚ูˆู… ุจุฅุนุงุฏุฉ ุจุฑู…ุฌุฉ ู…ุฎุฑุฌุงุช

ุงู„ู€ Terminal ู„ุชุนุฑุถ ุงู„ุฃู„ูˆุงู† ุจู†ู‚ุงุก ูุงุฆู‚ ูˆุชู†ุงุณู‚ ู‡ู†ุฏุณูŠ ู…ุฑูŠุญ ู„ู„ุนูŠู†ุŒ ู…ุถุงูุงู‹ ุฅู„ูŠู‡ุง ุงู„ุฃู„ูˆุงู† ุงู„ู‚ูŠุงุณูŠุฉ ู…ู† CyanุŒ GreenุŒ WarningุŒ FailุŒ

ู…ุน ุชุชุงุจุนุงุช ุญุงุณู…ุฉ ู…ุซู„ CLEAR_SCREEN ู„ู…ุณุญ ุงู„ุดุงุดุฉ ูˆุฅุนุงุฏุฉ ุชุนูŠูŠู† ุงู„ุญู‚ูˆู„ุŒ ูˆHIDE_CURSOR ู„ุฅุฎูุงุก ู…ุคุดุฑ ุงู„ูƒุชุงุจุฉ ุงู„ูˆุงู…ุถ ุฃุซู†ุงุก ุงู„ุจุซ ุงู„ุญูŠ.

class Colors: MAIN_THEME = '\033[38;2;200;214;224m' CYAN = '\033[96m' GREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' DIM = '\033[2m' CLEAR_SCREEN = '\033[2J\033[H' HIDE_CURSOR = '\033[?25l' SHOW_CURSOR = '\033[?25h'

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿ“ˆ SECTION 2: METRICS & HISTORICAL QUEUES (ู…ุญุฑูƒ ู‚ูŠุงุณ ุงู„ุฃุฏุงุก ูˆุงู„ุณู„ุงุณู„ ุงู„ุฒู…ู†ูŠุฉ ูˆุชุฌู†ุจ ุชุณุฑูŠุจ ุงู„ุฐุงูƒุฑุฉ ุงู„ุนุดูˆุงุฆูŠุฉ ู„ู„ู†ุธุงู…)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ููŠ ู‡ุฐุง ุงู„ุฌุฒุก ู†ู‚ูˆู… ุจุชุดุฑูŠุญ ูƒู„ุงุณ PerformanceMonitor ูˆู‡ูˆ ุงู„ู…ุณุคูˆู„ ุนู† ุชุชุจุน ุงู„ุณู„ูˆูƒ ุงู„ุฒู…ู†ูŠ ูˆุงู„ู†ุจุถ ุงู„ุฏุงุฎู„ูŠ ู„ู…ูˆุงุฑุฏ ุงู„ุฌู‡ุงุฒ ุจุงู„ู…ู„ูŠ ุซุงู†ูŠุฉ.

ูŠุชู… ุนู†ุฏ ุงุณุชุฏุนุงุก ุฏุงู„ุฉ ุงู„ุจู†ุงุก init ุฅู†ุดุงุก ุทูˆุงุจูŠุฑ ุซู†ุงุฆูŠุฉ ุงู„ู†ู‡ุงูŠุฉ deque ู…ุฎุตุตุฉ ู„ู„ุฐุงูƒุฑุฉ ุงู„ุนุดูˆุงุฆูŠุฉ ูˆุงู„ู…ุนุงู„ุฌุŒ ู…ุน ุชุญุฏูŠุฏ ุญุฌู… ุฃู‚ุตู‰

ุซุงุจุช ู„ู‡ุง max_history=60 ู„ุถู…ุงู† ุงู„ุงุญุชูุงุธ ุจุขุฎุฑ ุฏู‚ูŠู‚ุฉ ุชุดุบูŠู„ูŠุฉ ูู‚ุท ูˆุชุฌู†ุจ ุฃูŠ ุงุณุชู‡ู„ุงูƒ ู…ุชุฒุงูŠุฏ ู„ู…ูˆุงุฑุฏ ุงู„ุฐุงูƒุฑุฉ (Memory Leak).

ูƒู…ุง ู†ู‚ูˆู… ุจุงู„ุชู‚ุงุท ุงู„ุทุงุจุน ุงู„ุฒู…ู†ูŠ ุงู„ุจุฏุฆูŠ ุนุจุฑ ุฏุงู„ุฉ time.time() ู„ุชุญุฏูŠุฏ ู†ู‚ุทุฉ ุงู†ุทู„ุงู‚ ุงู„ู…ุญุฑูƒ ุงู„ุญูŠุฉ. ุชุญุชูˆูŠ ุงู„ุฏุงู„ุฉ ุงู„ุชุดุบูŠู„ูŠุฉ update

ุนู„ู‰ ูุญุต ุฐูƒูŠ ู„ู„ู€ psutilุ› ูุฅุฐุง ูƒุงู†ุช ู…ุชูˆูุฑุฉุŒ ุชู‚ูˆู… ุงู„ุฃุฏุงุฉ ุจุณุญุจ ู†ุณุจ ุงู„ุงุณุชู‡ู„ุงูƒ ุงู„ุญุงู„ูŠุฉ ุจุฏูˆู† ุฅูŠู‚ุงู ุฎูŠุท ุงู„ู…ุนุงู„ุฌุฉ ุงู„ุฑุฆูŠุณูŠ ูˆุญู‚ู†ู‡ุง.

ุฃู…ุง ุฏุงู„ุฉ get_uptime_string ูุชู‚ูˆู… ุจุนู…ู„ูŠุฉ ุญุณุงุจูŠุฉ ุฑูŠุงุถูŠุฉ ุจุญุชุฉุŒ ุญูŠุซ ุชุทุฑุญ ูˆู‚ุช ุงู„ุจุฏุก ู…ู† ุงู„ูˆู‚ุช ุงู„ุญุงู„ูŠ ู„ุฅู†ุชุงุฌ ุงู„ูุงุฑู‚ ุงู„ุฅุฌู…ุงู„ูŠุŒ

ุซู… ุชู‚ุณู… ุงู„ูุงุฆุถ ุจุฑู…ุฌูŠุงู‹ ุนุจุฑ ู„ุบุงุฑูŠุชู…ุงุช ุงู„ุญุณุงุจ ุงู„ู‚ูŠุงุณูŠ ู„ู…ุนุฑูุฉ ุนุฏุฏ ุงู„ุณุงุนุงุชุŒ ุงู„ุฏู‚ุงุฆู‚ุŒ ูˆุงู„ุซูˆุงู†ูŠ ุงู„ู…ู†ู‚ุถูŠุฉ ุจุฏู‚ุฉ ุชุงู…ุฉ ูˆุจุฏูˆู† ุฃูŠ ุชุฐุจุฐุจ.

class PerformanceMonitor: def init(self, max_history=60): self.cpu_history = deque(maxlen=max_history) self.ram_history = deque(maxlen=max_history) self.start_time = time.time()

def update(self):
    if psutil:
        self.cpu_history.append(psutil.cpu_percent(interval=None))
        self.ram_history.append(psutil.virtual_memory().percent)

def get_uptime_string(self):
    uptime = int(time.time() - self.start_time)
    hours = uptime // 3600
    minutes = (uptime % 3600) // 60
    seconds = uptime % 60
    return f"{hours:02d}:{minutes:02d}:{seconds:02d}"

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

โš™๏ธ SECTION 3: CORE LOGIC INITIALIZATION & LOCALIZATION (ู†ูˆุงุฉ ุงู„ู…ุญุฑูƒ ูˆุฅุฏุงุฑุฉ ุงู„ุชูˆุทูŠู† ูˆุงู„ุชุฑุฌู…ุฉ ูˆุงู„ู…ู„ูุงุช ุงู„ุฎููŠุฉ)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ู‡ู†ุง ู†ุตู„ ุฅู„ู‰ ู‚ู„ุจ ุงู„ู…ุญุฑูƒ ุงู„ู†ุงุจุถ ูƒู„ุงุณ MoroiaEngine. ููŠ ุฏุงู„ุฉ ุงู„ุจู†ุงุกุŒ ู†ู‚ูˆู… ุจุฑุจุท ู…ุญุฑูƒ ู…ุฑุงู‚ุจุฉ ุงู„ุฃุฏุงุก ูˆุชุฃุณูŠุณ ู…ุฌู„ุฏ ุงู„ูƒุงุด ุงู„ุฎููŠุŒ

ุญูŠุซ ูŠุชู… ุงู„ุจุญุซ ุนู† ุจูŠุฆุฉ APPDATA ุนู„ู‰ ุฃู†ุธู…ุฉ ูˆูŠู†ุฏูˆุฒ ุฃูˆ ุงู„ู…ุฌู„ุฏ ุงู„ุฑุฆูŠุณูŠ ู„ู„ู…ุณุชุฎุฏู… ~ ุนู„ู‰ ุฃู†ุธู…ุฉ ู„ูŠู†ูƒุณ ูˆูŠูˆู†ูƒุณ ู„ุฅู†ุดุงุก ู…ุฌู„ุฏ ุฎููŠ

ุจุงุณู… .moroia ูŠุญุชูˆูŠ ุนู„ู‰ ู…ู„ูุงุช ูƒุงุด ุงู„ุชุญุฏูŠุซ update_cache.json ูˆู…ู„ู ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุฃุณุงุณูŠ config.json ุจุดูƒู„ ุขู…ู† ูˆู…ู†ุนุฒู„ ุชู…ุงู…ุงู‹.

ุฏุงู„ุฉ load_language_preference ุชู‚ูˆู… ุจูุชุญ ู…ู„ู ุงู„ุฅุนุฏุงุฏุงุช ูˆู‚ุฑุงุกุฉ ูƒูˆุฏ ุงู„ู„ุบุฉ ุงู„ู…ุฎุฒู† ุจุตูŠุบุฉ ุฌูŠุณูˆู†ุ› ูˆููŠ ุญุงู„ ุนุฏู… ูˆุฌูˆุฏ ุงู„ู…ู„ู ุฃูˆ ุญุฏูˆุซ

ุฎุทุฃ ููŠ ุงู„ู‚ุฑุงุกุฉุŒ ูŠุชู… ุงุนุชู…ุงุฏ ุงู„ู„ุบุฉ ุงู„ุฅู†ุฌู„ูŠุฒูŠุฉ ูƒุฎูŠุงุฑ ุงูุชุฑุงุถูŠ ู„ุญู…ุงูŠุฉ ุงุณุชู‚ุฑุงุฑ ุงู„ุชุทุจูŠู‚. ุฏุงู„ุฉ save_language_preference ุชู‚ูˆู… ุจุชุญุฏูŠุซ

ู…ุชุบูŠุฑ ุงู„ู„ุบุฉ ููŠ ุงู„ุฐุงูƒุฑุฉ ุงู„ุญูŠุฉ ูˆูุญุต ูˆุฌูˆุฏ ุงู„ู…ุฌู„ุฏ ุงู„ุฎููŠุŒ ูˆุฅู† ู„ู… ูŠูƒู† ู…ูˆุฌูˆุฏุงู‹ ุชู‚ูˆู… ุจุฅู†ุดุงุฆู‡ ููˆุฑุงู‹ ุนุจุฑ ุฏุงู„ุฉ os.makedirs ุซู… ูƒุชุงุจุฉ

ุชูุถูŠู„ุงุช ุงู„ู…ุณุชุฎุฏู… ุงู„ุฌุฏูŠุฏุฉ ุจุฑู…ุฌูŠุงู‹. ุจุนุฏ ุฐู„ูƒุŒ ุฏุงู„ุฉ setup_localization ุชุจุญุซ ุฏุงุฎู„ ุงู„ู…ุฌู„ุฏ ุงู„ุฌุบุฑุงููŠ ู„ู„ู…ุดุฑูˆุน ุนู† ุงู„ู…ุณุงุฑ ุงู„ูุฑุนูŠ locale

ู„ู…ุญุงูˆู„ุฉ ุชุญู…ูŠู„ ู…ู„ูุงุช ุงู„ุชุฑุฌู…ุฉ ุงู„ู…ุชุฑุฌู…ุฉ ูˆุงู„ุฌุงู‡ุฒุฉ ุจุงู…ุชุฏุงุฏุงุช .moุ› ูˆููŠ ุญุงู„ ุนุฏู… ุชูˆูุฑ ุชู„ูƒ ุงู„ู…ู„ูุงุช ูŠุชู… ุชูุนูŠู„ ุฎุท ุฏูุงุน ุจุฑู…ุฌูŠ ุจุฏูŠู„ ูˆููˆุฑูŠ.

class MoroiaEngine: def init(self): self.monitor = PerformanceMonitor() self.cache_dir = os.path.join(os.environ.get('APPDATA', os.path.expanduser('~')), '.moroia') self.cache_file = os.path.join(self.cache_dir, 'update_cache.json') self.config_file = os.path.join(self.cache_dir, 'config.json') self.current_lang = self.load_language_preference() self.setup_localization()

def load_language_preference(self) -> str:
    if os.path.exists(self.config_file):
        try:
            with open(self.config_file, 'r') as f:
                return json.load(f).get('language', 'en')
        except: pass
    return 'en'

def save_language_preference(self, lang: str):
    self.current_lang = lang
    if not os.path.exists(self.cache_dir):
        try: os.makedirs(self.cache_dir)
        except: pass
    try:
        with open(self.config_file, 'w') as f:
            json.dump({'language': lang}, f)
    except: pass
    self.setup_localization()

def setup_localization(self):
    localedir = os.path.join(os.path.dirname(__file__), 'locale')
    try:
        lang_trans = gettext.translation('moroia', localedir, languages=[self.current_lang])
        lang_trans.install()
        self._ = lang_trans.gettext
    except:
        self._ = lambda s: s

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿšจ SECTION 4: ANTI-STALE VERSION ENFORCEMENT (ู…ู†ุธูˆู…ุฉ ูุญุต ุงู„ุชุญุฏูŠุซุงุช ุงู„ุฅุฌุจุงุฑูŠุฉ ุงู„ุตุงุฑู…ุฉ ูˆุญุธุฑ ุงู„ุฅุตุฏุงุฑุงุช ุงู„ู‚ุฏูŠู…ุฉ)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ููŠ ุฏุงู„ุฉ check_for_updates ู†ุทุจู‚ ุงุณุชุฑุงุชูŠุฌูŠุฉ ุตุงุฑู…ุฉ ู„ู…ู†ุน ุงุณุชุฎุฏุงู… ุฃูŠ ุฅุตุฏุงุฑุงุช ู‚ุฏูŠู…ุฉ ูˆู…ุฎุชุฑู‚ุฉ ู„ู„ุฃุฏุงุฉ ูˆู„ุถู…ุงู† ุชุฒุงู…ู† ุงู„ู…ุทูˆุฑูŠู†.

ุชู‚ูˆู… ุงู„ุฏุงู„ุฉ ุจุฌู„ุจ ุงู„ูˆู‚ุช ุงู„ุญุงู„ูŠ ูˆุงู„ู…ู‚ุงุฑู†ุฉ ู…ุน ุขุฎุฑ ุทุงุจุน ุฒู…ู†ูŠ ุชู… ุชุณุฌูŠู„ู‡ ููŠ ู…ู„ู ุงู„ูƒุงุด ุงู„ุฎููŠุ› ูุฅุฐุง ุชุจูŠู† ุฃู† ุงู„ูุงุฑู‚ ุงู„ุฒู…ู†ูŠ ุฃู‚ู„

ู…ู† 10 ุฏู‚ุงุฆู‚ ูƒุงู…ู„ุฉุŒ ูŠุชู… ุชุฌุงูˆุฒ ุงู„ูุญุต ููˆุฑุงู‹ ู„ุชู‚ู„ูŠู„ ุงุณุชู‡ู„ุงูƒ ู…ูˆุงุฑุฏ ุงู„ุดุจูƒุฉ ูˆุชูุงุฏูŠ ุญุธุฑ ุงู„ู€ IP ู…ู† ู‚ูุจู„ ุฎูˆุงุฏู… ุงู„ู‡ูŠุฆุฉ ุงู„ุฑุณู…ูŠุฉ.

ุฃู…ุง ุฅุฐุง ุงู†ู‚ุถุช ุงู„ู€ 10 ุฏู‚ุงุฆู‚ุŒ ุชู‚ูˆู… ุงู„ุฃุฏุงุฉ ุจุฅุทู„ุงู‚ ุทู„ุจ ุดุจูƒูŠ ุฐูƒูŠ ูˆู…ุญุฏุฏ ุจูˆู‚ุช ุงุณุชุฌุงุจุฉ ุตุงุฑู… ู„ู„ุบุงูŠุฉ ู„ุง ูŠุชุนุฏู‰ 1.5 ุซุงู†ูŠุฉ timeout=1.5

ู…ุชุฌู‡ุงู‹ ุฅู„ู‰ ูˆุงุฌู‡ุฉ ุงู„ุฌูŠุณูˆู† ุงู„ุฑุณู…ูŠุฉ ู„ุญุฒู…ุฉ ู…ูˆุฑูˆูŠุง ุนู„ู‰ ุงู„ุฑุงุจุท ุงู„ุฑุณู…ูŠ ู„ุจุงูŠุซูˆู†. ุฅุฐุง ู†ุฌุญ ุงู„ุงุชุตุงู„ ูˆุญุตู„ู†ุง ุนู„ู‰ ุฑู…ุฒ ุงู„ุงุณุชุฌุงุจุฉ 200ุŒ

ูŠุชู… ุงุณุชุฎุฑุงุฌ ุฑู‚ู… ุขุฎุฑ ุฅุตุฏุงุฑ ู…ุณุชู‚ุฑ ู…ุฑููˆุน ุนู„ู‰ ุงู„ุดุจูƒุฉ ูˆุงู„ู…ู‚ุงุฑู†ุฉ ุจุฑู‚ู… ุงู„ู…ุชุบูŠุฑ ุงู„ุนุงู„ู…ูŠ ุงู„ู…ูƒุชูˆุจ ุจุฑู…ุฌูŠุงู‹ ุฏุงุฎู„ ู…ู„ู ุงู„ุฃุฏุงุฉ VERSION.

ููŠ ุญุงู„ุฉ ุนุฏู… ุงู„ุชุทุงุจู‚ุŒ ูŠูุทู„ู‚ ุงู„ู…ุญุฑูƒ ุจุฑูˆุชูˆูƒูˆู„ ุงู„ุฅุบู„ุงู‚ ุงู„ุฅุฌุจุงุฑูŠ ูˆุงู„ุชุญุฏูŠุซ ุงู„ููˆุฑูŠุŒ ูˆูŠู…ุณุญ ุงู„ูƒูˆู†ุณูˆู„ ุจุงู„ูƒุงู…ู„ ูˆูŠุนูŠุฏ ุงู„ู…ุคุดุฑ ูˆูŠุทุจุน ุชุญุฐูŠุฑุงู‹.

def check_for_updates(self):
    now = datetime.now()
    should_check = False
    if not os.path.exists(self.cache_dir):
        try: os.makedirs(self.cache_dir)
        except: pass
    if os.path.exists(self.cache_file):
        try:
            with open(self.cache_file, 'r') as f:
                data = json.load(f)
                last_str = data.get('last_check', '')
                if last_str and now - datetime.strptime(last_str, "%Y-%m-%d %H:%M:%S") > timedelta(minutes=10):
                    should_check = True
        except: should_check = True
    else: should_check = True

    if should_check:
        try:
            with open(self.cache_file, 'w') as f:
                json.dump({'last_check': now.strftime("%Y-%m-%d %H:%M:%S")}, f)
            res = requests.get("https://pypi.org/pypi/moroia/json", timeout=1.5)
            if res.status_code == 200 and res.json()["info"]["version"] != VERSION:
                latest = res.json()["info"]["version"]
                os.system('cls' if os.name == 'nt' else 'clear')
                print(f"{Colors.CLEAR_SCREEN}{Colors.SHOW_CURSOR}")
                print(f"{Colors.FAIL}{Colors.BOLD}๐Ÿšจ UPDATE REQUIRED / ุชุญุฏูŠุซ ู…ุทู„ูˆุจ ๐Ÿšจ{Colors.ENDC}")
                print(f"{Colors.WARNING}New Version available: v{latest} (Current: v{VERSION}){Colors.ENDC}\\n")
                print(f"{Colors.BOLD}๐Ÿ‘‰ Run command to update / ู†ูู‘ุฐ ุงู„ุฃู…ุฑ ู„ู„ุชุญุฏูŠุซ:{Colors.ENDC}")
                print(f"{Colors.GREEN}{Colors.BOLD}   pip install --upgrade moroia --no-cache-dir{Colors.ENDC}\\n")
                sys.exit(0)
        except: pass

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿ’ป SECTION 5: HARDWARE AGGREGATION & GPU DETECTOR (ู…ู†ุธูˆู…ุฉ ุงุณุชุฎุฑุงุฌ ุจูŠุงู†ุงุช ุงู„ุนุชุงุฏ ูˆุงู„ุนู…ู„ูŠุงุช ูˆุงู„ู€ GPU ู…ู†ุฎูุถุฉ ุงู„ู…ุณุชูˆู‰)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ุชุนุชุจุฑ ุฏุงู„ุฉ get_hardware_status ุจู…ุซุงุจุฉ ู…ุฑูƒุฒ ุงู„ุงุณุชุฎุจุงุฑุงุช ุงู„ุฏุงุฎู„ูŠ ู„ู„ุนุชุงุฏ. ุชุจุฏุฃ ุจุงู„ุชุญู‚ู‚ ู…ู† ูˆุฌูˆุฏ ู…ูƒุชุจุฉ psutil ูุฅู† ุบุงุจุช ุชุฑุฌุน ุฎุทุฃ.

ู†ู‚ูˆู… ุจุณุญุจ ุงุณุชู‡ู„ุงูƒ ุงู„ู…ุนุงู„ุฌ ุงู„ููˆุฑูŠ ุจุฏูˆู† ุฅุญุฏุงุซ ุฃูŠ ุจุทุก ููŠ ุงู„ุชุฏูู‚ ุงู„ุญุฑูƒูŠ ุนุจุฑ ุชู…ุฑูŠุฑ ู…ุนุงู…ู„ ุงู„ุฃู…ุงู† ุงู„ู‚ูŠุงุณูŠ interval=None.

ุจุนุฏ ุฐู„ูƒ ู†ุฃุฎุฐ ู„ู‚ุทุฉ ุณุฑูŠุนุฉ ู„ู„ุฐุงูƒุฑุฉ ุงู„ุนุดูˆุงุฆูŠุฉ ูˆู…ุณุงุญุฉ ุงู„ู‚ุฑุต ุงู„ุตู„ุจ ุงู„ุฑุฆูŠุณูŠ ุงู„ู…ุชู…ุซู„ ููŠ ุงู„ุฌุฐุฑ /. ู„ุญุณุงุจ ูˆุงูƒุชุดุงู ุฃูƒุซุฑ ุงู„ุจุฑุงู…ุฌ ุงุณุชู‡ู„ุงูƒุงู‹

ู„ู„ุฐุงูƒุฑุฉ (Heavy Apps)ุŒ ู†ู‚ูˆู… ุจูุชุญ ุญู„ู‚ุฉ ุชูƒุฑุงุฑูŠุฉ ู…ุฑู†ุฉ ุชู…ุฑ ุนู„ู‰ ุฌู…ูŠุน ุงู„ุนู…ู„ูŠุงุช ุงู„ู†ุดุทุฉ ููŠ ู†ุธุงู… ุงู„ุชุดุบูŠู„ ูˆุชุณุญุจ ู…ู†ู‡ุง ุงุณู… ุงู„ุนู…ู„ูŠุฉุŒ

ูˆู†ุณุจุฉ ุงุณุชู‡ู„ุงูƒ ุงู„ุฐุงูƒุฑุฉุŒ ูˆู†ุณุจุฉ ุงู„ู…ุนุงู„ุฌ ุนุจุฑ ุฏุงู„ุฉ psutil.process_iter ู…ุน ุญู…ุงูŠุฉ ุงู„ุญู„ู‚ุฉ ุจุงู„ูƒุงู…ู„ ุถุฏ ุงุณุชุซู†ุงุกุงุช ุญุธุฑ ุงู„ูˆุตูˆู„ ุฃูˆ ุงู„ู…ูˆุช ุงู„ู…ูุงุฌุฆ.

ู†ู‚ูˆู… ุจูุฑุฒ ุงู„ู‚ุงุฆู…ุฉ ุชู†ุงุฒู„ูŠุงู‹ ูˆูู‚ุงู‹ ู„ุญุฌู… ุงุณุชู‡ู„ุงูƒ ุงู„ุฐุงูƒุฑุฉุŒ ุซู… ู†ู„ุชู‚ุท ุฃุนู„ู‰ ุนู…ู„ูŠุชูŠู† ูู‚ุท ุชู„ุชู‡ู…ุงู† ู…ูˆุงุฑุฏ ุงู„ู†ุธุงู…ุŒ ูˆู†ู‚ุตู‡ู…ุง ุนู†ุฏ ุงู„ุทูˆู„ ุงู„ุญุฌู…ูŠ

12 ุญุฑูุงู‹ ู„ู„ุญูุงุธ ุนู„ู‰ ุซุจุงุช ุงู„ูˆุงุฌู‡ุฉ ุงู„ุฑุณูˆู…ูŠุฉ ุงู„ุดุจูƒูŠุฉ. ููŠ ุงู„ู†ู‡ุงูŠุฉุŒ ูˆู…ู† ุฃุฌู„ ุฌู„ุจ ุงุณู… ูƒุฑุช ุงู„ุดุงุดุฉ ุงู„ุญู‚ูŠู‚ูŠ ุจุฏู‚ุฉ ู…ุชู†ุงู‡ูŠุฉ ุนู„ู‰ ูˆูŠู†ุฏูˆุฒุŒ

ู†ู‚ูˆู… ุจุชูˆุธูŠู ุฏุงู„ุฉ ุณูู„ูŠุฉ ุชุทู„ู‚ ุฃู…ุฑ ุงู„ุงุณุชุนู„ุงู… ุงู„ุฎุงุต ุจุงู„ู†ุธุงู… ุนุจุฑ ุฃุฏุงุฉ ุงู„ุฅุฏุงุฑุฉ wmic ู…ุน ูˆุถุน ู…ู‡ู„ุฉ ุฒู…ู†ูŠุฉ ู‚ุงุทุนุฉ ู‚ุฏุฑู‡ุง ุซุงู†ูŠุชุงู† ูู‚ุท.

@staticmethod
def get_hardware_status():
    if not psutil: return {"error": "psutil missing"}
    cpu_usage = psutil.cpu_percent(interval=None)
    ram = psutil.virtual_memory()
    disk = psutil.disk_usage('/')
    
    heavy_apps = []
    try:
        procs = []
        for p in psutil.process_iter(['name', 'memory_percent', 'cpu_percent']):
            try:
                p_info = p.info
                if p_info['name'] and not p_info['name'].startswith('['): procs.append(p_info)
            except: continue
        procs.sort(key=lambda x: x.get('memory_percent', 0) or 0, reverse=True)
        for p in procs[:2]:
            name = p.get('name', 'Unknown')
            mem = p.get('memory_percent', 0) or 0
            if mem > 0.1: heavy_apps.append(f"{name[:12]} ({mem:.1f}%)")
    except: pass
    
    gpu_name = "Unknown"
    try:
        if platform.system() == "Windows":
            cmd = "wmic path win32_VideoController get name"
            gpu_out = subprocess.check_output(cmd, shell=True, text=True, timeout=2).split('\\n')
            if len(gpu_out) > 1 and gpu_out[1].strip(): gpu_name = gpu_out[1].strip()[:25]
    except: pass
    
    return {
        "cpu_usage_pct": cpu_usage,
        "ram_total_gb": round(ram.total / (1024**3), 1),
        "ram_usage_pct": ram.percent,
        "ram_used_gb": round((ram.total - ram.available) / (1024**3), 1),
        "disk_free_gb": round(disk.free / (1024**3), 1),
        "disk_total_gb": round(disk.total / (1024**3), 1),
        "gpu": gpu_name,
        "heavy_apps": heavy_apps if heavy_apps else ["None"]
    }

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿ›ก๏ธ SECTION 6: SPY HUNTER SECURITY AUDIT & NET-SCOUT (ู…ู†ุธูˆู…ุฉ ุชุชุจุน ุงู„ุงุชุตุงู„ุงุช ุงู„ุฎุจูŠุซุฉ ุงู„ุญูŠุฉ ูˆุฌู„ุจ ุนู†ุงูˆูŠู† ุงู„ู€ IP ุงู„ุณุฑูŠุนุฉ)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ุชุนุชุจุฑ ู…ู†ุธูˆู…ุฉ ุงู„ู€ spy_hunter_scan ุงู„ุฐุฑุงุน ุงู„ุฃู…ู†ูŠ ู„ู„ุฃุฏุงุฉ. ุชู‚ูˆู… ุงู„ุฏุงู„ุฉ ุจูุญุต ุฌู…ูŠุน ุงู„ู…ู‚ุงุจุณ ูˆุงู„ุงุชุตุงู„ุงุช ุงู„ุดุจูƒูŠุฉ ุงู„ู…ูุชูˆุญุฉ ุญุงู„ูŠุงู‹

ููŠ ุงู„ุฎู„ููŠุฉ ุจุงุณุชุฎุฏุงู… ู†ุธุงู… ุงู„ุจุญุซ ุนุงู„ูŠ ุงู„ูƒูุงุกุฉ psutil.net_connections ู…ุน ุชุตููŠุฉ ู†ูˆุน ุงู„ู…ู‚ุงุจุณ ุฅู„ู‰ inet (ุฃูŠ ุงุชุตุงู„ุงุช ุงู„ุฅู†ุชุฑู†ุช ูู‚ุท).

ุชู…ุฑ ุงู„ุฏุงู„ุฉ ุนุจุฑ ุฌู…ูŠุน ุงู„ุงุชุตุงู„ุงุช ุงู„ู…ูุชูˆุญุฉ ูˆุชุจุญุซ ุจุฏู‚ุฉ ุนู† ุงู„ุญุงู„ุงุช ุงู„ู…ุณุชู‚ุฑุฉ ูˆุงู„ู†ุดุทุฉ ุงู„ุชูŠ ุชุญู…ู„ ุงู„ุญุงู„ุฉ ุงู„ุณูŠุงุฏูŠุฉ ESTABLISHED ูˆุงู„ุชูŠ ุชู…ุชู„ูƒ

ุนู†ูˆุงู† ุขูŠ ุจูŠ ุฎุงุฑุฌูŠ ุญู‚ูŠู‚ูŠ ู…ูˆุฌู‘ู‡ raddrุ› ูˆู…ู† ุซู… ู†ู‚ูˆู… ุจุชุทุจูŠู‚ ูู„ุชุฑ ูƒุงุดู ูˆุตุงุฑู… ูŠุณุชุจุนุฏ ููˆุฑุงู‹ ุนู†ุงูˆูŠู† ุงู„ุงุณุชุฑุฌุงุน ุงู„ู…ุญู„ูŠ ูˆุงู„ุขูŠ ุจูŠ ุงู„ุฏุงุฎู„ูŠ.

ุฃูŠ ุงุชุตุงู„ ูŠู†ุฌุญ ููŠ ุชุฎุทูŠ ู‡ุฐุง ุงู„ูู„ุชุฑ ูŠุชู… ุชุชุจุนู‡ ูˆู…ุนุฑูุฉ ุฑู‚ู… ุงู„ู…ุนุฑู ุงู„ุจุฑู…ุฌูŠ ุงู„ุฎุงุต ุจู‡ pidุ› ูˆู…ู†ู‡ ู†ุณุญุจ ุงู„ุงุณู… ุงู„ุตุฑูŠุญ ู„ู„ุจุฑู†ุงู…ุฌ ุงู„ู…ุณุจุจ

ู„ู„ุงุชุตุงู„ ูˆู†ู‚ูˆู… ุจูˆุถุนู‡ ููˆุฑุงู‹ ููŠ ู‚ุงุฆู…ุฉ ุงู„ุชู‡ุฏูŠุฏุงุช ุงู„ู…ุญุชู…ู„ุฉ. ุฃู…ุง ุฏุงู„ุฉ get_network_info ูุชู‚ูˆู… ุจุญูŠู„ุฉ ุจุฑู…ุฌูŠุฉ ูุงุฆู‚ุฉ ุงู„ุณุฑุนุฉ ู„ุงุณุชุฎุฑุงุฌ

ุงู„ุขูŠ ุจูŠ ุงู„ุฏุงุฎู„ูŠ ู„ู„ู…ุณุชุฎุฏู… ุฏูˆู† ุงู„ุญุงุฌุฉ ู„ุฑุจุท ุญู‚ูŠู‚ูŠุŒ ุญูŠุซ ุชูุชุญ ู…ู‚ุจุณ ุฎููŠู ูˆุชุชุตู„ ูˆู‡ู…ูŠุงู‹ ุจู€ DNS ุฌูˆุฌู„ ุงู„ุดู‡ูŠุฑ ู„ุชุณุฌูŠู„ ุงู„ุนู†ูˆุงู† ุซู… ุฅุบู„ุงู‚ู‡.

@staticmethod
def spy_hunter_scan() -> List[Dict[str, Any]]:
    suspicious = []
    if not psutil: return suspicious
    try:
        connections = psutil.net_connections(kind='inet')
        for conn in connections:
            if conn.status == 'ESTABLISHED' and conn.raddr:
                remote_ip = conn.raddr[0]
                if remote_ip not in ['127.0.0.1', '::1', '0.0.0.0']:
                    pid = conn.pid
                    proc_name = "Unknown"
                    if pid:
                        try: proc_name = psutil.Process(pid).name()
                        except: continue
                    suspicious.append({"pid": pid, "process": proc_name[:12], "remote": remote_ip})
    except: pass
    return suspicious[:2]

@staticmethod
def get_network_info():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        local_ip = s.getsockname()[0]
        s.close()
    except: local_ip = "127.0.0.1"
    
    public_ip = "Unknown"
    try: public_ip = requests.get("https://api.ipify.org", timeout=1.5).text.strip()
    except: pass
    return {"local": local_ip, "public": public_ip}

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿงน SECTION 7: TURBO DISK PURGER & PIP CACHE REVIVER (ู…ู†ุธูˆู…ุฉ ุชู†ุธูŠู ุงู„ุฐุงูƒุฑุฉ ูˆู…ุฎู„ูุงุช ุงู„ู…ุทูˆุฑูŠู† ูˆุญุณุงุจ ุงู„ุฃูˆุชูˆุจุงูŠู„ูˆุช ุจุงู„ุฃุญุฌุงู…)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ู‡ู†ุง ู†ูƒุดู ุนู† ุขู„ูŠุงุช ุงู„ุตูŠุงู†ุฉ ุงู„ุนู…ูŠู‚ุฉ ู„ู„ุฃุฏุงุฉ ู…ู† ุฎู„ุงู„ ุฏูˆุงู„ ุงู„ุชู†ุธูŠู ุงู„ุญู‚ูŠู‚ูŠุฉ ูˆุญุณุงุจ ุงู„ุฃุญุฌุงู… ุจุงู„ุจุงูŠุช. ุฏุงู„ุฉ clear_temp_files ุชุณุชู‡ุฏู ู…ุณุงุฑุงุช

ุงู„ู…ู„ูุงุช ุงู„ู…ุคู‚ุชุฉ ุงู„ู…ุชุฑุงูƒู…ุฉ ููŠ ุจูŠุฆุฉ ู†ุธุงู… ุชุดุบูŠู„ ูˆูŠู†ุฏูˆุฒ ุนุจุฑ ุงู„ุจุญุซ ููŠ ู…ุชุบูŠุฑ ุงู„ุจูŠุฆุฉ TEMP ูˆู…ุฌู„ุฏ ุงู„ู†ุธุงู… ุงู„ุฑุฆูŠุณูŠ ุจุดูƒู„ ู…ุจุงุดุฑุ› ุชู‚ูˆู… ุงู„ุฏุงู„ุฉ

ุจุงู„ุฏุฎูˆู„ ูˆูุญุต ูƒู„ ู…ู„ูุŒ ูˆุฅุฐุง ุชู… ุชูุนูŠู„ ุงู„ู€ safe_mode ูŠุชู… ุงุณุชุจุนุงุฏ ุงู„ู…ู„ูุงุช ุงู„ู†ุดุทุฉ ู„ุญู…ุงูŠุฉ ุงู„ุจุฑุงู…ุฌ ุงู„ุญุงู„ูŠุฉ ู…ู† ุงู„ุงู†ู‡ูŠุงุฑุŒ ุจูŠู†ู…ุง ูŠุชู… ุญุณุงุจ ุงู„ุญุฌู…

ุงู„ูุนู„ูŠ ู„ูƒู„ ู…ู„ู ุชุงู„ู ูˆู…ุณุญู‡ ู†ู‡ุงุฆูŠุงู‹ ุนุจุฑ os.unlink. ููŠ ู†ูุณ ุงู„ุณูŠุงู‚ุŒ ุฏุงู„ุฉ clear_developer_cache ุชุญู„ ูˆุงุญุฏุฉ ู…ู† ุฃูƒุจุฑ ู…ุดุงูƒู„ ู…ุทูˆุฑูŠ ุจุงูŠุซูˆู†

ูˆู‡ูŠ ุชุถุฎู… ูƒุงุด ุฃุฏุงุฉ ุงู„ุชุซุจูŠุช pipุ› ุญูŠุซ ุชุญุฏุฏ ุงู„ุฏุงู„ุฉ ุงู„ู…ุณุงุฑ ุงู„ุฌุบุฑุงููŠ ุงู„ุฏู‚ูŠู‚ ู„ูƒุงุด ุงู„ู…ุทูˆุฑ ุณูˆุงุก ูƒุงู† ุนู„ู‰ ูˆูŠู†ุฏูˆุฒ ุฃูˆ ู„ูŠู†ูƒุณ. ุชู‚ูˆู… ุงู„ุฏุงู„ุฉ

ุจุนู…ู„ ู…ุณุญ ุดุฌุฑูŠ ู…ุชูƒุงู…ู„ ูˆุญุณุงุจ ุงู„ุฃุญุฌุงู… ุจุงู„ุจุงูŠุช ูˆุชุฌู…ูŠุนู‡ุง ุจุฏู‚ุฉุ› ุซู… ุชู†ุณู ุงู„ู…ุฌู„ุฏ ุจุงู„ูƒุงู…ู„ ู…ู† ุฌุฐูˆุฑู‡ ุจุงุณุชุฎุฏุงู… ุฏุงู„ุฉ ุงู„ู‚ูˆุฉ shutil.rmtree.

@staticmethod
def clear_temp_files(safe_mode: bool = True) -> int:
    if platform.system() != 'Windows': return 0
    temp_paths = [os.environ.get('TEMP', ''), os.path.join(os.environ.get('SystemRoot', 'C:\\\\Windows'), 'Temp')]
    freed_bytes = 0
    for path in temp_paths:
        if not path or not os.path.exists(path): continue
        for filename in os.listdir(path):
            file_path = os.path.join(path, filename)
            try:
                if safe_mode and time.time() - os.path.getmtime(file_path) < 3600: continue
                if os.path.isfile(file_path):
                    freed_bytes += os.path.getsize(file_path)
                    os.unlink(file_path)
            except: continue
    return freed_bytes

@staticmethod
def clear_developer_cache() -> int:
    freed_bytes = 0
    path = os.path.expanduser(r"~\\AppData\\Local\\pip\\cache") if platform.system() == 'Windows' else os.path.expanduser("~/.cache/pip")
    if os.path.exists(path):
        try:
            for root, dirs, files in os.walk(path):
                for f in files:
                    try: freed_bytes += os.path.getsize(os.path.join(root, f))
                    except: pass
            shutil.rmtree(path, ignore_errors=True)
        except: pass
    return freed_bytes

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐ŸŽจ SECTION 8: MATHEMATICAL GRID DRAWING & ANTI-FLICKER DASHBOARD (ู†ุธุงู… ุงู„ุฑุณู… ุงู„ู‡ู†ุฏุณูŠ ูˆุงู„ุดุจูƒุฉ ุงู„ู…ู‚ุงูˆู…ุฉ ู„ู„ูˆู…ูŠุถ ูˆุงู„ุฑู…ุดุฉ)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ุชุชุญูƒู… ุฏุงู„ุฉ make_bar ุฑูŠุงุถูŠุงู‹ ููŠ ุทุฑูŠู‚ุฉ ุฑุณู… ุฃุดุฑุทุฉ ุงุณุชู‡ู„ุงูƒ ุงู„ู…ูˆุงุฑุฏ ุงู„ุฃู†ูŠู‚ุฉุ› ูู‡ูŠ ุชุฃุฎุฐ ุงู„ู†ุณุจุฉ ุงู„ู…ุฆูˆูŠุฉ ุงู„ู…ู…ุฑุฑุฉ ูˆุชู‚ูˆู… ุจุญุณุงุจ ุทุฑุฏูŠ ู„ุชุญุฏูŠุฏ

ุนุฏุฏ ุงู„ู…ุฑุจุนุงุช ุงู„ู…ุตู…ุชุฉ โ–ˆ ูˆุงู„ู…ุฑุจุนุงุช ุงู„ุจุงู‡ุชุฉ โ–‘ ุจู†ุงุกู‹ ุนู„ู‰ ุทูˆู„ ุซุงุจุช ูˆุตุงุฑู… ู‡ูˆ 20 ุญูŠุฒุงู‹ ู†ุตูŠุงู‹ ูู‚ุท ู„ุถู…ุงู† ุนุฏู… ุญุฏูˆุซ ุฃูŠ ุชู…ุฏุฏ ุฃูˆ ุชุดูˆู‡ ููŠ ุงู„ุดุจูƒุฉ.

ุจุนุฏ ุฐู„ูƒุŒ ุฏุงู„ุฉ print_clean_dashboard ุชู‚ูˆู… ุจุจู†ุงุก ู„ูˆุญุฉ ุงู„ุชุญูƒู… ุงู„ูุงุฆู‚ุฉ ุงู„ู†ู‚ุงุก ุงู„ุดุจูƒูŠุ› ุญูŠุซ ุชุฑุณู… ุงู„ุญุฏูˆุฏ ุงู„ุตุงุฑู…ุฉ ุจุฏู‚ุฉ ุฎุทูŠุฉ ุจุงุณุชุฎุฏุงู…

ุงู„ุฑู…ูˆุฒ ุงู„ู‡ู†ุฏุณูŠุฉ ุงู„ู…ุตู…ุชุฉ ูˆุชุฏู…ุฌ ููŠ ุฎู„ุงูŠุงู‡ุง ุงู„ุนู„ูˆูŠุฉ ูˆู‚ุช ุงู„ุชุดุบูŠู„ ุงู„ุฅุฌู…ุงู„ูŠุŒ ูˆุชูุชุญ ุฌุฏูˆู„ูŠู† ู…ุชูˆุงุฒูŠูŠู† ูŠุนุฑุถุงู† ุงุณุชู‡ู„ุงูƒ ุงู„ู…ุนุงู„ุฌ ูƒู†ุณุจุฉ ูˆุดุฑูŠุท

ู…ู„ูˆู† ุฏูŠู†ุงู…ูŠูƒูŠุงู‹ (ุฃุฎุถุฑ ู„ู„ุงุณุชู‡ู„ุงูƒ ุงู„ุขู…ู†ุŒ ุฃุตูุฑ ู„ู„ู…ุชูˆุณุทุŒ ูˆุฃุญู…ุฑ ู„ู„ุฎุทุฑ ุงู„ููˆุฑูŠ) ูˆุจุฌุงู†ุจู‡ ุงุณุชู‡ู„ุงูƒ ุงู„ุฐุงูƒุฑุฉ ุงู„ุนุดูˆุงุฆูŠุฉ ุงู„ุฏู‚ูŠู‚ ุจุงู„ู…ูŠุฌุงุจุงูŠุช.

ู„ุถู…ุงู† ุงู„ู‚ุถุงุก ุงู„ุชุงู… ูˆุงู„ู…ุทู„ู‚ ุนู„ู‰ ู…ุดูƒู„ุฉ ุฑู…ุดุฉ ุงู„ุดุงุดุฉ ุงู„ู…ุฒุนุฌุฉ (Flickering Effect)ุŒ ู„ุง ู†ุณุชุฎุฏู… ุฏุงู„ุฉ ู…ุณุญ ุงู„ุดุงุดุฉ ุงู„ุนู†ูŠูุฉ ูˆุงู„ุจุทูŠุฆุฉุ› ุจู„ ู†ู‚ูˆู…

ุจุจุซ ุชุชุงุจุน ุงู„ู‡ุฑูˆุจ ุงู„ุฐูƒูŠ ุนุงู„ูŠ ุงู„ุณุฑุนุฉ \033[H ููŠ ุจุฏุงูŠุฉ ุญู„ู‚ุฉ ุงู„ุชุญุฏูŠุซ ุฏุงุฎู„ ุงู„ุฏุงู„ุฉ ุงู„ุฑุฆูŠุณูŠุฉุŒ ูˆุงู„ุฐูŠ ูŠุฌุจุฑ ู…ุคุดุฑ ุชุฑู…ูŠู†ุงู„ ุงู„ู†ุธุงู… ุนู„ู‰ ุงู„ู‚ูุฒ ุงู„ููˆุฑูŠ.

def make_bar(pct: float, color: str) -> str: length = 20 filled = int((pct / 100) * length) return f"{color}{'โ–ˆ' * filled}{Colors.DIM}{'โ–‘' * (length - filled)}{Colors.ENDC}"

def print_clean_dashboard(hw, network, spy, uptime_str, time_left, _): cpu_pct = hw.get('cpu_usage_pct', 0) ram_pct = hw.get('ram_usage_pct', 0)

cpu_color = Colors.GREEN if cpu_pct < 50 else Colors.WARNING if cpu_pct < 85 else Colors.FAIL
ram_color = Colors.GREEN if ram_pct < 60 else Colors.WARNING if ram_pct < 85 else Colors.FAIL

print(f" {Colors.MAIN_THEME}โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”{Colors.ENDC}")
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} {Colors.BOLD}๐Ÿ“Š {_('DASHBOARD CONTROL CENTER')} {Colors.ENDC}          {_('Uptime')}: {Colors.GREEN}{uptime_str}{Colors.ENDC}  {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
print(f" {Colors.MAIN_THEME}โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค{Colors.ENDC}")

cpu_bar = make_bar(cpu_pct, cpu_color)
ram_bar = make_bar(ram_pct, ram_color)
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} {Colors.BOLD}๐Ÿ’ป CPU LOAD:{Colors.ENDC} {cpu_color}{cpu_pct:4.1f}%{Colors.ENDC}         {Colors.MAIN_THEME}โ”‚{Colors.ENDC} {Colors.BOLD}๐Ÿง  RAM USAGE:{Colors.ENDC} {ram_color}{ram_pct:4.1f}%{Colors.ENDC}        {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} {cpu_bar}  {Colors.MAIN_THEME}โ”‚{Colors.ENDC} {ram_bar}   {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} GPU: {hw['gpu']:<24} {Colors.MAIN_THEME}โ”‚{Colors.ENDC} RAM Status: {hw['ram_used_gb']}/{hw['ram_total_gb']} GB      {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")

print(f" {Colors.MAIN_THEME}โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค{Colors.ENDC}")

apps_str = ", ".join(hw['heavy_apps'])
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} ๐Ÿ’ฟ {_('Disk Storage')}: {hw['disk_free_gb']} GB free / {hw['disk_total_gb']} GB Total                 {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} ๐Ÿ”ฅ {_('Top Apps Open')}: {Colors.WARNING}{apps_str[:40]:<45}{Colors.ENDC} {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} ๐ŸŒ {_('Network Local/Public')}: {Colors.CYAN}{network['local']}{Colors.ENDC} / {Colors.CYAN}{network['public']}{Colors.ENDC}             {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")

spy_status = f"{Colors.GREEN}SECURE (0){Colors.ENDC}" if not spy else f"{Colors.FAIL}ALERT ({len(spy)}){Colors.ENDC}"
print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC} ๐Ÿ›ก๏ธ  {_('Spy Hunter Network Audit')}: {spy_status:<46} {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
if spy:
    for s in spy[:1]:
        print(f" {Colors.MAIN_THEME}โ”‚{Colors.ENDC}    โ†ณ [SUSPICIOUS CONNECTION] -> Process: {Colors.FAIL}{s['process']}{Colors.ENDC} Remote: {Colors.WARNING}{s['remote']}{Colors.ENDC} {Colors.MAIN_THEME}โ”‚{Colors.ENDC}")
        
print(f" {Colors.MAIN_THEME}โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜{Colors.ENDC}")
print(f"\\n   {Colors.WARNING}๐Ÿ’ก {_('Press Ctrl+C to open optimization & autopilot menu')}{Colors.ENDC}")

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿ’Ž SECTION 9: REVOLUTION BANNER & APPLICATION ENTRY POINT (ุดุนุงุฑ ุงู„ุซูˆุฑุฉ ุงู„ุจุฑู…ุฌูŠุฉ ูˆู†ู‚ุทุฉ ุงู„ุงู†ุทู„ุงู‚ ุงู„ุญูŠุฉ ูˆุงุนุชุจุงุฑุงุช ุงู„ุชุญูƒู…)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ู†ู‚ูˆู… ุจุฑุณู… ุงู„ุดุนุงุฑ ุงู„ู†ุตูŠ ุงู„ูุฎู… ู„ู„ุฃุฏุงุฉ ู„ูŠุนุจุฑ ุนู† ุฑูˆุญ ุงู„ู‚ูˆุฉ ุงู„ุฌุจุงุฑุฉ ู„ู„ุฅุตุฏุงุฑ ุงู„ุฑุงุจุน ุนุจุฑ ุฏุงู„ุฉ print_banner ุงู„ู…ุตุจูˆุบุฉ ุจุงู„ูƒุงู…ู„ ุจุงู„ุซูŠู… ุงู„ู…ูˆุญุฏ ู„ู…ุงู„ูƒ.

ู†ุฃุชูŠ ุงู„ุขู† ู„ู„ุฏุงู„ุฉ ุงู„ุญุฑูƒูŠุฉ ูˆุงู„ู‚ู„ุจ ุงู„ุชู†ููŠุฐูŠ ุงู„ุดุงู…ู„ main. ุชุจุฏุฃ ููˆุฑุงู‹ ุจุญู‚ู† ุฃู…ุฑ ุงู„ุชุตููŠุฉ ูˆุงู„ู…ุณุญ ุงู„ุฃูˆู„ูŠ ูˆุฅุฎูุงุก ุงู„ู…ุคุดุฑ ุชู…ุงู…ุงู‹ ู„ุชุฌู‡ูŠุฒ ุงู„ูƒูˆู†ุณูˆู„ ู„ู„ุจุซ ุงู„ุญูŠุ›

ุซู… ุชุณุชุฏุนูŠ ุฏุงู„ุฉ ูุญุต ุงู„ุขูŠ ุจูŠ ู„ู…ุฑุฉ ูˆุงุญุฏุฉ ูู‚ุท ูˆุชุฎุฒู† ู…ุฎุฑุฌุงุชู‡ุง ููŠ ุงู„ุฐุงูƒุฑุฉ ู„ุชุฌู†ุจ ุงุณุชุนู„ุงู…ู‡ุง ุงู„ู…ุชูƒุฑุฑ ุฏุงุฎู„ ุงู„ุญู„ู‚ุฉ ุงู„ุฐูŠ ูŠุณุจุจ ุชุฌู…ุฏ ุงู„ูˆุงุฌู‡ุฉ ุซุงู†ูŠุฉ ุชู„ูˆ ุงู„ุฃุฎุฑู‰.

ุชุฏุฎู„ ุงู„ุฃุฏุงุฉ ููŠ ุญู„ู‚ุฉ ู„ุง ู†ู‡ุงุฆูŠุฉ ุชุญุฏู‘ุซ ุงู„ุจูŠุงู†ุงุช ูƒู„ ุซุงู†ูŠุฉ ูˆุชุชุญูƒู… ููŠ ู…ูˆุถุน ุทุจุงุนุชู‡ุง ุจุฏู‚ุฉ ู…ุทู„ู‚ุฉ ุนุจุฑ ุชูˆุฌูŠู‡ ุฎูŠุท ุงู„ู…ุนุงู„ุฌุฉ ุงู„ุฑุฆูŠุณูŠ ูˆุฅุฑุณุงู„ ู‚ูŠู… ุงู„ุชุฑุฌู…ุฉ ุงู„ูุนุงู„ุฉ.

ุนู†ุฏู…ุง ูŠู‚ูˆู… ุงู„ู…ุณุชุฎุฏู… ุจุงู„ุถุบุท ุนู„ู‰ ุงู„ุงุฎุชุตุงุฑ ุงู„ุญุงุณู… Ctrl + C ูŠุชู… ุงุนุชุฑุงุถ ุงู„ุงุณุชุซู†ุงุก ููˆุฑุงู‹ ูˆุจุณู„ุงุณุฉ ุชุงู…ุฉ ุนุจุฑ ุจู†ูŠุฉ ุงู„ู€ KeyboardInterruptุ›

ุญูŠุซ ูŠูุชุญ ุงู„ุจุฑู†ุงู…ุฌ ุฎุท ุญู…ุงูŠุฉ ุนุงู„ูŠ ุงู„ุงุณุชู‚ุฑุงุฑ ูŠุนูŠุฏ ุฅุธู‡ุงุฑ ู…ุคุดุฑ ุณุทุฑ ุงู„ุฃูˆุงู…ุฑ ุงู„ู…ุฎููŠ ูˆูŠู…ุณุญ ุงู„ุดุงุดุฉ ู„ูŠุนุฑุถ ู‚ุงุฆู…ุฉ ุงู„ู€ Autopilot ุงู„ุชูุงุนู„ูŠุฉ ุงู„ู…ุชู‚ุฏู…ุฉุŒ

ูˆุงู„ุชูŠ ุชุชูŠุญ ู„ู„ู…ุณุชุฎุฏู… ุฅู…ุง ุฅุฌุฑุงุก ุชู†ุธูŠู ุชูŠุฑุจูˆ ุฐูƒูŠ ูˆููˆุฑูŠ ู…ุน ุญุณุงุจ ุงู„ู…ุณุงุญุฉ ุงู„ู…ุณุชุฑุฏุฉ ุงู„ูุนุงู„ุฉ ุจุงู„ู…ูŠุฌุงุจุงูŠุช ุจุฏู‚ุฉ ู…ุชู†ุงู‡ูŠุฉุŒ ุฃูˆ ุชุจุฏูŠู„ ู„ุบุฉ ุงู„ูˆุงุฌู‡ุฉ ููˆุฑุงู‹.

def print_banner(): print(f""" {Colors.CYAN} ============================================================= {Colors.ENDC} {Colors.BOLD}{Colors.MAIN_THEME} __ __ ____ _____ ____ _____ _ /\
| \/ |/ __ \| __ \ / __ \|_ || | / \ | \ / | | | | |) | | | | | | | | / \ | |\/| | | | | _ /| | | | | | | | / /\ \ | | | | || | | \ \| |__| || |_ | |/ ____ \ || ||\/|| \\/|_____||// \\ {Colors.ENDC} {Colors.BOLD}{Colors.CYAN} ๐Ÿ’Ž MOROIA REVOLUTION ENGINE v{VERSION} ๐Ÿ’Ž {Colors.ENDC} {Colors.CYAN} ============================================================= {Colors.ENDC}""")

def main(): engine = MoroiaEngine() engine.check_for_updates() _ = engine._

print(f"{Colors.CLEAR_SCREEN}{Colors.HIDE_CURSOR}", end="")
network_data = engine.get_network_info()

try:
    while True:
        hw = engine.get_hardware_status()
        spy_data = engine.spy_hunter_scan()
        uptime_str = engine.monitor.get_uptime_string()
        engine.monitor.update()
        
        print("\\033[H", end="")
        print_banner()
        print_clean_dashboard(hw, network_data, spy_data, uptime_str, 0, _)
        
        time.sleep(1)
        
except KeyboardInterrupt:
    print(f"{Colors.SHOW_CURSOR}{Colors.CLEAR_SCREEN}")
    print_banner()
    
    print(f"\\n {Colors.BOLD}{Colors.CYAN}โšก AUTOPILOT PERFORMANCE MENU{Colors.ENDC}")
    print(" โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€")
    print(f"  [1] {_('Run Full Smart Turbo Clean (Temp & Pip Caches)')}")
    print(f"  [2] {_('Toggle Interface Language (English / ุงู„ุนุฑุจูŠุฉ)')}")
    print(f"  [3] {_('Exit Engine')}")
    
    try:
        choice = input(f"\\n {Colors.BOLD}{_('Enter Action (1-3): ')}{Colors.ENDC}").strip()
        if choice == '1':
            print(f"\\n {Colors.CYAN}โณ Analyzing system and flushing dump caches...{Colors.ENDC}")
            b_temp = MoroiaEngine.clear_temp_files(safe_mode=False)
            b_pip = MoroiaEngine.clear_developer_cache()
            total_mb = round((b_temp + b_pip) / (1024**2), 2)
            print(f" {Colors.GREEN}โœ… Turbo Clean Complete! {total_mb} MB of Storage/Disk Cache Revived.{Colors.ENDC}")
        elif choice == '2':
            nxt = 'ar' if engine.current_lang == 'en' else 'en'
            engine.save_language_preference(nxt)
            print(f" {Colors.GREEN}Language toggled to: {nxt}. Please reload Moroia.{Colors.ENDC}")
        elif choice == '3':
            sys.exit(0)
            
        print(f"\\n {Colors.MAIN_THEME}{_('Press Enter to finish...')}{Colors.ENDC}")
        input()
    except: pass
finally:
    print(f"{Colors.SHOW_CURSOR}{Colors.CLEAR_SCREEN}", end="")

if name == 'main': main()

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿš€ SECTION 10: SECURE PIP DEPLOYMENT WORKFLOW (ุฎุฑูŠุทุฉ ุงู„ู†ุดุฑ ูˆุงู„ุฑูุน ูˆุงู„ุงู†ุชุดุงุฑ ุงู„ุฑุณู…ูŠ ุงู„ุขู…ู† ุนู„ู‰ PyPI ูˆุงู„ู€ PowerShell ุฎุทูˆุฉ ุจุฎุทูˆุฉ)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ู„ูƒูŠ ุชุถู…ู† ู†ุดุฑ ุงู„ุฃุฏุงุฉ ู„ู„ุนุงู…ุฉ ูˆุงู„ู…ุฌุชู…ุน ุงู„ุจุฑู…ุฌูŠ ุงู„ู…ูุชูˆุญ ุนู„ู‰ PyPI ุจุดูƒู„ ุงุญุชุฑุงููŠ ุฎุงู„ู ุชู…ุงู…ุงู‹ ู…ู† ุงู„ู…ู„ูุงุช ุงู„ู…ูŠุชุฉ ุฃูˆ ุชุฏุงุฎู„ ู…ุฎู„ูุงุช ุงู„ุฅุตุฏุงุฑุงุช

ุงู„ุณุงุจู‚ุฉุŒ ูŠุชุนูŠู† ุนู„ูŠูƒ ุชู†ุธูŠู… ู…ุฌู„ุฏ ุงู„ู…ุดุฑูˆุน ุจู‡ู†ุฏุณุฉ ู…ุนูŠุงุฑูŠุฉ ุตุงุฑู…ุฉ ุชุญุชูˆูŠ ุนู„ู‰ ู…ู„ูุงุช ุงู„ุฅุนุฏุงุฏ ุงู„ูุนุงู„ุฉ ูˆู‡ูŠ setup.py ูˆ pyproject.toml ู…ุน ุถุจุท

ู†ู‚ุทุฉ ุงู„ุฏุฎูˆู„ ุงู„ุฑุฆูŠุณูŠุฉ ู„ุชุฑุจุท ูƒู„ู…ุฉ ุฃู…ุฑ ุงู„ุชุดุบูŠู„ moroia ู…ุจุงุดุฑุฉ ุจุงุณุชุฏุนุงุก ุงู„ุฏุงู„ุฉ ุงู„ุชู†ููŠุฐูŠุฉ main ุงู„ู…ูˆุฌูˆุฏุฉ ุจุฏุงุฎู„ ุงู„ู…ู„ู ุงู„ู†ู‚ูŠ ู„ู„ู…ุดุฑูˆุน.

ู†ูˆูุฑ ู„ูƒ ู‡ู†ุง ุงู„ุณุทุฑ ุงู„ุณุญุฑูŠ ุงู„ุฎุทูŠ ุงู„ู…ูˆุญุฏ ุนุงู„ูŠ ุงู„ุณุฑุนุฉ ูˆุงู„ู…ุฎุตุต ู„ู„ุชุดุบูŠู„ ุงู„ููˆุฑูŠ ุฏุงุฎู„ ุจูŠุฆุฉ ุงู„ู€ PowerShell ุฃูˆ ุงู„ู€ Terminalุ› ุญูŠุซ ูŠู‚ูˆู… ู‡ุฐุง ุงู„ุณุทุฑ

ุจุฑู…ุฌูŠุงู‹ ุจู…ุณุญ ู…ุฌู„ุฏุงุช ุงู„ุชูˆุฒูŠุน ุงู„ู‚ุฏูŠู…ุฉ dist ูˆู…ุฌู„ุฏ ุงู„ุจู†ุงุก build ูˆู…ู„ูุงุช ู…ุนู„ูˆู…ุงุช ุงู„ุจูŠุถุฉ ุงู„ู†ุดุทุฉ egg-info ุฅุฌุจุงุฑูŠุงู‹ ูˆุจุฏูˆู† ุฅุทู„ุงู‚ ุฃูŠ ุงุณุชุซู†ุงุกุงุชุŒ

ุซู… ูŠุณุชุฏุนูŠ ููˆุฑุงู‹ ูˆุญุฏุฉ ุงู„ุชุฌู…ูŠุน ุงู„ุฑุณู…ูŠุฉ ู„ุจุงูŠุซูˆู† ู„ุฅู†ุดุงุก ุญุฒู… ุงู„ู€ Wheel ูˆุงู„ู€ Source Tarball ุจุดูƒู„ ู…ุถุบูˆุท ูˆู…ุซุงู„ูŠ ู„ู„ุฅุตุฏุงุฑ ุงู„ุฑุงุฏูŠูƒุงู„ูŠ ุงู„ุฌุฏูŠุฏ.

Command: Remove-Item -Recurse -Force dist, build, .egg-info -ErrorAction SilentlyContinue; python -m build; python -m twine upload --username token dist/

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

๐Ÿงช SECTION 11: FULL DECOUPLED TESTING PROTOCOL (ุจุฑูˆุชูˆูƒูˆู„ ุงู„ูุญุต ุงู„ู†ุธูŠู ูˆุงู„ุชุฌุฑุจุฉ ุงู„ุญูŠุฉ ุงู„ู…ุนุฒูˆู„ุฉ ูˆุฅู„ุบุงุก ุงู„ูƒุงุด ุงู„ู…ุญู„ูŠ)

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

ู„ุถู…ุงู† ูุญุต ุงู„ุฃุฏุงุฉ ุจุนุฏ ุงู„ู†ุดุฑ ูˆุงู„ุชุฃูƒุฏ ู…ู† ุชูุนูŠู„ ุฌู…ูŠุน ุขู„ูŠุงุช ุงู„ุญู…ุงูŠุฉ ูˆุงู„ุชุญุฏูŠุซ ุงู„ุฅุฌุจุงุฑูŠ ูˆุงู„ูˆุงุฌู‡ุฉ ุงู„ุฑุณูˆู…ูŠุฉ ุงู„ุซุงุจุชุฉ ูˆุงู„ุฌุฏูŠุฏุฉุŒ ูŠุฌุจ ุชูุงุฏูŠ ูุฎุงุฎ

ูƒุงุด ู†ุธุงู… ุงู„ุชุดุบูŠู„ ุงู„ู…ุญู„ูŠ ุงู„ุฐูŠ ูŠุฏู…ุฌ ุญุฒู… ุงู„ู€ wheels ุงู„ู‚ุฏูŠู…ุฉ ู…ู† ุงู„ุฐุงูƒุฑุฉ ุงู„ู…ุญู„ูŠุฉ ู„ู„ุฌู‡ุงุฒ. ูŠุชู… ุชูุนูŠู„ ุงู„ุจุฑูˆุชูˆูƒูˆู„ ุงู„ุงุฎุชุจุงุฑูŠ ุงู„ุตุงุฑู… ุนุจุฑ ุซู„ุงุซุฉ

ุฃูˆุงู…ุฑ ู…ุชุชุงู„ูŠุฉ ุชุถู…ู† ุงู„ุนุฒู„ ุงู„ูƒุงู…ู„ุ› ุญูŠุซ ูŠู‚ูˆู… ุงู„ุฃู…ุฑ ุงู„ุฃูˆู„ ุจุญุฐู ุฃูŠ ุจู‚ุงูŠุง ุฃูˆ ู…ุฎู„ูุงุช ุจุฑู…ุฌูŠุฉ ู‚ุฏูŠู…ุฉ ู„ู„ุฃุฏุงุฉ ู…ู† ุจูŠุฆุฉ ุจุงูŠุซูˆู† ุจุดูƒู„ ุตุงู…ุชุŒ ุชุชุจุนู‡ ุฏุงู„ุฉ

ุงู„ุชุตููŠุฉ ุงู„ุดุงู…ู„ุฉ ู„ูƒุงุด ุฃุฏุงุฉ ุงู„ุชุซุจูŠุช ุงู„ู‚ูŠุงุณูŠุฉ ู„ู†ุณู ุฃูŠ ู…ู„ูุงุช ู…ุฎุฒู†ุฉ ู…ุณุจู‚ุงู‹ ููŠ ุงู„ู‡ุงุฑุฏ ุฏูŠุณูƒ ุงู„ุฎุงุต ุจู†ุธุงู… ุงู„ุชุดุบูŠู„ุŒ ู„ูŠุฃุชูŠ ุงู„ุฃู…ุฑ ุงู„ุซุงู„ุซ ุงู„ุญุงุณู…

ุจุชุญู…ูŠู„ ูˆุชุซุจูŠุช ุญุฒู…ุฉ ู…ูˆุฑูˆูŠุง ุจุฅุตุฏุงุฑู‡ุง ุงู„ุซูˆุฑูŠ ุงู„ุฌุฏูŠุฏ 4.0.0 ู…ุจุงุดุฑุฉ ู…ู† ุงู„ุฎูˆุงุฏู… ุงู„ุณุญุงุจูŠุฉ ุงู„ุฑุณู…ูŠุฉ ู„ู€ PyPI ู…ุน ุฅุฌุจุงุฑ ุฃุฏุงุฉ ุงู„ุชุซุจูŠุช ุนู„ู‰ ุชุฌุงู‡ู„ ุงู„ูƒุงุด.

Command 1: pip uninstall moroia -y

Command 2: pip cache purge

Command 3: pip install moroia==4.0.0 --no-cache-dir

Command 4: moroia

======================================================================================================================

๐Ÿ”ฅ END OF BLUEPRINT | ARCHITECTURE VERIFIED ๐Ÿ”ฅ

======================================================================================================================

"""

with open("moroia_core.py", "w", encoding="utf-8") as f: f.write(file_content)

print("โœ… ุชู… ุฅู†ุดุงุก ู…ู„ู 'moroia_core.py' ุจู†ุฌุงุญ! ูŠุญุชูˆูŠ ุนู„ู‰ ุงู„ูƒูˆุฏ ุจุงู„ูƒุงู…ู„ ู…ุน ุงู„ุดุฑุญ ูˆุงู„ุฎุทูˆุงุช ู…ุฏู…ุฌุฉ ูƒุชุนู„ูŠู‚ุงุช ุจุฑู…ุฌูŠุฉ ุฎุทูŠุฉ.")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

moroia-5.0.0.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moroia-5.0.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file moroia-5.0.0.tar.gz.

File metadata

  • Download URL: moroia-5.0.0.tar.gz
  • Upload date:
  • Size: 44.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for moroia-5.0.0.tar.gz
Algorithm Hash digest
SHA256 ec7804d6bcc029c4b4f6e421a80a04a52f011a658ecf36de96579eefa9d4486d
MD5 f7d9822c1aa4cedbdf861671f0631297
BLAKE2b-256 c134fab7ffb106ef53c71c463b8d8afb2b14baa1ae5b265d579dcebd14d28185

See more details on using hashes here.

File details

Details for the file moroia-5.0.0-py3-none-any.whl.

File metadata

  • Download URL: moroia-5.0.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for moroia-5.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e1931a380590dd076627f4e5624b5d303e1b688661fa8d5bf2686477adc0e6a7
MD5 866618b165df6e310c7e7f3a437ee479
BLAKE2b-256 8b797ab064266a5a0a7ac4057ecfe9c6c5ce313b9489c3eb3f3df5a848906689

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page