| Name | TorchJotter JSON |
| Version |
0.9.14
JSON |
| download |
| home_page | |
| Summary | TorchJotter: Log tool for Deep Learning, developed by Fudan FastNLP Team |
| upload_time | 2023-10-11 13:30:08 |
| maintainer | |
| docs_url | None |
| author | |
| requires_python | >=3.7 |
| license | Apache license |
| keywords |
|
| VCS |
|
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# TorchJotter
[](https://pypi.org/project/TorchJotter)
<!-- [](http://TorchJotter.readthedocs.io/?badge=latest) -->
TorchJotter = fast + git + log, 是一款用于辅助用户记录日志和管理代码的工具,主要支持 Linux 和 macOS,也支持在 Windows 的 Git Bash 中使用。
[TorchJotter中文文档](http://www.fastnlp.top/docs/TorchJotter/)
## file structure
```
|-setup.py
|-docs
|-TorchJotter
| |--- init
| |--- fastlog
| |--- fastgit
| |--- server
|-tests
```
## update schedule
filog 是我们实验室内部使用的一款工具,大部分功能口口相传,文档和教程还没有特别全。感谢大家的尝试使用,遇到问题可以在 Issues 处提出。
## 一些使用说明
1. 如果在debug阶段,不希望TorchJotter发生任何作用,那么直接在入口代码处(import TorchJotter的下一行)加入TorchJotter.debug()就可以让所有的TorchJotter调用不起任何作用,debug结束再注释掉这一行就可以了。 如果希望在某一段代码不要记录,可以在这段代码之前TorchJotter.debug(flag=True), 跑出这段代码之后TorchJotter.debug(flag=True)即可恢复
2. TorchJotter默认只有在产生了第一个metric或loss的时候才会创建log文件夹,防止因为其它bug还没运行到model就崩溃产生大量无意义的log。
3. 如果使用了分布式训练,一般只需要主进程记录TorchJotter就好。这个时候可以通过将非主进程的TorchJotter设置TorchJotter.debug()
```python
import torch
import TorchJotter
if torch.distributed.get_rank()>0:
TorchJotter.debug()
```
4. 不要通过多进程使用TorchJotter,即multiprocessing模块。
5. TorchJotter.commit()只需要在某个python文件调用就可以了,一般就在入口python文件即可。
6. 传入到TorchJotter的各种参数、metric的名称,请 **避免特殊符号(例如$%!#@空格),请只使用_与各种字母的组合** ,因为特殊符号可能导致网页端显示不正常。
7. **在命令行中通过TorchJotter log logs打开网页的时候,如果出现了网页无法访问的情况,首先检查一下ip地址是否正确,例如如果是在服务器上启动的服务,在电脑这端应该用http://服务器的ip:5000 来访问,如果是在本地电脑启动的,可以尝试通过http://0.0.0.0:5000 或http://127.0.0.1:5000 或http://localhost:5000 访问。如果以上仍然不能访问,可以通过ctrl+c关闭TorchJotter服务,然后通过命令TorchJotter log logs --ip 127.0.0.1启动再试一下能不能访问。**
## Developing Features(2020.09.13)
以下为正在开发中的功能,API 可能发生变化。
为函数 `TorchJotter.finish` 增加了可选参数 send_to_bot,传入一个字符串,为飞书机器人的 webhook 地址。 使用这个参数可以让用户在训练完成时收到通知。
例如:设定 status 为 1, send_to_bot 为 webhook 的地址,可让飞书机器人发布训练发生错误的讯息。(status默认值为0,表示实验成功结束)
```python
TorchJotter.finish(status=1,
send_to_bot="https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx")
```
添加飞书机器人的方法参考[群聊机器人](https://getfeishu.cn/hc/zh-cn/articles/360024984973-%E5%9C%A8%E7%BE%A4%E8%81%8A%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9C%BA%E5%99%A8%E4%BA%BA)
## New Features(2020.06.11)
以下的功能都没有经过实战使用检验,可能有bug。
#### 1. 支持一些复杂筛选条件
现在支持在Table那个页面的search框中输入复杂搜索逻辑进行筛选,例如下面log

想要搜索**2020年06月11号15点到2020年06月11号16点之间,并且hidden_size大于60**的log, 可以通过下面的语法输入到search框中
```
${'id':'log_20200611_150000<=&&<=log_20200611_160000', 'hyper-hidden_size':'>60'}$
```
使用效果如下(只显示满足条件的log了)

其中开头结尾的$是特殊标记符号,申明这是特殊搜索,否则TorchJotter会只进行常规字符串匹配搜索。由于search框一旦有文字就会触发搜索,所以建议在其他地方把文本编辑好,直接复制到search框中。支持的search语法规则如下
1. 支持使用list表达或的关系。比如{"hyper-lr":[0.3, 0.1]}表示等于0.3或者0.1都会显示在前端。
2. 支持通过>,<,<=,>=表示范围.{"hyper-lr":"<0.3", "hyper-dropout":">0.5"}表示lr小于0.3且dropout大于0.5的才保留。 大于小于符号可以在条件的最右边或者最左边,即"<0.5"或"0.5>"是等价的。
3. 支持不等式操作,例如{'hyper-dropout':"!=0.4"}则为dropout不是0.4的才会保留
4. 使用大于小于的场景,支持通过&&表达并且如{"hyper-lr":"0.1<&&<0.3"},表示lr需要大于0.1但小于0.3。
5. 不同column之间默认是and的关系比如{"hyper-lr": 0.1, "hyper-dropout":0.3}表示lr和dropout同时为0.1和0.3的log; 如果需要使得不同column之间为或的关系,可以通过在filter_condition中加入一个特殊的字段and_filters, 以下的条件表示是不同filter为或的关系{"and_filters":0, "hyper-lr": 0.1, "hyper-dropout":0.3}, 请通过0或1表示and_filters。
**申明某个column时,它名称是从最top的header一路到最底层的header,通过-连接。例如hyper下面的hidden_size, 搜索的时候条件应该写为hyper-hidden_size。**
#### 2.支持多条log的metric收敛曲线对比
操作如下图所示,先选择需要对比的log(默认只能选择10条),然后点击右上角红色框处

然后会弹出选择需要对比的metric,选好需要对比的metric后点击确认跳转,跳转后界面为

我十分垃圾的js代码能力坚定地告诉我:你们一定不可能需要对比loss曲线的,所以我就没有必要再做loss对比了🐶。
Raw data
{
"_id": null,
"home_page": "",
"name": "TorchJotter",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/49/55/4a1f3e0870a20c97ede8eb01dc87090cbcc5bb3494d9dc8c69968e260889/TorchJotter-0.9.14.tar.gz",
"platform": null,
"description": "# TorchJotter\n[](https://pypi.org/project/TorchJotter)\n<!-- [](http://TorchJotter.readthedocs.io/?badge=latest) -->\n\nTorchJotter = fast + git + log, \u662f\u4e00\u6b3e\u7528\u4e8e\u8f85\u52a9\u7528\u6237\u8bb0\u5f55\u65e5\u5fd7\u548c\u7ba1\u7406\u4ee3\u7801\u7684\u5de5\u5177\uff0c\u4e3b\u8981\u652f\u6301 Linux \u548c macOS\uff0c\u4e5f\u652f\u6301\u5728 Windows \u7684 Git Bash \u4e2d\u4f7f\u7528\u3002 \n\n[TorchJotter\u4e2d\u6587\u6587\u6863](http://www.fastnlp.top/docs/TorchJotter/)\n\n## file structure\n```\n|-setup.py\n|-docs\n|-TorchJotter\n| |--- init\n| |--- fastlog\n| |--- fastgit\n| |--- server\n|-tests\n \n```\n\n## update schedule\n\nfilog \u662f\u6211\u4eec\u5b9e\u9a8c\u5ba4\u5185\u90e8\u4f7f\u7528\u7684\u4e00\u6b3e\u5de5\u5177\uff0c\u5927\u90e8\u5206\u529f\u80fd\u53e3\u53e3\u76f8\u4f20\uff0c\u6587\u6863\u548c\u6559\u7a0b\u8fd8\u6ca1\u6709\u7279\u522b\u5168\u3002\u611f\u8c22\u5927\u5bb6\u7684\u5c1d\u8bd5\u4f7f\u7528\uff0c\u9047\u5230\u95ee\u9898\u53ef\u4ee5\u5728 Issues \u5904\u63d0\u51fa\u3002\n\n\n## \u4e00\u4e9b\u4f7f\u7528\u8bf4\u660e\n1. \u5982\u679c\u5728debug\u9636\u6bb5\uff0c\u4e0d\u5e0c\u671bTorchJotter\u53d1\u751f\u4efb\u4f55\u4f5c\u7528\uff0c\u90a3\u4e48\u76f4\u63a5\u5728\u5165\u53e3\u4ee3\u7801\u5904(import TorchJotter\u7684\u4e0b\u4e00\u884c)\u52a0\u5165TorchJotter.debug()\u5c31\u53ef\u4ee5\u8ba9\u6240\u6709\u7684TorchJotter\u8c03\u7528\u4e0d\u8d77\u4efb\u4f55\u4f5c\u7528\uff0cdebug\u7ed3\u675f\u518d\u6ce8\u91ca\u6389\u8fd9\u4e00\u884c\u5c31\u53ef\u4ee5\u4e86\u3002 \u5982\u679c\u5e0c\u671b\u5728\u67d0\u4e00\u6bb5\u4ee3\u7801\u4e0d\u8981\u8bb0\u5f55\uff0c\u53ef\u4ee5\u5728\u8fd9\u6bb5\u4ee3\u7801\u4e4b\u524dTorchJotter.debug(flag=True), \u8dd1\u51fa\u8fd9\u6bb5\u4ee3\u7801\u4e4b\u540eTorchJotter.debug(flag=True)\u5373\u53ef\u6062\u590d\n2. TorchJotter\u9ed8\u8ba4\u53ea\u6709\u5728\u4ea7\u751f\u4e86\u7b2c\u4e00\u4e2ametric\u6216loss\u7684\u65f6\u5019\u624d\u4f1a\u521b\u5efalog\u6587\u4ef6\u5939\uff0c\u9632\u6b62\u56e0\u4e3a\u5176\u5b83bug\u8fd8\u6ca1\u8fd0\u884c\u5230model\u5c31\u5d29\u6e83\u4ea7\u751f\u5927\u91cf\u65e0\u610f\u4e49\u7684log\u3002\n3. \u5982\u679c\u4f7f\u7528\u4e86\u5206\u5e03\u5f0f\u8bad\u7ec3\uff0c\u4e00\u822c\u53ea\u9700\u8981\u4e3b\u8fdb\u7a0b\u8bb0\u5f55TorchJotter\u5c31\u597d\u3002\u8fd9\u4e2a\u65f6\u5019\u53ef\u4ee5\u901a\u8fc7\u5c06\u975e\u4e3b\u8fdb\u7a0b\u7684TorchJotter\u8bbe\u7f6eTorchJotter.debug()\n ```python\n import torch\n import TorchJotter\n \n if torch.distributed.get_rank()>0:\n TorchJotter.debug()\n ```\n4. \u4e0d\u8981\u901a\u8fc7\u591a\u8fdb\u7a0b\u4f7f\u7528TorchJotter\uff0c\u5373multiprocessing\u6a21\u5757\u3002\n5. TorchJotter.commit()\u53ea\u9700\u8981\u5728\u67d0\u4e2apython\u6587\u4ef6\u8c03\u7528\u5c31\u53ef\u4ee5\u4e86\uff0c\u4e00\u822c\u5c31\u5728\u5165\u53e3python\u6587\u4ef6\u5373\u53ef\u3002 \n6. \u4f20\u5165\u5230TorchJotter\u7684\u5404\u79cd\u53c2\u6570\u3001metric\u7684\u540d\u79f0\uff0c\u8bf7 **\u907f\u514d\u7279\u6b8a\u7b26\u53f7\uff08\u4f8b\u5982$%!#@\u7a7a\u683c\uff09\uff0c\u8bf7\u53ea\u4f7f\u7528_\u4e0e\u5404\u79cd\u5b57\u6bcd\u7684\u7ec4\u5408** \uff0c\u56e0\u4e3a\u7279\u6b8a\u7b26\u53f7\u53ef\u80fd\u5bfc\u81f4\u7f51\u9875\u7aef\u663e\u793a\u4e0d\u6b63\u5e38\u3002\n7. **\u5728\u547d\u4ee4\u884c\u4e2d\u901a\u8fc7TorchJotter log logs\u6253\u5f00\u7f51\u9875\u7684\u65f6\u5019\uff0c\u5982\u679c\u51fa\u73b0\u4e86\u7f51\u9875\u65e0\u6cd5\u8bbf\u95ee\u7684\u60c5\u51b5\uff0c\u9996\u5148\u68c0\u67e5\u4e00\u4e0bip\u5730\u5740\u662f\u5426\u6b63\u786e\uff0c\u4f8b\u5982\u5982\u679c\u662f\u5728\u670d\u52a1\u5668\u4e0a\u542f\u52a8\u7684\u670d\u52a1\uff0c\u5728\u7535\u8111\u8fd9\u7aef\u5e94\u8be5\u7528http://\u670d\u52a1\u5668\u7684ip:5000 \u6765\u8bbf\u95ee\uff0c\u5982\u679c\u662f\u5728\u672c\u5730\u7535\u8111\u542f\u52a8\u7684\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u901a\u8fc7http://0.0.0.0:5000 \u6216http://127.0.0.1:5000 \u6216http://localhost:5000 \u8bbf\u95ee\u3002\u5982\u679c\u4ee5\u4e0a\u4ecd\u7136\u4e0d\u80fd\u8bbf\u95ee\uff0c\u53ef\u4ee5\u901a\u8fc7ctrl+c\u5173\u95edTorchJotter\u670d\u52a1\uff0c\u7136\u540e\u901a\u8fc7\u547d\u4ee4TorchJotter log logs --ip 127.0.0.1\u542f\u52a8\u518d\u8bd5\u4e00\u4e0b\u80fd\u4e0d\u80fd\u8bbf\u95ee\u3002**\n\n## Developing Features(2020.09.13)\n\n\u4ee5\u4e0b\u4e3a\u6b63\u5728\u5f00\u53d1\u4e2d\u7684\u529f\u80fd\uff0cAPI \u53ef\u80fd\u53d1\u751f\u53d8\u5316\u3002\n\n\u4e3a\u51fd\u6570 `TorchJotter.finish` \u589e\u52a0\u4e86\u53ef\u9009\u53c2\u6570 send_to_bot\uff0c\u4f20\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u4e3a\u98de\u4e66\u673a\u5668\u4eba\u7684 webhook \u5730\u5740\u3002 \u4f7f\u7528\u8fd9\u4e2a\u53c2\u6570\u53ef\u4ee5\u8ba9\u7528\u6237\u5728\u8bad\u7ec3\u5b8c\u6210\u65f6\u6536\u5230\u901a\u77e5\u3002\n\n\u4f8b\u5982\uff1a\u8bbe\u5b9a status \u4e3a 1\uff0c send_to_bot \u4e3a webhook \u7684\u5730\u5740\uff0c\u53ef\u8ba9\u98de\u4e66\u673a\u5668\u4eba\u53d1\u5e03\u8bad\u7ec3\u53d1\u751f\u9519\u8bef\u7684\u8baf\u606f\u3002\uff08status\u9ed8\u8ba4\u503c\u4e3a0\uff0c\u8868\u793a\u5b9e\u9a8c\u6210\u529f\u7ed3\u675f\uff09\n\n```python\nTorchJotter.finish(status=1,\n\tsend_to_bot=\"https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx\") \n```\n\u6dfb\u52a0\u98de\u4e66\u673a\u5668\u4eba\u7684\u65b9\u6cd5\u53c2\u8003[\u7fa4\u804a\u673a\u5668\u4eba](https://getfeishu.cn/hc/zh-cn/articles/360024984973-%E5%9C%A8%E7%BE%A4%E8%81%8A%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%9C%BA%E5%99%A8%E4%BA%BA)\n\n## New Features(2020.06.11)\n\u4ee5\u4e0b\u7684\u529f\u80fd\u90fd\u6ca1\u6709\u7ecf\u8fc7\u5b9e\u6218\u4f7f\u7528\u68c0\u9a8c\uff0c\u53ef\u80fd\u6709bug\u3002\n#### 1. \u652f\u6301\u4e00\u4e9b\u590d\u6742\u7b5b\u9009\u6761\u4ef6\n \u73b0\u5728\u652f\u6301\u5728Table\u90a3\u4e2a\u9875\u9762\u7684search\u6846\u4e2d\u8f93\u5165\u590d\u6742\u641c\u7d22\u903b\u8f91\u8fdb\u884c\u7b5b\u9009\uff0c\u4f8b\u5982\u4e0b\u9762log\n \n \n\n\u60f3\u8981\u641c\u7d22**2020\u5e7406\u670811\u53f715\u70b9\u52302020\u5e7406\u670811\u53f716\u70b9\u4e4b\u95f4\uff0c\u5e76\u4e14hidden_size\u5927\u4e8e60**\u7684log, \u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u7684\u8bed\u6cd5\u8f93\u5165\u5230search\u6846\u4e2d \n```\n${'id':'log_20200611_150000<=&&<=log_20200611_160000', 'hyper-hidden_size':'>60'}$\n```\n\u4f7f\u7528\u6548\u679c\u5982\u4e0b\uff08\u53ea\u663e\u793a\u6ee1\u8db3\u6761\u4ef6\u7684log\u4e86\uff09\n\n \n\n\n\u5176\u4e2d\u5f00\u5934\u7ed3\u5c3e\u7684$\u662f\u7279\u6b8a\u6807\u8bb0\u7b26\u53f7\uff0c\u7533\u660e\u8fd9\u662f\u7279\u6b8a\u641c\u7d22\uff0c\u5426\u5219TorchJotter\u4f1a\u53ea\u8fdb\u884c\u5e38\u89c4\u5b57\u7b26\u4e32\u5339\u914d\u641c\u7d22\u3002\u7531\u4e8esearch\u6846\u4e00\u65e6\u6709\u6587\u5b57\u5c31\u4f1a\u89e6\u53d1\u641c\u7d22\uff0c\u6240\u4ee5\u5efa\u8bae\u5728\u5176\u4ed6\u5730\u65b9\u628a\u6587\u672c\u7f16\u8f91\u597d\uff0c\u76f4\u63a5\u590d\u5236\u5230search\u6846\u4e2d\u3002\u652f\u6301\u7684search\u8bed\u6cd5\u89c4\u5219\u5982\u4e0b\n1. \u652f\u6301\u4f7f\u7528list\u8868\u8fbe\u6216\u7684\u5173\u7cfb\u3002\u6bd4\u5982{\"hyper-lr\":[0.3, 0.1]}\u8868\u793a\u7b49\u4e8e0.3\u6216\u80050.1\u90fd\u4f1a\u663e\u793a\u5728\u524d\u7aef\u3002 \n2. \u652f\u6301\u901a\u8fc7>,<,<=,>=\u8868\u793a\u8303\u56f4.{\"hyper-lr\":\"<0.3\", \"hyper-dropout\":\">0.5\"}\u8868\u793alr\u5c0f\u4e8e0.3\u4e14dropout\u5927\u4e8e0.5\u7684\u624d\u4fdd\u7559\u3002 \u5927\u4e8e\u5c0f\u4e8e\u7b26\u53f7\u53ef\u4ee5\u5728\u6761\u4ef6\u7684\u6700\u53f3\u8fb9\u6216\u8005\u6700\u5de6\u8fb9\uff0c\u5373\"<0.5\"\u6216\"0.5>\"\u662f\u7b49\u4ef7\u7684\u3002\n3. \u652f\u6301\u4e0d\u7b49\u5f0f\u64cd\u4f5c\uff0c\u4f8b\u5982{'hyper-dropout':\"!=0.4\"}\u5219\u4e3adropout\u4e0d\u662f0.4\u7684\u624d\u4f1a\u4fdd\u7559 \n4. \u4f7f\u7528\u5927\u4e8e\u5c0f\u4e8e\u7684\u573a\u666f\uff0c\u652f\u6301\u901a\u8fc7&&\u8868\u8fbe\u5e76\u4e14\u5982{\"hyper-lr\":\"0.1<&&<0.3\"}\uff0c\u8868\u793alr\u9700\u8981\u5927\u4e8e0.1\u4f46\u5c0f\u4e8e0.3\u3002\n5. \u4e0d\u540ccolumn\u4e4b\u95f4\u9ed8\u8ba4\u662fand\u7684\u5173\u7cfb\u6bd4\u5982{\"hyper-lr\": 0.1, \"hyper-dropout\":0.3}\u8868\u793alr\u548cdropout\u540c\u65f6\u4e3a0.1\u548c0.3\u7684log; \u5982\u679c\u9700\u8981\u4f7f\u5f97\u4e0d\u540ccolumn\u4e4b\u95f4\u4e3a\u6216\u7684\u5173\u7cfb\uff0c\u53ef\u4ee5\u901a\u8fc7\u5728filter_condition\u4e2d\u52a0\u5165\u4e00\u4e2a\u7279\u6b8a\u7684\u5b57\u6bb5and_filters, \u4ee5\u4e0b\u7684\u6761\u4ef6\u8868\u793a\u662f\u4e0d\u540cfilter\u4e3a\u6216\u7684\u5173\u7cfb{\"and_filters\":0, \"hyper-lr\": 0.1, \"hyper-dropout\":0.3}, \u8bf7\u901a\u8fc70\u62161\u8868\u793aand_filters\u3002\n**\u7533\u660e\u67d0\u4e2acolumn\u65f6\uff0c\u5b83\u540d\u79f0\u662f\u4ece\u6700top\u7684header\u4e00\u8def\u5230\u6700\u5e95\u5c42\u7684header\uff0c\u901a\u8fc7-\u8fde\u63a5\u3002\u4f8b\u5982hyper\u4e0b\u9762\u7684hidden_size, \u641c\u7d22\u7684\u65f6\u5019\u6761\u4ef6\u5e94\u8be5\u5199\u4e3ahyper-hidden_size\u3002**\n\n#### 2.\u652f\u6301\u591a\u6761log\u7684metric\u6536\u655b\u66f2\u7ebf\u5bf9\u6bd4\n\u64cd\u4f5c\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5148\u9009\u62e9\u9700\u8981\u5bf9\u6bd4\u7684log(\u9ed8\u8ba4\u53ea\u80fd\u9009\u62e910\u6761)\uff0c\u7136\u540e\u70b9\u51fb\u53f3\u4e0a\u89d2\u7ea2\u8272\u6846\u5904 \n\n\n\n\u7136\u540e\u4f1a\u5f39\u51fa\u9009\u62e9\u9700\u8981\u5bf9\u6bd4\u7684metric\uff0c\u9009\u597d\u9700\u8981\u5bf9\u6bd4\u7684metric\u540e\u70b9\u51fb\u786e\u8ba4\u8df3\u8f6c\uff0c\u8df3\u8f6c\u540e\u754c\u9762\u4e3a\n\n\n\n\u6211\u5341\u5206\u5783\u573e\u7684js\u4ee3\u7801\u80fd\u529b\u575a\u5b9a\u5730\u544a\u8bc9\u6211\uff1a\u4f60\u4eec\u4e00\u5b9a\u4e0d\u53ef\u80fd\u9700\u8981\u5bf9\u6bd4loss\u66f2\u7ebf\u7684\uff0c\u6240\u4ee5\u6211\u5c31\u6ca1\u6709\u5fc5\u8981\u518d\u505aloss\u5bf9\u6bd4\u4e86\ud83d\udc36\u3002\n\n\n",
"bugtrack_url": null,
"license": "Apache license",
"summary": "TorchJotter: Log tool for Deep Learning, developed by Fudan FastNLP Team",
"version": "0.9.14",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d26c5a355e95c1e1698f29b36bd25192854d70c8b9f58e814c2d14b45fe13c58",
"md5": "1051227030bf04881217721f674f0389",
"sha256": "ba1186bfb0cbcdee123d9bacc868c1e969635d5ef1832fc4860efc0ee79e0541"
},
"downloads": -1,
"filename": "TorchJotter-0.9.14-py3-none-any.whl",
"has_sig": false,
"md5_digest": "1051227030bf04881217721f674f0389",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 973837,
"upload_time": "2023-10-11T13:30:04",
"upload_time_iso_8601": "2023-10-11T13:30:04.944113Z",
"url": "https://files.pythonhosted.org/packages/d2/6c/5a355e95c1e1698f29b36bd25192854d70c8b9f58e814c2d14b45fe13c58/TorchJotter-0.9.14-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "49554a1f3e0870a20c97ede8eb01dc87090cbcc5bb3494d9dc8c69968e260889",
"md5": "c6efb4605902e4cd02469479706fb636",
"sha256": "a1dbb64506926323b1ccfbea8549cd0bcd066f97b2cd6992e7ab1b649e6789aa"
},
"downloads": -1,
"filename": "TorchJotter-0.9.14.tar.gz",
"has_sig": false,
"md5_digest": "c6efb4605902e4cd02469479706fb636",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 940648,
"upload_time": "2023-10-11T13:30:08",
"upload_time_iso_8601": "2023-10-11T13:30:08.701470Z",
"url": "https://files.pythonhosted.org/packages/49/55/4a1f3e0870a20c97ede8eb01dc87090cbcc5bb3494d9dc8c69968e260889/TorchJotter-0.9.14.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-11 13:30:08",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "torchjotter"
}