# KeepThink - 基于大模型的任务分解与并行处理框架
[](https://opensource.org/licenses/MIT)
## 项目概述
KeepThink 是一个基于大语言模型的智能任务处理框架,通过自动化任务拆分、并行处理与结果整合,帮助用户高效完成复杂生成任务。特别适用于长文本生成、多维度分析等需要分层处理的应用场景。
## 核心功能
✅ 智能任务分解
✅ 多线程并行处理
✅ 动态进度可视化
✅ 自定义生成规则
✅ 统一风格控制
✅ 容错重试机制
## 快速开始
### 安装keepthink
```bash
pip install keepthink --index-url https://pypi.org/simple
```
### 项目结构
```
keepthink/
├── chat.py # 核心处理模块
├── __init__.py
├── prompts/
│ └── think_prompt # 任务拆分模板
└── setup.py
```
### 基础使用
```python
from openai import OpenAI
from keepthink.chat import keepthink
# 初始化 OpenAI 客户端
client = OpenAI(
api_key="***********",
base_url="https://ark.cn-beijing.volces.com/api/v3",
)
# 运行任务
x = keepthink(
"写一篇《量化之神卡卡西》的小说,用来将卡卡西通过使用写轮眼,观察股市涨跌,成为一方金融大鳄的故事",
client
)
# 输出最终结果
print("\n=== 最终任务结果 ===")
for i, result in enumerate(x, 1):
print(f"\n【子任务 {i}】\n{result}")
```


## 高级功能
```python
from openai import OpenAI
from keepthink.chat import keepthink
# 初始化 OpenAI 客户端
client = OpenAI(
api_key="************",
base_url="https://ark.cn-beijing.volces.com/api/v3",
)
# 运行任务
background=""""
核心技能树映射表
火影技能 金融量化技能 能力转化逻辑
写轮眼·动态视力 高频交易算法优化 捕捉毫秒级K线波动,识别高频套利机会
写轮眼·记忆复制 策略逆向工程 通过观察对手交易记录反向推导量化模型
雷切 风险对冲闪电战 在0.3秒内完成跨市场对冲组合
土遁·心中斩首术 做空狙击 潜伏于市场底部突然发动做空攻击
水遁·水龙弹 流动性操控 制造虚假交易量引导资金流向
八门遁甲 杠杆暴击模式 开启200倍杠杆进行极限操作(需承受巨额穿仓风险)
通灵术·忍犬 舆情嗅探系统 帕克犬群实时监控全球财经媒体情绪指数
特色金融忍术设计
1. 写轮眼·量化之瞳(核心技能)
市场解构:将K线流动转化为查克拉经络图,直接观测庄家资金流向
时间折叠:在月读空间进行百次模拟交易,现实仅过1分钟
致命缺陷:连续使用会导致交易直觉钝化(参照卡卡西查克拉不足设定)
2. 金融幻术·泡沫蜃楼
制造虚假财报幻象引诱对手高价接盘
破解方式:拥有写轮眼可看穿PE ratio背后的真实现金流
3. 尾兽化·黑天鹅形态
当遭遇极端行情时唤醒体内"金融九尾"
特征:眼瞳变成血红色K线,交易终端浮现尾兽花纹
风险:可能反噬造成穿仓暴毙
对手技能矩阵
对手 代表技能 金融领域映射
大蛇丸 禁术·尸鬼封尽 做空机构恶意收购(需献祭自身资金)
宇智波鼬 天照·黑炎 做空报告引发目标公司股价自燃式暴跌
纲手 百豪之术·创造再生 危机企业重组专家
自来也 仙法·蛙组手 利用自然能量(宏观经济周期)预判
关键战役场景示例
「第三次量化战争」
战场:芝加哥商品交易所黑暗森林
卡卡西战术:
开启写轮眼解析原油期货波动率曲面
用水遁制造API库存数据假象
雷切突袭完成跨期套利
最终以土遁封住高盛量化团队的算法接口
深度设定建议
查克拉-资金转化系统:
1卡=1亿美元交易权限
施展S级忍术需消耗上忍30%的信用额度
金融血继限界:
宇智波家族掌控SEC(美国证监会)监察眼
日向家族拥有内幕交易白眼看穿术
暗部特别行动:
做空小组佩恩六道:每个傀儡控制不同衍生品市场
晓组织真正目标:收集九大央行尾兽完成全球QE
"""
prompt="写一篇《量化之神卡卡西》的小说,用来将卡卡西通过使用写轮眼,观察股市涨跌,成为一方金融大鳄的故事"
rule="不要有过多的修辞手段,要用最朴实无华的语言来书写这段剧情"
x = keepthink(
prompt=prompt,
client=client,
background=background,
rule=rule,
max_workers=3,
split_n=10,
min_length=10000,
model="deepseek-r1-250120",
system_str= "你是周树人"
)
# 输出最终结果
print("\n=== 最终任务结果 ===")
for i, result in enumerate(x, 1):
print(f"\n【子任务 {i}】\n{result}")
```



### 参数说明
| 参数 | 类型 | 说明 |
|------|------|-----|
| split_n | int | 任务拆分数量 |
| min_length | int | 最小输出长度 |
| max_workers | int | 最大并发数 |
| model | str | 大模型版本 |
懒得往上贴了自己看例子吧
## 贡献指南
欢迎通过 Issue 提交建议或 PR 参与开发:
1. Fork 本项目
2. 创建特性分支
3. 提交代码变更
4. 发起 Pull Request
## 许可协议
本项目采用 [MIT License](LICENSE)
```
请根据实际需求:
1. 替换API配置信息
2. 补充think_prompt模板内容
3. 添加具体的使用示例
4. 完善贡献指南细节
5. 添加测试和文档说明
Raw data
{
"_id": null,
"home_page": "https://github.com/woldy/keepthink",
"name": "keepthink",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "AI, OpenAI, task decomposition, LLM, automation",
"author": "woldy",
"author_email": "king@woldy.net",
"download_url": "https://files.pythonhosted.org/packages/04/eb/0b603c5d7c9ff3d3aad66b6c119a4778c6c62b14c58d74d4946e1b124ee3/keepthink-0.0.3.tar.gz",
"platform": null,
"description": "# KeepThink - \u57fa\u4e8e\u5927\u6a21\u578b\u7684\u4efb\u52a1\u5206\u89e3\u4e0e\u5e76\u884c\u5904\u7406\u6846\u67b6\n\n[](https://opensource.org/licenses/MIT)\n\n## \u9879\u76ee\u6982\u8ff0\n\nKeepThink \u662f\u4e00\u4e2a\u57fa\u4e8e\u5927\u8bed\u8a00\u6a21\u578b\u7684\u667a\u80fd\u4efb\u52a1\u5904\u7406\u6846\u67b6\uff0c\u901a\u8fc7\u81ea\u52a8\u5316\u4efb\u52a1\u62c6\u5206\u3001\u5e76\u884c\u5904\u7406\u4e0e\u7ed3\u679c\u6574\u5408\uff0c\u5e2e\u52a9\u7528\u6237\u9ad8\u6548\u5b8c\u6210\u590d\u6742\u751f\u6210\u4efb\u52a1\u3002\u7279\u522b\u9002\u7528\u4e8e\u957f\u6587\u672c\u751f\u6210\u3001\u591a\u7ef4\u5ea6\u5206\u6790\u7b49\u9700\u8981\u5206\u5c42\u5904\u7406\u7684\u5e94\u7528\u573a\u666f\u3002\n\n## \u6838\u5fc3\u529f\u80fd\n\n\u2705 \u667a\u80fd\u4efb\u52a1\u5206\u89e3 \n\u2705 \u591a\u7ebf\u7a0b\u5e76\u884c\u5904\u7406 \n\u2705 \u52a8\u6001\u8fdb\u5ea6\u53ef\u89c6\u5316 \n\u2705 \u81ea\u5b9a\u4e49\u751f\u6210\u89c4\u5219 \n\u2705 \u7edf\u4e00\u98ce\u683c\u63a7\u5236 \n\u2705 \u5bb9\u9519\u91cd\u8bd5\u673a\u5236 \n\n## \u5feb\u901f\u5f00\u59cb\n\n### \u5b89\u88c5keepthink\n```bash\npip install keepthink --index-url https://pypi.org/simple\n```\n\n### \u9879\u76ee\u7ed3\u6784\n```\nkeepthink/\n\u251c\u2500\u2500 chat.py # \u6838\u5fc3\u5904\u7406\u6a21\u5757\n\u251c\u2500\u2500 __init__.py\n\u251c\u2500\u2500 prompts/\n\u2502 \u2514\u2500\u2500 think_prompt # \u4efb\u52a1\u62c6\u5206\u6a21\u677f\n\u2514\u2500\u2500 setup.py\n```\n\n### \u57fa\u7840\u4f7f\u7528\n```python\nfrom openai import OpenAI\nfrom keepthink.chat import keepthink\n\n\n# \u521d\u59cb\u5316 OpenAI \u5ba2\u6237\u7aef\nclient = OpenAI(\n api_key=\"***********\",\n base_url=\"https://ark.cn-beijing.volces.com/api/v3\",\n)\n\n# \u8fd0\u884c\u4efb\u52a1\nx = keepthink(\n \"\u5199\u4e00\u7bc7\u300a\u91cf\u5316\u4e4b\u795e\u5361\u5361\u897f\u300b\u7684\u5c0f\u8bf4\uff0c\u7528\u6765\u5c06\u5361\u5361\u897f\u901a\u8fc7\u4f7f\u7528\u5199\u8f6e\u773c\uff0c\u89c2\u5bdf\u80a1\u5e02\u6da8\u8dcc\uff0c\u6210\u4e3a\u4e00\u65b9\u91d1\u878d\u5927\u9cc4\u7684\u6545\u4e8b\",\n client\n)\n\n# \u8f93\u51fa\u6700\u7ec8\u7ed3\u679c\nprint(\"\\n=== \u6700\u7ec8\u4efb\u52a1\u7ed3\u679c ===\")\nfor i, result in enumerate(x, 1):\n print(f\"\\n\u3010\u5b50\u4efb\u52a1 {i}\u3011\\n{result}\")\n\n```\n\n\n\n\n\n## \u9ad8\u7ea7\u529f\u80fd\n\n```python\nfrom openai import OpenAI\nfrom keepthink.chat import keepthink\n\n\n# \u521d\u59cb\u5316 OpenAI \u5ba2\u6237\u7aef\nclient = OpenAI(\n api_key=\"************\",\n base_url=\"https://ark.cn-beijing.volces.com/api/v3\",\n)\n\n# \u8fd0\u884c\u4efb\u52a1\nbackground=\"\"\"\"\n\u6838\u5fc3\u6280\u80fd\u6811\u6620\u5c04\u8868\n\u706b\u5f71\u6280\u80fd\t\u91d1\u878d\u91cf\u5316\u6280\u80fd\t\u80fd\u529b\u8f6c\u5316\u903b\u8f91\n\u5199\u8f6e\u773c\u00b7\u52a8\u6001\u89c6\u529b\t\u9ad8\u9891\u4ea4\u6613\u7b97\u6cd5\u4f18\u5316\t\u6355\u6349\u6beb\u79d2\u7ea7K\u7ebf\u6ce2\u52a8\uff0c\u8bc6\u522b\u9ad8\u9891\u5957\u5229\u673a\u4f1a\n\u5199\u8f6e\u773c\u00b7\u8bb0\u5fc6\u590d\u5236\t\u7b56\u7565\u9006\u5411\u5de5\u7a0b\t\u901a\u8fc7\u89c2\u5bdf\u5bf9\u624b\u4ea4\u6613\u8bb0\u5f55\u53cd\u5411\u63a8\u5bfc\u91cf\u5316\u6a21\u578b\n\u96f7\u5207\t\u98ce\u9669\u5bf9\u51b2\u95ea\u7535\u6218\t\u57280.3\u79d2\u5185\u5b8c\u6210\u8de8\u5e02\u573a\u5bf9\u51b2\u7ec4\u5408\n\u571f\u9041\u00b7\u5fc3\u4e2d\u65a9\u9996\u672f\t\u505a\u7a7a\u72d9\u51fb\t\u6f5c\u4f0f\u4e8e\u5e02\u573a\u5e95\u90e8\u7a81\u7136\u53d1\u52a8\u505a\u7a7a\u653b\u51fb\n\u6c34\u9041\u00b7\u6c34\u9f99\u5f39\t\u6d41\u52a8\u6027\u64cd\u63a7\t\u5236\u9020\u865a\u5047\u4ea4\u6613\u91cf\u5f15\u5bfc\u8d44\u91d1\u6d41\u5411\n\u516b\u95e8\u9041\u7532\t\u6760\u6746\u66b4\u51fb\u6a21\u5f0f\t\u5f00\u542f200\u500d\u6760\u6746\u8fdb\u884c\u6781\u9650\u64cd\u4f5c\uff08\u9700\u627f\u53d7\u5de8\u989d\u7a7f\u4ed3\u98ce\u9669\uff09\n\u901a\u7075\u672f\u00b7\u5fcd\u72ac\t\u8206\u60c5\u55c5\u63a2\u7cfb\u7edf\t\u5e15\u514b\u72ac\u7fa4\u5b9e\u65f6\u76d1\u63a7\u5168\u7403\u8d22\u7ecf\u5a92\u4f53\u60c5\u7eea\u6307\u6570\n\u7279\u8272\u91d1\u878d\u5fcd\u672f\u8bbe\u8ba1\n1. \u5199\u8f6e\u773c\u00b7\u91cf\u5316\u4e4b\u77b3\uff08\u6838\u5fc3\u6280\u80fd\uff09\n\u5e02\u573a\u89e3\u6784\uff1a\u5c06K\u7ebf\u6d41\u52a8\u8f6c\u5316\u4e3a\u67e5\u514b\u62c9\u7ecf\u7edc\u56fe\uff0c\u76f4\u63a5\u89c2\u6d4b\u5e84\u5bb6\u8d44\u91d1\u6d41\u5411\n\u65f6\u95f4\u6298\u53e0\uff1a\u5728\u6708\u8bfb\u7a7a\u95f4\u8fdb\u884c\u767e\u6b21\u6a21\u62df\u4ea4\u6613\uff0c\u73b0\u5b9e\u4ec5\u8fc71\u5206\u949f\n\u81f4\u547d\u7f3a\u9677\uff1a\u8fde\u7eed\u4f7f\u7528\u4f1a\u5bfc\u81f4\u4ea4\u6613\u76f4\u89c9\u949d\u5316\uff08\u53c2\u7167\u5361\u5361\u897f\u67e5\u514b\u62c9\u4e0d\u8db3\u8bbe\u5b9a\uff09\n2. \u91d1\u878d\u5e7b\u672f\u00b7\u6ce1\u6cab\u8703\u697c\n\u5236\u9020\u865a\u5047\u8d22\u62a5\u5e7b\u8c61\u5f15\u8bf1\u5bf9\u624b\u9ad8\u4ef7\u63a5\u76d8\n\u7834\u89e3\u65b9\u5f0f\uff1a\u62e5\u6709\u5199\u8f6e\u773c\u53ef\u770b\u7a7fPE ratio\u80cc\u540e\u7684\u771f\u5b9e\u73b0\u91d1\u6d41\n3. \u5c3e\u517d\u5316\u00b7\u9ed1\u5929\u9e45\u5f62\u6001\n\u5f53\u906d\u9047\u6781\u7aef\u884c\u60c5\u65f6\u5524\u9192\u4f53\u5185\"\u91d1\u878d\u4e5d\u5c3e\"\n\u7279\u5f81\uff1a\u773c\u77b3\u53d8\u6210\u8840\u7ea2\u8272K\u7ebf\uff0c\u4ea4\u6613\u7ec8\u7aef\u6d6e\u73b0\u5c3e\u517d\u82b1\u7eb9\n\u98ce\u9669\uff1a\u53ef\u80fd\u53cd\u566c\u9020\u6210\u7a7f\u4ed3\u66b4\u6bd9\n\u5bf9\u624b\u6280\u80fd\u77e9\u9635\n\u5bf9\u624b\t\u4ee3\u8868\u6280\u80fd\t\u91d1\u878d\u9886\u57df\u6620\u5c04\n\u5927\u86c7\u4e38\t\u7981\u672f\u00b7\u5c38\u9b3c\u5c01\u5c3d\t\u505a\u7a7a\u673a\u6784\u6076\u610f\u6536\u8d2d\uff08\u9700\u732e\u796d\u81ea\u8eab\u8d44\u91d1\uff09\n\u5b87\u667a\u6ce2\u9f2c\t\u5929\u7167\u00b7\u9ed1\u708e\t\u505a\u7a7a\u62a5\u544a\u5f15\u53d1\u76ee\u6807\u516c\u53f8\u80a1\u4ef7\u81ea\u71c3\u5f0f\u66b4\u8dcc\n\u7eb2\u624b\t\u767e\u8c6a\u4e4b\u672f\u00b7\u521b\u9020\u518d\u751f\t\u5371\u673a\u4f01\u4e1a\u91cd\u7ec4\u4e13\u5bb6\n\u81ea\u6765\u4e5f\t\u4ed9\u6cd5\u00b7\u86d9\u7ec4\u624b\t\u5229\u7528\u81ea\u7136\u80fd\u91cf\uff08\u5b8f\u89c2\u7ecf\u6d4e\u5468\u671f\uff09\u9884\u5224\n\u5173\u952e\u6218\u5f79\u573a\u666f\u793a\u4f8b\n\u300c\u7b2c\u4e09\u6b21\u91cf\u5316\u6218\u4e89\u300d\n\n\u6218\u573a\uff1a\u829d\u52a0\u54e5\u5546\u54c1\u4ea4\u6613\u6240\u9ed1\u6697\u68ee\u6797\n\u5361\u5361\u897f\u6218\u672f\uff1a\n\u5f00\u542f\u5199\u8f6e\u773c\u89e3\u6790\u539f\u6cb9\u671f\u8d27\u6ce2\u52a8\u7387\u66f2\u9762\n\u7528\u6c34\u9041\u5236\u9020API\u5e93\u5b58\u6570\u636e\u5047\u8c61\n\u96f7\u5207\u7a81\u88ad\u5b8c\u6210\u8de8\u671f\u5957\u5229\n\u6700\u7ec8\u4ee5\u571f\u9041\u5c01\u4f4f\u9ad8\u76db\u91cf\u5316\u56e2\u961f\u7684\u7b97\u6cd5\u63a5\u53e3\n\u6df1\u5ea6\u8bbe\u5b9a\u5efa\u8bae\n\u67e5\u514b\u62c9-\u8d44\u91d1\u8f6c\u5316\u7cfb\u7edf\uff1a\n\n1\u5361=1\u4ebf\u7f8e\u5143\u4ea4\u6613\u6743\u9650\n\u65bd\u5c55S\u7ea7\u5fcd\u672f\u9700\u6d88\u8017\u4e0a\u5fcd30%\u7684\u4fe1\u7528\u989d\u5ea6\n\u91d1\u878d\u8840\u7ee7\u9650\u754c\uff1a\n\n\u5b87\u667a\u6ce2\u5bb6\u65cf\u638c\u63a7SEC\uff08\u7f8e\u56fd\u8bc1\u76d1\u4f1a\uff09\u76d1\u5bdf\u773c\n\u65e5\u5411\u5bb6\u65cf\u62e5\u6709\u5185\u5e55\u4ea4\u6613\u767d\u773c\u770b\u7a7f\u672f\n\u6697\u90e8\u7279\u522b\u884c\u52a8\uff1a\n\n\u505a\u7a7a\u5c0f\u7ec4\u4f69\u6069\u516d\u9053\uff1a\u6bcf\u4e2a\u5080\u5121\u63a7\u5236\u4e0d\u540c\u884d\u751f\u54c1\u5e02\u573a\n\u6653\u7ec4\u7ec7\u771f\u6b63\u76ee\u6807\uff1a\u6536\u96c6\u4e5d\u5927\u592e\u884c\u5c3e\u517d\u5b8c\u6210\u5168\u7403QE\n\n\"\"\"\nprompt=\"\u5199\u4e00\u7bc7\u300a\u91cf\u5316\u4e4b\u795e\u5361\u5361\u897f\u300b\u7684\u5c0f\u8bf4\uff0c\u7528\u6765\u5c06\u5361\u5361\u897f\u901a\u8fc7\u4f7f\u7528\u5199\u8f6e\u773c\uff0c\u89c2\u5bdf\u80a1\u5e02\u6da8\u8dcc\uff0c\u6210\u4e3a\u4e00\u65b9\u91d1\u878d\u5927\u9cc4\u7684\u6545\u4e8b\"\nrule=\"\u4e0d\u8981\u6709\u8fc7\u591a\u7684\u4fee\u8f9e\u624b\u6bb5\uff0c\u8981\u7528\u6700\u6734\u5b9e\u65e0\u534e\u7684\u8bed\u8a00\u6765\u4e66\u5199\u8fd9\u6bb5\u5267\u60c5\"\nx = keepthink(\n prompt=prompt,\n client=client,\n background=background, \n rule=rule, \n max_workers=3, \n split_n=10, \n min_length=10000,\n model=\"deepseek-r1-250120\",\n system_str= \"\u4f60\u662f\u5468\u6811\u4eba\"\n)\n\n# \u8f93\u51fa\u6700\u7ec8\u7ed3\u679c\nprint(\"\\n=== \u6700\u7ec8\u4efb\u52a1\u7ed3\u679c ===\")\nfor i, result in enumerate(x, 1):\n print(f\"\\n\u3010\u5b50\u4efb\u52a1 {i}\u3011\\n{result}\")\n\n```\n\n\n\n\n\n\n\n\n\n### \u53c2\u6570\u8bf4\u660e\n| \u53c2\u6570 | \u7c7b\u578b | \u8bf4\u660e |\n|------|------|-----|\n| split_n | int | \u4efb\u52a1\u62c6\u5206\u6570\u91cf |\n| min_length | int | \u6700\u5c0f\u8f93\u51fa\u957f\u5ea6 |\n| max_workers | int | \u6700\u5927\u5e76\u53d1\u6570 |\n| model | str | \u5927\u6a21\u578b\u7248\u672c |\n\n\u61d2\u5f97\u5f80\u4e0a\u8d34\u4e86\u81ea\u5df1\u770b\u4f8b\u5b50\u5427\n\n## \u8d21\u732e\u6307\u5357\n\u6b22\u8fce\u901a\u8fc7 Issue \u63d0\u4ea4\u5efa\u8bae\u6216 PR \u53c2\u4e0e\u5f00\u53d1\uff1a\n1. Fork \u672c\u9879\u76ee\n2. \u521b\u5efa\u7279\u6027\u5206\u652f\n3. \u63d0\u4ea4\u4ee3\u7801\u53d8\u66f4\n4. \u53d1\u8d77 Pull Request\n\n## \u8bb8\u53ef\u534f\u8bae\n\u672c\u9879\u76ee\u91c7\u7528 [MIT License](LICENSE)\n```\n\n\u8bf7\u6839\u636e\u5b9e\u9645\u9700\u6c42\uff1a\n1. \u66ff\u6362API\u914d\u7f6e\u4fe1\u606f\n2. \u8865\u5145think_prompt\u6a21\u677f\u5185\u5bb9\n3. \u6dfb\u52a0\u5177\u4f53\u7684\u4f7f\u7528\u793a\u4f8b\n4. \u5b8c\u5584\u8d21\u732e\u6307\u5357\u7ec6\u8282\n5. \u6dfb\u52a0\u6d4b\u8bd5\u548c\u6587\u6863\u8bf4\u660e\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A framework for structured multi-step AI reasoning and task decomposition.",
"version": "0.0.3",
"project_urls": {
"Bug Tracker": "https://github.com/woldy/keepthink/issues",
"Documentation": "https://github.com/woldy/keepthink",
"Homepage": "https://github.com/woldy/keepthink",
"Source": "https://github.com/woldy/keepthink"
},
"split_keywords": [
"ai",
" openai",
" task decomposition",
" llm",
" automation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ba7b16210f2d4ef029c0451e990e57a3d123115c2412aa1ba52a2b88bc8b3519",
"md5": "4650cf5c8bb3ef658d5caecaa6a7adc8",
"sha256": "d19cde990d1af3dc60b8eecbfa180ce16e1360afae53074c19a0600564f8d979"
},
"downloads": -1,
"filename": "keepthink-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4650cf5c8bb3ef658d5caecaa6a7adc8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 10116,
"upload_time": "2025-02-27T11:13:18",
"upload_time_iso_8601": "2025-02-27T11:13:18.596720Z",
"url": "https://files.pythonhosted.org/packages/ba/7b/16210f2d4ef029c0451e990e57a3d123115c2412aa1ba52a2b88bc8b3519/keepthink-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "04eb0b603c5d7c9ff3d3aad66b6c119a4778c6c62b14c58d74d4946e1b124ee3",
"md5": "3643cc1dc713e709dff9f07d70b5c1f6",
"sha256": "ffd8fc6e2a80099837318ecf19f836c4a916eedd734c5ca1942068ec8fd2f042"
},
"downloads": -1,
"filename": "keepthink-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "3643cc1dc713e709dff9f07d70b5c1f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 10563,
"upload_time": "2025-02-27T11:13:20",
"upload_time_iso_8601": "2025-02-27T11:13:20.698758Z",
"url": "https://files.pythonhosted.org/packages/04/eb/0b603c5d7c9ff3d3aad66b6c119a4778c6c62b14c58d74d4946e1b124ee3/keepthink-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-27 11:13:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "woldy",
"github_project": "keepthink",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "keepthink"
}