文件系统事件监控
项目描述
Python API 和 shell 实用工具,用于监控文件系统事件。
适用于 3.9+。
示例 API 使用
一个简单的程序,使用 watchdog 监控命令行参数指定的目录,并记录生成的事件
import time
from watchdog.events import FileSystemEvent, FileSystemEventHandler
from watchdog.observers import Observer
class MyEventHandler(FileSystemEventHandler):
def on_any_event(self, event: FileSystemEvent) -> None:
print(event)
event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, ".", recursive=True)
observer.start()
try:
while True:
time.sleep(1)
finally:
observer.stop()
observer.join()
shell 实用工具
Watchdog 附带一个名为 watchmedo 的 可选 实用脚本。请在 shell 提示符中键入 watchmedo --help 以获取有关此工具的更多信息。
以下是记录当前目录递归事件的方法,这些事件仅与 *.py 和 *.txt 文件相关,同时忽略所有目录事件
watchmedo log \
--patterns='*.py;*.txt' \
--ignore-directories \
--recursive \
--verbose \
.
您可以使用 shell-command 子命令在事件发生时执行 shell 命令
watchmedo shell-command \
--patterns='*.py;*.txt' \
--recursive \
--command='echo "${watch_src_path}"' \
.
请通过键入以下内容来查看这些命令的帮助信息
watchmedo [command] --help
关于 watchmedo 技巧
watchmedo 可以读取 tricks.yaml 文件,并在响应文件系统事件时执行其中的技巧。技巧实际上是子类 watchdog.tricks.Trick 的事件处理器,由插件作者编写。技巧类增加了一些常规事件处理器不需要的附加功能。
一个示例 tricks.yaml 文件
tricks:
- watchdog.tricks.LoggerTrick:
patterns: ["*.py", "*.js"]
- watchmedo_webtricks.GoogleClosureTrick:
patterns: ['*.js']
hash_names: true
mappings_format: json # json|yaml|python
mappings_module: app/javascript_mappings
suffix: .min.js
compilation_level: advanced # simple|advanced
source_directory: app/static/js/
destination_directory: app/public/js/
files:
index-page:
- app/static/js/vendor/jquery*.js
- app/static/js/base.js
- app/static/js/index-page.js
about-page:
- app/static/js/vendor/jquery*.js
- app/static/js/base.js
- app/static/js/about-page/**/*.js
包含 tricks.yaml 文件的目录将被监控。每个技巧类都使用 tricks.yaml 文件中相应的键作为参数进行初始化,并将事件传递给该类的实例。
安装
使用 pip 从 PyPI 安装
$ python -m pip install -U watchdog
# or to install the watchmedo utility:
$ python -m pip install -U "watchdog[watchmedo]"
从源代码安装
$ python -m pip install -e .
# or to install the watchmedo utility:
$ python -m pip install -e '.[watchmedo]'
文档
您可以在网上浏览最新版本的文档。
贡献
在 GitHub 上分叉 存储库 并发送拉取请求,或在 问题跟踪器 中提交问题票。对于一般帮助和问题,请在 Stack Overflow 上使用标签 python-watchdog。
创建并激活您的虚拟环境,然后
python -m pip install tox python -m tox [-q] [-e ENV]
如果您正在进行重大更改,请将条目添加到 更改日志 的“未发布”部分。
支持的平台
Linux 2.6 (inotify)
macOS (FSEvents, kqueue)
FreeBSD/BSD (kqueue)
Windows (ReadDirectoryChangesW 与 I/O 完成端口;ReadDirectoryChangesW 工作线程)
与操作系统无关(轮询磁盘以获取目录快照并定期比较;速度慢且不推荐使用)
注意:当使用kqueue与watchdog时,您需要将系统上运行程序的文件描述符数量增加到您将要监视的文件数量以上。最简单的方法是编辑您的~/.profile文件,并添加类似以下的一行:
ulimit -n 1024
这是kqueue的一个固有缺陷,因为它使用文件描述符来监视文件。加上watchdog为了监视文件描述符而需要做的巨大数量的簿记,这使得监视文件和目录变得痛苦。本质上,kqueue并不是监视大量文件和目录的深层嵌套目录的好方法。
关于与Vim等编辑器一起使用watchdog
Vim只有在被指示修改文件时才会修改文件。它创建备份文件,然后将其交换到磁盘上以替换您正在编辑的文件。这意味着如果您使用Vim来编辑文件,则watchdog不会触发这些文件的修改事件。您可能需要适当配置Vim以禁用此功能。
关于与CIFS一起使用watchdog
当您想要监视CIFS中的更改时,您需要明确告诉watchdog使用PollingObserver,也就是说,不要像上面的示例那样让watchdog决定合适的观察者,而是执行以下操作:
from watchdog.observers.polling import PollingObserver as Observer
依赖
许可
Watchdog遵循Apache License,版本2.0的条款。
版权 2018-2024 Mickaël Schoentgen & 贡献者
版权 2014-2018 Thomas Amland & 贡献者
版权 2012-2014 Google, Inc.
版权 2011-2012 Yesudeep Mangalapilly
为什么选择Watchdog?
太多人试图做同样的事情,但没有一个人做到我需要的Python功能
变更日志
5.0.3
2024-09-27 • 完整历史
[inotify] 改进清理 Inotify 线程,并添加 eventlet 测试用例 (#1070)
感谢我们的亲爱的贡献者:@BoboTiG, @ethan-vanderheijden
5.0.2
2024-09-03 • 完整历史
5.0.1
2024-09-02 • 完整历史
[kqueue] 修复 TypeError: kqueue.control() 只接受位置参数 (#1062)
感谢我们的亲爱的贡献者:@apoirier, @BoboTiG
5.0.0
2024-08-26 • 完整历史
重大变更
停止支持Python 3.8 (#1055)
[核心] 强制使用正确的关键字参数 (#1057)
将BaseObserverSubclassCallable类重命名为ObserverType(#1055)
将inotify_event_struct类重命名为InotifyEventStruct(#1055)
将UnsupportedLibc异常重命名为UnsupportedLibcError(#1057)
移除InotifyConstants.IN_CLOSE常量(#1046)
将LogLevelException异常重命名为LogLevelError(#1057)
将WatchdogShutdown异常重命名为WatchdogShutdownError(#1057)
将FILE_NOTIFY_INFORMATION类重命名为FileNotifyInformation(#1055)
移除未使用的WATCHDOG_TRAVERSE_MOVED_DIR_DELAY常量(#1057)
其他更改
4.0.2
2024-08-11 • 完整历史
4.0.1
2024-05-23 • 完整历史
修复完整发射器的缺失event_filter(#1032)
感谢我们亲爱的贡献者:@mraspaud, @BoboTiG
4.0.0
2024-02-06 • 完整历史
停止支持Python 3.7。
添加对Python 3.12的支持。
为dirsnapshot添加类型(#1012)
添加DirectorySnapshotDiff.ContextManager(#1011)
现在FileSystemEvent及其子类是dataclass``es,它们的repr()已更改
现在WinAPINativeEvent 是一个 dataclass,它的 repr() 已经改变
在 LoggingEventHandler 中记录 FileOpenedEvent 和 FileClosedEvent 事件
提高 FileSystemEvent 的覆盖率
在 LoggerTrick 中记录所有事件
移除了 observers.read_directory_changes.WATCHDOG_TRAVERSE_MOVED_DIR_DELAY 的hack,为了防止破坏其他软件,这个常量将保留。
感谢我们亲爱的贡献者:@BoboTiG,@msabramo
3.0.0
2023-03-20 • 完整历史
停止支持Python 3.6。
watchdog 现在与PEP 561兼容,并使用 mypy 进行了测试
修复了 FileSystemEvent.__repr__() 中的缺失 > (#980)
[ci] 许多改进
[inotify] 如果线程不活跃时未启动,则从 InotifyEmitter.queue_events() 返回(#963)
[tests] 稳定性改进
[utils] 移除对 threading.Event.isSet 的拼写处理(#962)
[watchmedo] 修复了YAML生成的技巧(#965)
感谢我们亲爱的贡献者:@kurtmckee,@altendky,@agroszer,@BoboTiG
2.3.1
2023-02-28 • 完整历史
2.3.0
2023-02-23 • 完整历史
[inotify] 添加对 IN_OPEN 事件的支撑:将触发 FileOpenedEvent 事件(#941)
[watchmedo] 为 auto-restart 添加可选的事件去抖动,如果连续发生多个事件,则只重启一次(--debounce-interval)(#940)
[watchmedo] 在 KeyboardInterrupt 异常(Ctrl+C)时优雅地退出(#945)
[watchmedo] 添加选项以在命令退出后不自动重启命令(--no-restart-on-command-exit)(#946)
感谢我们亲爱的贡献者:@BoboTiG,@dstaple,@taleinat,@cernekj
2.2.1
2023-01-01 • 完整历史
2.2.0
2022-12-05 • 完整历史
[build] 现在为Python 3.11提供了wheel(#932)
[documentation] 现在测试HTML文档构建的错误(#902)
【文档】在此处修正错别字,并参考这里 (#910)
【fsevents2】fsevents2 观察者现已弃用 (#909)
【测试】musl libc 返回的错误代码 -1 的错误信息现在被允许 (#923)
【工具】从 dirsnapshot.py 中删除不必要的代码 (#930)
【watchmedo】处理来自 SIGHUP 的关闭事件 (#912)
感谢我们的宝贵贡献者:@kurtmckee, @babymastodon, @QuantumEnergyE, @timgates42, @BoboTiG
2.1.9
2022-06-10 • 完整历史
2.1.8
2022-05-15 • 完整历史
修复在观察者计划中添加失败的发射器。 (#872)
【inotify】修复在卸载的文件系统中的路径上取消观察时的挂起问题。 (#869)
【watchmedo】修复了 auto-restart 命令的 --kill-after 参数的解析问题。 (#870)
【watchmedo】修复布尔参数的解析问题。 (#887)
【watchmedo】修复了 auto-restart 和 shell-command 的命令解析问题。 (#888)
【watchmedo】支持通过 -q/--quiet 和 -v/--verbose 参数设置详细程度。 (#889)
感谢我们的宝贵贡献者:@taleinat, @kianmeng, @palfrey, @IlayRosenberg, @BoboTiG
2.1.7
2022-03-25 • 完整历史
2.1.6
2021-10-01 • 完整历史
2.1.5
2021-08-23 • 完整历史
2.1.4
2021-08-19 • 完整历史
[watchmedo] 修复了Unix-only函数os.setsid()和os.killpg()的使用。(#809)
[mac] 修复了文件权限或所有权变更时缺少FileModifiedEvent的问题。(#815)
[mac] 使用os.path.realpath()将FSEventsEmitter中的绝对路径转换为相对路径。(#822)
修复了SkipRepeatsQueue._put()中可能出现的AttributeError。(#818)
允许覆盖或添加自定义事件处理器到事件分发映射。(#814)
修复了在大端平台上测试的问题。(#828)
感谢我们亲爱的贡献者:@replabrobin, @BoboTiG, @SamSchott, @AndreiB97, @NiklasRosenstein, @ikokollari, @mgorny
2.1.3
2021-06-26 • 完整历史
发布macOS arm64和universal2 wheels。(#740)
感谢我们亲爱的贡献者:@kainjow, @BoboTiG
2.1.2
2021-05-19 • 完整历史
2.1.1
2021-05-10 • 完整历史
[mac] 修复了监视器被删除但仍在接收事件时的回调异常。(#786)
感谢我们亲爱的贡献者:@rom1win, @BoboTiG, @CCP-Aporia
2.1.0
2021-05-04 • 完整历史
2.0.3
2021-04-22 • 完整历史
2.0.2
2021-02-22 • 完整历史
[mac] 添加缺失的异常对象(#766)
感谢我们亲爱的贡献者:@CCP-Aporia,@BoboTiG
2.0.1
2021-02-17 • 完整历史
2.0.0
2021-02-11 • 完整历史
避免在 Python 3.7+ 上使用已弃用的 PyEval_InitThreads(#746)
[inotify] 添加对 IN_CLOSE_WRITE 事件的支援。将触发 FileCloseEvent 事件。注意,IN_CLOSE_NOWRITE 事件未处理以防止过多噪音。(#184,#245,#280,#313,#690)
[inotify] 允许多次停止发射器(#760)
[mac] 支持合并的文件系统事件(#734)
[mac] 停止支持 macOS 10.12 及更早版本(#750)
[mac] 修复重命名项目只更改大小写的错误(#750)
感谢我们亲爱的贡献者:@bstaletic,@lukassup,@ysard,@SamSchott,@CCP-Aporia,@BoboTiG
1.0.2
2020-12-18 • 完整历史
1.0.1
2020-12-10 • 修复具有良好元数据的版本。
1.0.0
2020-12-10 • 完整历史
版本号现在遵循 semver
停止支持 Python 2.7,3.4 和 3.5
[mac] 对原生 fsevents 的回归修复(#717)
[windows] winapi.BUFFER_SIZE 现在默认为 64000(而不是 2048)(#700)
[windows] 引入 winapi.PATH_BUFFER_SIZE(默认为 2048)以保持与路径相关的函数的旧行为(#700)
使用标准库中的 pathlib,而不是 pathtools(#556)
允许 Unix 上的文件路径不遵循文件系统编码(#703)
已移除长期弃用的 events.LoggingFileSystemEventHandler 类,请使用 LoggingEventHandler 代替
感谢我们可爱的贡献者:@SamSchott、@bstaletic、@BoboTiG、@CCP-Aporia
0.10.4
2020-11-21 • 完整历史
0.10.3
2020-06-25 • 完整历史
0.10.2
2020-02-08 • 完整历史
0.10.1
2020-01-30 • 完整历史
0.10.0
2020-01-26 • 完整历史
重大变更
停止支持Python 2.6、3.2和3.3
现在将无法启动的发射器移除
[snapshot] 移除了已弃用的walker_callback参数,使用stat代替
[watchmedo] 工具不再默认安装,而是通过额外的watchdog[watchmedo]安装
其他更改
修复了多个Python 3警告
使用is_synthetic属性识别合成事件(#369)
使用os.scandir()改进内存使用(#503)
[bsd] 修复了FreeBSD版本检测问题(《#529》)
[bsd] 跳过无法处理的套接字文件(《#509”)
[inotify] 修复了包含非ASCII字符的事件(《#516”)
[inotify] 修复了重新抛出OSError的方式(《#377”)
[inotify] 修复了在重命名顶级文件夹后的错误源路径(《#515”)
[inotify] 从非移动事件中移除了延迟(《#477”)
[mac] 修复了在两次调用FSEventsEmitter.stop()时的错误(《#466”)
[mac] 支持取消已删除的监视(《#541”)
[mac] 修复了watchdog_fsevents.c中缺失的字段初始化和未使用的参数
[snapshot] 不访问没有读权限的目录(《#408”)
[snapshot] 修复了在将目录替换为文件时的竞争条件崩溃(《#513”)
[snasphot] 修复了关于忘记的path_for_inode属性的AttributeError(《#436”)
[snasphot] 将ignore_device=False参数添加到构造函数(《597”)
[watchmedo] 修复了使用的路径分隔符(《#478”)
[watchmedo] 修复了使用yaml.load()代替yaml.safe_load()的问题(《#453”)
[watchmedo] 处理所有可用的信号(《#549”)
[watchmedo] 添加了--debug-force-polling参数(《#404”)
[windows] 使WindowsApiEmitter更容易继承(《#344”)
[windows] 使用独立的ctypes DLL实例
[windows] 只有在recursive=True时才生成子创建事件(《#454”)
感谢我们亲爱的贡献者:@BoboTiG, @LKleinNux, @rrzaripov, @wildmichael, @TauPan, @segevfiner, @petrblahos, @QuantumEnergyE, @jeffwidman, @kapsh, @nickoala, @petrblahos, @julianolf, @tonybaloney, @mbakiev, @pR0Ps, javaguirre, @skurfer, @exarkun, @joshuaskelly, @danilobellini, @Ajordat
0.9.0
2018-08-28 • 《完整历史”
现在删除观察目录将触发DirDeletedEvent事件
[bsd] 改进了平台检测(《#378”)
[inotify] 修复了正在观察的根目录被删除时的崩溃(《#374”)
[inotify] 处理提供uClibc的系统
[linux] 修复了删除目录时可能的DirDeletedEvent重复问题
[mac] 修复了fsevents2.py中的Unicode路径处理(《#298”)
[watchmedo] 添加了--debug-force-polling参数(《#336”)
[windows] 修复了FILE_LIST_DIRECTORY常量(《#376”)
感谢我们亲爱的贡献者:@vulpeszerda, @hpk42, @tamland, @senden9, @gorakhargosh, @nolsto, @mafrosis, @DonyorM, @anthrotype, @danilobellini, @pierregr, @ShinNoNoir, @adrpar, @gforcada, @pR0Ps, @yegorich, @dhke
0.8.3
2015-02-11 • 完整历史记录
修复了根日志记录器的使用(#274)
[inotify] 重构了 libc 加载并改进了 inotify_c.py 中的错误处理
[inotify] 修复了 inotify_c.py 中可能出现的未绑定局部错误
感谢我们亲爱的贡献者:@mmorearty, @tamland, @tony, @gorakhargosh
0.8.2
2014-10-29 • 完整历史记录
0.8.1
2014-07-28 • 完整历史记录
0.8.0
2014-07-02 • 完整历史记录
修复了 argh 废弃的警告(#242)
[snapshot] 用 mtime()、inode() 和 path() 方法替换了返回内部统计信息的方法
[snapshot] 废弃了 walker_callback 参数
[watchmedo] 修复了 auto-restart 以终止所有子进程(#225)
[watchmedo] 添加了 --no-parallel 参数(#227)
[windows] 修复了 INVALID_HANDLE_VALUE 的值(#123)
[windows] 修复了八进制用法以与 Python 3 一起工作(#223)
感谢我们亲爱的贡献者:@tamland, @Ormod, @berdario, @cro, @BernieSumption, @pypingou, @gotcha, @tommorris, @frewsxcv
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
watchdog-5.0.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 108f42a7f0345042a854d4d0ad0834b741d421330d5f575b81cb27b883500176 |
|
MD5 | 83499e8a193ba23bb68436fbdc249589 |
|
BLAKE2b-256 | a248a86139aaeab2db0a2482676f64798d8ac4d2dbb457523f50ab37bf02ce2c |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f9332243355643d567697c3e3fa07330a1d1abf981611654a1f2bf2175612b7 |
|
MD5 | a594820140a9d22a73410a370cd25118 |
|
BLAKE2b-256 | a058edec25190b6403caf4426dd418234f2358a106634b7d6aa4aec6939b104f |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 26dd201857d702bdf9d78c273cafcab5871dd29343748524695cecffa44a8d97 |
|
MD5 | 68d8ad2bca1683c4dc66173b2810f6f8 |
|
BLAKE2b-256 | cba15393ac6d0b095d3a44946b09258e9b5f22cb2fb67bcfa419dd868478826c |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 294b7a598974b8e2c6123d19ef15de9abcd282b0fbbdbc4d23dfa812959a9e05 |
|
MD5 | 4ce07fb704567456bf426c9ea09c1ee9 |
|
BLAKE2b-256 | f6d919b7d02965be2801e2d0f6f4bde23e4ae172620071b65430fa0c2f8441ac |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_ppc64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9413384f26b5d050b6978e6fcd0c1e7f0539be7a4f1a885061473c5deaa57221 |
|
MD5 | 1e076668175215178833b2e56bd14cd9 |
|
BLAKE2b-256 | c3f064059fe162ef3274662e67bbdea6c45b3cd53e846d5bd1365fcdc3dc1d15 |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1e9679245e3ea6498494b3028b90c7b25dbb2abe65c7d07423ecfc2d6218ff7c |
|
MD5 | a8efec70c04ba4f9325d1435660ac298 |
|
BLAKE2b-256 | 8b2c567c5e042ed667d3544c43d48a65cf853450a2d2a9089d9523a65f195e94 |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_armv7l.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 78864cc8f23dbee55be34cc1494632a7ba30263951b5b2e8fc8286b95845f82c |
|
MD5 | 73fcf6bf5f3c428e3f0f2e710cf8d997 |
|
BLAKE2b-256 | f691320bc1496cf951a3cf93a7ffd18a581f0792c304be963d943e0e608c2919 |
哈希值 用于 watchdog-5.0.3-py3-none-manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dd021efa85970bd4824acacbb922066159d0f9e546389a4743d56919b6758b91 |
|
MD5 | be82439697dce6cccb5f80a03cacf817 |
|
BLAKE2b-256 | 60337cb71c9df9a77b6927ee5f48d25e1de5562ce0fa7e0c56dcf2b0472e64a2 |
哈希值 用于 watchdog-5.0.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 720ef9d3a4f9ca575a780af283c8fd3a0674b307651c1976714745090da5a9e8 |
|
MD5 | 142015af096b8dadf84b718cca493feb |
|
BLAKE2b-256 | 47bbd5e0abcfd6d729029a24766682e062526db8b59e9ae0c94aff509e0fd2b9 |
哈希值 用于 watchdog-5.0.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 90a67d7857adb1d985aca232cc9905dd5bc4803ed85cfcdcfcf707e52049eda7 |
|
MD5 | 42716d6ce70f005a560da31bc2626de3 |
|
BLAKE2b-256 | a2d61d1ca81c75d903eca3fdb7061d93845485b58a5ba182d146843b88fc51c2 |
哈希值 用于 watchdog-5.0.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 560135542c91eaa74247a2e8430cf83c4342b29e8ad4f520ae14f0c8a19cfb5b |
|
MD5 | 88212516acccfae3b8bb460eab947b44 |
|
BLAKE2b-256 | 27c5ce5bb0ce5587ce0899693be9fe20041e301fec143aae54066ac616a925b4 |
哈希值 用于 watchdog-5.0.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 223160bb359281bb8e31c8f1068bf71a6b16a8ad3d9524ca6f523ac666bb6a1e |
|
MD5 | face583f791b2826bed8ff366dbc2743 |
|
BLAKE2b-256 | 8ef60b9daa3398c3e2918fe79666540eedcbdc07614e77b2154cb35928d0c757 |
哈希值 for watchdog-5.0.3-cp313-cp313-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1021223c08ba8d2d38d71ec1704496471ffd7be42cfb26b87cd5059323a389a1 |
|
MD5 | ab4d2da68030a22f9951212f68592238 |
|
BLAKE2b-256 | a4713f2e9fe8403386b99d788868955b3a790f7a09721501a7e1eb58f514ffaa |
哈希值 for watchdog-5.0.3-cp313-cp313-macosx_10_13_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae6deb336cba5d71476caa029ceb6e88047fc1dc74b62b7c4012639c0b563906 |
|
MD5 | c1151c13b40b072149c985a300b9459e |
|
BLAKE2b-256 | 96a4b24de77cc9ae424c1687c9d4fb15aa560d7d7b28ba559aca72f781d0202b |
哈希值 for watchdog-5.0.3-cp313-cp313-macosx_10_13_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 950f531ec6e03696a2414b6308f5c6ff9dab7821a768c9d5788b1314e9a46ca7 |
|
MD5 | e218bbc7e71ac37daac8150429d898ae |
|
BLAKE2b-256 | 54c449af4ab00bcfb688e9962eace2edda07a2cf89b9699ea536da48e8585cff |
哈希值 for watchdog-5.0.3-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 53a3f10b62c2d569e260f96e8d966463dec1a50fa4f1b22aec69e3f91025060e |
|
MD5 | b654d6f16cf169b9e38a146b16f26a09 |
|
BLAKE2b-256 | 8fb35e10ec32f0c429cdb55b1369066d6e83faf9985b3a53a4e37bb5c5e29aa0 |
哈希值 for watchdog-5.0.3-cp312-cp312-macosx_10_13_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 349c9488e1d85d0a58e8cb14222d2c51cbc801ce11ac3936ab4c3af986536926 |
|
MD5 | 1a6ff9908b593fda013ebc277552dbcd |
|
BLAKE2b-256 | e126129ca9cd0f8016672f37000010c2fedc0b86816e894ebdc0af9bb04a6439 |
哈希值 for watchdog-5.0.3-cp312-cp312-macosx_10_13_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 94d11b07c64f63f49876e0ab8042ae034674c8653bfcdaa8c4b32e71cfff87e8 |
|
MD5 | 617d6adcc79ab6518eb0a81a7502438a |
|
BLAKE2b-256 | 1c9b8b206a928c188fdeb7b12e1c795199534cd44bdef223b8470129016009dd |
哈希值 for watchdog-5.0.3-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d52db5beb5e476e6853da2e2d24dbbbed6797b449c8bf7ea118a4ee0d2c9040e |
|
MD5 | 1efcd39f9b26e6073152302d18bb2422 |
|
BLAKE2b-256 | d53f41b5d77c10f450b79921c17b7d0b416616048867bfe63acaa072a619a0cb |
哈希值 for watchdog-5.0.3-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91b522adc25614cdeaf91f7897800b82c13b4b8ac68a42ca959f992f6990c490 |
|
MD5 | e86c17a630f1628d8a9b7c9cf38c3438 |
|
BLAKE2b-256 | 962bb84e35d49e8b0bad77e5d086fc1e2c6c833bbfe74d53144cfe8b26117eff |
哈希值 for watchdog-5.0.3-cp311-cp311-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f01f4a3565a387080dc49bdd1fefe4ecc77f894991b88ef927edbfa45eb10818 |
|
MD5 | 89315d04bc8fd8fdaf762b66dff59240 |
|
BLAKE2b-256 | 7034946f08602f8b8e6af45bc725e4a8013975a34883ab5570bd0d827a4c9829 |
哈希值 for watchdog-5.0.3-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e25adddab85f674acac303cf1f5835951345a56c5f7f582987d266679979c75b |
|
MD5 | db0402c787eb950b1bb7e06f61c907bc |
|
BLAKE2b-256 | 2b72acb22067d1f18161914c9b1087c703d63638131a9fde78090da290663407 |
哈希值 for watchdog-5.0.3-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 53adf73dcdc0ef04f7735066b4a57a4cd3e49ef135daae41d77395f0b5b692cb |
|
MD5 | 1092d0ec9c91a327cc5b0562f3957b7a |
|
BLAKE2b-256 | 9e4ff643c0a720d16ef7316aea06a79b96e229e59df4e0d83bec5e12713c1f29 |
哈希值 for watchdog-5.0.3-cp310-cp310-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85527b882f3facda0579bce9d743ff7f10c3e1e0db0a0d0e28170a7d0e5ce2ea |
|
MD5 | 55d9d395a6c8b42154df2cb99ed60336 |
|
BLAKE2b-256 | 052bdd2081aab6fc9e785c2eee7146d3c6de58e607f4e70049d715cd170cbf77 |
哈希值 for watchdog-5.0.3-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b8ca4d854adcf480bdfd80f46fdd6fb49f91dd020ae11c89b3a79e19454ec627 |
|
MD5 | 5d1401521d1f20ea992a7de8dd79caa1 |
|
BLAKE2b-256 | 95271eef63ba7015132a971e0304675497783faaf1ccb4f8223b06b9dfd90ba0 |
哈希值 用于 watchdog-5.0.3-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a2e8f3f955d68471fa37b0e3add18500790d129cc7efe89971b8a4cc6fdeb0b2 |
|
MD5 | 6f28ccc1d8bf3f9c7b9ec3a9a7bdda27 |
|
BLAKE2b-256 | e7c55393fd01610a92bb7b291b742daae8d1b89f8e11bfb2c37361e17e1be1b8 |
哈希值 用于 watchdog-5.0.3-cp39-cp39-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 752fb40efc7cc8d88ebc332b8f4bcbe2b5cc7e881bccfeb8e25054c00c994ee3 |
|
MD5 | be7cf2f1d1910a2599c225500270f8c1 |
|
BLAKE2b-256 | 5184fc0b390012be6c4884d02bbef28d599afc6eeec4b560820bec98ff156fd1 |