myssia(中文名:世事)
AI 原生情报中枢 · AI-native intelligence hub
说需求,AI 做其余。 · Say what you want — AI does the rest.
世事 三分钟 —— 一个 YAML → 情报推送。录制脚本与分镜:docs/demo/
fetch ➜ classify ➜ dedup ➜ analyze ➜ enrich ➜ push
理念
所有情报需求 —— AI 资讯、股票异动、补货监控、显卡行情、羊毛优惠 —— 形状都一样: 盯住一些源,留下重要的,忽略其余的,该叫你的时候叫你。 现有工具各给一片: 一个爬虫、一个订阅源、一个 diff 监视器。世事 给的是全链路,配置驱动,并且天生 就是给 AI agent 开的。
任何情报品类 = 一份 YAML 文件。世事 负责抓取(六级引擎自动降级)、分类去重、
打分(先关键词粗筛 —— 零 token;可选 LLM 精评),把重要的推到你的即时通讯。
YAML 本身由你的编码 agent 照规范现场生成:读 schema、写配置、myssia test 试抓
验证、凭 myssia doctor 输出自行修复失效源。
人做决策,AI 做其余。
市面空白:为什么是 世事
| 现有工具 | 给你什么 | 缺什么 |
|---|---|---|
| Crawlab / Kestra | 爬虫/工作流编排 | 只是载具 —— 没有分类、去重、推送 |
| changedetection.io | 网站变更监控 | 只盯 diff —— 没有采集管线、分析与打分 |
| RSSHub | 把站点转成 RSS | 只做源转换 —— 没有过滤、打分与投递 |
| 单一用途盯盘工具(凭证/羊毛各一款) | 各覆盖一个细分品类 | 品类写死;换目标 = 换工具 |
| 世事 | 品类无关的采集→分类→分析→推送全链,配置驱动 | — |
核心亮点
|
🧠 是情报,不只是爬虫
七大类关键词分类器(零 token,以独立包
|
🪜 六级采集降级梯
|
|
📬 推送尊重你的注意力 URL 键去重注册表 + 早/晚摘要槽位 —— 生产验证过的语义;同一条情报你永远不会 收到第二遍。通道:飞书卡片、Telegram、webhook、stdout。 |
🔐 凭据永不落明文
凭据永不进 YAML —— 只允许 |
|
🤖 天生 Agent 友好
全量文档化的 12 节 YAML schema、处处有缺省值、每条命令都有 |
🔁 反馈闭环自我调优 对推送标记有价值 / 无价值(CLI 现已可用;桌面卡片内按钮已随桌面对齐批次 落地 main、随下个发布版交付;Telegram/飞书回调接收已就绪)—— 负反馈持续 回写,调优盯盘权重与阈值。 |
|
⏰ 定时任务:到点跑一遍 + 发摘要
|
|
开箱即用:SQLite 单文件存储(无 Redis、无 Postgres、无常驻守护),保留期 自动清理 + 定期 VACUUM,进程内调度。
快速开始
git clone https://github.com/xinzhuzi/myia
cd myssia
uv sync # uv workspace(主口径):一并装好 myssia 与 myssia-classifier
uv run myssia --version # myssia 0.0.1
本仓是 uv workspace(
myssia-classifier是 workspace 成员):裸pip install -e .装不齐依赖,源码安装请用uv sync;pip install myssia待 PyPI 上架后可用。
重型采集引擎是可选 extras;缺引擎时沿梯子优雅降级,给出结构化
dependency_missing 错误而不是崩溃:
uv sync --extra crawl4ai # L3 JS 渲染引擎
uv sync --extra llm # LLM 精评 / 事件聚合
跑第一个品类 —— 零凭据的完整配置就一个小文件:
cat > plugins/demo-min.yaml <<'YAML'
id: demo-min
name: Minimal demo
schedule: "0 9 * * *"
sources:
- name: example-news
engine: static_html
url: "https://example.com/news"
extract:
type: list
item: "article"
fields:
title: "h2 a"
url: "h2 a@href"
classify:
builtin: false # demo items match no category; disable the filter
push:
- channel: stdout # zero-credential local verification
YAML
uv run myssia test plugins/demo-min.yaml --json # 试抓:不入库、不推送
uv run myssia run plugins/demo-min.yaml --dry-run --json # 全链演练,不推送
uv run myssia run plugins/demo-min.yaml # 正式跑;--loop 常驻调度
完整走读:docs/zh/getting-started.md。
PyPI 包(
myssia、myssia-classifier)将走手动发布流程;在那之前请如上从源码安装, 桌面用户可直接用下方安装包。
下载安装(桌面应用)
macOS(Apple Silicon)
安装包随 GitHub Releases 发布:
- 从 Releases 下载
myssia_<版本>_aarch64.dmg(版本号随发布更替,以 Releases 页面实际资产为准), 把 世事 拖入「应用程序」; - 首次打开:在「应用程序」里右键 世事 →「打开」→ 再点「打开」 (或双击被拦后到 系统设置 → 隐私与安全性 → 点「仍要打开」);
- 安装包未做 Apple 公证(公证需付费开发者账号)—— 代码完全开源可审计, 每个安装包由 GitHub Actions 公开构建、日志可溯;右键打开一次即完成 Gatekeeper 放行,之后正常双击启动。
Windows(x64)
安装包(msi)将随 GitHub Releases 发布——Windows 构建流水线已就绪,首个 Windows 版本随下个 Release 交付;交付前 Releases 页暂无 msi(见路线图注记):
- 从 Releases 下载
myssia_<版本>_x64.msi,双击安装(版本号随发布更替,以 Releases 页面 实际资产为准); - 首次运行弹 SmartScreen「Windows 已保护你的电脑」时,点 「更多信息」→「仍要运行」(未购买代码签名证书的如实代价,与 macOS 右键打开同一口径);
- Windows Defender 误报可能:安装包内含未签名的 PyInstaller sidecar
(
myssia-core.exe),SmartScreen/Defender 可能告警——代码完全开源可审计, 每个安装包由 GitHub Actions 公开构建、日志可溯;如遇拦截,同样 「更多信息」→「仍要运行」,必要时在 Defender 提示里选「允许」; - 数据根在
%APPDATA%\MYIA(资源管理器地址栏粘贴即达),装机首跑自动 种子官方插件,首屏点「运行第一个插件」; - 升级:设置页「检查更新」,msi 静默(passive)安装后自动重启 (见 desktop/UPDATER.md)。
装机首跑自动种子官方插件(含零凭据演示件 myssia-demo:GitHub 新星榜),
第一次点「运行第一个插件」就出真数据;设置页「检查更新」走签名更新通道。
桌面五屏(截图为 demo 插件真实抓取数据):
AI 原生闭环
把闭环交给任何编码 agent(Claude Code、Cursor……)。
Agent Skill 是自包含速查表,一条命令安装
(myssia skill install --agent claude;也支持 cursor / zcode,
--path 自定义目录,--link 以链接代替复制):
myssia skill install --agent claude # 一次性:速查表 → ~/.claude/skills/myia/
myssia init --json # 拿结构化信息清单
( agent 现场写 <id>.yaml ) # 对照 12 节 schema
myssia test plugins/<id>.yaml --json # 试抓,核对字段与去重键
myssia run plugins/<id>.yaml --dry-run # 演练
myssia run plugins/<id>.yaml --loop # 常驻调度
myssia doctor --json # 拿 findings;agent 自修后复查
架构
用户层 myssia CLI · Agent Skill · 桌面应用(Tauri,v1.1)· Web UI(规划中)
│
编排层 流水线:fetch → classify → dedup → analyze → enrich → push
(进程内 APScheduler + asyncio;无外部编排器、无守护进程)
│
插件层 一个品类一份 YAML · 6 个官方品类 · 市场插件
desktop 级 = 进程内 adapter(零 docker)· remote/server 级走端点
(代理池 · 变更监控 · OSINT · 抖音 · maxun · …)
│
采集引擎 L1 direct_api → L2 static_html → L3 crawl4ai ⇄ firecrawl
→ L4 scrapling → L5 stealth_browser → L6 llm_browser
(自动降级链;胜出引擎按源持久化)
│
分析 内置七类关键词分类器(myssia-classifier)
+ 可选 LLM 精评(价值/相关性/可信度,0–10)
│
存储 SQLite 单文件 · 保留期 + VACUUM · 变更基线
│
推送 飞书卡片 · Telegram · webhook · stdout,阈值分级路由
(立即 / 早晚摘要 / 归档)+ 反馈闭环
文档
双语文档随仓库发行,由测试(tests/test_docs.py)锁住与代码一致 —— 每个
示例 YAML 都过真实 schema 入口加载,zh/en 两棵树结构上不许漂移:
| English | 中文 | |
|---|---|---|
| Getting started | docs/en/getting-started.md | docs/zh/getting-started.md |
| Write a plugin | docs/en/write-a-plugin.md | docs/zh/write-a-plugin.md |
| Schema reference | docs/en/schema.md | docs/zh/schema.md |
| FAQ(伦理与边界) | docs/en/faq.md | docs/zh/faq.md |
| Scheduled jobs (cron) | docs/en/cron.md | docs/zh/cron.md |
面向 agent 的浓缩参考:skill/SKILL.md。
路线图
核心流水线已实现且有测试覆盖 —— 1300+ 测试跑在 CI 里,无一条碰真实网络。 桌面端已可日常使用(数据通路统一、官方插件随包、开箱 demo、签名更新通道, v0.0.1 起随 Releases 交付);桌面卡片内反馈按钮、设置反馈开关、采集量趋势 已随桌面对齐批次落地 main、随下个发布版交付(反馈闭环 CLI 现已可用); Windows 构建这版未通过,Release 暂无 Windows 安装包(后续批次计划补上)。
| 里程碑 | 范围 | 状态 |
|---|---|---|
| v0.1 骨架 | 核心流水线、direct_api/static/firecrawl 引擎、12 节 schema、变更指纹、分类器、飞书路由 | ✅ 已交付 |
| v0.2 可用 | SQLite 存储 + 注册表 + 保留期、完整 CLI(init/test/list/doctor)、crawl4ai L3、LLM 精评 + 预算护栏、docker compose、Telegram、钥匙链凭据 | ✅ 已交付 |
| v0.3 生态 | Agent Skill、插件市场(本地/远端双模)、Scrapling L4、反馈闭环(CLI + 回调接收) | ✅ 已交付 |
| v0.4 深水区 | stealth_browser L5、llm_browser L6、趋势基线、事件聚合 | ✅ 已交付 |
| v1.0 发布 | 双语文档、演示物料、GitHub 门面、公开交付 | ✅ 已交付 |
| v1.1 桌面优先 | Tauri 桌面壳(Python 核心以 sidecar 嵌入)、五屏 UI、进程内插件级;卡片内反馈按钮/settings 反馈开关/采集量趋势已随桌面对齐批次落地、随下个发布版交付(反馈 CLI 已可用) | ✅ 已交付 |
| v1.1.1 通路修复 | 桌面数据通路统一(MYIA_HOME/官方插件随包/首跑种子)、开箱 demo 插件、签名更新通道(检查更新 + 自动安装) | ✅ 已交付 |
| Web UI | 同一核心上的浏览器前端 | 📋 规划中 |
伦理与边界
世事 默认讲礼貌:尊重 robots.txt、限速采集、凭据永不落明文。要求真人验证 (验证码、手机号)的源会以结构化错误失败 —— 世事 不做绕过。完整表述见 中文 FAQ · English FAQ。
社区
- Bug 与需求:issue 模板
- 参与贡献:CONTRIBUTING.md
- 安全策略与凭据处理设计:SECURITY.md
致谢
世事 自有代码全部原创(MIT),但站在巨人的肩膀上 —— 以依赖、插件后端与设计 参考的形式接入:
- crawl4ai —— L3 采集引擎(可选依赖)
- Scrapling —— L4 自适应反爬引擎(可选依赖)
- Firecrawl —— L3 云端/自建渲染后端(可选依赖,以 API 调用)
- Skyvern —— L6 LLM 浏览器兜底(可选依赖)
- changedetection.io —— 源管理与 diff 交互参考,
myssia-monitor插件后端 - RSSHub —— 「一切皆源」的哲学参考
- jhao104/proxy_pool ——
myssia-proxy插件后端 - Photon ——
myssia-osint插件后端(以 git 子模块引入) - Douyin_TikTok_Download_API ——
myssia-douyin插件后端 - Maxun ——
myssia-maxun插件后端 - Tauri —— 桌面壳(Python 核心以 sidecar 嵌入)
除明确标注的 git 子模块外,不复制任何上游源码进本仓库;依赖接入策略见 CONTRIBUTING.md。
许可证
MIT © 2026 xinzhuzi
The idea
Every intelligence need — AI news, stock moves, restocks, GPU prices, freebies and deals — has the same shape: watch some sources, keep what matters, ignore the rest, tell me when it counts. Existing tools each give you one slice: a crawler, a feed, a diff watcher. 世事 is the whole chain, config-driven, and built to be driven by your AI agent.
Describe any category as one YAML file. 世事 fetches it (six engines on
an auto-degrading ladder), classifies and dedups it, scores it (keywords
first — zero tokens; optional LLM for precision), and pushes what matters to
your messaging apps. The YAML itself is written by your coding agent: it
reads the schema, generates the config, trial-fetches with myssia test, and
repairs broken sources on its own from myssia doctor output.
Weixin outbound is a bridge via a local Hermes-Agent install — without one, the weixin channel is unavailable (myssia itself holds zero WeChat credentials).
Humans decide; AI does the rest.
Why 世事
| Existing tools | What they give you | What they miss |
|---|---|---|
| Crawlab / Kestra | crawler & workflow orchestration | a vehicle only — no classification, dedup or push |
| changedetection.io | website change monitoring | watches diffs — no collection pipeline, no analysis, no LLM scoring |
| RSSHub | turns sites into RSS feeds | source conversion only — no filtering, scoring or delivery |
| Single-purpose watchers (credential / deal trackers) | one niche category each | category-locked; every new target means new tooling |
| 世事 | category-agnostic fetch → classify → analyze → push, all config-driven | — |
Highlights
|
🧠 Intelligence, not just crawling
A seven-category keyword classifier (zero tokens, shipped as the standalone
|
🪜 A six-engine fetch ladder
|
|
📬 Push that respects your attention URL-key dedup registry + AM/PM digest slots — production-proven semantics; you never receive the same item twice. Feishu card, Telegram, webhook and stdout channels. |
🔐 Secrets stay secret
Credentials never live in YAML — only |
|
🤖 Agent-native by design
A fully documented 12-section YAML schema with defaults everywhere,
|
🔁 A feedback loop that tunes itself Mark pushed items valuable / not valuable (CLI today; in-card desktop buttons have landed on main in the desktop-parity batch and ship with the next release; Telegram/Feishu callback receivers are ready) — negative feedback retunes watchlist weights and thresholds over time. |
|
⏰ Scheduled jobs: run it on a clock, deliver the summary
|
|
Batteries included: SQLite single-file storage (no Redis, no Postgres, no daemon), retention + auto-VACUUM, in-process scheduling.
Quickstart
git clone https://github.com/xinzhuzi/myia
cd myssia
uv sync # uv workspace (primary): installs myssia + myssia-classifier
uv run myssia --version # myssia 0.0.1
This repo is a uv workspace (
myssia-classifieris a workspace member): a barepip install -e .won't pull it in — install from source withuv sync;pip install myssiabecomes available once the package lands on PyPI.
Heavy fetch engines are optional extras; a missing engine degrades gracefully
down the ladder with a structured dependency_missing error instead of
crashing:
uv sync --extra crawl4ai # L3 JS-rendered page engine
uv sync --extra llm # LLM enrich scoring / event aggregation
Run your first category — a complete, zero-credential config in one small file:
cat > plugins/demo-min.yaml <<'YAML'
id: demo-min
name: Minimal demo
schedule: "0 9 * * *"
sources:
- name: example-news
engine: static_html
url: "https://example.com/news"
extract:
type: list
item: "article"
fields:
title: "h2 a"
url: "h2 a@href"
classify:
builtin: false # demo items match no category; disable the filter
push:
- channel: stdout # zero-credential local verification
YAML
uv run myssia test plugins/demo-min.yaml --json # trial fetch: no DB, no push
uv run myssia run plugins/demo-min.yaml --dry-run --json # full rehearsal, no push
uv run myssia run plugins/demo-min.yaml # real run; add --loop for scheduling
Full walk-through: docs/en/getting-started.md.
PyPI packages (
myssia,myssia-classifier) will publish via a manual release workflow; until then, install from source as above — or grab the desktop installer below.
Download & install (desktop app)
The macOS (Apple Silicon) installer ships via GitHub Releases:
- Download
myssia_<version>_aarch64.dmgfrom Releases (the version token rotates per release — the Releases page is authoritative) and drag 世事 into Applications; - On first launch: right-click 世事 in Applications → Open → Open (or, after a blocked double-click: System Settings → Privacy & Security → Open Anyway);
- The package is not Apple-notarized (notarization requires a paid developer account) — the code is fully open-source and auditable, and every installer is built in public by GitHub Actions with traceable logs. One right-click open clears Gatekeeper; subsequent launches open normally.
A fresh install auto-seeds the official plugins (including the
zero-credential demo myssia-demo: GitHub's new-star board), so the first click
of "run your first plugin" shows real data; the settings screen offers
"Check for updates" over a signed update channel.
The five desktop screens (fed by real demo-plugin data):
The AI-native loop
Hand the loop to any coding agent (Claude Code, Cursor, …). The
Agent Skill is a self-contained cheat sheet, installed with
one command (myssia skill install --agent claude; also cursor / zcode,
--path for a custom dir, --link to symlink instead of copy):
myssia skill install --agent claude # one-time: skill sheet → ~/.claude/skills/myia/
myssia init --json # structured checklist of what to collect
( agent writes <id>.yaml ) # against the 12-section schema
myssia test plugins/<id>.yaml --json # trial fetch, inspect fields + dedup keys
myssia run plugins/<id>.yaml --dry-run # rehearsal
myssia run plugins/<id>.yaml --loop # scheduled operation
myssia doctor --json # findings; the agent repairs and re-checks
Architecture
User layer myssia CLI · Agent Skill · desktop app (Tauri, v1.1) · Web UI (planned)
│
Orchestration Pipeline: fetch → classify → dedup → analyze → enrich → push
(in-process APScheduler + asyncio; no external orchestrator, no daemon)
│
Plugin layer One YAML per category · 6 official categories · market plugins
desktop tier = in-process adapter (zero docker) · remote/server tier
(proxy pool · changedetection · OSINT · douyin · maxun · …)
│
Fetch engines L1 direct_api → L2 static_html → L3 crawl4ai ⇄ firecrawl
→ L4 scrapling → L5 stealth_browser → L6 llm_browser
(auto degrade chain; winning engine persisted per source)
│
Analysis builtin 7-category keyword classifier (myssia-classifier)
+ optional LLM enrich (value / relevance / credibility, 0–10)
│
Storage SQLite single file · retention + VACUUM · change baselines
│
Push Feishu card · Telegram · webhook · stdout, threshold-routed
(immediate / digest AM-PM / archive) + feedback loop
Documentation
Bilingual docs ship in-repo, kept consistent with the code by tests
(tests/test_docs.py) — every example YAML loads through the real schema
entry point, and zh/en trees cannot drift apart:
| English | 中文 | |
|---|---|---|
| Getting started | docs/en/getting-started.md | docs/zh/getting-started.md |
| Write a plugin | docs/en/write-a-plugin.md | docs/zh/write-a-plugin.md |
| Schema reference | docs/en/schema.md | docs/zh/schema.md |
| FAQ (ethics & boundaries) | docs/en/faq.md | docs/zh/faq.md |
| Scheduled jobs (cron) | docs/en/cron.md | docs/zh/cron.md |
Agent-facing condensed reference: skill/SKILL.md.
Roadmap
The core pipeline is implemented and tested — 1300+ tests run in CI, none of them touch the real network. The desktop app is ready for daily use (unified data paths, bundled official plugins, an out-of-the-box demo, a signed update channel — shipping in Releases since v0.0.1); in-card feedback buttons, the settings feedback toggle and collection trends have landed on main in the desktop-parity batch and ship with the next release (the feedback loop already works via CLI); the Windows build did not ship in this release (no Windows installer in Releases yet; planned for a follow-up batch).
| Milestone | Scope | Status |
|---|---|---|
| v0.1 skeleton | Core pipeline, direct_api/static/firecrawl engines, 12-section schema, change fingerprint, classifier, Feishu routing | ✅ shipped |
| v0.2 usable | SQLite store + registry + retention, full CLI (init/test/list/doctor), crawl4ai L3, LLM enrich + budget guardrails, docker compose, Telegram, keychain secrets | ✅ shipped |
| v0.3 ecosystem | Agent Skill, plugin market (local/remote dual-mode), Scrapling L4, feedback loop (CLI + callback receivers) | ✅ shipped |
| v0.4 deep water | stealth_browser L5, llm_browser L6, trend baselines, event aggregation | ✅ shipped |
| v1.0 launch | Bilingual docs, demo assets, GitHub facade, public delivery | ✅ shipped |
| v1.1 desktop-first | Tauri desktop shell (Python core as sidecar), five-screen UI, in-process plugin tier; in-card feedback buttons / settings feedback toggle / collection trends have landed in the desktop-parity batch and ship with the next release (feedback works via CLI today) | ✅ shipped |
| v1.1.1 data paths | Desktop data-path unification (MYIA_HOME / bundled official plugins / first-run seed), out-of-the-box demo plugin, signed update channel (check + install) | ✅ shipped |
| Web UI | browser front-end on the same core | 📋 planned |
Ethics & boundaries
世事 is polite by default: robots.txt respected, rate-limited fetching, credentials never in plaintext. Sources that demand human verification (CAPTCHA, phone numbers) fail with a structured error — 世事 does not attempt to bypass them. Full statement in the FAQ · 中文 FAQ.
Community
- Bug reports & feature requests: issue templates
- Contributing: CONTRIBUTING.md
- Security policy & credential-handling design: SECURITY.md
Acknowledgments
世事's own code is original (MIT), but it stands on giants — consumed as dependencies, plugin backends and design references:
- crawl4ai — L3 fetch engine (optional dependency)
- Scrapling — L4 adaptive anti-bot engine (optional dependency)
- Firecrawl — L3 cloud/self-hosted rendering backend (optional dependency, called as an API)
- Skyvern — L6 LLM-browser fallback (optional dependency)
- changedetection.io — source-management & diff UX reference;
myssia-monitorplugin backend - RSSHub — the "everything is a feed" philosophy
- jhao104/proxy_pool —
myssia-proxyplugin backend - Photon —
myssia-osintplugin backend (vendored via git submodule) - Douyin_TikTok_Download_API —
myssia-douyinplugin backend - Maxun —
myssia-maxunplugin backend - Tauri — desktop shell (Python core embedded as a sidecar)
No upstream source is copied into this repository except clearly-marked git submodules; dependency policy in CONTRIBUTING.md.
License
MIT © 2026 xinzhuzi
Metadata
Release files for myssia 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| myssia-0.0.1.tar.gz | 28.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| myssia-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.7 MB
Release files / myssia-0.0.1.tar.gz
| Download URL | myssia-0.0.1.tar.gz |
|---|---|
| Size | 28.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b460a76895fe881d5a65acf318527b516595b1ea087774f93b70ca3867d4368
|
|
BLAKE2b-256 checksum How to use checksums |
08cda30a4e24ece36ceef54b59a79684c2e3563abd4c7757a441aabc4a945ffd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.
Transparency logRelease files / myssia-0.0.1-py3-none-any.whl
| Download URL | myssia-0.0.1-py3-none-any.whl |
|---|---|
| Size | 710.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b8c2463e1066ff4b8fe246ce46f361ad5023a071c13e59025a0cda77e4b8d0e9
|
|
BLAKE2b-256 checksum How to use checksums |
b5f6bbf24ee2d6cc5d79f4b5a1aa0e2151671dd55d4f55083b2215607b2f0f27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.
Transparency log