mlib 图标
纯 Python · 零依赖 · 瑞士军刀
🐍 Python 3.8+ 📦 零外部依赖 🧪 1000+ 函数 📄 MIT

mlib 是一个完全用 纯 Python 实现的 通用工具库,涵盖数学、几何、加密、数据结构、文件处理、UI 等 数十个领域。无需任何第三方依赖,开箱即用。

🧮
分数 · 复数 · 矩阵 · 四元数
📐
2D / 3D 几何 · 碰撞 · 寻路
🔐
SHA-256 · ECDSA · 秘密共享
🧪
自带 tester · 零依赖测试框架
🗄️
磁盘 KV · 矩阵数据库 · 对象池 · 缓存
📝
表格生成 · 时间格式化 · 正则引擎

🚀 快速上手

from gaskill import Complex, Frac, vec2
from gaskill import TestCase, test, TestRunner

# 复数 — 支持字符串解析
c = Complex("3+4j")
print(c * c) # (-7+24i)

# 分数 — 精确有理数
f = Frac(1, 3) + Frac(1, 6)
print(f) # 1/2

# 2D 向量 — 几何运算
v = vec2(3, 4)
print(v.length()) # 5.0

# 测试框架 — 零依赖 unittest 风格
class MyTest(TestCase):
    @test
    def test_add(self):
        self.assert_equal(1 + 1, 2)

TestRunner().run_all()

📦 安装

pip install gaskill 或直接复制源码到项目中

📚 模块总览

smath
数学核心:复数、素数、伽马函数、三角函数
sfrac
精确分数运算,支持百分数、LaTeX 输出
svector / smatrix / squaternion
向量、矩阵、四元数 — 全套线性代数
sgeometry / sgeometry3d
2D / 3D 碰撞检测、射线、AABB、多边形
spathfinder
A* · Dijkstra · BFS · 双向搜索 · 迷宫生成
scrypt
RSA 加解密 · Shamir 秘密共享 · 自定义加密
hashlib / ecc
SHA-256 · DJB2 · ECDSA 签名 (secp256k1)
sbase64
Base16/32/64/58/256(中文汉字版)
scache / spool
LRU/LFU/TTL 缓存 · 对象池 · 环形缓冲区
sui
轻量 UI 框架:标签、按钮、输入框、进度条
ssaver / database / sql
SGT 存档器 · 磁盘 KV 数据库(纯 Python)· 适合读取的数据库
snoise / scurve / seasing
Perlin/Simplex 噪声 · 贝塞尔/B样条 · 缓动函数
sformat / re
表格生成 · 时间/文件大小格式化 · 正则引擎
poly / radical
多项式因式分解 · 根式化简与四则运算
bmp / pickle / zip
BMP 读写 · 二进制序列化 · LZ77+哈夫曼压缩
fft
快速傅里叶变换 · 幅值/相位/功率谱 · 频率工具
tester
轻量级单元测试框架 · 零依赖 · 28 种断言 · unittest 风格
csv
CSV 读写 · 引号转义 · 字典互转 · 纯 Python

✅ 随机数质量认证

🎉 NIST SP 800-22 全部 15 项测试通过

mlib.Random 已通过 NIST SP 800-22 全部统计测试, 符合国密 GM/T 0005 和 GM/T 0062 标准要求。

测试样本:10 × 1MB 随机数据 | 通过率:100% | 结论:可用于密码学安全场景

✅ Frequency ✅ BlockFrequency ✅ CumulativeSums ✅ Runs ✅ LongestRun ✅ Rank ✅ FFT ✅ NonOverlappingTemplate ✅ OverlappingTemplate ✅ Universal ✅ ApproximateEntropy ✅ Serial ✅ LinearComplexity ✅ RandomExcursions ✅ RandomExcursionsVariant
📊 NIST SP 800-22 完整测试报告 15 项测试 · 全部通过
-------------------------------------------------------------------------------- RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES -------------------------------------------------------------------------------- generator is <combined.bin> -------------------------------------------------------------------------------- C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 P-VALUE PROPORTION STATISTICAL TEST -------------------------------------------------------------------------------- 2 0 2 1 1 1 0 1 2 0 0.739918 10/10 Frequency 1 0 0 2 1 1 2 2 0 1 0.739918 10/10 BlockFrequency 2 0 3 0 3 1 0 0 1 0 0.122325 10/10 CumulativeSums 2 0 0 0 1 2 4 0 1 0 0.066882 10/10 CumulativeSums 2 1 0 0 2 2 0 1 1 1 0.739918 10/10 Runs 1 2 1 0 0 2 1 2 0 1 0.739918 10/10 LongestRun 0 2 1 1 2 0 1 2 0 1 0.739918 10/10 Rank 2 0 2 0 1 1 1 0 2 1 0.739918 10/10 FFT 2 1 0 1 1 0 1 2 1 1 0.911413 10/10 NonOverlappingTemplate 1 0 2 0 1 1 1 1 2 1 0.911413 10/10 NonOverlappingTemplate 0 2 2 1 0 1 0 2 0 2 0.534146 10/10 NonOverlappingTemplate 0 1 1 1 2 0 0 1 2 2 0.739918 10/10 NonOverlappingTemplate 0 1 2 0 2 0 2 0 2 1 0.534146 10/10 NonOverlappingTemplate 1 2 0 2 0 3 0 1 0 1 0.350485 10/10 NonOverlappingTemplate 1 0 0 2 2 0 1 2 1 1 0.739918 9/10 NonOverlappingTemplate 1 1 2 1 3 1 0 1 0 0 0.534146 10/10 NonOverlappingTemplate 1 0 0 1 1 1 2 2 0 2 0.739918 10/10 NonOverlappingTemplate 1 1 0 0 0 4 1 2 0 1 0.122325 10/10 NonOverlappingTemplate 2 1 2 0 2 1 0 0 1 1 0.739918 10/10 NonOverlappingTemplate 0 0 0 0 0 1 3 3 0 3 0.035174 10/10 NonOverlappingTemplate 3 1 0 0 2 2 1 0 1 0 0.350485 10/10 NonOverlappingTemplate 1 2 0 0 1 1 1 2 0 2 0.739918 9/10 NonOverlappingTemplate 1 2 2 1 1 1 0 0 0 2 0.739918 10/10 NonOverlappingTemplate 1 2 1 2 0 0 0 1 2 1 0.739918 9/10 NonOverlappingTemplate 0 1 1 1 1 1 1 3 0 1 0.739918 10/10 NonOverlappingTemplate 0 0 1 1 1 2 2 0 2 1 0.739918 10/10 NonOverlappingTemplate 2 0 0 2 1 1 2 0 2 0 0.534146 10/10 NonOverlappingTemplate 2 0 1 0 0 3 1 1 0 2 0.350485 10/10 NonOverlappingTemplate 2 0 1 2 1 2 0 1 1 0 0.739918 10/10 NonOverlappingTemplate 0 2 2 1 0 2 2 0 1 0 0.534146 10/10 NonOverlappingTemplate 1 0 0 2 1 0 0 3 3 0 0.122325 9/10 NonOverlappingTemplate 0 1 1 1 1 0 2 2 1 1 0.911413 10/10 NonOverlappingTemplate 2 2 2 1 0 2 1 0 0 0 0.534146 9/10 NonOverlappingTemplate 0 2 2 1 1 2 1 0 1 0 0.739918 10/10 NonOverlappingTemplate 3 0 0 0 0 0 0 2 2 3 0.066882 9/10 NonOverlappingTemplate 0 3 0 3 1 1 0 0 2 0 0.122325 10/10 NonOverlappingTemplate 0 2 1 2 0 0 0 0 1 4 0.066882 10/10 NonOverlappingTemplate 0 0 0 1 0 3 0 2 3 1 0.122325 10/10 NonOverlappingTemplate 1 2 1 0 1 0 0 1 2 2 0.739918 10/10 NonOverlappingTemplate 3 2 2 0 0 0 2 0 1 0 0.213309 9/10 NonOverlappingTemplate 0 1 0 2 2 1 2 1 1 0 0.739918 10/10 NonOverlappingTemplate 0 0 0 2 2 0 1 1 1 3 0.350485 10/10 NonOverlappingTemplate 1 1 0 1 3 1 1 0 2 0 0.534146 10/10 NonOverlappingTemplate 1 2 1 1 1 1 1 1 0 1 0.991468 10/10 NonOverlappingTemplate 0 0 0 0 2 0 3 2 2 1 0.213309 10/10 NonOverlappingTemplate 2 0 0 2 2 1 1 2 0 0 0.534146 10/10 NonOverlappingTemplate 0 2 2 1 1 2 0 1 1 0 0.739918 10/10 NonOverlappingTemplate 0 1 0 4 2 2 0 1 0 0 0.066882 10/10 NonOverlappingTemplate 0 1 2 2 1 0 1 3 0 0 0.350485 10/10 NonOverlappingTemplate 1 2 1 1 1 1 0 2 0 1 0.911413 10/10 NonOverlappingTemplate 3 0 0 1 3 1 1 0 1 0 0.213309 10/10 NonOverlappingTemplate 1 0 2 1 0 2 2 2 0 0 0.534146 10/10 NonOverlappingTemplate 1 1 0 1 0 1 2 1 1 2 0.911413 10/10 NonOverlappingTemplate 0 0 2 0 1 1 1 2 2 1 0.739918 10/10 NonOverlappingTemplate 1 0 2 1 1 1 1 0 2 1 0.911413 10/10 NonOverlappingTemplate 1 2 3 0 1 0 0 2 1 0 0.350485 10/10 NonOverlappingTemplate 1 0 2 1 0 1 0 3 1 1 0.534146 10/10 NonOverlappingTemplate 2 2 1 0 1 1 1 2 0 0 0.739918 9/10 NonOverlappingTemplate 1 0 1 1 1 0 0 0 3 3 0.213309 10/10 NonOverlappingTemplate 0 0 2 1 2 0 0 3 2 0 0.213309 10/10 NonOverlappingTemplate 1 2 0 0 1 3 1 0 1 1 0.534146 10/10 NonOverlappingTemplate 1 2 1 1 2 0 2 0 1 0 0.739918 9/10 NonOverlappingTemplate 1 0 0 2 2 2 2 1 0 0 0.534146 10/10 NonOverlappingTemplate 0 0 1 1 1 2 1 1 0 3 0.534146 10/10 NonOverlappingTemplate 0 2 1 1 1 1 1 2 0 1 0.911413 10/10 NonOverlappingTemplate 2 0 2 1 1 1 0 0 1 2 0.739918 10/10 NonOverlappingTemplate 4 2 0 0 1 0 1 0 2 0 0.066882 10/10 NonOverlappingTemplate 2 0 0 0 2 1 1 2 0 2 0.534146 9/10 NonOverlappingTemplate 3 2 2 0 0 0 0 0 1 2 0.213309 9/10 NonOverlappingTemplate 0 2 2 0 1 0 2 3 0 0 0.213309 10/10 NonOverlappingTemplate 1 1 2 3 0 1 0 1 0 1 0.534146 10/10 NonOverlappingTemplate 2 2 0 0 1 2 0 1 1 1 0.739918 10/10 NonOverlappingTemplate 0 0 0 1 2 2 2 2 1 0 0.534146 10/10 NonOverlappingTemplate 1 0 1 1 1 1 1 3 1 0 0.739918 10/10 NonOverlappingTemplate 3 1 1 1 0 1 0 1 2 0 0.534146 9/10 NonOverlappingTemplate 1 2 1 0 1 0 3 0 1 1 0.534146 9/10 NonOverlappingTemplate 3 1 0 0 0 0 0 4 2 0 0.017912 9/10 NonOverlappingTemplate 1 1 0 1 0 0 3 3 0 1 0.213309 10/10 NonOverlappingTemplate 1 2 2 2 0 0 0 0 1 2 0.534146 10/10 NonOverlappingTemplate 1 0 1 1 0 1 0 1 2 3 0.534146 10/10 NonOverlappingTemplate 0 0 1 0 2 2 0 1 2 2 0.534146 10/10 NonOverlappingTemplate 1 0 2 0 1 0 0 3 3 0 0.122325 9/10 NonOverlappingTemplate 2 1 0 1 1 0 1 2 1 1 0.911413 10/10 NonOverlappingTemplate 1 0 2 1 1 1 1 1 1 1 0.991468 9/10 NonOverlappingTemplate 0 3 1 0 1 1 3 1 0 0 0.213309 10/10 NonOverlappingTemplate 1 3 0 2 1 0 0 0 2 1 0.350485 9/10 NonOverlappingTemplate 3 3 1 0 0 2 1 0 0 0 0.122325 9/10 NonOverlappingTemplate 1 1 0 3 1 1 0 1 2 0 0.534146 10/10 NonOverlappingTemplate 0 1 1 0 2 0 1 4 1 0 0.122325 10/10 NonOverlappingTemplate 1 0 2 1 3 1 1 0 0 1 0.534146 10/10 NonOverlappingTemplate 1 1 1 0 1 2 0 1 2 1 0.911413 10/10 NonOverlappingTemplate 1 0 2 1 0 2 1 2 1 0 0.739918 10/10 NonOverlappingTemplate 2 0 0 3 0 0 3 0 2 0 0.066882 10/10 NonOverlappingTemplate 1 1 0 1 2 0 1 2 1 1 0.911413 10/10 NonOverlappingTemplate 1 0 1 2 1 3 1 0 1 0 0.534146 10/10 NonOverlappingTemplate 2 1 1 0 0 2 0 2 1 1 0.739918 10/10 NonOverlappingTemplate 2 2 0 1 0 1 0 2 2 0 0.534146 10/10 NonOverlappingTemplate 1 1 0 1 1 1 1 2 1 1 0.991468 10/10 NonOverlappingTemplate 3 1 0 0 0 2 1 0 0 3 0.122325 10/10 NonOverlappingTemplate 2 1 0 0 2 0 1 0 1 3 0.350485 10/10 NonOverlappingTemplate 1 0 1 1 3 2 0 1 0 1 0.534146 10/10 NonOverlappingTemplate 0 3 2 0 0 3 0 1 0 1 0.122325 10/10 NonOverlappingTemplate 3 0 0 1 1 0 0 2 1 2 0.350485 10/10 NonOverlappingTemplate 5 0 1 0 0 0 2 1 1 0 0.008879 10/10 NonOverlappingTemplate 1 1 2 0 2 0 2 0 1 1 0.739918 10/10 NonOverlappingTemplate 1 1 1 0 2 0 2 1 0 2 0.739918 10/10 NonOverlappingTemplate 0 0 1 1 1 2 1 2 1 1 0.911413 10/10 NonOverlappingTemplate 1 2 1 0 1 0 3 0 0 2 0.350485 10/10 NonOverlappingTemplate 2 1 0 2 0 0 0 1 2 2 0.534146 10/10 NonOverlappingTemplate 0 2 1 2 1 2 1 0 1 0 0.739918 10/10 NonOverlappingTemplate 1 1 0 0 2 2 3 0 0 1 0.350485 10/10 NonOverlappingTemplate 2 0 0 1 1 0 2 1 3 0 0.350485 10/10 NonOverlappingTemplate 3 1 2 0 1 0 1 0 1 1 0.534146 9/10 NonOverlappingTemplate 0 2 2 1 0 0 2 1 2 0 0.534146 10/10 NonOverlappingTemplate 1 0 4 0 0 0 1 1 3 0 0.035174 10/10 NonOverlappingTemplate 2 0 1 1 1 0 2 1 1 1 0.911413 10/10 NonOverlappingTemplate 1 1 1 0 2 1 0 2 1 1 0.911413 10/10 NonOverlappingTemplate 0 0 3 1 0 1 3 0 1 1 0.213309 10/10 NonOverlappingTemplate 0 0 0 2 1 1 2 2 0 2 0.534146 10/10 NonOverlappingTemplate 2 1 0 1 0 1 2 0 2 1 0.739918 10/10 NonOverlappingTemplate 1 2 2 0 1 1 1 1 0 1 0.911413 10/10 NonOverlappingTemplate 0 3 2 2 0 0 0 0 2 1 0.213309 10/10 NonOverlappingTemplate 0 0 2 1 1 2 2 0 0 2 0.534146 10/10 NonOverlappingTemplate 3 0 0 1 1 1 1 1 1 1 0.739918 10/10 NonOverlappingTemplate 1 3 2 0 0 1 0 1 2 0 0.350485 10/10 NonOverlappingTemplate 2 1 1 1 1 1 2 0 1 0 0.911413 9/10 NonOverlappingTemplate 3 0 0 1 1 2 2 0 0 1 0.350485 10/10 NonOverlappingTemplate 1 1 2 1 0 2 1 0 1 1 0.911413 10/10 NonOverlappingTemplate 2 1 2 0 1 1 1 0 0 2 0.739918 10/10 NonOverlappingTemplate 0 5 0 0 0 3 1 0 0 1 0.002043 10/10 NonOverlappingTemplate 0 0 1 2 0 0 2 3 1 1 0.350485 10/10 NonOverlappingTemplate 2 0 1 0 0 2 0 0 2 3 0.213309 10/10 NonOverlappingTemplate 1 0 4 0 2 0 1 0 0 2 0.066882 10/10 NonOverlappingTemplate 3 0 2 1 0 1 0 0 3 0 0.122325 10/10 NonOverlappingTemplate 1 1 0 0 1 0 2 2 1 2 0.739918 10/10 NonOverlappingTemplate 1 0 1 0 2 2 1 1 0 2 0.739918 10/10 NonOverlappingTemplate 0 0 1 1 2 1 3 1 0 1 0.534146 10/10 NonOverlappingTemplate 3 0 1 1 0 1 0 1 2 1 0.534146 10/10 NonOverlappingTemplate 1 2 0 1 2 1 1 1 0 1 0.911413 10/10 NonOverlappingTemplate 2 2 1 0 1 1 0 2 0 1 0.739918 10/10 NonOverlappingTemplate 0 1 0 2 0 1 2 2 1 1 0.739918 10/10 NonOverlappingTemplate 0 3 2 1 0 0 4 0 0 0 0.017912 10/10 NonOverlappingTemplate 1 0 1 0 4 0 0 0 1 3 0.035174 10/10 NonOverlappingTemplate 0 0 2 4 1 0 0 0 2 1 0.066882 10/10 NonOverlappingTemplate 4 1 1 0 1 0 1 0 1 1 0.213309 10/10 NonOverlappingTemplate 0 0 2 0 3 1 0 2 1 1 0.350485 10/10 NonOverlappingTemplate 0 4 2 1 1 0 1 0 1 0 0.122325 10/10 NonOverlappingTemplate 3 2 0 1 1 1 0 1 0 1 0.534146 9/10 NonOverlappingTemplate 2 0 2 1 1 2 0 1 0 1 0.739918 10/10 NonOverlappingTemplate 0 0 2 0 3 3 0 1 0 1 0.122325 10/10 NonOverlappingTemplate 2 0 3 1 0 0 0 2 1 1 0.350485 10/10 NonOverlappingTemplate 2 1 0 0 1 3 1 0 2 0 0.350485 10/10 NonOverlappingTemplate 2 3 1 0 0 1 1 1 1 0 0.534146 10/10 NonOverlappingTemplate 1 0 2 0 1 0 0 1 1 4 0.122325 10/10 NonOverlappingTemplate 0 1 2 0 1 1 1 1 2 1 0.911413 10/10 NonOverlappingTemplate 1 0 2 0 1 0 0 3 3 0 0.122325 9/10 NonOverlappingTemplate 0 3 0 1 0 2 1 1 0 2 0.350485 10/10 OverlappingTemplate 1 1 0 0 1 1 1 0 3 2 0.534146 10/10 Universal 1 0 1 3 1 1 1 1 1 0 0.739918 10/10 ApproximateEntropy 0 1 0 0 2 1 2 1 1 0 ---- 8/8 RandomExcursions 0 0 1 1 2 0 0 1 2 1 ---- 8/8 RandomExcursions 0 0 1 0 1 3 0 0 1 2 ---- 8/8 RandomExcursions 0 0 1 0 0 3 1 1 1 1 ---- 8/8 RandomExcursions 0 0 0 0 4 3 1 0 0 0 ---- 8/8 RandomExcursions 0 1 3 2 0 0 0 0 1 1 ---- 8/8 RandomExcursions 2 0 1 2 1 1 1 0 0 0 ---- 8/8 RandomExcursions 2 1 1 1 2 0 0 1 0 0 ---- 8/8 RandomExcursions 1 1 0 1 1 0 2 0 2 0 ---- 8/8 RandomExcursionsVariant 0 1 1 2 1 0 0 2 1 0 ---- 8/8 RandomExcursionsVariant 0 1 3 1 0 0 0 1 0 2 ---- 8/8 RandomExcursionsVariant 0 0 3 1 1 0 0 1 1 1 ---- 8/8 RandomExcursionsVariant 0 1 1 1 2 0 0 0 1 2 ---- 8/8 RandomExcursionsVariant 0 0 1 2 2 0 0 1 1 1 ---- 8/8 RandomExcursionsVariant 0 0 1 1 1 2 1 1 1 0 ---- 8/8 RandomExcursionsVariant 0 1 0 0 3 0 0 0 3 1 ---- 8/8 RandomExcursionsVariant 0 0 1 3 1 1 1 0 1 0 ---- 8/8 RandomExcursionsVariant 0 2 0 2 0 0 1 2 1 0 ---- 8/8 RandomExcursionsVariant 0 2 1 1 2 0 1 0 0 1 ---- 8/8 RandomExcursionsVariant 0 2 3 2 0 0 0 1 0 0 ---- 8/8 RandomExcursionsVariant 1 3 2 0 1 0 1 0 0 0 ---- 8/8 RandomExcursionsVariant 2 4 0 0 0 0 0 2 0 0 ---- 8/8 RandomExcursionsVariant 2 4 0 0 1 0 0 0 0 1 ---- 8/8 RandomExcursionsVariant 2 1 3 0 0 0 1 0 1 0 ---- 8/8 RandomExcursionsVariant 1 3 0 2 0 0 1 1 0 0 ---- 8/8 RandomExcursionsVariant 3 2 1 0 0 1 0 0 0 1 ---- 8/8 RandomExcursionsVariant 0 1 1 1 0 2 1 0 3 1 0.534146 10/10 Serial 0 1 2 1 1 1 1 1 1 1 0.991468 10/10 Serial 1 2 0 0 0 2 0 1 2 2 0.534146 9/10 LinearComplexity - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The minimum pass rate for each statistical test with the exception of the random excursion (variant) test is approximately = 8 for a sample size = 10 binary sequences. The minimum pass rate for the random excursion (variant) test is approximately = 7 for a sample size = 8 binary sequences. For further guidelines construct a probability table using the MAPLE program provided in the addendum section of the documentation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
📊 ent 随机性测试报告 2 个样本 · 全部完美
=============================================================================== Sample 1: test_0.bin =============================================================================== ✅ Entropy = 7.999824 bits per byte. Optimum compression would reduce the size of this 1048576 byte file by 0 percent. ✅ Chi square distribution for 1048576 samples is 255.75 and randomly would exceed this value 47.51% of the times. ✅ Arithmetic mean value of data bytes is 127.6277 (127.5 = random). ✅ Monte Carlo value for Pi is 3.136127991 (error 0.17 percent). ✅ Serial correlation coefficient is 0.002681 (totally uncorrelated = 0.0). Entropy test finished in 55.44 ms =============================================================================== Sample 2: test_1.bin =============================================================================== ✅ Entropy = 7.999820 bits per byte. Optimum compression would reduce the size of this 1048576 byte file by 0 percent. ✅ Chi square distribution for 1048576 samples is 262.16 and randomly would exceed this value 36.56% of the times. ✅ Arithmetic mean value of data bytes is 127.5268 (127.5 = random). ✅ Monte Carlo value for Pi is 3.145031529 (error 0.11 percent). ✅ Serial correlation coefficient is -0.000213 (totally uncorrelated = 0.0). Entropy test finished in 47.62 ms =============================================================================== 🎉 结论:所有指标均完美通过,熵值接近理论极限 8.0,卡方、均值、Pi 值、相关性全部达标。