support python36
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,4 @@
|
|||||||
|
from typing import List, Dict, Tuple, Set, Any, Optional, Union
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""
|
||||||
Palladium Z1 Monitor — LD逻辑板使用监控系统
|
Palladium Z1 Monitor — LD逻辑板使用监控系统
|
||||||
@@ -10,7 +11,6 @@ Palladium Z1 Monitor — LD逻辑板使用监控系统
|
|||||||
2. API 推送 — 在 Palladium 主机运行 collect.py 远程推送
|
2. API 推送 — 在 Palladium 主机运行 collect.py 远程推送
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations # PEP 563: 兼容 Python 3.7+ (避免 PEP 585 泛型语法)
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
|||||||
Binary file not shown.
@@ -1,3 +1,4 @@
|
|||||||
|
from typing import List, Dict, Tuple, Set, Any, Optional, Union
|
||||||
"""
|
"""
|
||||||
mailer.py — Palladium Z1 每日报告邮件发送
|
mailer.py — Palladium Z1 每日报告邮件发送
|
||||||
|
|
||||||
@@ -5,7 +6,6 @@ mailer.py — Palladium Z1 每日报告邮件发送
|
|||||||
所有配置都从环境变量读 (生产建议用 systemd EnvironmentFile 或 .env)。
|
所有配置都从环境变量读 (生产建议用 systemd EnvironmentFile 或 .env)。
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import annotations # PEP 563: 让所有 type hint 变字符串, 兼容 Python 3.7+
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import smtplib
|
import smtplib
|
||||||
@@ -60,7 +60,7 @@ def get_config() -> dict:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def config_errors(cfg: dict) -> list[str]:
|
def config_errors(cfg: dict) -> List[str]:
|
||||||
"""检查配置是否完整可发送。返回缺失/错误项的列表 (空=OK)。"""
|
"""检查配置是否完整可发送。返回缺失/错误项的列表 (空=OK)。"""
|
||||||
errs = []
|
errs = []
|
||||||
if not cfg["enabled"]:
|
if not cfg["enabled"]:
|
||||||
@@ -416,7 +416,7 @@ def _render_html(data: dict, base_url: str) -> str:
|
|||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
# 发送
|
# 发送
|
||||||
# ═══════════════════════════════════════════════════════════════════════════
|
# ═══════════════════════════════════════════════════════════════════════════
|
||||||
def render_report(data: dict, cfg: dict) -> tuple[str, str, str]:
|
def render_report(data: dict, cfg: dict) -> Tuple[str, str, str]:
|
||||||
"""返回 (subject, html, text)。"""
|
"""返回 (subject, html, text)。"""
|
||||||
latest = data["latest"]
|
latest = data["latest"]
|
||||||
if latest:
|
if latest:
|
||||||
@@ -430,7 +430,7 @@ def render_report(data: dict, cfg: dict) -> tuple[str, str, str]:
|
|||||||
return subject, html, text
|
return subject, html, text
|
||||||
|
|
||||||
|
|
||||||
def _send_smtp(cfg: dict, subject: str, html: str, text: str) -> tuple[bool, str]:
|
def _send_smtp(cfg: dict, subject: str, html: str, text: str) -> Tuple[bool, str]:
|
||||||
"""实际 SMTP 发送, 返回 (ok, error_msg)。"""
|
"""实际 SMTP 发送, 返回 (ok, error_msg)。"""
|
||||||
msg = MIMEMultipart("alternative")
|
msg = MIMEMultipart("alternative")
|
||||||
msg["Subject"] = subject
|
msg["Subject"] = subject
|
||||||
@@ -469,7 +469,7 @@ def _send_smtp(cfg: dict, subject: str, html: str, text: str) -> tuple[bool, str
|
|||||||
return (False, f"{type(e).__name__}: {e}")
|
return (False, f"{type(e).__name__}: {e}")
|
||||||
|
|
||||||
|
|
||||||
def send_report(cfg: dict | None = None) -> dict:
|
def send_report(cfg: Optional[Dict] = None) -> dict:
|
||||||
"""
|
"""
|
||||||
收集数据 → 渲染 → 发送。
|
收集数据 → 渲染 → 发送。
|
||||||
返回: {"ok": bool, "subject": str, "recipients": [...], "error": str, "preview_text": str}
|
返回: {"ok": bool, "subject": str, "recipients": [...], "error": str, "preview_text": str}
|
||||||
|
|||||||
Reference in New Issue
Block a user