:rocket: lautpy — 常用工具类 :facepunch:
轻量的 Python 工具集:管道式数据处理 + 日期/路径/哈希等常用工具函数。核心零强制依赖,第三方库(numpy/pandas/scikit-learn 等)按需可选。
Install
pip install -U lautpy
Pipe 管道工具
from lautpy.pipe import *
# Unix 风格管道:data | func1 | func2
[1, 2, 3, 4] | xmap_(lambda x: x * 2) | xfilter_(lambda x: x > 3) # [4, 6, 8]
# 进度条 + 日志 + 计时
for i in range(5) | xtqdm:
logger.info("这是一个进度条")
with timer('LOG'):
logger.info("打印一条log所花费的时间")
常用管道(约定:尾部下划线 = 立即求值返回 list):
| 类别 | 管道 |
|---|---|
| 类型转换 | xtuple xlist xset xarray |
| 高阶函数 | xmap xmap_ xfilter xfilter_ xenumerate xchain xchain_ xreduce xdrop xdrop_ |
| 字典 | xchain_dict xDictValues xDictRemove xgetitem xitemgetter |
| 分组/去重 | xgroup xUnique xUniquePlus xHashBins xsort xCounter xCounterUpdate xBloomFilter |
| 并发 | xJobs xThreadPoolExecutor xProcessPoolExecutor xAsyncio |
| 字符串 | xjoin xstartswith xendswith xsse_parser |
其他模块
from lautpy import dates, hashing, paths
# 日期(纯标准库)
dates.date_difference(days=1) # 昨天
dates.timestamp2str(time.time()) # 时间戳 -> 字符串
dates.get_nday_list(7) # 过去 7 天
# 哈希 / AB 实验(murmurhash 需 scikit-learn)
hashing.md5("key:value")
hashing.murmurhash(bins=100) # 与 Java Guava 口径一致
hashing.ABTest(expid='10001', ranger=(0, 99)).is_hit("userid")
hashing.hash_bins(values, bins=4) # 稳定哈希分桶
hashing.BloomFilter(capacity=10**6) # 纯标准库布隆过滤器
# 路径 / 配置(yaml 支持需 pyyaml)
paths.file2json("config.yaml") # json/yaml -> dict
paths.path2list("dir", "*.txt") # 文件/目录展开
装饰器 / 通知 / LLM 客户端
from lautpy import decorators, notice, llm
# 装饰器(retry 需 tenacity,其余纯标准库)
@decorators.retrying(max_retries=3) # 指数退避重试,耗尽后 reraise
@decorators.timeout(30) # 超时抛 TimeoutError
@decorators.background_task # 后台执行,返回 Future,异常记日志
@decorators.ratelimit(calls=5, period=1) # 滑动窗口限流
def flaky_api(): ...
# 群机器人通知(webhook 走环境变量:WECOM_WEBHOOK_URL / FEISHU_WEBHOOK_URL)
notice.wecom("部署完成", title="CI")
notice.feishu(["任务1 ✓", "任务2 ✓"], title="日报")
# OpenAI 兼容客户端工厂(openai 可选依赖;密钥走 <SVC>_API_KEY / <SVC>_BASE_URL)
client = llm.openai_client("moonshot") # 任意 openai 兼容服务
API 封装(lautpy.apis)
密钥一律走环境变量,源码中零硬编码;HTTP 统一带超时与自动重试:
import os
from lautpy.apis import get_api_key, request
from lautpy.apis.tools import shorten_url, data2qrcodeurl
from lautpy.apis.niutrans import translate
os.environ["NIUTRANS_API_KEY"] = "..." # 或在 shell / .env 中配置
translate("你好", "auto", "en") # NiuTrans 翻译
shorten_url("https://example.com/...") # 无需密钥的短链/二维码工具
设计约定
import lautpy零第三方强制依赖,无导入副作用- 第三方依赖的管道函数在库缺失时自动不可用,不影响其余功能
from lautpy.pipe import *仅导出公共 API(__all__),不泄漏实现细节
License
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lautpy-0.0.6.0.tar.gz.
File metadata
- Download URL: lautpy-0.0.6.0.tar.gz
- Upload date:
- Size: 29.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c5f56a233d1f13d493575cec48004ef9a1054ac64b7d85275ca52a7d4414573
|
|
| MD5 |
2b311888e764ec29a72957144078831a
|
|
| BLAKE2b-256 |
bc2c907e6102c68919ba61543ee544ebdd9a92a83f89261eda49460508d82301
|
Provenance
The following attestation bundles were made for lautpy-0.0.6.0.tar.gz:
Publisher:
publish.yml on elimes/lautpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lautpy-0.0.6.0.tar.gz -
Subject digest:
5c5f56a233d1f13d493575cec48004ef9a1054ac64b7d85275ca52a7d4414573 - Sigstore transparency entry: 2733573222
- Sigstore integration time:
-
Permalink:
elimes/lautpy@ad17768adaf7927105a3f499f095c3482ad9ac68 -
Branch / Tag:
refs/tags/v0.0.6.0 - Owner: https://github.com/elimes
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ad17768adaf7927105a3f499f095c3482ad9ac68 -
Trigger Event:
push
-
Statement type:
File details
Details for the file lautpy-0.0.6.0-py3-none-any.whl.
File metadata
- Download URL: lautpy-0.0.6.0-py3-none-any.whl
- Upload date:
- Size: 25.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
095b6b5c3343aa22869f2537149cc2b4e966f48b1205b2fa256282909f9e7fbb
|
|
| MD5 |
fd3d94653cb119fc2a0899cc157511d2
|
|
| BLAKE2b-256 |
d1302b1d2412670084f20b69dffec02b7ab5ec0dfc4b4e664a5ed1cfdc5fa6f1
|
Provenance
The following attestation bundles were made for lautpy-0.0.6.0-py3-none-any.whl:
Publisher:
publish.yml on elimes/lautpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lautpy-0.0.6.0-py3-none-any.whl -
Subject digest:
095b6b5c3343aa22869f2537149cc2b4e966f48b1205b2fa256282909f9e7fbb - Sigstore transparency entry: 2733573274
- Sigstore integration time:
-
Permalink:
elimes/lautpy@ad17768adaf7927105a3f499f095c3482ad9ac68 -
Branch / Tag:
refs/tags/v0.0.6.0 - Owner: https://github.com/elimes
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ad17768adaf7927105a3f499f095c3482ad9ac68 -
Trigger Event:
push
-
Statement type: